From: Chet Ramey Date: Wed, 27 Mar 2013 01:32:43 +0000 (-0400) Subject: bash-4.3-alpha release X-Git-Tag: bash-4.3-alpha~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b721485f62420a47018b82d4f13f329be581d44d;p=thirdparty%2Fbash.git bash-4.3-alpha release --- diff --git a/._COPYING b/._COPYING new file mode 100644 index 000000000..8c1e985c5 Binary files /dev/null and b/._COPYING differ diff --git a/CHANGES b/CHANGES index 84e1dbda1..03eecd2d9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,561 @@ +This document details the changes between this version, bash-4.3-alpha, +and the previous version, bash-4.2-release. + +1. Changes to Bash + +a. Fixed several bugs concerning incomplete bracket expressions in filename + generation (globbing) patterns. + +b. Fixed a bug with single quotes and WORD in ${param op WORD} when running + in Posix mode. + +c. Fixed a bug that caused the pattern removal and pattern substitution word + expansions and case statement word expansion to not match the empty string. + +d. Fixed a bug that caused the tzset() function to not work after changing + the TZ enviroment variable. + +e. Fixed a bug that caused the RHS of an assignment statement to undergo + word splitting when it contained an unquoted $@. + +f. Fixed bugs that caused the shell to not react to a SIGINT sent while + waiting for a child process to exit. + +g. Bash doesn't try to run things in a signal handler context when it gets a + signal (SIGINT/SIGHUP/etc) while reading input using readline but still + be responsive to terminating signals. + +h. Fixed a bug that caused bash to go into an infinite loop if a filename + to be matched contained an invalid multibyte character. + +i. Fixed a bug that caused PS4 to end up being truncated if it is longer + than 128 bytes. + +j. Fixed a bug that caused brace expansion to not skip over double-quoted + command substitution. + +k. System-specific updates for: DJGPP, HP/UX, Mac OS X + +l. Fixed a bug in displaying commands that caused redirections to be associated + with the wrong part of the command. + +m. Fixed the coproc cleanup to unset the appropriate shell variables when a + coproc terminates. + +n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of + the last history entry. + +o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and + `test -x'. + +p. Fixed a bug that caused the shell to not match patterns containing + control-A. + +q. Fixed a bug that could result in doubled error messages when the `printf' + builtin got a write error. + +r. Fixed a bug that caused the shell to not correctly expand words containing + multiple consecutive quoted empty strings (""""""aa). + +s. Fixed a bug that caused the shell to not correctly parse multi-line + process substitutions containing comments and quoted strings. + +t. Fixed a problem with the bash malloc's internal idea of the top of the + memory heap that resulted in incorrect decisions to try to reduce the + break and give memory back to the kernel. + +u. There are changes to the expansions peformed on compound array assignments, + in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to + foo[ind1]=bar foo[ind2]=baz. + +v. Bash now reports an error if `read -a name' is used when `name' is an + existing associative array. + +w. Fixed a bug that allowed an attempted assignment to a readonly variable + in an arithmetic expression to not return failure. + +x. Fixed several bugs that caused completion functions to be invoked even when + the cursor was before the first word in the command. + +y. Fixed a bug that caused parsing a command substitution to overwrite the + parsing state associated with the complete input line. + +z. Fixed several bugs with the built-in snprintf replacement and field widths + and floating point. + +aa. Fixed a bug that caused incorrect offset calculations and input buffer + corruption when reading files longer than 2^31 bytes. + +bb. Fixed several bugs where bash performed arithmetic evaluation in contexts + where evaluation is suppressed. + +cc. Fixed a bug that caused bash to close FIFOs used for process substitution + too early when a shell function was executing, but protect against using + all file descriptors when the shell functions are invoked inside loops. + +dd. Added checks for printable (and non-printable) multibyte characters for + use in error messages. + +ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly + at the end of the history list. + +ff. Fixed a bug that caused command-oriented history to incorrectly combine + here documents into one line. + +gg. Fixed a bug that caused importing SHELLOPTS from the environment into a + Posix-mode shell to print an error message and refuse to parse it. + +hh. Fixed a bug that caused the shell to delete an extra history entry when + using `history -s'. + +ii. Fixed a bug that caused floating-point exceptions and overflow errors + for the / and % arithmetic operators when using INTMAX_MIN and -1. + +jj. Fixed a bug that caused parsing errors when reading an arithmetic for + loop inside a command substitution. + +kk. Fixed a bug that caused a readonly function to be unset when unset was + called without the -f or -v option. + +ll. Fixed several bugs in the code that quotes characters special to regular + expressions when used in a quoted string on the RHS of the =~ operator + to the [[ command. + +mm. Fixed a bug that caused redirections to fail because the file descriptor + limit was set to a value less than 10. + +nn. Fixed a bug that caused the `read' builtin to execute code in a signal + handler context if read timed out. + +oo. Fixed a bug that caused extended globbing patterns to not match files + beginning with `.' correctly when a `.' was explicitly supplied in the + pattern. + +pp. Fixed a bug that caused key sequences longer than two characters to not + work when used with `bind -x'. + +qq. Fixed a bug that resulted in redefined functions having the wrong source + file names in BASH_SOURCE. + +rr. Fixed a bug that caused the read builtin to assign null strings to variables + when using `read -N', which caused core dumps when referenced + +ss. Fixed a bug that caused `bash -m script' to not enable job control while + running the script. + +tt. Fixed a bug that caused `printf -v var' to dump core when used with the + %b format code. + +uu. Fixed a bug that caused the shell to exit with the wrong status if -e was + active and the shell exited on a substitution error. + +vv. Fixed a bug that caused the shell to seg fault if an array variable with + the same name as an existing associative array was implicitly created by + an assignment (declare a[n]=b). + +ww. Fixed a bug that caused a redirection to misbehave if the number specified + for a file descriptor overflows an intmax_t. + +xx. Fixed several bugs with the handling of valid and invalid unicode character + values when used with the \u and \U escape sequences to printf and $'...'. + +yy. Fixed a bug that caused tildes to not be escaped in expanded filenames, + making them subject to later expansion. + +zz. When using the pattern substitution word expansion, bash now runs the + replacement string through quote removal, since it allows quotes in that + string to act as escape characters. This is not backwards compatible, so + it can be disabled by setting the bash compatibility mode to 4.2. + +aaa. Fixed the rest of the cases where the shell runs non-allowed code in a + signal handler context. + +bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in + double-quoted expansion where the RHS is evaluated to the empty string. + +ccc. Fixed a bug that caused the use of the shell's internal random number + generator for temporary file names to perturb the random number + sequence. + +ddd. Fixed several bugs that caused `declare -g' to not set the right global + variables or to misbehave when declaring global indexed arrays. + +eee. Fixed a logic bug that caused extended globbing in a multibyte locale to + cause failures when using the pattern substititution word expansions. + +fff. Fixed a bug that caused the `lastpipe' option to corrupt the file + descriptor used to read the script. + +ggg. Fixed a bug that causes the shell to delete DEL characters in the + expanded value of variables used in the same quoted string as variables + that expand to nothing. + +hhh. Fixed a bug that caused the shell to assign the wrong value from an + assignment like (( x=7 )) when `x' was an existing array variable. + +iii. Fixed a bug that caused the shell to misbehave when generating sequences + and the boundary values overflow an intmax_t. + +jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared + next to another expansion (e.g.. "${@}${x}"). + +kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion. + +lll. Fixed a bug that resulted in an extra semicolon being added to compound + assignments when they were added to the history list. + +mmm. Fixed a bug that caused mapfile to read one extra line from the input. + +nnn. Fixed a bug that caused the mail checking code to use uninitialized + values. + +ooo. Fixed a bug that prevented history timestamps from being saved if the + history comment character is unset. + +ppp. Fixed a bug that caused the case-modifying expansions to not work with + multibyte characters. + +qqq. Fixed a bug that caused the edit-and-execute bindable readline command + to see the wrong data if invoked in the middle of a multi-line quoted + string. + +rrr. Fixed a bug that resulted in the shell returning the wrong exit status + for a background command on systems that recycle PIDs very quickly. + +sss. Fixed a bug that caused asynchronous group commands to not run any EXIT + trap defined in the body of the command. + +ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly. + +uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped + IFS whitespace character. + +vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when + executing a (...) subshell. + +www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic + evaluation. + +xxx. Fixed a bug with parsing multi-line command substitutions when reading + the `do' keyword followed by whitespace. + +yyy. Fixed a bug that caused the shell to seg fault if the time given to the + printf %(...)T format overflowed the value accepted by localtime(3). + +zzz. Fixed a problem with displaying help topics in two columns when the + translated text contained multibyte characters. + +aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was + followed by a negated extended glob pattern. + +bbbb. Fixed a race condition with short-lived coproc creation and reaping that + caused the child process to be reaped before the various coproc shell + variables were initialized. + +cccc. Fixed a bug where turning off `errexit' in command substitution subshells + was not reflected in $SHELLOPTS. + +dddd. Partially fixed an inconsistency in how the shell treated shell + functions run from an EXIT trap. + +eeee. Fixed a bug in how the shell invalidated FIFOs used for process + substitution when executing a pipeline (once rather than in every child). + +ffff. Fixed a bug that occurred when expanding a special variable ($@, $*) + within double quotes and the expansion resulted in an empty string. + +gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's + executed once per exited child. + +hhhh. Fixed a bug that caused `declare' and `test' to find variables that + had been given attributes but not assigned values. Such variables are + not set. + +iiii. Fixed a bug that caused commands in process substitutions to not look in + the local temporary environment when performing word expansions. + +jjjj. Fixed several problems with globstar expansions (**/**) returning null + filenames and multiple instances of the same pathname. + +kkkk. Fixed an oversight that did not allow the exit status of `coproc' to + be inverted using `!'. + +llll. Fixed a bug that caused the -e option to be re-enabled using `set -e' + even when executing in a context where -e is ignored. + +mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX. + +nnnn. Fixed a bug that could result in double evaluation of command + substitutions when they appear in failed redirections. + +oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if + the callback unsets the array variable mapfile is using. + +pppp. Fixed several problems with variable assignments using ${var:=value} + when the variable assignment is supposed to have side effects. + +qqqq. Fixed a bug that caused a failure of an assignment statement preceding a + builtin caused the next invocation of a special builtin to exit the shell. + +rrrr. Fixed several problems with IFS when it appears in the temporary environment + and is used in redirections. + +ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify + how preceding expansions were split. + +tttt. Fixed a problem that caused subshells to not run an EXIT trap they set. + +uuuu. Fixed a problem that caused shells started in posix mode to attempt to + import shell functions with invalid names from the environment. We now + print a warning. + +vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2) + on a FIFO used for process substitution, even if the SIGCHLD handler was + installed with the SA_RESTART flag. + +wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}. + +xxxx. Fixed a problem that caused `read -t' to crash when interrupted by + SIGINT. + +yyyy. Fixed a problem that caused pattern removal to fail randomly because the + pattern matcher read beyond the end of a string. + +zzzz. Fixed a bug that caused core dumps when shell functions tried to create + local shadow copies of special variables like GROUPS. + +aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of + interactive shells when it arrived before the child process reset the + handler from SIG_DFL. + +bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor + n closed if executed with a builtin command. + +ccccc. Fixed a bug that caused incorrect completion quoting when completing a + word containing a globbing character with `show-all-if-ambiguous' set. + +2. Changes to Readline + +a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode + commands to work on the entire line. + +b. Fixed a bug that caused redisplay problems with prompts longer than 128 + characters and history searches. + +c. Fixed a bug that caused readline to try and run code to modify its idea + of the screen size in a signal handler context upon receiving a SIGWINCH. + +d. Fixed a bug that caused the `meta' key to be enabled beyond the duration + of an individual call top readline(). + +e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's + redisplay to mishandle zero-width combining characters. + +f. Fixed a bug that caused readline to `forget' part of a key sequence when + a multiple-key sequence caused it to break out of an incremental search. + +g. Fixed bugs that caused readline to execute code in a signal handler + context if interrupted while reading from the file system during completion. + +h. Fixed a bug that caused readline to `forget' part of a key sequence when + reading an unbound multi-character key sequence. + +i. Fixed a bug that caused Readline's signal handlers to be installed beyond + the bounds of a single call to readline(). + +j. Fixed a bug that caused the `.' command to not redo the most recent `R' + command in vi mode. + +k. Fixed a bug that caused ignoring case in completion matches to result in + readline using the wrong match. + +l. Paren matching now works in vi insert mode. + +m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix + work together. + +n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone + in vi editing mode. + +o. Fixed a bug that caused the filename comparison code to not compare + multibyte characters correctly when using case-sensitive or case-mapping + comparisons. + +p. Fixed the input reading loop to call the input hook function only when there + is no terminal input available. + +q. Fixed a bug that caused binding a macro to a multi-character key sequence + where the sequence and macro value share a common prefix to not perform + the macro replacement. + +r. Fixed several redisplay errors with multibyte characters and prompts + containing invisible characters when using horizontal scrolling. + +s. Fixed a bug that caused redisplay errors when trying to overwrite + existing characters using multibyte characters. + +3. New Features in Bash + +a. The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +b. The `help' builtin no longer does prefix substring matching, so `help read' + does not match `readonly'. + +c. The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +d. Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +e. There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +f. There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +g. In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +h. The `return' and `exit' builtins accept negative exit status arguments. + +i. The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +j. In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +k. When compiled for strict Posix conformance, history expansion is disabled + by default. + +l. The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +n. Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o. Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +p. The `read' builtin now skips NUL bytes in the input. + +q. There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +r. When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +s. The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +t. The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +u. The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +v. The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +w. The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +x. The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +y. The {x} + + 2/16 + ---- +subst.h + - new string extract flag value: SX_WORD. Used when calling + extract_dollar_brace_string to skip over the word in + ${param op word} from parameter_brace_expand + +subst.c + - change parameter_brace_expand to add SX_WORD to flags passed to + extract_dollar_brace_string + - change parameter_brace_expand to use SX_POSIXEXP for all non-posix + word expansion operators that treat single quotes as special, not + just % and # + - change extract_dollar_brace_string to initialize dolbrace_state to + DOLBRACE_WORD if SX_WORD flag supplied and we shouldn't use + DOLBRACE_QUOTE. Fixes bug reported by Juergen Daubert + +doc/{bash.1,bashref.texi} + - document the exact expansions here strings undergo + + 2/17 + ---- +lib/readline/vi_mode.c + - make sure that `dd', `cc', and `yy' call vidomove_dispatch from + rl_domove_read_callback. Fixes bug reported by Clark Wang + + +lib/readline/callback.c + - make sure _rl_internal_char_cleanup is called after the + vi-motion callbacks (rl_vi_domove_callback) in rl_callback_read_char. + Companion to above fix + +doc/{bash.1,bashref.texi} + - make sure that the text describing the rhs of the == and =~ + operators to [[ states that only the quoted portion of the pattern + is matched as a string + + 2/18 + ---- +lib/glob/gmisc.c + - better fix for umatchlen/wmatchlen: keep track of the number of + characters in a bracket expression as the value to increase + matchlen by if the bracket expression is not well-formed. Fixes + bug reported by Clark Wang + +subst.c + - change expand_string_for_rhs so that it sets the W_NOSPLIT2 flag + in the word flags. We will not perform word splitting or quote + removal on the result, so we do not want to add quoted nulls if + we see "" or ''. Fixes bug reported by Mike Frysinger + + + 2/19 + ---- +variables.c + - new function, int chkexport(name), checks whether variable NAME is + exported and remakes the export environment if necessary. Returns + 1 if NAME is exported and 0 if not + - call chkexport(name) to get tzset to look at the right variable in + the environment when modifying TZ in sv_tz. Don't call tzset if + chkexport doesn't indicate that the variable is exported + +variables.h + - new extern declaration for chkexport + + +{parse.y,builtins/printf.def} + - call sv_tz before calling localtime() when formatting time strings + in prompt strings or using printf. Fixes bug reported by + Dennis Williamson + +execute_cmd.c + - modify fix of 2/9 to add casts when those variables are passed to + functions; some compilers throw errors instead of warnings. Report + and fix from Joachim Schmitz + +support/shobj-conf + - add a stanza for nsk on the Tandem from Joachim Schmitz + + +{shell,lib/readline/shell}.c + - Tandem systems should use getpwnam (getlogin()); for some reason + they don't do well with using getuid(). Fix from Joachim Schmitz + + + 3/1 + --- +variables.c + - make sure that the return value from find_variable is non-null + before trying to use it in chkexport. Fixes bug reported by + Evangelos Foutras + + 3/3 + --- +parse.y + - when adding $$ to the current token buffer in read_token_word(), + don't xmalloc a buffer for two characters and then strcpy it, just + copy the characters directly into the token buffer. Fix from + Michael Whitten + +execute_cmd.c + - fix expand_word_unsplit to add the W_NOSPLIT2 flag to the word to + be expanded, so "" doesn't add CTLNUL. Similar to fix of 2/18 to + expand_string_for_rhs. Fixes bug reported by Nathanael D. Noblet + and Matthias Klose + +parse.y + - fix extended_glob case of read_token_word to allocate an extra + space in the buffer for the next character read after the extended + glob specification if it's a CTLESC or CTLNUL. Report and fix from + Michael Witten + - fix shell expansions case of read_token_word to allocate an extra + space in the buffer for the next character read after the shell + expansion if it's a CTLESC or CTLNUL. Report and fix from + Michael Witten + - TENTATIVE: fix read_token_word to reduce the amount of buffer space + required to hold the translated and double-quoted value of $"..." + strings. Report and fix from Michael Witten + - change code around got_character and got_escaped_character labels to + make sure that we call RESIZE_MALLOCED_BUFFER before adding the + CTLESC before a CTLESC or CTLNUL, and before adding the character if + we're not adding a CTLESC. Report and fix from + Michael Witten + +subst.c + - new param flags value, PF_ASSIGNRHS, mirrors W_ASSIGNRHS, noting that + parameter expansion is on rhs of assignment statement. That inhibits + word splitting + - change param_expand to call string_list_dollar_at with quoted == 1 + if PF_ASSIGNRHS is set, so it will quote IFS characters in the + positional parameter before separating them with the first char of + $IFS. This keeps the rhs from being split inappropriately. Fixes + bug reported by Andres Perera + + 3/4 + --- +lib/readline/bind.c + - add a missing free of `names' in rl_function_dumper. Bug report + and fix from Michael Snyder + + 3/5 + --- +lib/readline/rltty.c + - change rl_deprep_terminal so it uses fileno (stdin) for the tty fd + if rl_instream is not set, like rl_prep_terminal + + 3/6 + --- +lib/readline/display.c + - fix rl_message to use a dynamically-allocated buffer instead of a + fixed-size buffer of 128 chars for the `local message prompt'. Bug + report and fix from Micah Cowan + + 3/7 + --- +jobs.c + - add sentinel to wait_sigint_handler so it only sets wait_sigint_received + if waiting_for_child is non-zero; otherwise, it restores the old + SIGINT handler and sends itself the SIGINT + - set waiting_for_child around the calls to waitchld that use it to + synchronously wait for a process + - change logic that decides whether or not the child process blocked + or handled SIGINT based on whether or not waitpid returns -1/EINTR + and the shell receives a SIGINT and the child does not exit. If + the child later exits due to SIGINT, cancel the assumoption that it + was handled + - instead of testing whether or not the child exited due to SIGINT + when deciding whether the shell should act on a SIGINT it received + while waiting, test whether or not we think the child caught + SIGINT. If it did, we let it go (unless the shell has it trapped); + if it did not catch it, the shell acts on the SIGINT. Fix from + Linus Torvalds , bug report originally + from Oleg Nesterov + + 3/8 + --- +shell.c + - initialize no_line_editing to 1 if READLINE is not defined -- we + can't have line editing without readline + + 3/12 + ---- +lib/readline/signals.c + - add SIGHUP to the set of signals readline handles + +lib/readline/doc/rltech.texi + - document that SIGHUP is now part of the set of signals readline + handles + +lib/readline/input.c + - if _rl_caught_signal indicates that read() was interrupted by a + SIGHUP or SIGTERM, return READERR or EOF as appropriate + - call rl_event_hook, if it's set, if call to read in rl_getc + returns -1/EINTR. If rl_event_hook doesn't do anything, this + continues the loop as before. This handles the other fatal + signals + +execute_cmd.c + - add a couple of QUIT; calls to execute_disk_command and + execute_simple_command to improve responsiveness to interrupts + and fatal signals + +input.c + - rearrange getc_with_restart so that the return values from read() + are handled right + +parse.y + - don't need to set terminate_immediately in yy_stream_get, since + getc_with_restart checks for terminating signals itself + - since readline returns READERR on SIGHUP or SIGTERM, don't need + to set terminate_immediately. Still doesn't handle other + signals well -- will have to check that some more + +bashline.c + - new function, bash_event_hook, for rl_event_hook. Just checks for + terminating signals and acts on them using CHECK_TERMSIG. + - set rl_event_hook to bash_event_hook + +builtins/read.def + - take out setting terminate_immediately; add calls to CHECK_TERMSIG + after read calls + +doc/{bash.1,bashref.texi} + - move the text describing the effect of negative subscripts used to + reference indexed array elements to the paragraphs describing + ${parameter[subscript]}, since that's where they are implemented. + Pointed out by Christopher F. A. Johnson + +arrayfunc.[ch],subst.c + - array_expand_index now takes a new first argument: a SHELL_VAR * + of the array variable being subscripted. Can be used later to fully + implement negative subscripts + + 3/14 + ---- +lib/glob/glob.c + - fix mbskipname to not turn the directory entry name into a wide char + string if the conversion of the pattern to a wide char string fails + - fix mbskipname to call skipname if either the pattern or the filename + can't be converted into a wide-char string + +lib/glob/xmbsrtowcs.c + - fix xdupmbstowcs2 to handle return value of 0 from mbsnrtowcs and + short-circuit with failure in that case. Fixes bug reported by + Roman Rakus + + 3/15 + ---- +bashline.c + - new variable, bash_filename_quote_characters to store the value + assigned to rl_filename_quote_characters so it can be restored + if changed. + - change bashline_reset and attempt_shell_completion to restore + rl_filename_quote_characters if not set to default + + 3/22 + ---- +lib/glob/glob.c + - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs + fails to convert the pathname to a wide-character string + +lib/glob/xmbsrtowcs.c + - xdupmbstowcs2: change to fix problem with leading '\\' (results in + nms == 0, which causes it to short-circuit with failure right + away). Fixes bug pointed out by Werner Fink + - xdupmbstowcs2: compensate for mbsnrtowcs returning 0 by taking the + next single-byte character and going on + - xdupmbstowcs2: change memory allocation to increase by WSBUF_INC + bytes; try to avoid calls to realloc (even if they don't actually + result in more memory being allocated) + + 3/24 + ---- +doc/{bash.1,bashref.texi} + - slightly modify BASH_SUBSHELL description based on complaint from + Sam Liddicott + + 3/25 + ---- +trap.c + - change free_trap_strings to not call free_trap_string for signals + that are being ignored, like reset_or_restore_signal_handlers. + Fixes bug reported by Satoshi Takahashi + + 3/26 + ---- +lib/readline/rltypedefs.h + - remove old Function/VFunction/CPFunction/CPPFunction typedefs as + suggested by Tom Tromey + +lib/readline/rlstdc.h + - move defines for USE_VARARGS/PREFER_STDARG/PREFER_VARARGS from + config.h.in to here because declaration of rl_message in + readline.h uses the defines. This makes it hard for another packages + to use after the header files are installed, since config.h is not + one of the installed files. Suggested by Tom Tromey + + + 3/27 + ---- +print_cmd.c + - change indirection_string from a static buffer to a dynamic one + managed by indirection_level_string(), so we don't end up truncating + PS4. Suggested by Dennis Williamson + +lib/readline/shell.c + - change sh_set_lines_and_columns to use static buffers instead of + allocating the buffers to pass to setenv/putenv + +lib/readline/terminal.c + - change _rl_get_screen_size to not call sh_set_lines_and_columns if + ignore_env == 0 + - _rl_sigwinch_resize_terminal: new function to just retrieve terminal + size, ignoring environment + +lib/readline/rlprivate.h + - new external declaration for _rl_sigwinch_resize_terminal() (currently + unused) + +lib/readline/signals.c + - rl_sigwinch_handler: set _rl_caught_signal to SIGWINCH + - rl_sigwinch_handler: don't immediately call rl_resize_terminal; just + leave _rl_caught_signal set for RL_CHECK_SIGNALS to handle + - _rl_signal_handler: call rl_resize_terminal if sig == SIGWINCH. + Should fix hang when sending multiple repeated SIGWINCH reported by + Henning Bekel + + 3/29 + ---- +lib/sh/snprintf.c + - include math.h for any defines for isinf/isnan + - use code from gnulib documentation to implement isinf/isnan if they + are not defined + +configure.in + - don't check for isinf or isnan; c99 says they're macros anyway + +config.h.in + - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used + by snprintf.c + + 4/2 + --- +braces.c + - brace_gobbler: fix to understand double-quoted command substitution, + since the shell understands unquoted comsubs. Fixes bug reported + by Michael Whitten + +lib/readline/display.c + - include on MDOS + - get and set screen size using DJGPP-specific calls on MSDOS + - move cursor up clear screen using DJGPP-specific calls + - don't call tputs on DJGPP; there is no good terminfo support + +lib/readline/terminal.c + - include on MDOS + - get and set screen size using DJGPP-specific calls on MSDOS + - use DJGPP-specific initialization on MSDOS, zeroing all the + _rl_term_* variables + - don't call tputs on DJGPP; there is no good terminfo support + DJGPP support from Eli Zaretskii + + 4/6 + --- + +config-top.h + - change DEFAULT_PATH_VALUE to something more useful and modern + + 4/8 + --- +tests/printf2.sub + - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect. + Reported by Cedric Arbogast + + 4/11 + ---- +include/chartypes.h + - fix a couple of dicey defines (though ones that don't cause any + compiler warnings) in IN_CTYPE_DOMAIN + +doc/{bashref.texi,bash.1} + - add note referring to duplicating file descriptors in sections + describing redirecting stdout and stderr and appending to stdout + and stderr. Suggested by Matthew Dinger + +pcomplete.c + - it_init_helptopics: new function to support completing on help topics, + not just builtins + - it_helptopics: new programmable completion list of help topics + - build list of helptopic completions in gen_action_completions on + demand + +pcomplete.h + - new extern declaration for it_helptopics + +builtins/complete.def + - the `helptopic' action now maps to CA_HELPTOPIC intead of CA_BUILTIN, + since there are more help topics than just builtins. Suggested by + Clark Wang + + 4/12 + ---- +print_cmd.c + - fix print_arith_for_command to add a call to PRINT_DEFERRED_HEREDOCS + before ending the body of the command, so heredocs get attached to + the right command instead of to the loop. From gentoo bug 363371 + http://bugs.gentoo.org/show_bug.cgi?id=363371 + +execute_cmd.c + - change coproc_pidchk to unset the appropriate shell variables when + the (currently single) known coproc pid terminates + - cleanup and new functions to fully support multiple coprocesses when + and if I decide to go there + + 4/13 + ---- +print_cmd.c + - fix print_group_command to add a call to PRINT_DEFERRED_HEREDOCS + after call to make_command_string_internal before printing closing + `}' + - fix make_command_string_internal to add a call to + PRINT_DEFERRED_HEREDOCS after recursive call to + make_command_string_internal in case cm_subshell before printing + closing `)' + + 4/14 + ---- +print_cmd.c + - change overlapping strcpy in named_function_string to memmove + +sig.h + - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just + restores an old signal mask + +trap.c + - set_signal: instead of setting the signal handler to SIG_IGN while + installing the new trap handler, block the signal and unblock it + after the new handler is installed. Fixes bug reported by Roman + Rakus + + 4/15 + ---- +doc/{bash.1,bashref.texi} + - make it clear that enabling monitor mode means that all jobs run in + separate process groups + + 4/18 + ---- +builtins/fc.def + - update fix of 4/15/2010 to not take saved_command_line_count into + account when stepping down the history list to make sure that + last_hist indexes something that is valid. Fixes bug reported by + + + 4/19 + ---- +builtins/fc.def + - fc_gethnum: make sure the calculation to decide the last history + entry is exactly the same as fc_builtin. Fixes bug uncovered by + fix of 4/18 to stop seg fault + + 4/22 + ---- +lib/readline/terminal.c + - change _rl_enable_meta_key to set a flag indicating that it sent the + enable-meta sequence + - _rl_disable_meta_key: new function to turn off meta mode after we + turned it on with _rl_enable_meta_key + +lib/readline/rlprivate.h + - extern declaration for _rl_disable_meta_key + +configure.in + - if not cross-compiling, set CFLAGS_FOR_BUILD from any CFLAGS inherited + from the environment. Fixes HP/UX build problem reported by + "Daniel Richard G." + + 4/26 + ---- +config-top.h + - define MULTIPLE_COPROCS to 0 so the code is still disabled but easy + to enable via configure option or editing this file + + 4/29 + ---- +lib/sh/eaccess.c + - freebsd provides faccessat, with the same misfeature as their eaccess + and access implementations (X_OK returns true for uid==0 regardless + of the actual file permissions), so reorganize code to check the + file permissions as with eaccess. Report and fix from Johan Hattne + + + 5/2 + --- +doc/{bash.1,bashref.texi} + - add forward reference to `Pattern Matching' from `Pathname + Expansion', suggested by Greg Wooledge + + 5/5 + --- +pcomplib.c + - the bash_completion project now distributes over 200 completions + for various programs, with no end in sight, so increase the value + of COMPLETE_HASH_BUCKETS from 32 to 128 + +pathexp.c + - quote_string_for_globbing: make sure CTLESC quoting CTLESC is + translated into \ even if the flags include QGLOB_REGEXP. + We don't want to process the second CTLESC as a quote character. + Fixes bug reported by Shawn Bohrer + + 5/6 + --- +builtins/printf.def + - change PRETURN to not call fflush if ferror(stdout) is true + - if a call to one of the stdio functions or printstr leaves + ferror(stdout) true, and PRETURN is going to be called, let PRETURN + print the error message rather than doubling up the messages. Fixes + problem reported by Roman Rakus + + 5/9 + --- +doc/{bash.1,bashref.texi} + - add note to the effect that lists inside compound command can be + terminated by newlines as well as semicolons. Suggested by + Roman Byshko + + 5/10 + ---- +subst.c + - remove_quoted_nulls: fix problem that caused it to skip over the + character after a CTLNUL, which had the effect of skipping every + other of a series of CTLNULs. Fixes bug reported by + Marten Wikstrom + + 5/11 + ---- +subst.c + - extract_process_subst: add SX_COMMAND flag to call to + extract_delimited_string, since we're expanding the same sort of + command as command substitution. Fixes bug reported in Ubuntu + bug 779848 + + 5/12 + ---- +configure.in + - set the prefer_shared and prefer_static variables appropriately + depending on the value of $opt_static_link + +aclocal.m4 + - AC_LIB_LINKFLAGS_BODY: change to not prefer shared versions of the + libraries it's searching for if the prefer_shared variable is "no". + Fixes problem reported by Cedric Arbogast + + 5/13 + ---- +lib/readline/readline.c + - _rl_internal_teardown: add call to _rl_disable_meta_key to make the + meta key active only for the duration of the call to readline() + - _rl_internal_setup: move call to _rl_enable_meta_key here from + readline_initialize_everything so the meta key is active only for + the duration of the call to readline(). Suggestion from Miroslav + Lichvar + +builtins/help.def + - help_builtin: change strncmp to strcmp so that `help read' no longer + matches `readonly'. Suggested by Clark Wang + +config.h.in + - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests + for libintl + +lib/malloc/malloc.c + - internal_free: don't use the cached value of memtop when deciding + whether or not to adjust the break and give memory back to the kernel + when using the GNU C library, since glibc uses sbrk for its own + internal purposes. From Debian bug 614815, reported by Samuel + Thibault + +aclocal.m4 + - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN + to avoid warning about not using AC_LANG_SOURCE + + 5/14 + ---- +bashline.[ch] + - two new functions, bashline_set_event_hook and bashline_reset_event_hook, + to set rl_event_hook to bash_event_hook and back to NULL, respectively + - don't set rl_event_hook unconditionally + +sig.c + - termsig_sighandler: if the shell is currently interactive and + readline is active, call bashline_set_event_hook to cause + termsig_handler to be called via bash_event_hook when the shell + returns from the signal handler + + 5/15 + ---- +lib/readline/display.c + - _rl_col_width: Mac OS X has a bug in wcwidth: it does not return 0 + for UTF-8 combining characters. Added workaround dependent on + MACOSX. Fixes problem pointed out by Thomas De Contes + + + 5/16 + ---- +lib/readline/rlmbutil.h + - WCWIDTH: wrapper for wcwidth that returns 0 for Unicode combining + characters on systems where wcwidth is broken (e.g., Mac OS X). + +lib/readline/{complete,display,mbutil}.c + - use WCWIDTH instead of wcwidth + + 5/17 + ---- +lib/readline/display.c + - update_line: after computing ofd and nfd, see whether the next + character in ofd is a zero-width combining character. If it is, + back ofd and nfd up one, so the base characters no longer compare + as equivalent. Fixes problem reported by Keith Winstein + + +lib/readline/nls.c + - _rl_utf8locale: new flag variable, set to non-zero if the current + locale is UTF-8 + - utf8locale(): new function, returns 1 if the passed lspec (or the + current locale) indicates that the locale is UTF-8. Called from + _rl_init_eightbit + +lib/readline/rlprivate.h + - extern declaration for _rl_utf8locale + +locale.c + - locale_utf8locale: new flag variable, set to non-zero if the current + locale is UTF-8 (currently unused) + - locale_isutf8(): new function, returns 1 if the passed lspec (or the + current locale) indicates that the locale is UTF-8. Should be called + whenever the locale or LC_CTYPE value is modified + +aclocal.m4 + - BASH_WCWIDTH_BROKEN: new test for whether or not wcwidth returns + zero-width characters like unicode combining characters as having + display length 1; define WCWIDTH_BROKEN in this case + +config.h.in + - WCWIDTH_BROKEN: new define + +lib/readline/rlmbutil.h + - change WCWIDTH macro to use _rl_utf8locale and the full range of + Unicode combining characters (U+0300-U+036F) + + 5/19 + ---- +lib/readline/rlprivate.h + - _rl_search_context: new member, prevc, will hold character read + prior to lastc + +lib/readline/isearch.c + - _rl_isearch_dispatch: if the character causes us to index into + another keymap, save that character in cxt->prevc + - _rl_isearch_dispatch: if we index into another keymap, but don't + find a function that's special to i-search, and the character that + caused us to index into that keymap would have terminated the + search, push back cxt->prevc and cxt->lastc to make it appear as + if `prevc' terminated the search, and execute lastc as a command. + We have to push prevc back so we index into the same keymap before + we read lastc. Fixes bug report from Davor Cubranic + + + 5/20 + ---- +expr.c + - expr_bind_variable: pay attention to the return value from + bind_variable and check whether or not we should error out due to + a readonly or noassign variable. Fixes bug reported by Eric + Blake + + 5/26 + ---- + +lib/readline/search.c + - include histlib.h for ANCHORED_SEARCH defines + - rl_history_search_flags: new variable, holds ANCHORED_SEARCH flag for + the duration of a history search + - rl_history_search_reinit: takes a new flags variable, defines whether + or not the search is anchored; assigned to rl_history_search_flags + - rl_history_serarch_reinit: if ANCHORED_SEARCH flag passed, add ^ to + beginning of search string; otherwise search string is unmodified + - rl_history_search_internal: set rl_point appropriately based on + whether or not rl_history_search_flags includes ANCHORED_SEARCH + - rl_history_substr_search_forward: new function, for non-anchored + substring search forward through history for string of characters + preceding rl_point + - rl_history_substr_search_backward: new function, for non-anchored + substring search backward through history for string of characters + preceding rl_point. Original code from Niraj Kulkarni + + +lib/readline/readline.h + - extern declarations for rl_history_substr_search_{for,back}ward + +lib/readline/funmap.c + - history-substring-search-forward: new bindable command, invokes + rl_history_substr_search_forward + - history-substring-search-backward: new bindable command, invokes + rl_history_substr_search_backward + +lib/readline/doc/{rluser.texi,readline.3} + - document history-substring-search-forward and + history-substring-search-backward + + 5/27 + ---- +{nojobs,jobs}.c + - add support for DONT_REPORT_SIGTERM so that the shell doesn't print + a message when a job exits due to SIGTERM since that's the default + signal sent by the kill builtin. Suggested by Marc Herbert + + +config-top.h + - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out + by default + + 5/28 + ---- +lib/readline/bind.c + - _rl_skip_to_delim: skip to a closing double quote or other delimiter, + allowing backslash to quote any character, including the delimiter + - rl_parse_and_bind: call _rl_skip_to_delim instead of using inline + code + - rl_parse_and_bind: allow quoted strings as the values of string + variables. Variable values without double quotes have trailing + whitespace removed (which still allows embedded whitespace, for + better or worse). Fixes problem with string variables not matching + in `set' command if values happen to have trailing spaces or tabs + (debian bash bug #602762), but introduces slight incompatibility. + + 5/29 + ---- +doc/{bash.1,bashref.texi} + - clarify unset description to specify that without options, a + variable, then a shell function if there is no variable by that + name, is unset. Fixes discrepancy reported by Mu Qiao + + + 6/4 + ---- +doc/{bash.1,bashref.texi} + - clarify description of LINES and COLUMNS (and checkwinsize shopt + option) to make it clear that only interactive shells set a + handler for SIGWINCH and update LINES and COLUMNS. Original + report submitted by Jonathan Nieder + +arrayfunc.c + - expand_compound_array_assignment: defer expansion of words between + parens when performing compound assignmnt to an associative array + variable + - assign_compound_array_list: perform the same expansions when doing + a compound array assignment to an associative array variable as + when doing a straight array index assignment. The idea is that + foo=( [ind1]=bar [ind2]=quux) + is the same as + foo[ind1]=bar ; foo[ind2]=quux + + This fixes problems with double-expansion and quote removal being + performed on the array indices + + 6/13 + ---- +doc/{bash.1,bashref.texi} + - Add a little text to make it clear that the locale determines how + range expressions in glob patterns are handled. + + + 6/21 + ---- +builtins/read.def + - display a message and return error status if -a is used with an + existing associative array. Fixes bug reported by Curtis Doty + + + 6/24 + ---- +{jobs,nojobs}.c + - non-interactive shells now react to the setting of checkwinsize + and set LINES and COLUMNS after a foreground job exits. From a + suggestion by Leslie Rhorer + +doc/{bash.1,bashref.texi} + - checkwinsize: remove language saying that only interactive shells + check the window size after each command + +lib/readline/histfile.c + - history_backupfile: new file, creates a backup history file name + given a filename (appending `-') + - history_do_write: when overwriting the history file, back it up + before writing. Restore backup file on a write error. Suggested + by chkno@chkno.net + +bashline.c + - find_cmd_name: two new arguments, return the start and end of the + actual text string used to find the command name, without taking + whitespace into account + - attempt_shell_completion: small changes to make sure that completion + attempted at the beginning of a non-empty line does not find a + programmable completion, even if the command name starts at point + - attempt_shell_completion: small change to make sure that completion + does not find a progcomp when in whitespace before the command + name + - attempt_shell_completion: small change to make sure that completion + does not find a progcomp when point is at the first character of a + command name, even when there is leading whitespace (similar to + above). Fixes problems noted by Ville Skytta + +subst.c + - brace_expand_word_list: since the individual strings in the strvec + returned by brace_expand are already allocated, don't copy them to + newly-allocated memory when building the WORD_LIST, just use them + intact + +locale.c + - locale_mb_cur_max: cache value of MB_CUR_MAX when we set or change + the locale to avoid a function call every time we need to read it + +shell.h + - new struct to save shell_input_line and associated variables: + shell_input_line_state_t + - add members of sh_parser_state_t to save and restore token and the + size of the token buffer + +parse.y + - {save,restore}_input_line_state: new functions to save and restore + shell_input_line and associated variables + - {save,restore}_parser_state: add code to save and restore the token + and token buffer size + - xparse_dolparen: call save_ and restore_input_line_state to avoid + problems with overwriting shell_input_line when we recursively + call the parser to parse a command substitution. Fixes bug + reported by Rui Santos + +include/shmbutil.h + - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and + similar macros + +lib/glob/smatch.c + - rangecmp,rangecmp_wc: change to take an additional argument, which + forces the use of strcoll/wscoll when non-zero. If it's 0, a new + variable `glob_asciirange' controls whether or not we use strcoll/ + wscoll. If glob_asciirange is non-zero, we use straight + C-locale-like ordering. Suggested by Aharon Robbins + + + 6/30 + ---- +execute_cmd.c + - execute_pipeline: make sure the lastpipe code is protected by + #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort + + + 7/2 + --- +lib/readline/complete.c + - EXPERIMENTAL: remove setting of _rl_interrupt_immediately around + completion functions that touch the file system. Idea from Jan + Kratochvil and the GDB development + team + +lib/readline/signals.c + - rl_signal_handler: if we're in callback mode, don't interrupt + immediately on a SIGWINCH + + 7/3 + --- +bashline.c + - set_directory_hook: and its siblings are a new set of functions to + set, save, and restore the appropriate directory completion hook + - change callers to use {set,save,restore}_directory_hook instead of + manipulating rl_directory_rewrite_hook directly + - dircomplete_expand: new variable, defaults to 0, if non-zero causes + directory names to be word-expanded during word and filename + completion + - change {set,save,restore}_directory_hook to look at dircomplete_expand + and change rl_directory_completion_hook or rl_directory_rewrite_hook + appropriately + +bashline.h + - extern declaration for set_directory_hook so shopt code can use it + + 7/6 + --- +builtins/shopt.def + - globasciiranges: new settable shopt option, makes glob ranges act + as if in the C locale (so b no longer comes between A and B). + Suggested by Aharon Robbins + + 7/7 + --- +doc/{bash.1,bashref.texi} + - document new `globasciiranges' shopt option + + 7/8 + --- +builtins/shopt.def + - direxpand: new settable option, makes filename completion expand + variables in directory names like bash-4.1 did. + - shopt_set_complete_direxpand: new function, does the work for the + above by calling set_directory_hook + +doc/{bash.1,bashref.texi} + - document new `direxpand' shopt option + + 7/15 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: when adding character to search string, use + cxt->lastc (which we use in the switch statement) instead of c, + since lastc can be modified earlier in the function + + 7/18 + ---- +lib/readline/rlprivate.h + - _rl_search_context: add another member to save previous value of + (multibyte) lastc: pmb is to mb as prevc is to lastc + +lib/readline/isearch.c: + - _rl_isearch_dispatch: if a key sequence indexes into a new keymap, + but doesn't find any bound function (k[ind].function == 0) or is + bound to self-insert (k[ind].function == rl_insert), back up and + insert the previous character (the one that caused the index into a + new keymap) and arrange things so the current character is the next + one read, so both of them end up in the search string. Fixes bug + reported by Clark Wang + - _rl_isearch_dispatch: a couple of efficiency improvements when adding + characters to the isearch string + + 7/24 + ---- +lib/readline/isearch.c + - _rl_isearch_dispatch: save and restore cxt->mb and cxt->pmb + appropriately when in a multibyte locale + +doc/{bash.1,bashref.texi} + - correct description of {x}>file (and other redirection operators + that allocate a file descriptor) to note the the fd range is + greater than or equal to 10. Fixes problem reported by + Christian Ullrich + +lib/readline/signals.c + - rl_signal_handler: don't interrupt immediately if in callback mode + +lib/readline/callback.c + - rl_callback_read_char: install signal handlers only when readline + has control in callback mode, so readline's signal handlers aren't + called when the application is active (e.g., between the calls to + rl_callback_handler_install and rl_callback_read_char). If the + readline signal handlers only set a flag, which the application + doesn't know about, the signals will effectively be ignored until + the next time the application calls into the readline callback + interface. Fixes problem of calling unsafe functions from signal + handlers when in callback mode reported by Jan Kratochvil + + +execute_cmd.c + - fix_assignment_words: when in Posix mode, the `command' builtin + doesn't change whether or not the command name it protects is an + assignment builtin. One or more instances of `command' + preceding `export', for instance, doesn't make `export' treat its + assignment statement arguments differently. Posix interpretation + #351 + +doc/{bash.1,bashref.texi} + - document new Posix-mode behavior of `command' when preceding builtins + that take assignment statements as arguments + +builtins/printf.def + - printstr: if fieldwidth or precision are < 0 or > INT_MAX when + supplied explicitly (since we take care of the `-' separately), + clamp at INT_MAX like when using getint(). Fixes issue reported + by Ralph Coredroy + + 7/25 + ---- +lib/readline/chardefs.h + - isxdigit: don't define if compiling with c++; declared as a c++ + template function. Fixes bug reported by Miroslav Lichvar + + +builtins/printf.def + - getint: if garglist == 0, return whatever getintmax returns (0). + Fixes bug reported by Ralph Coredroy + + 7/28 + ---- +doc/{bash.1,bashref.texi} + - minor changes to the descriptions of the cd and pushd builtins + +lib/sh/zread.c + - zsyncfd: change variable holding return value from lseek to + off_t. Bug report and fix from Gregory Margo + + 8/1 + --- +expr.c + - don't check for division by 0 when in a context where no evaluation + is taking place. Fixes bug reported by dnade.ext@orange-ftgroup.com + + 8/6 + --- +execute_cmd.c + - execute_command_internal: the parent branch of the subshell code + (where the child calls execute_in_subshell) should not close all + open FIFOs with unlink_fifo_list if it's part of a shell function + that's still executing. Fixes bug reported by Maarten Billemont + + + 8/9 + --- +builtins/common.c + - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument + +builtins/return.def + - return_builtin: just call get_exitstat to get the return status, + let it handle proper parsing and handling of arguments. Fixes + issue most recently raised by Linda Walsh . + Reverses change from 9/11/2008 (see above) + + 8/16 + ---- +doc/{bash.1,bashref.texi} + - clean up `set -e' language to make it clearer that any failure of + a compound command will cause the shell to exit, not just subshells + and brace commands + + 8/17 + ---- +configure.in + - make the various XXX_FOR_BUILD variables `precious' to autoconf to + avoid stale data + - change how CC_FOR_BUILD is initialized when cross-compiling and not, + but do not change behavior + - initialize CFLAGS_FOR_BUILD to -g when cross-compiling + - initialize LIBS_FOR_BUILD to $(LIBS) when not cross-compiling, empty + when cross-compiling + - create AUTO_CFLAGS variable to hold basic CFLAGS defaults; used when + CFLAGS not inherited from environment (like effect of old + auto_cflags variable) + - substitute LIBS_FOR_BUILD into output Makefiles + [changes inspired by bug report from Nathan Phillip Brink + -- gentoo bug 378941] + +builtins/Makefile.in + - substitute LIBS_FOR_BUILD from configure, not strictly initialized + to $(LIBS) + + 8/27 + ---- +doc/{bash.1,bashref.texi} + - minor changes to the here string description to clarify the + expansions performed on the word + +support/shobj-conf + - handle compilation on Lion (Mac OS X 10.7/darwin11) with changes + to darwin stanzas. Fixes readline bug reported by Vincent + Sheffer + +lib/sh/strtrans.c + - ansic_wshouldquote: check a string with multi-byte characters for + characters that needs to be backslash-octal escaped for $'...' + - ansic_shouldquote: if is_basic fails for one character, let + ansic_wshouldquote examine the rest of the string and return what + it returns. From a patch sent by Roman Rakus + + 8/30 + ---- +lib/sh/strtrans.c + - ansic_quote: changes to quote (or not) multibyte characters. New + code converts them to wide characters and uses iswprint to check + valid wide chars. From a patch sent by Roman Rakus + + + 9/7 + --- +lib/sh/shquote.c + - sh_backslash_quote: change to be table-driven so we can use a + different table if we want to + - sh_backslash_quote: takes a second char table[256] argument; + +externs.h + - sh_backslash_quote: add second argument to function prototype + +bashline.c,braces.c,parse.y,builtins/printf.def + - change callers of sh_backslash_quote to add second argument + +bashline.c + - filename_bstab: table of characters to pass to sh_backslash_quote; + characters with value 1 will be backslash-quoted + - set_filename_bstab: turn on characters in filename backslash-quote + table according to passed string argument + - call set_filename_bstab every time rl_filename_quote_characters is + assigned a value + - bash_quote_filename: call sh_backslash_quote with filename_bstab + as second argument. This allows other characters in filenames to + be quoted without quoting, for instance, a dollar sign in a shell + variable reference + + 9/8 + --- +bashline.c + - complete_fullquote: new variable, controls table passed to + sh_backslash_quote. If non-zero (the default), the standard set + of shell metacharacters -- as in bash versions up to and including + bash-4.2 -- gets backslash-quoted by the completion code. If zero, + sh_backslash_quote gets the table with the characters in the + variable reference removed, which means they are removed from the + set of characters to be quoted in filenames + + 9/10 + ---- +bashline.c + - bash_filename_stat_hook: new function, designed to expand variable + references in filenames before readline passes them to stat(2) + to determine whether or not they are a directory + + 9/15 + ---- +builtins/declare.def + - if assign_array_element fails due to a bad (or empty) subscript, mark + it as an assignment error and don't attempt any further processing + of that declaration. Fixes segfault bug reported by Diego Augusto + Molina + + 9/19 + ---- +expr.c + - exppower: replace the simple exponentiation algorithm with an + implementation of exponentiation by squaring. Inspired by report + from Nicolas ARGYROU + +bashline.c + - bash_quote_filename: check for rtext being non-null before + dereferencing it + - set_saved_history: operate_and_get_next assumes that the previous + line was added to the history, even when the history is stifled and + at the max number of entries. If it wasn't, make sure the history + number is incremented properly. Partial fix for bug reported by + gregrwm + +doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi + - minor editorial changes inspired by suggestions from + Roger Zauner + + 9/20 + ---- +lib/intl/localealias.c + - read_alias_file: close resource leak (fp) when returning on error + + 9/22 + ---- +execute_command.c + - execute_intern_function: implement Posix interpretation 383 by making + it an error to define a function with the same name as a special + builtin when in Posix mode. + http://austingroupbugs.net/view.php?id=383#c692 + + 9/25 + ---- +doc/{bash.1,bashref.texi} + - formatting and some content changes from Benno Schulenberg + + - document new posix-mode behavior from interp 383 change of 9/22 + + 9/30 + ---- +execute_cmd.c + - shell_execve: add strerror to error message about executable file + that shell can't execute as a shell script. From suggestion by + daysleeper + + 10/1 + ---- +bashhist.c + - maybe_add_history: act as if literal_history is set when parser_state + includes PST_HEREDOC, so we save the bodies of here-documents just + as they were entered. Fixes bug reported by Jonathan Wakely + + - bash_add_history: make sure that the second and subsequent lines of + a here document don't have extra newlines or other delimiting + chars added, since they have the trailing newline preserved, when + `lithist' is set and history_delimiting_chars isn't called + +execute_cmd.c + - execute_command_internal: avoid fd exhaustion caused by using + process substitution in loops inside shell functions by using + copy_fifo_list and close_new_fifos (). Fixes debian bash bug + 642504 + +lib/readline/complete.c + - new variable, rl_filename_stat_hook, used by append_to_match. If + filename completion is desired, and rl_filename_stat_hook points + to a function, call that function to expand the filename in an + application-specific way before calling stat. + +bashline.c + - bash_default_completion: if variable completion returns a single + match, use bash_filename_stat_hook and file_isdir to determine + whether or not the variable name expands to a directory. If it + does, set the filename_append_character to `/'. This is not + perfect, so we will see how it works out. Adds functionality + requested by Peter Toft and Patrick Pfeifer + + - rl_filename_stat_hook: assigned bash_filename_stat_hook, so things + like $HOME/Downloads (after completion) have a slash appended. + In general, this causes the stat hook to be called whenever + filename completion is appended. Adds functionality requested by + Patrick Pfeifer + +lib/readline/readline.h + - new extern declaration for rl_filename_stat_hook + +lib/readline/doc/rltech.texi + - rl_directory_rewrite_hook: now documented + - rl_filename_stat_hook: document + +pcomplete.c + - gen_action_completions: in the CA_DIRECTORY case, turn off + rl_filename_completion_desired if it was off before we called + rl_filename_completion_function and we didn't get any matches. + Having it on causes readline to quote the matches as if they + were filenames. Adds functionality requested by many, + including Clark Wang + +assoc.[ch] + - assoc_replace: new function, takes the same arguments as + assoc_insert, but returns the old data instead of freeing it + - assoc_insert: if the object returned by hash_insert doesn't have + the same value for its key as the key passed as an argument, we + are overwriting an existing value. In this case, we can free the + key. Fixes bug reported by David Parks + + 10/5 + ---- +print_cmd.c + - indirection_level_string: small change to only re-enable `x' + option after calling decode_prompt_string if it was on before. In + normal mode, it will be, but John Reiser + has a novel use for that code in conjunction with a pre-loaded + shared library that traces system call usage in shell scripts + + 10/10 + ----- +Makefile.in + - Fix from Mike Frysinger to avoid trying to + build y.tab.c and y.tab.h with two separate runs of yacc if + parse.y changes. Problem with parallel makes + - Fix from Mike Frysinger to avoid subdirectory + builds each trying to make version.h (and all its dependencies) + +lib/sh/Makefile.in + - remove some dependencies on version.h where it doesn't make sense + +variables.c + - initialize_shell_variables: while reading the environment, a shell + running in posix mode now checks for SHELLOPTS being readonly (it + gets set early on in main()) before trying to assign to it. It + saves an error message and the variable gets parsed as it should. + Fixes bug reported by Len Giambrone + + 10/14 + ----- +doc/{bash.1,bashref.texi} + - add to the "duplicating file descriptors" description that >&word + doesn't redirect stdout and stderr if word expands to `-' + - add to the "appending standard output and standard error" + description a note that >&word, where word is a number or `-', + causes other redirection operators to apply for sh and Posix + compatibility reasons. Suggested by Greg Wooledge + + + 10/15 + ----- +pcomplete.c + - change pcomp_filename_completion_function to only run the filename + dequoting function in the cases (as best as it can figure) where + readline won't do it via rl_filename_completion_function. Based + on reports from + + 10/19 + ----- +bashline.c + - attempt_shell_completion: add call to set_directory_hook() to make + sure the rewrite functions are correct. It's cheap and doesn't + hurt + - command_word_completion_function: if completing a command name that + starts with `.' or `..', temporarily suppress the effects of the + `direxpand' option and restore the correct value after calling + rl_filename_completion_function. If it's enabled, the directory + name will be rewritten and no longer match `./' or `../'. Fixes + problem reported by Michael Kalisz + + 10/22 + ----- +builtins/history.def + - push_history: make sure remember_on_history is enabled before we + try to delete the last history entry -- the `history -s' command + might not have been saved. Fixes bug reported by + lester@vmw-les.eng.vmware.com + +lib/readline/complete.c + - rl_callback_read_char: add calls to a macro CALLBACK_READ_RETURN + instead of straight return; add same call at end of function. + Placeholder for future work in deinstalling signal handlers when + readline is not active + + 10/25 + ----- +expr.c + - exp2: catch arithmetic overflow when val1 == INTMAX_MIN and val2 == -1 + for DIV and MOD and avoid SIGFPE. Bug report and pointer to fix + from Jaak Ristioja + - expassign: same changes for arithmetic overflow for DIV and MOD + + 10/28 + ----- +subst.c + - parameter_brace_expand: allow pattern substitution when there is an + expansion of the form ${var/} as a no-op: replacing nothing with + nothing + - parameter_brace_patsub: don't need to check for PATSUB being NULL; + it never is + +flags.c + - if STRICT_POSIX is defined, initialize history_expansion to 0, since + history expansion (and its treatment of ! within double quotes) is + not a conforming posix environment. From austin-group issue 500 + +lib/readline/histexpand.c + - history_expand: when processing a string within double quotes + (DQUOTE == 1), make the closing double quote inhibit history + expansion, as if the word were outside double quotes. In effect, + we assume that the double quote is followed by a character in + history_no_expand_chars. tcsh and csh seem to do this. This + answers a persistent complaint about history expansion + + 10/29 + ----- +make_cmd.c + - make_arith_for_command: use skip_to_delim to find the next `;' + when breaking the string between the double parens into three + separate components instead of a simple character loop. Fixes + bug reported by Dan Douglas + + 11/2 + ---- +Makefile.in + - make libbuiltins.a depend on builtext.h to serialize its creation + and avoid conflict between multiple invocations of mkbuiltins. + Fix from Mike Frysinger + + 11/5 + ---- +findcmd.c + - user_command_matches: if stat(".", ...) returns -1, set st_dev + and st_ino fields in dotinfo to 0 to avoid same_file matches + - find_user_command_in_path: check stat(2) return the same way + +lib/glob/glob.c + - glob_vector: don't call strlen(pat) without checking pat == 0 + - glob_dir_to_array: make sure to free `result' and all allocated + members before returning error due to malloc failure + - glob_vector: make sure to free `nextname' and `npat' on errors + (mostly when setting lose = 1) + - glob_vector: if flags & GX_MATCHDIRS but not GX_ALLDIRS, make + sure we free `subdir' + - glob_filename: when expanding ** (GX_ALLDIRS), make sure we + free temp_results (return value from glob_vector) + +lib/glob/xmbsrtowcs.c + - xdupmbstowcs: fix call to realloc to use sizeof (char *) instead + of sizeof (char **) when assigning idxtmp + +execute_cmd.c + - print_index_and_element: return 0 right away if L == 0 + - is_dirname: fix memory leak by freeing `temp' + - time_command: don't try to deref NULL `command' when assigning + to `posix_time' + - shell_execve: null-terminate `sample' after READ_SAMPLE_BUF so it's + terminated for functions that expect that + +builtins/read.def + - read_builtin: don't call bind_read_variable with a potentially-null + string + +pcomplete.c + - gen_command_matches: don't call dispose_word_desc with a NULL arg + - gen_compspec_completions: fix memory leak by freeing `ret' before + calling gen_action_completions (tcs, ...). happens when + performing directory completion as default and no completions + have been generated + - gen_progcomp_completions: make sure to set foundp to 0 whenever + returning NULL + - it_init_aliases: fix memory leak by freeing alias_list before + returning + +bashline.c + - command_word_completion_function: don't call restore_tilde with a + NULL directory_part argument + - bash_directory_expansion: bugfix: don't throw away results of + rl_directory_rewrite_hook if it's set and returns non-zero + - bind_keyseq_to_unix_command: free `kseq' before returning error + +arrayfunc.c + - assign_array_element_internal: make sure `akey' is freed if non-null + before returning error + - assign_compound_array_list: free `akey' before returning error + - array_value_internal: free `akey' before returning error + - unbind_array_element: free `akey' before returning error + +subst.c + - array_length_reference: free `akey' before returning error in case + of expand_assignment_string_to_string error + - array_length_reference: free `akey' after call to assoc_reference + - skip_to_delim: if skipping process and command substitution, free + return value from extract_process_subst + - parameter_brace_substring: free `val' (vtype == VT_VARIABLE) before + returning if verify_substring_values fails + - parameter_brace_expand: remove two duplicate lines that allocate + ret in parameter_brace_substring case + - parameter_brace_expand: convert `free (name); name = xmalloc (...)' + to use `xrealloc (name, ...)' + - parameter_brace_expand: free `name' before returning when handling + ${!PREFIX*} expansion + - split_at_delims: fix memory leak by freeing `d2' before returning + +redir.c + - redirection_error: free `filename' if the redirection operator is + REDIR_VARASSIGN by assigning allocname + +eval.c + - send_pwd_to_eterm: fix memory leak by freeing value returned by + get_working_directory() + +builtins/cd.def + - change_to_directory: fix memory leak by freeing return value from + resetpwd() + - cd_builtin: fix memory leak by freeing value returned by dirspell() + - cd_builtin: fix memory leak by freeing `directory' if appropriate + before overwriting with return value from resetpwd() + +builtins/type.def + - describe_command: free `full_path' before overwriting it with return + value from sh_makepath + +builtins/complete.def + - compgen_builtin: fix memory leak by calling strlist_dispose (sl) + before overwriting sl with return value from completions_to_stringlist + +builtins/hash.def + - list_hashed_filename_targets: fix memory leak by freeing `target' + +make_cmd.c + - make_arith_for_command: free `init', `test', and `step' before + returning error on parse error + +jobs.c + - initialize_job_control: don't call move_to_high_fd if shell_tty == -1 + +general.c + - check_dev_tty: don't call close with an fd < 0 + - legal_number: deal with NULL `string' argument, return invalid + +lib/sh/fmtulong.c + - fmtulong: if the `base' argument is invalid, make sure we index + buf by `len-1' at maximum + +print_cmd.c + - print_deferred_heredocs: don't try to dereference a NULL `cstring' + - cprintf: make sure to call va_end (args) + +variables.c + - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *) + instead of sizeof (WORD_LIST **) + +lib/sh/zmapfd.c + - zmapfd: if read returns error, free result and return -1 immediately + instead of trying to reallocate it + + 11/6 + ---- +execute_cmd.c + - cpl_reap: rewrote to avoid using pointer after freeing it; now builds + new coproc list on the fly while traversing the old one and sets the + right values for coproc_list when done + + 11/12 + ----- +builtins/set.def + - if neither -f nor -v supplied, don't allow a readonly function to + be implicitly unset. Fixes bug reported by Jens Schmidt + + +lib/readline/callback.c + - change CALLBACK_READ_RETURN to clear signal handlers before returning + from rl_callback_read_char so readline's signal handlers aren't + installed when readline doesn't have control. Idea from Jan + Kratochvil and the GDB development + team + +pcomplete.h + - COPT_NOQUOTE: new complete/compgen option value + +builtins/complete.def + - noquote: new complete/compgen option; will be used to disable + filename completion quoting + +pcomplete.c + - pcomp_set_readline_variables: pay attention to COPT_NOQUOTE; turns + of rl_filename_quoting_desired if set; turns it on if unset (value + is inverted, since default is on) + +doc/bash.1,lib/readline/doc/rluser.texi + - document new -o noquote option to complete/compgen/compopt + +pathexp.c + - quote_string_for_globbing: if QGLOB_REGEXP, make sure characters + between brackets in an ERE bracket expression are not inappropriately + quoted with backslashes. This is a pretty substantial change, + should be stressed when opening bash up for alpha and beta tests. + Fixes bug pointed out by Stephane Chazleas + + +doc/{bash.1,bashref.texi} + - document that regexp matches can be inconsistent when quoting + characters in bracket expressions, since usual quoting characters + lose their meaning within brackets + - note that regular expression matching when the pattern is stored + in a shell variable which is quoted for expansion causes string + matching + +redir.h + - RX_SAVEFD: new flag value; notes that a redirection denotes an + fd used to save another even if it's not >= SHELL_FD_BASE + +redir.c + - do_redirection_internal: when deciding whether or not to reset the + close-on-exec flag on a restored file descriptor, trust the value + of redirect->flags & RX_SAVCLEXEC even if the fd is < SHELL_FD_BASE + if the RX_SAVEFD flag is set + - add_undo_redirect: set the RX_SAVEFD flag if the file descriptor + limit is such that the shell can't duplicate to a file descriptor + >= 10. Fixes a limitation that tripped a coreutils test reported + by Paul Eggert + + 11/19 + ----- +doc/{bash.1,bashref.texi},lib/readline/doc/hsuser.texi + - make it clear that bash runs HISTFILESIZE=$HISTSIZE after reading + the startup files + - make it clear that bash runs HISTSIZE=500 after reading the + startup files + - make it clear that setting HISTSIZE=0 causes commands to not be + saved in the history list + - make it clear that setting HISTFILESIZE=0 causes the history file + to be truncated to zero size + +variables.c + - sv_histsize: change so setting HISTSIZE to a value less than 0 + causes the history to be `unstifled' + - sv_histsize: change so setting HISTFILESIZE to a value less than 0 + results in no file truncation + - make it clear that numeric values less than 0 for HISTFILESIZE or + HISTSIZE inhibit the usual functions + + 11/23 + ----- +parse.y + - save_input_line_state: add missing `return ls' at the end, since the + function is supposed to return its argument. Pointed out by + Andreas Schwab + +builtins/read.def + - skip over NUL bytes in input, as most modern shells seem to. Bug + report by Matthew Story + +lib/readline/vi_mode.c + - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key + + 11/25 + ----- +builtins/read.def + - read_builtin: if xrealloc returns same pointer as first argument, + don't bother with the remove_unwind_protect/add_unwind_protect pair + - read_builtin: set a flag (`reading') around calls to zread/zreadc + and readline() + - sigalrm: change to set flag (`sigalrm_seen') and only longjmp if + currently in read(2) (reading != 0) + - CHECK_ALRM: new macro, checks sigalrm_seen and longjmps if non-zero, + behavior of old SIGALRM catching function + - read_builtin: call CHECK_ALRM in appropriate places while reading + line of input. Fixes bug reported by Pierre Gaston + + +lib/readline/vi_mode.c + - rl_vi_replace: initialize characters before printing characters in + vi_replace_keymap to their default values in vi_insertion_keymap, + since we're supposed to be in insert mode replacing characters + - rl_vi_replace: call rl_vi_start_inserting to set last command to + `R' for undo + - rl_vi_replace: set _rl_vi_last_key_before_insert to `R' for future + use by _rl_vi_done_inserting + - vi_save_insert_buffer: new function, broke out code that copies text + into vi_insert_buffer from _rl_vi_save_insert + - _rl_vi_save_replace: new function, saves text modified by + rl_vi_replace (using current point and vi_replace_count to figure + it out) to vi_replace_buffer + - _rl_vi_save_insert: call vi_save_insert_buffer + - _rl_vi_done_inserting: if _rl_vi_last_key_before_insert == 'R', call + _rl_vi_save_replace to save text modified in replace mode (uses + vi_save_insert_buffer) + - _rl_vi_replace_insert: new function, replaces the number of chars + in vi_insert_buffer after rl_point with contents ov vi_insert_buffer + - rl_vi_redo: call _rl_vi_replace_insert if last command == 'R' and + there's something in vi_insert_buffer. Fixes bug with `.' not + redoing the most recent `R' command, reported by Geoff Clare + in readline area on savannah + + 11/26 + ----- +lib/readline/rlprivate.h + - RL_SIG_RECEIVED(): evaluate to non-zero if there is a pending signal + to be handled + - RL_SIGINT_RECEIVED(): evaluate to non-zero if there is a pending + SIGINT to be handled + +lib/readline/complete.c + - remove all mention of _rl_interrupt_immediately + - rl_completion_matches: check RL_SIG_RECEIVED after each call to + the entry function, call RL_CHECK_SIGNALS if true to handle the + signal + - rl_completion_matches: if RL_SIG_RECEIVED evaluates to true, free + and zero out the match_list this function allocated + - rl_completion_matches: if the completion entry function is + rl_filename_completion_function, free the contents of match_list, + because that function does not keep state and will not free the + entries; avoids possible memory leak pointed out by + Garrett Cooper + - gen_completion_matches: if RL_SIG_RECEIVED evalutes to true after + calling rl_attempted_completion_function, free the returned match + list and handle the signal with RL_CHECK_SIGNALS; avoids + possible memory leak pointed out by Garrett Cooper + + - gen_completion_matches: if RL_SIG_RECEIVED evaluates to true after + calling rl_completion_matches, free the returned match list and + handle the signal with RL_CHECK_SIGNALS + +lib/readline/util.c + - rl_settracefp: new utility function to set the tracing FILE * + +lib/readline/signals.c + - _rl_sigcleanup: pointer to a function that will be called with the + signal and a void * argument from _rl_handle_signal + - _rl_sigcleanarg: void * that the rest of the code can set to have + passed to the signal cleanup function + - _rl_handle_signal: if _rl_sigcleanup set, call as + (*_rl_sigcleanup) (sig, _rl_sigcleanarg) + +lib/readline/rlprivate.h + - extern declarations for _rl_sigcleanup and _rl_sigcleanarg + +lib/readline/complete.c + - _rl_complete_sigcleanup: signal cleanup function for completion code; + calls _rl_free_match_list on _rl_sigcleanarg if signal == SIGINT + - rl_complete_internal: before calling display_matches if what_to_do + == `?', set _rl_sigcleanup to _rl_complete_sigcleanup so the match + list gets freed on SIGINT; avoids possible memory leak pointed out + by Garrett Cooper + - rl_complete_internal: in default switch case, call _rl_free_match_list + before returning to avoid memory leak + +doc/bashref.texi + - start at a set of examples for the =~ regular expression matching + operator, touching on keeping the pattern in a shell variable and + quoting portions of the pattern to remove their special meaning + + 12/1 + ---- +lib/glob/gmisc.c + - extglob_pattern: new function, returns 1 if pattern passed as an + argument looks like an extended globbing pattern + +lib/glob/glob.c + - skipname: return 0 immediately if extglob_pattern returns non-zero, + let the extended globbing code do the right thing with skipping + names beginning with a `.' + - mbskipname: return 0 immediately if extglob_pattern returns non-zero, + let the extended globbing code do the right thing with skipping + names beginning with a `.'. Fixes bug reported by Yongzhi Pan + + + 12/2 + ---- +lib/glob/smatch.c + - patscan, patscan_wc: no longer static so other parts of the glob + library can use them, renamed to glob_patscan, glob_patscan_wc + +lib/glob/glob.c + - extern declarations for glob_patscan, glob_patscan_wc + - wchkname: new function, does skipname on wchar_t pattern and dname, + old body of mbskipname after converting to wide chars + - extglob_skipname: new function, checks all subpatterns in an extglob + pattern to determine whether or not a filename should be skipped. + Calls skipname for each subpattern. Dname is only skipped if all + subpatterns indicate it should be. Better fix for bug reported by + Yongzhi Pan + - wextglob_skipname: wide-char version of extglob_skipname, calls + wchkname instead of calling back into mbskipname for each + subpattern to avoid problems with char/wchar_t mismatch + - skipname: call extglob_skipname if extglob_pattern returns non-zero + - mbskipname: call wextglob_skipname if extglob_pattern returns non-zero + - mbskipname: short-circuit immediately if no multibyte chars in + pattern or filename + +execute_cmd.c + - execute_cond_node: added parens to patmatch assignment statement to + make intent clearer + + 12/3 + ---- +configure.in,config.h.in + - check for imaxdiv, define HAVE_IMAXDIV if present + +expr.c + - expassign, exp2: use imaxdiv if available. Doesn't help with checks + for overflow from 10/25 + + 12/6 + ---- +lib/readline/complete.c + - compute_lcd_of_matches: if we're ignoring case in the matches, only + use what the user typed as the lcd if it matches the first match + (after sorting) up to the length of what was typed (if what the + user typed is longer than the shortest of the possible matches, use + the shortest common length of the matches instead). If it doesn't + match, use the first of the list of matches, as if case were not + being ignored. Fixes bug reported by Clark Wang + + + 12/7 + ---- +builtins/cd.def + - cd_builtin: add code to return error in case cd has more than one + non-option argument, conditional on CD_COMPLAINS define (which is + not defined anywhere) + +doc/{bash.1,bashref.texi} + - note that additional arguments to cd following the directory name + are ignored. Suggested by Vaclav Hanzl + + 12/10 + ----- +lib/readline/input.c + - rl_read_key: don't need to increment key sequence length here; doing + it leads to an off-by-one error + +lib/readline/macro.c + - rl_end_kbd_macro: after off-by-one error with rl_key_sequence_length + fixed, can decrement current_macro_index by rl_key_sequence_length + (length of key sequence that closes keyboard macro) + +lib/readline/readline.c + - _rl_dispatch_subseq: fix extra increment of rl_key_sequence_length + when ESC maps to a new keymap and we're converting meta characters + to ESC+key + - _rl_dispatch_subseq: better increment of rl_key_sequence_length + before we dispatch to a function in the ISFUNC case (where the + second increment above should have happened) + - rl_executing_keyseq: the full key sequence that ended up executing + a readline command. Available to the calling application, maintained + by _rl_dispatch_subseq, indexed by rl_key_sequence_length + - rl_executing_key: the key that was bound to the currently-executing + readline command. Same as the `key' argument to the function + +lib/readline/readline.h + - rl_executing_keyseq: extern declaration + - rl_executing_key: extern declaration + - rl_key_sequence_length: declaration moved here from rlprivate.h, + now part of public interface + +lib/readline/rlprivate.h + - new extern declaration for _rl_executing_keyseq_size, buffer size + for rl_executing_keyseq + +lib/readline/doc/rltech.texi + - documented new variables: rl_executing_key, rl_executing_keyseq, + rl_key_sequence_length + + 12/13 + ----- +bashline.c + - bash_execute_unix_command: replace ad-hoc code that searches + cmd_xmap for correct command with call to rl_function_of_keyseq + using rl_executing_keyseq; now supports key sequences longer + than two characters. Fixes bug reported by Michael Kazior + + + 12/15 + ----- +make_cmd.c + - make_function_def: don't null out source_file before calling + make_command so it can be used later on when the function definition + is executed + +execute_cmd.c + - execute_intern_function: second argument is now FUNCTION_DEF * + instead of COMMAND * + - execute_command_internal: call execute_intern_function with the + new second argument (the entire FUNCTION_DEF instead of just the + command member) + - execute_intern_function: if DEBUGGER is defined, call + bind_function_def before calling bind_function, just like + make_function_def does (might be able to take out the call in + make_function_def depending on what the debugger does with it). + Fixes bug reported by + +expr.c + - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1; + fix typos and logic errors + + 12/16 + ----- +bashline.c + - find_cmd_start: change flags to remove SD_NOSKIPCMD so it skips over + command substitutions and doesn't treat them as command separators + - attempt_shell_completion: instead of taking first return from + find_cmd_name as command name to use for programmable completion, + use loop to skip over assignment statements. Fixes problem reported + by Raphael Droz + - attempt_shell_completion: if we don't find a command name but the + command line is non-empty, assume the other words are all assignment + statements and flag that point is in a command position so we can + do command name completion + - attempt_shell_completion: if the word being completed is the first + word following a series of assignment statements, and the + command line is non-empty, flag that point is in a command position + so we can do command name completion + +lib/readline/history.c + - history_get_time: atol -> strtol + + 12/18 + ----- +parse.y + - parser_in_command_position: external interface to the + command_token_position macro for use by other parts of the shell, + like the completion mechanism + +externs.h + - extern declaration for parser_in_command_position + + 12/19 + ----- + +builtins/read.def + - read_builtin: make sure all calls to bind_read_variable are passed + a non-null string. Fixes bug reported by Dan Douglas + + +bashline.c + - attempt_shell_completion: mark that we're in a command position if + we're at the start of the line and the parser is ready to accept + a reserved word or command name. Feature most recently suggested + by Peng Yu + + 12/21 + ----- +lib/readline/bind.c + - _rl_escchar: return the character that would be backslash-escaped + to denote the control character passed as an argument ('\n' -> 'n') + - _rl_isescape: return 1 if character passed is one that has a + backslash escape + - _rl_untranslate_macro_value: new second argument: use_escapes, if + non-zero translate to backslash escapes where possible instead of + using straight \C-x for control character `x'. Change callers + - _rl_untranslate_macro_value: now global + +lib/readline/rlprivate.h + - _rl_untranslate_macro_value: extern declaration + +lib/readline/{macro.c,readline.h} + - rl_print_last_kbd_macro: new bindable function, inspired by patch + from Mitchel Humpherys + +lib/readline/funmap.c + - print-last-kbd-macro: new bindable command, bound to + rl_print_last_kbd_macro + +lib/readline/doc/{rluser.texi,readline.3},doc/bash.1 + - print-last-kbd-macro: document. + +lib/readline/text.c + - _rl_insert_next: if we're defining a macro, make sure the key gets + added to the macro text (should really audit calls to rl_read_key() + and make sure the right thing is happening for all of them) + +bashline.[ch] + - print_unix_command_map: new function, prints all bound commands in + cmd_xmap using rl_macro_dumper in a reusable format + +builtins/bind.def + - new -X option: print all keysequences bound to Unix commands using + print_unix_command_map. Feature suggested by Dennis Williamson + (2/2011) + +doc/{bash.1,bashref.texi} + - document new `bind -X' option + + 12/24 + ----- + +doc/{bash.1,bashref.texi} + - add a couple of sentences to the description of the case modification + operators making it clearer that each character of parameter is + tested against the pattern, and that the pattern should only attempt + to match a single character. Suggested by Bill Gradwohl + + + 12/28 + ----- +shell.c + - init_noninteractive: instead of calling set_job_control(0) to + unconditionally turn off job control, turn on job control if + forced_interactive or jobs_m_flag is set + - shell_initialize: call initialize_job_control with jobs_m_flag as + argument so `bash -m script' enables job control while running the + script + +jobs.c + - initialize_job_control: if the `force' argument is non-zero, turn on + job control even if the shell is not currently interactive + (interactive == 0) + + 12/29 + ----- + +flags.h + - new extern declaration for jobs_m_flag + +builtins/{cd,set}.def,doc/{bash.1,bashref.texi} + - added text clarifying the descriptions of cd -L and -P, suggested by + Padraig Brady + - slight change to the description of `set -P' about resolving symbolic + links + +lib/readline/doc/rluser.texi + - Added an example to the programmable completion section: _comp_cd, + a completion function for cd, with additional verbiage. Text + includes a reference to the bash_completion project + + 1/1/2012 + -------- +jobs.c + - set_job_status_and_cleanup: note that a job is stopped due to + SIGTSTP (any_tstped) if job_control is set; there's no need to + test interactive + + 1/5 + --- +quit.h + - LASTSIG(): new macro, expands to signal number of last terminating + signal received (terminating_signal or SIGINT) + +trap.c + - first_pending_trap: returns lowest signal number with a trap pending + - trapped_signal_received: set to the last trapped signal the shell + received in trap_handler(); reset to 0 in run_pending_traps + +builtins/read.def + - read_builtin: changes to posix-mode (posixly_correct != 0) to make + `read' interruptible by a trapped signal. After the trap runs, + read returns 128+sig and does not assign the partially-read line + to the named variable(s). From an austin-group discussion started + by David Korn + + 1/11 + ---- +doc/{bash.1,bashref.texi} + - slight changes to the descriptions of the compat32 and compat40 shell + options to clarify their meaning + + 1/12 + ---- +lib/readline/{colors.[ch],parse-colors.[ch]} + - new files, part of color infrastructure support + +Makefile.in,lib/readline/Makefile.in + - arrange to have colors.o and parse-colors.o added to readline + library + +{configure,config.h}.in + - check for stdbool.h, define HAVE_STDBOOL_H if found + + 1/14 + ---- +lib/readline/bind.c + - colored_stats: new bindable variable, enables using colors to + indicate file type when listing completions + +lib/readline/complete.c + - _rl_colored_stats: new variable, controlled by colored-stats bindable + variable + - colored_stat_start, colored_stat_end: new functions to set and reset + the terminal color appropriately depending on the type of the + filename to be printed + - print_filename: changes to print colors if `colored-stats' variable + set. Changes contributed by Raphael Droz + + +lib/readline/readline.c + - rl_initialize_everything: add call to _rl_parse_colors to parse + color values out of $LS_COLORS. May have to add to rl_initialize + to make more dynamic if LS_COLORS changes (which doesn't happen + very often, if at all) + +lib/readline/rlprivate.h + - _rl_colored_stats: new extern declaration + +lib/readline/doc/{readline.3,rluser.texi},doc/bash.1 + - colored-stats: document new bindable readline variable + +lib/readline/colors.c + - _rl_print_color_indicator: call rl_filename_stat_hook before calling + lstat/stat so we can get color indicators for stuff like + $HOME/Applications + +lib/readline/complete.c + - stat_char: call rl_filename_stat_hook before calling lstat/stat + +findcmd.[ch],execute_cmd.c + - search_for_command: now takes a second `flags' argument; changed + header function prototype and callers + - search_for_command: if (flags & 1), put the command found in $PATH + into the command hash table (previous default behavior) + +execute_cmd.c + - is_dirname: call search_for_command with flags argument of 0 so it + doesn't try to put something in the command hash table + +bashline.c + - bash_command_name_stat_hook: a hook function for readline's + filename_stat_hook that does $PATH searching the same way that + execute_cmd.c:execute_disk_command() does it, and rewrites the + passed filename if found. Does not put names into command hash + table. This allows command name completion to take advantage + of `visible-stats' and `colored-stats' settings. + - executable_completion: new function, calls the directory completion + hook to expand the filename before calling executable_file or + executable_or_directory; change command_word_completion_function to + call executable_completion. This allows $HOME/bin/[TAB] to do + command completion and display alternatives + + 1/17 + ---- +pcomplete.c + - gen_command_matches: now takes a new second argument: the command + name as deciphered by the programmable completion code and used + to look up the compspec; changed callers (gen_compspec_completions) + - gen_shell_function_matches: now takes a new second argument: the + command that originally caused the completion function to be + invoked; changed callers (gen_compspec_completions)) + - build_arg_list: now takes a new second argument: the command name + corresponding to the current compspec; changed callers + (gen_command_matches, gen_shell_function_matches) + - build_arg_list: now uses `cmd' argument to create $1 passed to + invoked command or shell function + - gen_compspec_completions: if we skipped a null command at the + beginning of the line (e.g., for completing `>'), add a new word for + it at the beginning of the word list and increment nw and cw + appropriately. This is all a partial fix for the shortcoming + pointed out by Sung Pae + + 1/18 + ---- + +{configure,config.h}.in + - new check: check for AUDIT_USER_TTY defined in , + define HAVE_DECL_AUDIT_USER_TTY if both are found + +lib/readline/rlconf.h + - ENABLE_TTY_AUDIT_SUPPORT: new define, allows use of the Linux kernel + tty auditing system if it's available and enabled + +lib/readline/util.c + - _rl_audit_tty: new function, send a string to the kernel tty audit + system + +lib/readline/rlprivate.h + - _rl_audit_tty: new extern declaration + +lib/readline/readline.c + - readline: call _rl_audit_tty with line to be returned before returning + it if the Linux tty audit system is available and it's been enabled + in rlconf.h Original patch from Miroslav Trmac; recent request + from Miroslav Lichvar + + 1/21 + ---- + +lib/readline/readline.c: + - _rl_dispatch_subseq: add an inter-character timeout for multi-char + key sequences. Suggested by . Still needs + work to make a user-settable variable + +parse.y + - shell_getc: make code that uses the pop_alias dependent on ALIAS + define + +variables.h + - sv_tz: extern define should only depend on HAVE_TZSET + +expr.c + - expr_streval: if ARRAY_VARS is not defined, set lvalue->ind to -1; + move assignment to `ind' inside define + - expr_bind_array_element: declaration and uses need to be #ifdef + ARRAY_VARS + +arrayfunc.h + - AV_ALLOWALL, AV_QUOTED, AV_USEIND: define to 0 if ARRAY_VARS not + defined; used in subst.c unconditionally + +sig.h + - make the signal blocking functions not dependent on JOB_CONTROL + +sig.c + - sigprocmask: make the replacement definition not dependent on + JOB_CONTROL + +trap.c + - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on + HAVE_POSIX_SIGNALS and BSD signals + + 1/24 + ---- + +print_cmd.c + - print_redirection_list: change the conditions under which + r_duplicating_output_word is mapped to r_err_and_out to more or + less match those used in redir.c. Fixes bug pointed out by + Dan Douglas + + + 1/29 + ---- +lib/readline/signals.c + - _rl_block_sigwinch,_rl_release_sigwinch: don't compile in bodies + unless SIGWINCH is defined. Fixes bug reported by Pierre Muller + + +doc/{bash.1,bashref.texi} + - small modifications to the introduction to the REDIRECTION section + to describe how redirections can modify file handles + - small modification to the section describing base#n to make it + clearer that n can be denoted using non-numerics. From a posting + by Linda Walsh + + 2/2 + --- +builtins/printf.def + - printf_builtin: make sure vbuf is intialized and non-null when -v + is supplied, since other parts of the code assume that it's not + null (e.g., bind_printf_variable()). Fixes bug reported by Jim + Avera + + 2/4 + --- +lib/readline/undo.c + - _rl_free_undo_list: new function, old body of rl_free_undo_list, + frees undo entries in UNDO_LIST * passed as argument + - rl_free_undo_list: call _rl_free_undo_list + +lib/readline/rlprivate.h + - _rl_free_undo_list: new extern declaration + - _rl_keyseq_timeout: new extern declaration (see below) + +lib/readline/misc.c + - rl_clear_history: new function. Clears the history list and frees + all associated data similar to history.c:clear_history(), but + takes rl_undo_list into account and frees and UNDO_LISTs saved as + `data' members of a history list entry + +lib/readline/doc/rltech.texi + - rl_clear_history: documented + +lib/readline/readline.c + - _rl_keyseq_timeout: new variable to hold intra-key timeout value + from 1/21 fix; specified in milliseconds. Default value is 500 + - _rl_dispatch_subseq: change to use _rl_keyseq_timeout as intra-key + timeout if it's greater than 0; no timeout if <= 0 + - _rl_dispatch_subseq: don't check for queued keyboard input if we have + pushed or pending input, or if we're reading input from a macro + +lib/readline/bind.c + - keyseq-timeout: new bindable variable, shadows _rl_keyseq_timeout + - string_varlist: add keyseq-timeout + - sv_seqtimeout: new function to modify value of _rl_keyseq_timeout; + clamps negative values at 0 for now + - _rl_get_string_variable_value: return value for keyseq-timeout + +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - keyseq-timeout: documented + +lib/readline/isearch.c + - _rl_isearch_dispatch: modification to fix from 7/18 to not use + cxt->keymap and cxt->okeymap, since by the time this code is + executed, they are equal. Use `f' to check for rl_insert or + unbound func + - _rl_isearch_dispatch: if we're switching keymaps, not in + callback mode, and don't have pending or pushed input, use + _rl_input_queued to resolve a potentially ambiguous key sequence. + Suggested by Roger Zauner + - _rl_isearch_dispatch: if we have changed keymaps and resolved to + an editing function (not self-insert), make sure we stuff the + right characters back onto the input after changing the keymap + back so the right editing function is executed after the search + is terminated. Rest of fix for bug reported by Roger Zauner + + + 2/5 + --- +builtins/gen-helpfiles.c + - new file: reads struct builtin and writes the long docs to files + in the `helpdirs' subdirectory. The filename is given in the + previously-unused `handle' member of the struct builtin. Links + with `tmpbuiltins.o', which is created by Makefile to have the + right long documentation. When not cross-compiling, gets the + right #defines based on configuration options from config.h instead + of trying to parse conditional parts of def files. Fixes + shortcoming pointed out by Andreas Schwab + +builtins/Makefile.in + - tmpbuiltins.c: new generated file, created to enable creation of + separate helpfiles based on correct #defines instead of trying to + parse conditional parts of def files + - gen-helpfiles: new program to generate helpfiles, links with + tmpbuiltins.o + - HELPFILES_TARGET: new target, substituted by configure to `helpdoc' + if separate helpfiles requested + - targets: new target, libbuiltins.a and $(HELPFILES_TARGET) + - CREATED_OBJECTS: new variable, holds created object files for + make clean; changed make clean to remove created objects + - helpdoc: changed to call gen-helpfiles instead of mkbuiltins + +Makefile.in + - when building libbuiltins.a, recursively call make with `targets' + argument to make sure separate helpfiles get built + +configure.in + - substitute `helpdoc' as value of HELPFILES_TARGET if + --enable-separate-helpfiles supplied as configure argument + +builtins/mkbuiltins.c + - `-nofunctions': new argument, causes mkbuiltins to not write value + for function implementing a particular builtin to struct builtin + and to write document file name to `handle' member of struct builtin + - no longer writes separate helpfiles; that is left to gen-helpfiles + + 2/8 + --- +subst.c + - make sure last_command_exit_value is set to a non-zero value before + any calls to report_error, since `-e' set will short-circuit + report_error. Fixes bug reported by Ewan Mellor + + +variables.c + - make_local_array_variable: added second argument; if non-zero, + function will return an existing local associative array variable + instead of insisting on an indexed array + +variable.h,subst.c + - make_local_array_variable: changed prototype and caller + +builtins/declare.def + - declare_internal: add second arg to call to make_local_array_variable; + making_array_special, which indicates we're processing an + assignment like declare a[b]=c. Fixes seg fault resulting from + a being an already-declared local associative array variable in a + function. Ubuntu bash bug 928900. + + 2/14 + ---- + +execute_cmd.c + - execute_command_internal: if redirections into or out of a loop fail, + don't try to free ofifo_list unless saved_fifo is non-zero. It's + only valid if saved_fifo is set + + 2/15 + ---- +{arrayfunc,braces,variables}.c + - last_command_exit_value: make sure it's set before any calls to + report_error, since -e will cause that to exit the shell + +builtins/common.c + - get_job_by_name: call internal_error instead of report_error so this + doesn't exit the shell + + 2/18 + ---- +builtins/evalstring.c + - parse_and_execute: make sure the file descriptor to be redirected to + is 1 before calling cat_file. One fix for bug reported by Dan Douglas + + +parse.y + - read_token_word: don't return NUMBER if a string of all digits + resolves to a number that overflows the bounds of an intmax_t. + Other fix for bug reported by Dan Douglas + + 2/19 + ---- +lib/sh/strtrans.c + - ansicstr: use 0x7f as the boundary for characters that translate + directly from ASCII to unicode (\u and \U escapes) instead of + UCHAR_MAX, since everything >= 0x80 requires more than one byte. + Bug and fix from John Kearney + +builtins/printf.def + - tescape: ditto for printf \u and \U escape sequences + + 2/20 + ---- +lib/sh/unicode.c + - u32toutf8: fix to handle encodings up to six bytes long correctly + (though technically UTF-8 only has characters up to 4 bytes long). + Report and fix from John Kearney + - u32toutf8: first argument is now an unsigned 32-bit quantity, + changed callers (u32cconv) to pass c instead of wc + - u32reset: new function, resets local static state to uninitialized + (locale information, currently) + +locale.c + - call u32reset whenever LC_CTYPE/LC_ALL/LANG is changed to reset the + cached locale information used by u32cconv. From a report from + John Kearney + + 2/21 + ---- +doc/{bash,builtins}.1 + - minor changes from Bjarni Ingi Gislason + +lib/sh/unicode.c + - u32cconv: only assume you can directly call wctomb on the passed + value if __STDC_ISO_10646__ is defined and the value is <= + 0x7fffffff + - stub_charset: return locale as default instead of "ASCII", let + rest of code decide what to do with it + +lib/readline/parens.c + - _rl_enable_paren_matching: make paren matching work in vi insert + mode. Bug report from + + 2/22 + ---- +lib/sh/shquote.c + - sh_backslash_quote: quote tilde in places where it would be + expanded. From a report from John Kearney + + 2/23 + ---- +execute_cmd.c + - execute_pipeline: wrap the discard_unwind_frame call in #ifdef + JOB_CONTROL, since the frame is only created if JOB_CONTROL is + defined. Bug and fix from Doug Kehn + + 2/25 + ---- +error.c + - report_error: make sure last_command_exit_value is non-zero before + we call exit_shell, since the exit trap may reference it. Call + exit_shell with last_command_exit_value to allow exit statuses + other than 1 + +unicode.c + - stub_charset: use local static buffer to hold charset, don't change + value returned by get_locale_var. Based on idea and code from + John Kearney + - u32toutf16: function to convert unsigned 32-bit value (unicode) to + UTF-16. From John Kearney + - u32cconv: call u32toutf16 if __STDC_ISO_10646__ defined and wchar_t + is two bytes, send result to wcstombs, return if not encoding error. + From John Kearney + - u32cconv: return UTF-8 conversion if iconv conversion to local + charset is unsupported + + 3/2 + --- +lib/readline/complete.c + - print_filename: if there is no directory hook, but there is a stat + hook, and we want to append a slash to directories, call the stat + hook before calling path_isdir on the expanded directory name. + Report and pointer to fix from Steve Rago + + 3/3 + --- +builtins/evalstring.c + - parse_and_execute: fix to change of 2/18: make sure the file + descriptor being redirected to is 0 before calling cat_file when + we see something like $(< file). Real fix for bug reported by + Dan Douglas + +subst.c + - parameter_brace_patsub: run the replacement string through quote + removal even if the expansion is within double quotes, because + the parser and string extract functions treat the quotes and + backslashes as special. If they're treated as special, quote + removal should remove them (this is the Posix position and + compatible with ksh93). THIS IS NOT BACKWARDS COMPATIBLE. + + 3/4 + --- +lib/readline/complete.c + - rl_menu_complete: fix to make show-all-if-ambiguous and + menu-complete-display-prefix work together if both are set. Fix + from Sami Pietila + + 3/5 + --- +bashline.c + - dircomplete_expand_relpath: new variable, if non-zero, means that + `shopt -s direxpand' should expand relative pathnames. Zero by + default, not user-settable yet + - bash_directory_completion_hook: if we have a relative pathname that + isn't changed by canonicalization or spell checking after being + appended to $PWD, then don't change what the user typed. Controlled + by dircomplete_expand_relpath + + 3/7 + --- +m4/timespec.m4 + - new macros, cribbed from gnulib and coreutils: find out whether we + have `struct timespec' and what file includes it + +m4/stat-time.m4 + - new macros, cribbed from gnulib and coreutils: find out whether the + mtime/atime/ctime/etctime fields of struct stat are of type + struct timespec, and what the name is + +include/stat-time.h + - new file, cribbed from gnulib, with additions from coreutils: include + the right file to get the struct timespec define, or provide our own + replacement. Provides a bunch of inline functions to turn the + appropriate members of struct stat into `struct timespec' values, + zeroing out the tv_nsec field if necessary + +test.c + - include "stat-time.h" for the nanosecond timestamp resolution stuff + - stat_mtime: new function, returns struct stat and the mod time + normalized into a `struct timespec' for the filename passed as the + first argument + - filecomp: call stat_mtime instead of sh_stat for each filename + argument to get the mtime as a struct timespec + - filecomp: call timespec_cmp instead of using a straight arithmetic + comparison for the -nt and -ot operators, using timespec returned by + stat_mtime. Added functionality requested by by Werner Fink + for systems that can support it + + 3/10 + ---- +include/posixdir.h + - REAL_DIR_ENTRY: remove dependency on _POSIX_SOURCE, only use feature + test macros to decide whether dirent.d_ino is present and usable; + define D_INO_AVAILABLE. Report and fix from Fabrizion Gennari + + - D_FILENO_AVAILABLE: define if we can use dirent.d_fileno + +lib/sh/getcwd.c + - use D_FILENO_AVAILABLE to decide whether or not to compile in + _path_checkino and whether or not to call it. Report and initial + fix from Fabrizion Gennari + +lib/readline/signals.c + - make sure all occurrences of SIGWINCH are protected by #ifdef + +sig.c + - make sure all occurrences of SIGCHLD are protected by #ifdef + +nojobs.c + - make sure SA_RESTART is defined to 0 if the OS doesn't define it + +version.c + - show_shell_version: don't use string literals in printf, use %s. + Has added benefit of removing newline from string to be translated + +trap.c + - queue_sigchld_trap: new function, increments the number of pending + SIGCHLD signals by the argument, which is by convention the number + of children reaped in a call to waitchld() + +trap.h + - queue_sigchld_trap: new extern declaration + +jobs.c + - waitchld: if called from the SIGCHLD signal handler (sigchld > 0), + then call queue_sigchld_trap to avoid running the trap in a signal + handler context. Report and original fix from Siddhesh Poyarekar + + +lib/sh/unicode.c + - u32tocesc: take an unsigned 32-bit quantity and encode it using + ISO C99 string notation (\u/\U) + - u32cconv: call u32tocesc as a fallback instead of u32cchar + - u32cconv: call u32tocesc if iconv cannot convert the character. + Maybe do the same thing if iconv_open fails + - u32reset: call iconv_close on localconv if u32init == 1 + + 3/11 + ---- +config-top.h + - CHECKWINSIZE_DEFAULT: new define, set to initial value of + check_window_size (shopt checkwinsize): 0 for off, 1 for on. + Default is 0 + +{jobs,nojobs}.c + - check_window_size: default initial value to CHECKWINSIZE_DEFAULT + + 3/13 + ---- +doc/bashref.texi + - change text referring to the copying restrictions to that + recommended by the FSF (no Front-Cover Texts and no Back-Cover + Texts) + +lib/readline/doc/{history,rlman,rluserman}.texi + - change text referring to the copying restrictions to that + recommended by the FSF (no Front-Cover Texts and no Back-Cover + Texts) + + 3/15 + ---- +array.c + - LASTREF_START: new macro to set the starting position for an array + traversal to `lastref' if that's valid, and to the start of the array + if not. Used in array_reference, array_insert, array_remove + - array_remove: try to be a little smarter with lastref instead of + unconditionally invalidating it + + 3/16 + ---- +array.c + - array_insert: fix memory leak by deleting element to be added in the + case of an error + + 3/18 + ---- +lib/sh/mbschr.c + - mbschr: don't call mbrlen unless is_basic is false; devolves to a + straight character-by-character run through the string + + 3/19 + ---- +stringlib.c + - substring: use memcpy instead of strncpy, since we know the length + and are going to add our own NUL terminator + + 3/20 + ---- +subst.c + - parameter_brace_expand_rhs: if expand_string_for_rhs returns a quoted + null string (a list with one element for which + QUOTED_NULL(list->word->word) returns true), return the quoted null + and set the flags in the returned word to indicate it. Fixes bug + reported by Mark Edgar + +lib/sh/tmpfile.c + - use random(3) instead of get_random_number to avoid perturbing the + random sequence you get using $RANDOM. Bug report and fix from + Jurij Mihelic + + 3/21 + ---- +config-top.h + - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize + sequential indexed array assignment patterns. Defined to 1 by + default + +array.c + - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined, + start the search at lastref (see change from 3/15) + + 3/27 + ---- +print_cmd.c + - debug_print_word_list: new debugging function, prints a word list + preceded by an optional string and using a caller-specified + separator + + 4/1 + --- +command.h + - W_ASSNGLOBAL: new flag, set to indicate declare -g + +execute_cmd.c + - fix_assignment_words: note that we have a -g argument to an assignment + builtin and set the W_ASSNGLOBAL flag in the variable word + +subst.c + - dump_word_flags: print out W_ASSNGLOBAL if present + - do_assignment_internal: only set ASS_MKLOCAL if W_ASSIGNARG is set + and W_ASSNGLOBAL is not. Don't want to create a local variable even + if variable_context is non-zero if ASSNGLOBAL is set. Fixes bug + reported by Bill Gradwohl + + 4/7 + --- +lib/readline/readline.c + - _rl_dispatch_subseq: make the `keyseq-timeout' variable apply to + ESC processing when in vi mode. After hitting ESC, readline will + wait up to _rl_keyseq_timeout*1000 microseconds (if set) for + additional input before dispatching on the ESC and switching to + command/movement mode. Completes timeout work suggested by + ; this prompted by report from Barry Downes + + +lib/sh/shmbchar.c + - sh_mbsnlen: new function, returns the number of (possibly multibyte) + characters in a passed string with a passed length, examining at most + maxlen (third argument) bytes + +externs.h + - sh_mbsnlen: extern declaration for new function + +shell.c + - exit_shell: call maybe_save_shell_history if remember_on_history is + set, not just in interactive shells. That means the history is + saved if history is enabled, regardless of whether or not the shell + is interactive + +doc/{bash.1,bashref.texi} + - TMOUT: fix description to make it explicit that TMOUT is the timeout + period for a complete line of input, not just any input. Fixes + problem reported in Ubuntu bug 957303: + https://bugs.launchpad.net/ubuntu/+source/bash/+bug/957303 + - HISTFILE: document change to write history list to history file in + any shell with history enabled, not just interactive shells. This + seems to be more logical behavior. Suggested by Greg Wooledge + + + 4/12 + ---- +lib/readline/colors.h + - only include stdbool.h if HAVE_STDBOOL_H is defined + - if HAVE_STDBOOL_H is not defined, provide enough definition for the + library to use `bool', `true', and `false' + +lib/readline/parse-colors.[ch] + - don't try to include at all; rely on colors.h to do it + +lib/sh/snprintf.c + - vsnprintf_internal: only treat '0' as a flag to indicate zero padding + if `.' hasn't been encountered ((flags&PF_DOT) == 0); otherwise treat + it as the first digit of a precision specifier. Fixes bug reported + by Petr Sumbera + + 4/15 + ---- +lib/sh/snprintf.c + - vsnprintf_internal: if the '0' and '-' flags both occur, the '0' + flag is ignored -- Posix. Start of a series of fixes based on + tests and patches from Petr Sumbera + - PUT_PLUS: make sure PF_PLUS flag is specified before putting the `+' + - vsnprintf_internal: when '+' is read as a flag, don't set right- + justify flag if the LADJUST (`-') flag has already been supplied + - floating: make sure to output space padding before the `+', zero + padding after + - exponent: make sure to output space padding before the `+', zero + padding after + - exponent: only subtract one from the width for the decimal point + if we're really going to print one + - floating: use presence of PF_PLUS flag to decide whether to account + for the `+' in the padded field width. Ditto for exponent() + + 4/16 + ---- +lib/sh/snprintf.c + - vsnprint_internal: only reduce precision by 1 when processing the `g' + format if it's > 0. A precision of 0 should stay 0; otherwise it + gets set to -1 (NOT_FOUND) and converted to the default + - number, lnumber: if an explicit precision is supplied, turn off the + zero-padding flag and set the pad character back to space + - number, lnumber: only account for a `+' when performing the field + width calculation if the coversion is base 10; we don't add a `+' + for other bases + + 4/18 + ---- +tests/printf3.sub + - try using "perl -e 'print time'" to get the current time in seconds + since the epoch if "date +%s" is not available (solaris 8-10) + + 4/19 + ---- +tests/run-printf + - use cat -v instead of relying on diff -a being available to convert + control characters to ascii and avoid the dreaded "Binary files + /tmp/xx and printf.right differ" + + 4/20 + ---- +lib/sh/strftime.c + - incoporated new version from Aharon Robbins + + 4/22 + ---- +doc/{bash.1,bashref.texi} + - slight change to the description of /dev/tcp and /dev/udp + +subst.c + - match_wpattern: logic fix to the calculation of `simple' (was |=, + needs to be &=). Bug report from Mike Frysinger , + fix from Andreas Schwab + +bashline.c + - bash_filename_stat_hook: add code from bash_directory_completion_hook + that performs pathname canonicalization in the same way that cd and + other builtins will do + + 4/25 + ---- +execute_cmd.c + - execute_pipeline: change the call to move_to_high_fd to make it use + getdtablesize() and to not stomp on existing open file descriptors, + like the fd the shell is using to read a script. Bug report from + Greg Wooledge + + 5/6 + --- +subst.c + - expand_word_internal: case '$': after calling param_expand and + setting had_quoted_null, set TEMP to null. The code that builds the + returned string at the end of the function will take care of making + and returning a quoted null string if there's nothing else in + ISTRING. If there is, the quoted null should just go away. Part of + fix for bug reported by Ruediger Kuhlmann + - expand_word_internal: when processing ISTRING to build return value, + only set W_HASQUOTEDNULL in the returned word flags if the word is + a quoted null string AND had_quoted_null is set. Rest of fix + + 5/9 + --- +variables.c + - bind_variable_internal: if we get an array variable here (implicit + assignment to index 0), call make_array_variable_value, which + dummies up a fake SHELL_VAR * from array[0]. This matters when + we're appending and have to use the current value + - bind_variable_internal: after computing the new value, treat assoc + variables with higher precedence than simple array variables; it + might be that a variable has both attributes set + +arrayfunc.c + - bind_array_var_internal: break code out that handles creating the + new value to be assigned to an array variable index into a new + function, make_array_variable_value. This handles creating a + dummy SHELL_VAR * for implicit array[0] assignment. Fixes bug + reported by Dan Douglas + +arrayfunc.h + - make_array_variable_value: new extern declaration + + 5/19 + ---- +variables.c + - bind_int_variable: if an assignment statement like x=y comes in + from the expression evaluator, and x is an array, handle it like + x[0]=y. Fixes bug reported by Dan Douglas + + 5/24 + ---- + +braces.c + - mkseq: handle possible overflow and break the sequence generating + loop if it occurs. Fixes OpenSUSE bug 763591: + https://bugzilla.novell.com/show_bug.cgi?id=763591 + + 5/25 + ---- +Makefile.in + - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools + buildversion, mksignames, mksyntax + - LDFLAGS_FOR_BUILD: add to compilation recipes for test tools + recho, zecho, printenv, xcase + +builtins/Makefile.in + - LDFLAGS_FOR_BUILD: add to compilation recipes for build tools + gen-helpfiles, psize.aux + +variables.c + - bind_int_variable: if LHS is a simple variable name without an array + reference, but resolves to an array variable, call + bind_array_variable with index 0 to make x=1 equivalent to x[0]=1. + Fixes bug reported by Dan Douglas + + 5/27 + ---- +subst.c + - expand_word_internal: make sure has_dollar_at doesn't get reset before + recursive calls to param_expand or expand_word_internal, since it has + to save state of what came before. Use temp variable and make sure + has_dollar_at is incremented if recursive call processes "$@". + Fixes bug reported by gregrwm and + supplemented by Dan Douglas + +doc/{bash.1,bashref.texi} + - changes to the description of substring expansion inspired by + suggestions from Bill Gradwohl + +doc/bashref.texi + - added substring expansion examples inspired by suggestions from + Bill Gradwohl + +variables.c + - find_shell_variable: search for a variable in the list of shell + contexts, ignore the temporary environment + - find_variable_tempenv: search for a variable in the list of shell + contexts, force search of the temporary environment + - find_variable_notempenv: search for a variable in the list of shell + contexts, don't force search of the temporary environment + +variables.h + - find_shell_variable: extern declaration + - find_variable_tempenv: extern declaration + - find_variable_notempenv: extern declaration + +arrayfunc.c + - bind_array_variable: call find_shell_variable instead of calling + var_lookup directly + +findcmd.c + - search_for_command: call find_variable_tempenv instead of + find_variable_internal directly + - _find_user_command_internal: call find_variable_tempenv instead of + find_variable_internal directly + +builtins/setattr.def + - set_var_attribute: call find_variable_notempenv instead of + find_variable_internal directly + - show_name_attributes: call find_variable_tempenv instead of + find_variable_internal directly + + 6/1 + --- +sig.c + - termsig_handler: don't try to save the shell history on a terminating + signal any more, since it just causes too many problems on Linux + systems using glibc and glibc malloc + +lib/readline/vi_mode.c + - rl_vi_change_to: change to correctly redo `cc', since `c' is not a vi + motion character. From Red Hat bug 813289 + - rl_vi_delete_to: change to correctly redo `dd', since `d' is not a vi + motion character + - rl_vi_yank_to: change to correctly redo `yy', since `y' is not a vi + motion character + + 6/4 + --- +lib/sh/mktime.c + - current versions of VMS do not need to include . Fix from + John E. Malmberg + + 6/5 + --- +lib/sh/eaccess.c + - sh_stat: instead of using a static buffer to do the DEV_FD_PREFIX + translation, use a dynamically-allocated buffer that we keep + resizing. Fixes potential security hole reported by David Leverton + + + 6/5 + --- +braces.c + - expand_seqterm: check errno == ERANGE after calling strtoimax for + rhs and incr. Part of a set of fixes from Scott McMillan + + - expand_seqterm: incr now of type `intmax_t', which changes + arguments to mkseq + - mkseq: a better fix for detecting overflow and underflow since it's + undefined in C and compilers `optimize' out overflow checks. Uses + ADDOVERFLOW and SUBOVERFLOW macros + - mkseq: use sh_imaxabs (new macro) instead of abs() for intmax_t + variables + - mkseq: don't allow incr to be converted to -INTMAX_MIN + - mkseq: make sure that strvec_create isn't called with a size argument + greater than INT_MAX, since it only takes an int + + 6/6 + --- +braces.c + - mkseq: try and be smarter about not overallocating elements in + the return array if the increment is not 1 or -1 + + 6/7 + --- +parse.y + - history_delimiting_chars: if the parser says we're in the middle of + a compound assignment (PST_COMPASSIGN), just return a space to avoid + adding a stray semicolon to the history entry. Fixes bug reported + by "Davide Brini" + + 6/8 + --- +bashline.c + - bash_directory_completion_hook: don't attempt spelling correction + on the directory name unless the direxpand option is set and we are + going to replace the directory name with the corrected one in the + readline line. Suggested by Linda Walsh + +lib/sh/shquote.c + - sh_backslash_quote: now takes a third argument: flags. If non-zero, + tildes are not backslash-escaped. Have to handle both printf %q, + where they should be escaped, and filename completion, where they + should not when used as usernames + +externs.h + - sh_backslash_quote: declaration now takes a third argument + +builtins/printf.def + - printf_builtin: call sh_backslash_quote with 1 as third argument + so tildes get escaped + +{bashline,bracecomp}.c + - call sh_backslash_quote with 0 as third argument so tildes are not + escaped in completed words + +doc/bash.1 + - add `coproc' to the list of reserved words. From a report by + Jens Schweikhardt + + 6/10 + ---- +execute_cmd.c + - line_number_for_err_trap: now global, so parse_and_execute can save + and restore it with unwind-protect + +builtins/evalstring.c + - parse_prologue: save and restore line_number_for_err_trap along + with line_number + - restore_lastcom: new function, unwind-protect to restore + the_printed_command_except_trap + - parse_prologue: use restore_lastcom to save and restore the value + of the_printed_command_except_trap around calls to parse_and_execute + (eval/source/.) + + 6/15 + ---- +lib/readline/complete.c + - complete_fncmp: change filename comparison code to understand + multibyte characters, even when doing case-sensitive or case-mapping + comparisons. Fixes problem reported by Nikolay Shirokovskiy + + + 6/20 + ---- +builtins/mapfile.def + - mapfile: move the line count increment and check for having read + the specified number of lines to the end of the loop to avoid + reading an additional line with zgetline. Fixes bug reported by + Dan Douglas + + 6/21 + ---- + +execute_cmd.c + - execute_pipeline: make sure `lastpipe_flag' is initialized to 0 on + all systems, since it's tested later in the function. Fixes bug + reported by John E. Malmberg + + 6/22 + ---- +mailcheck.c + - file_mod_date_changed: return 0 right away if mailstat() does not + return success. Fixes bug with using uninitialized values reported + by szymon.kalasz@uj.edu.pl + +builtins/set.def + - the `monitor' option is not available when the shell is compiled + without job control, since the underlying `m' flag is not available + +nojobs.c + - job_control: now declared as int variable, initialized to 0, never + modified + +jobs.h + - job_control: extern declaration no longer dependent on JOB_CONTROL + +execute_cmd.c + - execute_pipeline: made necessary changes so `lastpipe' shell option + is now available in all shells, even those compiled without + JOB_CONTROL defined + + 6/23 + ---- +lib/glob/glob.c + - glob_filename: check for interrupts before returning if glob_vector + returns NULL or an error. Bug reported by Serge van den Boom + , fix from Andreas Schwab + - call run_pending_traps after each call to QUIT or test of + interrupt_state, like we do in mainline shell code + - glob_vector: don't call QUIT; in `if (lose)' code block; just free + memory, return NULL, and let callers deal with interrupt_state or + other signals and traps + + 6/25 + ---- +lib/readline/input.c + - rl_read_key: restructure the loop that calls the event hook a little, + so that the hook is called only after rl_gather_tyi returns no input, + and any pending input is returned first. This results in better + efficiency for processing pending input without calling the hook + on every input character as bash-4.1 did. From a report from + Max Horn + + 6/26 + ---- +trap.c + - signal_is_pending: return TRUE if SIG argument has been received and + a trap is waiting to execute + +trap.h + - signal_is_pending: extern declaration + +lib/glob/glob.c + - glob_vector: check for pending SIGINT trap each time through the loop, + just like we check for interrupt_state or terminating_signal, and + set `lose = 1' so we clean up after ourselves and interrupt the + operation before running the trap. This may require a change later, + maybe call run_pending_traps and do that if run_pending_traps returns? + +variables.c + - sv_histtimefmt: set history_comment_character to default (`#') if + it's 0 when we're turning on history timestamps. The history code + uses the history comment character to prefix timestamps, and + leaving it at 0 effectively removes them from the history. From a + report to help-bash by Dennis Williamson + + 6/27 + ---- +lib/readline/signals.c + - rl_maybe_restore_sighandler: new function, sets handler for SIG to + HANDLER->sa_handler only if it's not SIG_IGN. Needs to be called + on same signals set using rl_maybe_set_sighandler, which does not + override an existing SIG_IGN handler (SIGALRM is ok since it does + the check inline; doesn't mess with SIGWINCH) + + 6/30 + ---- +variables.h + - additional defines for the new `nameref' variable attribute + (att_nameref): nameref_p, nameref_cell, var_setref + +variables.c + - find_variable_nameref: resolve SHELL_VAR V through chain of namerefs + - find_variable_last_nameref: resolve variable NAME until last in a + chain of possibly more than one nameref starting at shell_variables + - find_global_variable_last_nameref: resolve variable NAME until last + in a chain of possibly more than one nameref starting at + global_variables + - find_nameref_at_context: resolve SHELL_VAR V through chain of namerefs + in a specific variable context (usually a local variable hash table) + - find_variable_nameref_context: resolve SHELL_VAR V through chain of + namerefs following a chain of varible contexts + - find_variable_last_nameref_context: resolve SHELL_VAR V as in + find_variable_last_context, but return the final nameref instead of + what the final nameref resolves to + - find_variable_tempenv, find_variable_notempenv, find_global_variable, + find_shell_variable, find_variable: modified to follow namerefs + - find_global_variable_noref: look up a global variable without following + any namerefs + - find_variable_noref: look up a shell variable without following any + namerefs + - bind_variable_internal: modify to follow a chain of namerefs in the + global variables table; change to handle assignments to a nameref by + following nameref chain + - bind_variable: modify to follow chain of namerefs when binding to a + local variable + - unbind_variable: changes to unset nameref variables (unsets both + nameref and variable it resolves to) + +subst.c + - parameter_brace_expand_word: change to handle expanding nameref whose + value is x[n] + - parameter_brace_expand_indir: change to expand in ksh93-compatible + way if variable to be indirected is nameref and a simple (non-array) + expansion + - param_expand: change to expand $foo where foo is a nameref whose value + is x[n] + +execute_cmd.c + - execute_for_command: changes to implement ksh93 semantics when index + variable is a nameref + +builtins/setattr.def + - show_var_attributes: change to add `n' to flags list if att_nameref + is set + +builtins/set.def + - unset_builtin: changes to error messages to follow nameref variables + +builtins/declare.def + - document new -n option + - declare_internal: new `-n' and `+n' options + - declare_internal: handle declare -n var[=value] and + declare +n var[=value] for existing and non-existant variables. + Enforce restriction that nameref variables cannot be arrays. + Implement semi-peculiar ksh93 semantics for typeset +n ref=value + + 7/5 + --- +variables.c + - unbind_variable: unset whatever a nameref resolves to, leaving the + nameref variable itself alone + - unbind_nameref: new function, unsets a nameref variable, not the + variable it references + +variables.h + - unbind_nameref: extern declaration + +builtins/set.def + - unset_builtin: modify to add -n option, which calls unbind_nameref + leaving unbind_variable for the usual case. This required slight + changes and additions to the test suite + +doc/{bash.1,bashref.texi} + - document namerefs and typeset/declare/local/unset -n + + 7/13 + ---- +lib/sh/casemod.c + - include shmbchar.h for is_basic and supporting pieces + - sh_casemod: use _to_wupper and _to_wlower to convert wide character + case instead of TOUPPER and TOLOWER. Fixes bug reported by + Dennis Williamson , fix from + Andreas Schwab + - cval: short-circuit and return ascii value if is_basic tests true + - sh_casemod: short-circuit and use non-multibyte case modification + and toggling code if is_basic tests true + +lib/readline/signals.c + - _rl_{block,release}_sigint: remove the code that actually blocks and + releases the signals, since we defer signal handling until calls to + RL_CHECK_SIGNALS() + +lib/readline/{callback,readline,util}.c + - if HAVE_POSIX_SIGSETJMP is defined, use sigsetjmp/siglongjmp without + saving and restoring the signal mask instead of setjmp/longjmp + +lib/readline/rltty.c + - prepare_terminal_settings: don't mess with IXOFF setting if + USE_XON_XOFF defined + +doc/{bash.1,bashref.texi} + - add some text to the description of set -e clarifying its effect + on shell functions and shell function execution. Suggested by + Rainer Blome + +bashline.c + - edit_and_execute_command: increment current_command_line_count before + adding partial line to command history (for command-oriented-history + because of rl_newline at beginning of function), then reset it to 0 + before adding the dummy history entry to make sure the dummy entry + doesn't get added to previous incomplete command. Partial fix for + problem reported by Peng Yu + + 7/24 + ---- +configure.in + - interix: define RECYCLES_PIDS. Based on a report from Michael + Haubenwallner + + 7/26 + ---- +jobs.c + - make_child: call bgp_delete on the newly-created pid unconditionally. + Some systems reuse pids before cycling through an entire set of + CHILD_MAX/_SC_CHILD_MAX unique pids. This is no longer dependent + on RECYCLES_PIDS. Based on a report from Michael Haubenwallner + + +support/shobj-conf + - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We + can finally kill Panther + + 7/28 + ---- +subst.c + - command_substitute: make sure last_made_pid gets reset if make_child + fails + +execute_cmd.c + - execute_command_internal: case cm_simple: decide whether or not to + wait_for a child if already_making_children is non-zero, indicates + that there is an unwaited-for child. More of fix for bug report + from Michael Haubenwallner + +jobs.c + - make_child: call delete_old_job (new_pid) unconditionally, don't + bother to check whether or not pid wrap occurred. Rest of fix for + bug report from Michael Haubenwallner + + + 7/29 + ---- +shell.c + - subshell_exit: new function, exits the shell (via call to sh_exit()) + after calling any defined exit trap + +externs.h + - subshell_exit: new extern declaration + +execute_cmd.c + - execute_command_internal: make sure to call subshell_exit for + {} group commands executed asynchronously (&). Part of fix for + EXIT trap bug reported by Maarten Billemont + +sig.c + - reset_terminating_signals: make sure to set termsigs_initialized back + to 0, so a subsequent call to initialize_terminating_signals works + right. Rest of fix for bug reported by Maarten Billemont + + +{execute_cmd,general,jobs,mailcheck,mksyntax,test}.c +builtins/{cd,fc,pushd,ulimit}.def +lib/malloc/getpagesize.h +lib/sh/{clktck,fpurge,inet_aton,mailstat,oslib,pathcanon,pathphys,spell,strerror}.c + - make inclusion of dependent on HAVE_SYS_PARAM_H + consistently + + 8/6 + --- +lib/readline/histexpand.c + - history_expand_internal: now takes an additional argument saying + whether the history expansion occurs within a quoted string, set to + the open quote character + - history_expand_internal: use new argument instead of checking prev + char and initializing quoted_search_delimiter, pass qc directly to + get_history_event, where it allows a matching quote to terminate a + string defining an event + - history_expand: change single-quote handling code so that if + history_quotes_inhibit_expansion is 0, single quotes are treated + like double quotes + - history_expand: change call to history_expand_internal to pass new + argument of `"' if double-quoted string, `'' if single-quoted string; + this lets history_expand decide what is a quoted string and what + is not + + 8/7 + --- +configure.in + - AC_CANONICAL_BUILD: invoke for later use + +lib/readline/macro.c + - _rl_prev_macro_key: new function, inverse of _rl_next_macro_key: + backs up the index into the current macro by 1 + +lib/readline/rlprivate.h + - _rl_prev_macro_key: extern declaration + + +lib/readline/readline.c + - _rl_dispatch_subseq, _rl_subseq_result: don't call _rl_unget_char + if we're currently reading from a macro; call _rl_prev_macro_key + instead. Fixes bug reported by Clark Wang + + 8/13 + ---- +builtins/evalstring.c + - evalstring(): new function, wrapper around parse_and_execute. + make sure we handle cases where parse_and_execute can call `return' + and short-circuit without cleaning up properly. We call + parse_and_execute_cleanup() then jump to the previous-saved return + location + +builtins/common.h + - extern declaration for evalstring() + +builtins/eval.def + - eval_builtin: make sure we handle `eval " ... return"' in contexts + where `return' is valid by calling evalstring(). Fixes bug with + `eval return' in sourced files reported by Clark Wang + + +trap.c + - run_pending_traps: call evalstring instead of parse_and_execute. + XXX - still needs to handle saving and restoring token state in the + presence of `return'; could use unwind_protects for that + +builtins/mapfile.def + - run_callback: call evalstring instead of parse_and_execute + + 8/15 + ---- +bashline.c + - bash_filename_stat_hook: make sure we don't free local_dirname + before using it to canonicalize any expanded filename. Make sure + it always points to *dirname and only free it if we're replacing + it. + +lib/readline/complete.c + - append_to_match: make sure we call rl_filename_stat_hook with + newly-allocated memory to avoid problems with freeing it twice + + 8/17 + ---- +variables.c,config-top.h + - if ARRAY_EXPORT is defined to 1 when variables.c is compiled, the + code that allows indexed arrays to be exported is enabled and + included + + 8/19 + ---- +shell.c + - call start_debugger from main() only if dollar_vars[1] != 0 (close + enough to a non-interactive shell, since we can be interactive with + -i while running a shell script). Fixes oddity reported by + Techlive Zheng + + 8/20 + ---- +arrayfunc.c + - quote_array_assignment_chars: don't bother quoting if the word has + not been marked as an assignment (W_ASSIGNMENT) + - quote_array_assignment_chars: turn on W_NOGLOB in the word flags + so assignment statements don't undergo globbing. Partial fix for + problems reported by Dan Douglas + + 8/21 + ---- +command.h + - W_NOBRACE: new word flag that means to inhibit brace expansion + +subst.c + - brace_expand_word_list: suppress brace expansion for words with + W_NOBRACE flag + + 8/22 + ---- +builtins/read.def + - read_builtin: don't call dequote_string on what we've read, even if + we saw an escape character, unless (input_string && *input_string). + We may have escaped an IFS whitespace character. Fixes seg fault + reported by + +execute_cmd.c + - execute_command_internal: set the_printed_command_except trap when + about to execute a ( ... ) user subshell. For now, set it only if + ERR is trapped; can relax that later. Fixes bug reported by + Mike Frysinger + + 8/23 + ---- +jobs.c + - remove references to first_pid and pid_wrap, since we're not using + them for anything anymore + + 8/24 + ---- +subst.c + - changes for W_NOBRACE everywhere appropriate: so it can be displayed + for debugging, and passed out of expand_word_internal + +doc/{bash.1,bashref.texi} + - small changes to make it clearer that the = and == operators are + equivalent, and will cause pattern matching when used with [[. + From a question from Michal Soltys + +doc/bashref.texi + - some small formatting changes from Karl Berry + + 8/27 + ---- +lib/readline/doc/{history,rlman,rluserman}.texi + - some small formatting changes from Karl Berry + +arrayfunc.c + - assign_array_element_internal, assign_compound_array_list, + unbind_array_element, array_value_internal: changes to make + assignment statements to negative indices (a[-1]=2) and unsetting + array elements using negative indices (unset 'a[-1]') work. + From suggestions by Dennis Williamson + and Chris F. A. Johnson + +subst.c + - array_length_reference: changes to make length references to array + elements using negative indices (${#a[-1]}) work + + 8/28 + ---- +doc/{bash.1,bashref.texi} + - document new treatment of negative indices to indexed arrays when + assigning, referencing, calculating length, and unsetting + + 8/29 + ---- +shell.c + - show_shell_usage: add -l to list of shell invocation options (short + for --login). From Red Hat bug 852469 + +configure.ac + - renamed from configure.in, as latest autoconf versions want. Patches + Stefano Lattarini + +MANIFEST,Makefile.in,doc/bashref.texi,support/mkconffiles + - configure.in -> configure.ac + + 9/1 + --- + +parse.y + - read_token_word: allow words like {array[ind]} to be valid redirection + words for constructs like {x} + +lib/readline/display.c + - update_line: if the first difference between the old and new lines + is completely before any invisible characters in the prompt, we + should not adjust _rl_last_c_pos, since it's before any invisible + characters. Fixed in two places + - prompt_modechar: return a character indicating the editing mode: + emacs (@), vi command (:), or vi insert (+) + - _rl_reset_prompt: new function, just calls rl_expand_prompt. Will be + inlined, placeholder for more changes + - expand_prompt: if show-mode-in-prompt is enabled, add a character to + the front of the prompt indicating the editing mode, adjusting the + various variables as appropriate to keep track of the number of + visible characters and number of screen positions + +lib/readline/bind.c + - show-mode-in-prompt: new bindable boolean variable, shadowed by + _rl_show_mode_in_prompt variable + - hack_special_boolean_var: call _rl_reset_prompt when toggling or + setting show-mode-in-prompt + +lib/readline/readline.c + - readline_internal_setup: make sure the correct vi mode keymap is set + before expanding the prompt string for the first time + +lib/readline/misc.c + - rl_emacs_editing_mode: make sure to call _rl_reset_prompt if we're + showing the editing mode in the prompt + +lib/readline/rlprivate.h + - _rl_reset_prompt, _rl_show_mode_in_prompt: extern declarations + +lib/readline/vi_mode.c + - rl_vi_insertion_mode: call _rl_reset_prompt + - rl_vi_movement_mode: call _rl_reset_prompt. Finishes changes for + showing mode in prompt string, originally requested by Miroslav + Koskar and most recently by Jordan Michael + Ziegler + +doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} + - document new show-mode-in-prompt variable, off by default + + 9/3 + --- + +jobs.c + - set_childmax: new function, external mechanism for other parts of + the shell to set js.c_childmax, the number of saved exited child + statuses to remember +jobs.h + - set_childmax: extern declaration + +variables.c + - CHILD_MAX: new special variable, with sv_childmax function to + run when it changes. Setting CHILD_MAX to a value greater than + zero but less than some maximum (currently 8192) sets the number of + exited child statuses to remember. set_childmax (jobs.c) ensures + that the number does not drop below the posix-mandated minimum + (CHILD_MAX) + +doc/{bash.1,bashref.texi} + - CHILD_MAX: document new meaning and action when variable is set + + 9/5 + --- +redir.c + - redir_varassign: call stupidly_hack_special_variables after + assigning fd number to specified variable, so we can use constructs + like {BASH_XTRACEFD}>foo. Suggested by Pierre Gaston + + + 9/8 + --- +expr.c + - readtok: invalidate previous contents of `curlval' before freeing + and reallocating tokstr (which, chances are, will get the same + pointer as before and render curlval inconsistent). Fixes other + bug reported by Dan Douglas + + 9/9 + --- +lib/readline/complete.c + - rl_username_completion_function: protect call to setpwent() with + #ifdef (HAVE_GETPWENT)/#endif. Fixes bug reported by + Gerd Hofmann + +lib/readline/display.c + - rl_message: second and subsequent calls to rl_message can result in + local_prompt being overwritten with new values (e.g., from the + successive calls displaying the incremental search string). Need + to free before overwriting if it's not the same as the value saved + in saved_local_prompt. Fixes memory leak reported by + Wouter Vermaelen + +lib/readline/{terminal.c,rlprivate.h} + - move CUSTOM_REDISPLAY_FUNC and CUSTOM_INPUT_FUNC defines from + terminal.c to rlprivate.h so other files can use them + +expr.c + - expr_streval: if noeval is non-zero, just return 0 right away, + short-circuiting evaluation completely. readtok will leave curtok + set correctly without re-entering the evaluator at all. Rest of + fix for bug reported by Dan Douglas + + 9/11 + ---- + +parse.y + - parse_comsub: make sure the `reserved word ok in this context' flag + is preserved after we read `do' followed by whitespace. Fixes bug + reported by Benoit Vaugon + + 9/13 + ---- +configure.ac,config.h.in + - enable-direxpand-default: new configure option, turns the `direxpand' + shell option on by default + +bashline.c + - dircomplete_expand, dircomplete_expand_relpath: initialize to 1 if + DIRCOMPLETE_EXPAND_DEFAULT is defined and non-zero + +doc/bashref.texi + - enable-direxpand-default: document new configure option + + 9/14 + ---- +shell.c + - --protected: make option valid only when wordexp is compiled into + the shell. Fix from Roman Rakus + +configure.ac + - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from + Joachim Schmitz + + 9/16 + ---- +subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c + - minor code cleanups from Joachim Schmitz + +lib/readline/colors.h + - workaround for HP NonStop compiler issue with from + Joachim Schmitz + + 9/17 + ---- +builtins/printf.def + - printf_builtin: handle localtime returning NULL, as can happen when + encountering overflow. Bug report and initial fix from + Eduardo A. Bustamante López + +doc/{bash.1,bashref.texi} + - emphasize that brace expansion using character ranges ({a..c}) acts + as if the C locale were in use. Prompted by message from + Marcel Giannelia + + 9/20 + ---- +lib/sh/wcsnwidth.c + - wcsnwidth: new function, variant of wcwidth, returns the number of + wide characters from a string that will be displayed to not exceed + a specified max column position + + 9/21 + ---- +builtins/help.def + - show_builtin_command_help: break code that displays the short-doc + for each builtin in two columns into a new function: dispcolumn + - wdispcolumn: multibyte-char version of dispcolumn; uses wide + chars and printf "%ls" format. Fixes problem reported by + Nguyá»n Thái Ngá»c Duy + + 9/22 + ---- +execute_cmd.c + - execute_disk_command: before running the command-not-found hook, + call kill_current_pipeline() to make sure we don't add processes + to an existing pipeline or wait for processes erroneously + + 9/23 + ---- +lib/readline/input.c + - rl_input_available_hook: new hook function, called from + _rl_input_available (or _rl_input_queued) to return whether or not + input is available wherever the input source is + +lib/readline/doc/rltech.texi + - rl_input_available_hook: document + + 9/27 + ---- +lib/glob/sm_loop.c: + - GMATCH: after one or more `*', an instance of ?(x) can match zero or + 1 times (unlike ?, which has to match one character). The old code + failed if it didn't match at least once. Fixes `a*?(x)' bug. + - GMATCH: if we hit the end of the search string, but not the end of + the pattern, and the rest of the pattern is something that can + match the NUL at the end of the search string, we should successfully + match. Fixes `a*!(x)' bug reported by + + 10/2 + ---- +command.h + - add c_lock member to coproc structure for future use to tell who is + manipulating it + +execute_cmd.c + - execute_coproc: block SIGCHLD while parent is forking coproc + process and adding pid to sh_coproc struct to avoid race condition + where child is reaped before the pid is assigned and the coproc is + never marked as having died. Fixes race condition identified by + Davide Baldini + - add assignments to c_lock member of struct coproc in various + functions that manipulate it; was used to identify race condition + - coproc_pidchk: don't call coproc_dispose to avoid using malloc and + other functions in a signal handler context + - coproc_dispose: call BLOCK_SIGNAL/UNBLOCK_SIGNAL for SIGCHLD while + manipulating the sh_coproc struct + + 10/6 + ---- +lib/readline/complete.c + - rl_display_match_list: if printing completions horizontally, don't + bother with spacing calculations if limit == 1, which means we are + printing one completion per line no matter what. Fixes bug + reported by David Kaasen + + 10/7 + ---- +builtins/declare.def + - declare_internal: add error checking for nameref attribute and + variable assignments: self-references, attempts to make an array + variable a nameref + +subst.c + - parameter_brace_expand: handle parameter_brace_expand_word returning + &expand_param_fatal or &expand_param_error and return the appropriate + error value + - parameter_brace_expand_word: if a nameref variable's value is not a + valid identifier, return an error + - param_expand: if a nameref variable's value is not a valid identifier, + return an error + +test.c + - unary_operator: add new -R variable, returns true if variable is set + and has the nameref attribute. From ksh93 + +builtins/test.def + - add -R to description of conditional commands for help test + +doc/{bash.1,bashref.texi} + - document new -R unary conditional operator + + 10/13 + ----- +trap.c + - check_signals_and_traps: new function, convenience function for the + rest of the shell to check for pending terminating and interrupt + signals, and to check for and process any pending traps + - any_signals_trapped: new function, returns non-zero if any signals + are trapped and -1 if not + +trap.h + - extern declaration for check_signals_and_traps + +bashline.c + - bashline_reset: make sure we reset the event hook + - bash_event_hook: call check_signals_and_traps instead of just + checking for terminating signals so we can run pending traps and + react to interrupts, and reset the event hook when we're done + + + 10/14 + ----- +trap.c + - trap_handler: if executing in a readline signal handler context, + call bashline_set_event_hook to install bash_event_hook to process + the signal (if bash cares about it) + +sig.c + - sigint_sighandler: call bashline_set_event_hook to set the event + hook if we're executing in a readline signal handler context + +lib/readline/input.c + - rl_getc: call RL_CHECK_SIGNALS if read returns -1/EINTR and the caught + signal is SIGINT or SIGQUIT rather than waiting until the next time + around the loop + - rl_getc: call rl_event_hook after calling RL_CHECK_SIGNALS to allow + an application signal handler to set the event hook in its own + signal handler (e.g., like bash trap_handler or sigint_sighandler) + + +parse.y + - yy_readline_get: don't set interrupt_immediately before we call + readline(). Inspired by report from lanshun zhou + + +input.c + - getc_with_restart: add call to run_pending_traps after call to + CHECK_TERMSIG + +lib/sh/zread.c + - zread: call check_signals_and_traps if read() returns -1/EINTR + instead of just ignoring the EINTR and deferring handling any + signal that generated it + +builtins/mapfile.def + - mapfile: don't set interrupt_immediately before calling zgetline() + (which uses zread internally) + +builtins/read.def + - read_builtin: don't set interrupt_immediately before calling zread + (moved code around so that it was only being set right around calls + to zread to avoid signal handler conflicts). Inspired by report + from lanshun zhou + - edit_line: don't set interrupt_immediately around call to readline() + - include shmbutil.h + - read_builtin: don't call read_mbchar unless is_basic(c) returns + false for the character we just read + + 10/15 + ----- +sig.c + - throw_to_top_level: if interrupt_state is non-zero, make sure that + last_command_exit_value reflects 128+SIGINT if it's not already + greater than 128 + + 10/20 + ----- +builtins/wait.def + - WAIT_RETURN: set wait_signal_received back to 0 for the potential + next call to wait + +quit.h + - CHECK_WAIT_INTR: macro to check whether trap_handler handled a + signal and set wait_signal_received; longjmp to wait_intr_buf in + that case + +jobs.c + - wait_for, waitchld: call CHECK_WAIT_INTR at the same places we call + CHECK_TERMSIG to check for terminating signals + - wait_sigint_handler: don't longjmp out of the wait builtin unless + interrupt_immediately is set; otherwise just SIGRETURN from the + handler + - wait_sigint_handler: if interrupt_immediately not set, but we are + executing in the wait builtin and SIGINT is not trapped, treat it + as a `normally received' SIGINT: restore the signal handler and + send SIGINT to ourselves + - waitchld: when in posix mode and running SIGCHLD traps, don't longjmp + to wait_intr_buf (and let wait be interrupted) if we're running from + a signal handler. Wait for CHECK_WAIT_INTR to do the longjmp. + run_pending_traps will run the SIGCHLD trap later + +nojobs.c + - reap_zombie_children, wait_for_single_pid, wait_for: call + CHECK_WAIT_INTR where we call CHECK_TERMSIG + - wait_sigint_handler: don't longjmp out of the wait builtin unless + interrupt_immediately is set; otherwise just SIGRETURN from the + handler + +trap.c + - trap_handler: make sure wait_signal_received is set if the wait + builtin is executing, and only longjmp if interrupt_immediately is + set. This whole set of fixes was prompted by report from + lanshun zhou + + 10/24 + ----- +lib/glob/glob.c + - glob_filename: only check directory_name for globbing chars if + it's of non-zero length + +lib/sh/strchrnul.c + - new simpler implementation + +subst.c + - command_substitute: call set_shellopts after turning off errexit + in subshells so it's reflected in $SHELLOPTS + + 11/7 + ---- +builtins/evalstring.c + - parse_and_execute: treat ERREXIT case like reader_loop does: set + variable_context to 0 before longjmping back to top_level. Don't + run the unwind-protect context to avoid side effects from popping + function contexts. Part of fix for problem reported by Nikolai + Kondrashov + +execute_cmd.c + - execute_simple_command: call unlink_fifo_list only if this is the + last element of a pipeline (or not in a pipeline), rather than for + every child. Fixes difference in behavior between /dev/fd and + FIFOs reported by Zev Weiss + - execute_null_command: do the same thing in the parent branch after + make_child + + 11/14 + ----- +subst.c + - parameter_brace_expand: a variable is null if it's special ($@, $*), + the expansion occurs within double quotes, and the expansion turns + into a quoted null. Fixes debian bug 692447 reported by + Matrosov Dmitriy + +jobs.c + - run_sigchld_trap: make sure `running_trap' sentinel is set + appropriately + - waitchld: only run the sigchld trap if we're not in a signal + handler, not running a trap, and executing the wait builtin. + Otherwise, queue for later handling. We still run one instance + of the trap handler per exited child. Bulk of fix for bug + reported by Elliott Forney + +trap.c + - queue_sigchld_trap: set catch_flag so run_pending_traps notices, + and set trapped_signal_received for completeness. Rest of fix + for bug reported by Elliott Forney + +lib/malloc/malloc.c + - block_signals: renamed to _malloc_block_signals, made public + - unblock_signals: renamed to _malloc_unblock_signals, made public + +lib/malloc/imalloc.h + - extern declarations for _malloc_{un,}block_signals + +lib/malloc/table.c + - mregister_alloc, mregister_free: block signals around table + manipulation + + 11/15 + ----- +trap.c + - run_pending_traps: set SIG_INPROGRESS flag around calls to + run_sigchld_handler so other parts of the shell know that the + SIGCHLD trap handler is executing + - run_pending_traps: if we get a situation where we are looking at + running a SIGCHLD trap but the trap string is IMPOSSIBLE_TRAP_HANDLER + and the SIG_INPROGRESS flag is set, just skip it. This is possible + if run_pending_traps is called from a SIGCHLD trap handler run by + run_sigchld_trap + +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - corrected description of the effect of `set history-size 0'. Report + from Vesa-Matti J Kari + +include/stdc.h + - CPP_STRING: new define, replaces __STRING + +lib/malloc/{malloc.c,imalloc.h} + - replace __STRING with CPP_STRING + + 11/16 + ----- +lib/readline/bind.c + - sv_histsize: if argument evaluates to a value < 0, unstifle the + history + + 11/22 + ----- +redir.c + - do_redirection_internal: if we have REDIR_VARASSIGN set in the + redirection flags and we set up `redirector' using fcntl or dup2, + don't add a redirect to make sure it stays open. Let the + script programmer manage the file handle. Fixes bug reported by + Sam Liddicott + + 11/24 + ----- +jobs.c + - wait_for_any_job: new function, waits for an unspecified background + job to exit and returns its exit status. Returns -1 on no background + jobs or no children or other errors. Calls wait_for with new + sentinel value ANY_PID + - wait_for: changes to handle argument of ANY_PID: don't look up or + try to modify the child struct, only go through the wait loop once. + Return -1 if waitpid returns no children + +jobs.h + - ANY_PID: new define + +builtins/wait.def + - new option: -n. Means to wait for the next job and return its exit + status. Returns 127 if there are no background jobs (or no + children). Feature most recently requested by Elliott Forney + + +doc/{bash.1,bashref.texi} + - document new `wait -n' option + +execute_cmd.c + - execute_command_internal: save make_command_string () result in a + temp variable before calling savestring() on it; avoids evaluating + make_command_string() result twice. Fix from John E. Malmberg + + + 11/28 + ----- + +builtins/declare.def + - declare_internal: if an array variable is declared using `declare -a' + or `declare -A', but not assigned a value, set the `invisible' + attribute so the variable does not show up as set. Fix for bug + about variable initialization reported by Tim Friske + +builtins/{mapfile,read}.def + - after calling find_or_make_array_variable, make sure the invisible + flag is turned off, in case the variable was declared previously + using `declare -a' or `declare -A'. Side effect of above change to + declare_internal + +subst.c + - shell_expand_word_list: handle the W_ASSNGLOBAL flag and put -g into + the list of options passed to make_internal_declare as appropriate. + Fix for bug reported by Tim Friske + + 11/30 + ----- +test.c + - unary_op: make sure -v and -n check that the variable is not marked + as invisible before calling var_isset. Fix for bug reported by Tim + Friske + + 12/2 + ---- +subst.c + - process_substitute: turn off the `expanding_redir' flag, which + controls whether or not variables.c:find_variable_internal uses the + temporary environment to find variables. We want to use the + temp environment, since we don't have to worry about order of + evaluation in a subshell. Fixes bug reported by Andrey Borzenkov + + + 12/4 + ---- +lib/glob/glob.c + - glob_filename: changes to avoid null filenames and multiple entries + returned for patterns like **/** (globstar enabled). Fixes bug + reported by Ulf Magnusson + + 12/10 + ----- +lib/glob/glob.c + - glob_filename: finish up a series of changes to make globstar-style + globbing more efficient, avoid more duplicate filenames, and be more + compatible with other shells that implement it + o collapse a sequence of **/**/** to one ** + o note when the directory name is all ** or ends in ** so we + can treat it specially when the filename is ** + All inspired by report from Andrey Borzenkov + +lib/sh/zread.c + - zreadn: new function, like zread, but takes an additional argument + saying how many bytes to read into the local buffer. Can be used to + implement `read -N' without so many one-byte calls to zreadc. Code + from Mike Frysinger + + 12/12 + ----- +lib/glob/sm_loop.c + - PATSCAN (glob_patscan): if passed string already points to end of + pattern, return NULL immediately. Fixes problem with + extglob_skipname reported by Raphaël Droz + + 12/13 + ----- +execute_cmd.c + - execute_coproc: handle the command's exit status being inverted + (an oversight). Fixes bug reported by DJ Mills + and Andreas Schwab + + 12/14 + ----- +lib/readline/readline.c + - bind_arrow_keys_internal: add MINGW key bindings for Home, End, + Delete, and Insert keys. Fix from Pierre Muller + + +builtins/printf.def + - printf_builtin: '%()T' conversion: if there is no argument supplied, + behave as if -1 had been supplied (current time). ksh93-like feature + suggested by Clark Wang + +doc/{bash.1,bashref.texi} + - document new printf %()T default argument behavior + + 12/15 + ----- +lib/readline/display.c + - displaying_prompt_first_line: new variable, indicates whether or + not the first line of output is displaying the prompt. Always true + in normal mode, sometimes false in horizontal scrolling mode + - rl_redisplay: set displaying_prompt_first_line to true unless we + are in horizontal mode; set to false in horizontal mode if the left + margin of the displayed line is greater than the end of the prompt + string + - rl_redisplay: when in horizontal scroll mode, don't adjust + _rl_last_c_pos by the wrap offset unless the line is displaying + a prompt containing invisible chars + - update line: don't adjust _rl_last_c_pos by the wrap offset unless + the line is displaying a prompt containing invisible chars + - update_line: if shrinking the line by reducing the number of + displayed characters, but we have already moved the cursor to the + beginning of the line where the first difference starts, don't + try to delete characters + +builtins/read.def + - unbuffered_read: set to 2 if invoked as `read -N' + - if unbuffered_read is set to 2, compute the number of chars we + need to read and read that many with zreadn. Posix mode still + uses zreadintr. Code from Mike Frysinger + +doc/{bash.1,bashref.texi} + - read: make it clear that if read times out, it saves any input + read to that point into the variable arguments. Report from + Fiedler Roman + +subst.c + - command_substitute: change direct assignment of exit_immediately_on_error + to use change_flag ('e', FLAG_OFF) instead + +flags.c + - use errexit_flag as the variable modified by changes to the -e + option, reflect those changes to exit_immediately_on_error + +execute_cmd.c + - execute_builtin: new global variable, builtin_ignoring_errexit, set + to 0 by default and set to 1 if eval/source/command executing in a + context where -e should be ignored + - execute_builtin: set exit_immediately_on_error to errextit_flag + after executing eval/source/command in a context where -e should + be ignored + +flags.c + - if builtin_ignoring_errexit is set, changes to errexit_flag are + not reflected in the setting of exit_immediately_on_error. Fixes + bug reported by Robert Schiele + + 12/23 + ----- +include/posixjmp.h + - setjmp_nosigs: new define, call setjmp in such a way that it will + not manipulate the signal mask + +{expr,test,trap}.c + - setjmp_nosigs: call instead of setjmp; don't need to manipulate + signal mask + +builtins/read.def + - read_builtin: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask + +builtins/evalstring.c: + - parse_and_execute: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask + - parse_string: setjmp_nosigs: call instead of setjmp; don't need + to manipulate signal mask + - parse_and_execute: save and restore the signal mask if we get a + longjmp that doesn't cause us to return or exit (case DISCARD) + + 12/24 + ----- +general.c + - bash_tilde_expand: only set interrupt_immediately if there are no + signals trapped; we want to jump to top level if interrupted but + not run any trap commands + + 12/25 + ----- +jobs.c + - run_sigchld_trap: no longer set interrupt_immediately before calling + parse_and_execute, even if this is no longer run in a signal handler + context + +input.c + - getc_with_restart: add call to QUIT instead of CHECK_TERMSIG + +parse.y + - yy_stream_get: now that getc_with_restart calls QUIT, don't need to + set interrupt_immediately (already had call to run_pending_traps) + +execute_cmd.c + - execute_subshell_builtin_or_function,execute_function,execute_in_subshell: + setjmp_nosigs: call instead of setjmp when saving return_catch; don't + need to manipulate signal mask + - execute_subshell_builtin_or_function,execute_in_subshell: + setjmp_nosigs: call instead of setjmp where appropriate when saving + top_level; don't need to manipulate signal mask if we're going to + exit right away + +subst.c + - command_substitute: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + - command_substitute: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + +trap.c + - run_exit_trap: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + - run_exit_trap: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + - _run_trap_internal: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + +builtins/evalfile.c + - _evalfile: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + +builtins/evalstring.c + - evalstring: setjmp_nosigs: call instead of setjmp when saving + return_catch; don't need to manipulate signal mask + +shell.c + - main: setjmp_nosigs: call instead of setjmp where appropriate when + saving top_level; don't need to manipulate signal mask if we're + going to exit right away + - run_one_command: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + - run_wordexp: setjmp_nosigs: call instead of setjmp where + appropriate when saving top_level; don't need to manipulate signal + mask if we're going to exit right away + +eval.c + - reader_loop: save and restore the signal mask if we get a longjmp + that doesn't cause us to return or exit (case DISCARD) + + 12/26 + ----- +parse.y + - shell_input_line_{index,size,len}: now of type size_t; in some cases + the unsigned property makes a difference + - STRING_SAVER: saved_line_{size,index} now of type size_t + - shell_getc: don't allow shell_input_line to grow larger than SIZE_MAX; + lines longer than that are truncated until read sees a newline; + addresses theoretical buffer overflow described by Paul Eggert + + - set_line_mbstate: size_t changes like shell_getc + - shell_getc: if shell_input_line is larger than 32K, free it and + start over to avoid large memory allocations sticking around + +variables.c + - bind_global_variable: new function, binds value to a variable in + the global shell_variables table + +variables.h + - bind_global_variable: new extern declaration + +builtins/declare.def + - declare_internal: if -g given with name=value, but variable is not + found in the global variable table, make sure to call + bind_global_variable so the variable is created and modified at + global scope. Fixes a bug where declare -g x=y could modify `x' + at a previous function scope + +command.h + - W_ASSIGNARRAY: new word flag, compound indexed array assignment + +subst.h + - ASS_MKGLOBAL: new assignment flag, forcing global assignment even in + a function context, used by declare -g + +execute_cmd.c + - fix_assignment_words: set W_ASSIGNARRAY flag if -a option given to + declaration builtin + +subst.c + - do_assignment_internal: explicitly handle case where we are + executing in a function and we want to create a global array or + assoc variable + - shell_expand_word_list: call make_internal_declare if -a option + given to declaration builtin (W_ASSIGNARRAY); handle -g option with + it (W_ASSNGLOBAL). Fixes inconsistency noticed by Vicente Couce + Diaz , where declare -ag foo=(bar) could modify + array variable foo at previous function scope, not global scope + + 12/27 + ----- +bashline.c + - Minix needs the third argument to tputs to be a void funtion taking + an int argument, not an int-returning function. Fix from + John E. Malmberg as part of VMS bash port + + 12/29 + ----- +configure.ac,version.c,patchlevel.h + - bash-4.3-devel: new version, new shell compatibility level (43) + +subst.c + - parameter_brace_patsub: put the bash-4.2 code back in from the + change of 3/3 that runs the replacement string through quote + removal, make it dependent on shell_compatibility_level <= 42 + +builtins/shopt.def + - compat42: new shopt option + - set_compatibility_level: change logic to set and unset various + compat variables and shell_compatibility_level + +COMPAT + - new documentation for bash-4.3 compatibility changes + +doc/{bash.1,bashref.texi} + - compat42: document new shopt option + +builtins/shopt.def + - set_compatibility_opts: new function, sets the various shopt + compat variables based on the value of shell_compatibility_level + +builtins/common.h + - set_compatibility_opts: new extern declaration + +variables.c + - BASH_COMPAT: new special variable; sets the shell compatibility + level. Accepts values in decimal (4.2) or integer (42) form; + Unsetting variable, setting it to empty string, or setting it to + out-of-range value sets the shell's compatibility level to the + default for the current version. Valid values are 3.1/31 through + the current version + - sv_shcompat: new function implementing logic for BASH_COMPAT + +variables.h + - sv_shcompat: new extern declaration + +doc/{bash.1,bashref.texi} + - BASH_COMPAT: description of new variable + +lib/readline/complete.c + - _rl_colored_stats: default back to 0 for 4.3 release branch + + 1/5/2013 + -------- +quit.h + - remove spurious call to itrace in CHECK_WAIT_INTR + +bashline.c + - bash_event_hook: if we're going to jump to top_level, make sure we + clean up after readline() by calling rl_cleanup_after_signal(). + Fixes bug reported against devel branch by Raphaël Droz + + - bash_event_hook: reset the event hook before checking for signals + or traps in case we longjmp + +doc/{bash.1,bashref.texi} + - small additions to the set -e section to make it more clear that + contexts where -e is ignored extend to compound commands as well + as shell functions + +lib/readline/readline.h + - rl_signal_event_hook: new extern declaration + +lib/readline/input.c + - rl_signal_event_hook: new variable, hook function to call when a + function (currently just read(2)) is interrupted by a signal and + not restarted + - rl_getc: call rl_signal_event_hook instead of rl_event_hook + +lib/readline/doc/rltech.texi + - rl_signal_event_hook: document new function + +bashline.c + - changes to set rl_signal_event_hook instead of rl_event_hook + +lib/readline/readline.h + - change readline version numbers to 6.3 + + 1/6 + --- +doc/{bash.1,bashref.texi} + - a couple of changes to the descriptions of the ERR trap and its + effects based on a message from Rob Nagler + + 1/9 + --- +expr.c + - expassign: invalidate curlval before freeing and NULLing tokstr to + avoid aliasing issues. Fixes bug reported by Eduardo A. Bustamante + López and Dan Douglas + +braces.c + - array_concat: don't be so aggressive in trying to short-circuit. We + can only short-circuit if we have a single-element array where the + element is an empty string (array[0] == "" array[1] = 0x0). Existing + practice requires us to replicate arrays and prefix or append empty + strings. Fixes bug reported by Eduardo A. Bustamante López + + + 1/11 + ---- +execute_cmd.c + - execute_builtin: since mapfile uses evalstring() to run its callbacks + internally, just like eval, so it needs to handle the case where the + temp environment given to mapfile persists throughout the entire + set of callback commands. This might be a problem with trap also, but + trap isn't run in the same way. Fixes bug reported by Dan Douglas + + + 1/13 + ---- +redir.c + - redirection_error: before expanding the redirection word (if + expandable_redirection_filename returns true), disable command + substitution during expansion. Fixes bug reported by Dan Douglas + + +subst.c + - expand_word_internal: case '\\': if the next character is an IFS + character, and the expansion occurs within double quotes, and the + character is not one for which backslash retains its meaning, add + the (escaped) '\' and the (escaped) character. Fixes bug reported + by Dan Douglas + + 1/15 + ---- +builtins/cd.def + - cd_builtin: make sure call to internal_getopt handles -e option. + Fixes bug reported by + + 1/17 + ---- +subst.c + - expand_word_list_internal: make sure tempenv_assign_error is + initialized to 0 + +execute_cmd.c + - execute_simple_command: make sure tempenv_assign_error is reset to 0 + after it's tested to see if an error should force the shell to exit. + Fixes problem where a the failure of a tempenv assignment preceding + a non-special builtin `sticks' and causes the next special builtin + to exit the shell. From a discussion on bug-bash started by + douxin + + 1/20 + ---- +subst.c + - parameter_brace_expand_rhs: call stupidly_hack_special_variables + after assigning with ${param[:]=word} even if IFS is changing. + Suggested by Dan Douglas [TENTATIVE, needs work + on IFS side effects] + +command.h + - W_GLOBEXP (which was unused) is now W_SPLITSPACE (which isn't used + yet) + +{execute_cmd,subst,variables}.c + - removed all code that mentioned W_GLOBEXP + - removed mention of gnu_argv_flags and code that set it + + 1/22 + ---- +subst.c + - param_expand: set W_SPLITSPACE if we expand (unquoted) $* and + IFS is unset or null so we can be sure to split this on spaces + no matter what happens with IFS later + - expand_word_internal: note that param_expand returns W_SPLITSPACE + in the returned word flags and keep track of that state with + `split_on_spaces' + + 1/23 + ---- +subst.c + - expand_word_internal: if split_on_spaces is non-zero, make sure + we split `istring' on spaces and return the resultant word. The + previous expansions should have quoted spaces in the positional + parameters where necessary. Suggested by Dan Douglas + + +execute_cmd.c + - execute_command_internal: make sure any subshell forked to run a + group command or user subshell at the end of a pipeline runs any + EXIT trap it sets. Fixes debian bash bug 698411 + http://bugs.debian.org/cgi-big/bugreport.cgi?bug=698411 + +subst.c + - shell_expand_word_list: fix code that creates args for and calls + make_internal_declare to avoid calling it twice (missing `else' + in 12/26 change) + - do_assignment_internal: fix code from 12/26 change to fix problem + where an existing assoc variable could be converted to an array + without checking `mkassoc' + + 1/24 + ---- +builtins/evalfile.c + - _evalfile: add missing `close (fd)' calls before returning to + avoid fd leaks. Bug and fix from Roman Rakus + + 1/25 + ---- +builtins/read.def + - read_builtin: don't try to play tricks with the top of the unwind- + protect stack after read gets a SIGALRM; save input_string to new + memory, run the stack, then restore input_string and assign the + variables. Part of fix for bug reported by konsolebox + ; the rest of the fix is with the changes in + trap and signal handling and doing away with interrupt_immediately + + 1/26 + ---- +redir.c + - redirection_expand, write_here_string, write_here_document: before + calling any of the word expansion functions, after setting + expanding_redir to 1 (which bypasses the temp environment in the + variable lookup functions), call sv_ifs to reset the cached IFS- + related variables set by subst.c:setifs(). This ensures that + redirections will not get any IFS values that are set in the + temporary environment, as Posix specifies. Then, after the word + expansions, after resetting expanding_redir to 0, call sv_ifs + again to make sure the cached IFS values are set from any + assignments in the temporary environment. We force executing_builtin + to 1 to `fool' the variable lookup functions into using any temp + environment, then reset it to its old value after sv_ifs returns. + This is what allows read() to use the (cached) IFS variables set + in the temp environment. Fixes inconsistency reported by Dan Douglas + + + 1/29 + ---- +lib/readline/display.c + - update_line: fix off-by-one error when updating vis_lbreaks array + in a multibyte locale that occurs when moving multibyte chars from + one line down to another. Bug report and fix from Egmont + Koblinger + + 1/30 + ---- +configure.ac + - changed version to 4.3-alpha + +redir.c + - redir_open: handle open returning -1/EINTR, which seems to happen + a lot with FIFOs and SIGCHLD, and call QUIT to handle other + signals that can interrupt open(2). Bug report and initial fix + from Mike Frysinger + + 1/31 + ---- +subst.c + - parameter_brace_expand: make sure to propagate the PF_ASSIGNRHS flag + to parameter_brace_expand_word + - parameter_brace_expand_word: make sure that if the PF_ASSIGNRHS flag + is set and we are expanding ${a[@]} or ${a[*]} we set quoted to + include Q_DOUBLE_QUOTES before calling array_value_internal, mirroring + what we do for $@ and $*. Fixes inconsistency reported by Dan + Douglas + +configure.ac + - use AC_CHECK_TOOL instead of AC_CHECK_PROG to check for ar, since it + will find $host-prefixed versions of utilities. Report and fix from + Mike Frysinger + +builtins/setattr.def + - set_var_attribute: check whether bind_variable (called when the + variable whose attributes are being modified is found in the temp + environment) just modified a read-only global variable, and don't + bother marking the temporary variable for propagation if so. The + propagation is superfluous and will result in a strange error + message + + 2/2 + --- +variables.c + - initialize_shell_variables: don't try to import function definitions + with invalid names from the environment if already in posix mode, + but create them as (invisible) exported variables so they pass + through the environment. Print an error message so user knows + what's wrong. Fixes bug reported by Tomas Trnka + + 2/9 + --- + +builtins/read.def + - sigalrm_seen, alrmbuf: now global so the rest of the shell (trap.c) + can use them + - sigalrm: just sets flag, no longer longjmps to alrmbuf; problem was + longjmp without manipulating signal mask, leaving SIGALRM blocked + +quit.h + - move CHECK_ALRM macro here from builtins/read.def so trap.c: + check_signals() can call it + +trap.c + - check_signals: add call to CHECK_ALRM before QUIT + - check_signals_and_traps: call check_signals() instead of including + CHECK_ALRM and QUIT inline. Integrating check for read builtin's + SIGALRM (where zread call to check_signals_and_traps can see it) + fixes problem reported by Mike Frysinger + + 2/12 + ---- +lib/glob/xmbsrtowcs.c + - xdupmbstowcs2: fixed but where end of string was not handled + correctly, causing loop to go past end of string in a bunch of cases. + Fixes bug reported by "Dashing" + + + 2/13 + ---- +builtins/pushd.def + - popd_builtin: treat any argument that isn't -n or of the form + [-+][[:digit:]]* as an error. Fixes problem reported by Bruce + Korb + + 2/14 + ---- +configure.ac + - add check for sig_atomic_t; already a placeholder for it in + config.h.in + + 2/15 + ---- +subst.c + - do_compound_assignment: don't call assign_compound_array_list with + a NULL variable in case make_local_xxx_variable returns NULL + (it will if you try to shadow a readonly or noassign variable). + Fixes bug reported by Richard Tollerton + + 2/16 + ---- +variables.c + - make_local_variable: print error messager if an attempt is made to + create a local variable shadowing a `noassign' variable. Previously + we just silently refused to do it + +trap.[ch] + - get_original_signal: now global so rest of the shell can use it + +sig.c + - initialize_shell_signals: install a signal handler for SIGTERM + that does nothing except set a sigterm_received flag instead of + ignoring it with SIG_IGN, as long as SIGTERM is not ignored when + the shell is started. Use get_original_signal early to get the + original handler, since we will do that later anyway + - set_signal_handler: if installing sigterm_sighandler as the SIGTERM + handler, make sure to add SA_RESTART flag to make it as close to + SIG_IGN as possible + +sig.h + - sigterm_sighandler: new extern declaration + +quit.h + - RESET_SIGTERM: set sigterm_receved to 0 + - CHECK_SIGTERM: check sigterm_received; if it's non-zero, treat it + as a fatal signal and call termsig_handler to exit the shell + +jobs.c + - make_child: call RESET_SIGTERM just before fork() so we can detect + if the child process received a SIGTERM before it's able to change + the signal handler back to what it was when the shell started + (presumably SIG_DFL). Only has effect if the shell installed + sigterm_sighandler for SIGTERM, interactive shells that were not + started with SIG_IGN as the SIGTERM handler + - make_child: call RESET_SIGTERM in the parent after fork() so the + rest of the shell won't react to it + +execute_cmd.c + - execute_simple_command: call CHECK_SIGTERM after make_child in child + to catch SIGTERM received after fork() and before restoring old + signal handlers + - execute_disk_command: call CHECK_SIGTERM after make_child in child + process after restoring old signal handlers and again just before + calling shell_execve. Fixes race condition observed by + Padraig Brady when testing with his `timeout' + program + +lib/readline/display.c + - open_some_spaces: new function, subset of insert_some_chars that just + opens up a specified number of spaces to be overwritten + - insert_some_spaces: now just calls to open_some_spaces followed by + _rl_output_some_chars + - update_line: use col_temp instead of recalculating it using + _rl_col_width in the case where we use more columns with fewer bytes + - update_line: use open_some_spaces and then output the right number + of chars instead of trying to print new characters then overwrite + existing characters in two separate calls. This includes removing + some dodgy code and making things simpler. Fix from Egmont + Koblinger + - use new variable `bytes_to_insert' instead of overloading temp in + some code blocks (nls - nfd, bytes that comprise the characters + different in the new line from the old) + + 2/18 + ---- +redir.c + - do_redirection_internal: add undoable redirection for the implicit + close performed by the <&n- and >&n- redirections. Fixes bug + reported by Stephane Chazelas + + 2/19 + ---- +sig.c + - termsig_handler: an interactive shell killed by SIGHUP and keeping + command history will try to save the shell history before exiting. + This is an attempt to preserve the save-history-when-the-terminal- + window-is-closed behavior + + 2/21 + ---- +braces.c + - brace_expand: if a sequence expansion fails (e.g. because the + integers overflow), treat that expansion as a simple string, including + the braces, and try to process any remainder of the string. The + remainder may include brace expansions. Derived from SuSE bug + 804551 example (https://bugzilla.novell.com/show_bug.cgi?id=804551) + + 2/23 + ---- +{quit,sig}.h,sig.c + - sigterm_received declaration now in sig.h; type is sig_atomic_t + - sigwinch_received type now sig_atomic_t + - sig.h includes bashtypes.h and if SIG_DFL not defined + (same logic as trap.h) to pick up sig_atomic_t + +unwind_prot.c + - include sig.h before quit.h (reverse order) + + 2/27 + ---- +builtins/shopt.def + - reset_shopt_options: make sure check_window_size is reset to the + default from config.h, not unconditionally to 0 + +jobs.[ch] + - last_made_pid, last_asynchronous_pid: now volatile. Change from SuSE + +jobs.c + - wait_for: if we're using sigaction to install a handler for SIGCHLD, + make sure we specify SA_RESTART + +lib/{tilde,readline}/shell.c + - get_home_dir: instead of looking in the password file every time, + look once and cache the result + +sig.[ch] + - sigwinch_received, sigterm_received: now `volatile' qualified + +sig.c,quit.h + - interrupt_state,terminating_signal: now sig_atomic_t + + 3/1 + --- +MANIFEST,examples/* + - removed around 120 files without FSF copyrights; requested by + Karl Berry in early January + + 3/2 + --- +lib/malloc/malloc.c + - morecore: only check whether SIGCHLD is trapped if SIGCHLD is defined + +doc/bashref.texi + - Fixed most of the examples in the GNU Parallel section to use better + shell idioms following complaints on bug-bash; added a couple of + examples and smoothed out the text + +quit.h + - include "sig.h" for sig_atomic_t + +lib/readline/display.c + - update_line: when inserting one or more characters at the end of + the display line in a non-multibyte environment, just write from the + first difference to the end of the line and return. We don't have + to adjust _rl_last_c_pos. This is needed to adjust from the old + two-part copy to a single call to _rl_output_some_chars (change of + 2/16) + + 3/4 + --- +Makefile.in,doc/Makefile.in + - PACKAGE_TARNAME, docdir: new variables substituted by autoconf + - OTHER_DOCS,OTHER_INSTALLED_DOCS: new variables with auxiliary + documentation files to be installed into $(docdir) + - install: add new rule to install $(OTHER_DOCS) + - uninstall: add new rule to uninstall $(docdir)/$(OTHER_INSTALLED_DOCS) + +doc/bash.1 + - add URL to `POSIX' file in `SEE ALSO' section; put pointer to that + section in --posix and set -o posix descriptions + +examples/ + - removed around 110 examples at the request of the FSF due to copyright + issues + + 3/5 + --- +builtins/setattr.def + - readonly: modified help text slightly to make it clearer that + functions aren't changed or displayed unless the -f option is given. + Report from + +[bash-4.3-alpha frozen] + + 3/9 + --- +include/typemax.h + - SIZE_MAX: define to 65535 (Posix minimum maximum) if not defined + +parse.y + - include "typemax.h" for possible SIZE_MAX definition, make sure we + include it after shell.h + +{braces,expr}.c + - include "typemax.h" for possible INTMAX_MIN and INTMAX_MAX definitions + + 3/10 + ---- +bashline.c + - bash_default_completion: make sure completion type of `!' (same as + TAB but with show-all-if-ambiguous set) and glob-word-completion + sets rl_filename_completion_desired to 0 so extra backslashes don't + get inserted by `quoting' the completion. We can't kill all the + matches because show-all-if-ambiguous needs them. Bug report from + Marcel (Felix) Giannelia diff --git a/Makefile.in b/Makefile.in index a6d8e6608..4b5b92d23 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile for bash-4.2, version 4.9 +# Makefile for bash-4.3, version 4.10 # # Copyright (C) 1996-2012 Free Software Foundation, Inc. diff --git a/NEWS b/NEWS index 028ba42a7..28d5f13c7 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,169 @@ +This is a terse description of the new features added to bash-4.3 since +the release of bash-4.2. As always, the manual page (doc/bash.1) is +the place to look for complete descriptions. + +1. New Features in Bash + +a. The `helptopic' completion action now maps to all the help topics, not just + the shell builtins. + +b. The `help' builtin no longer does prefix substring matching, so `help read' + does not match `readonly'. + +c. The shell can be compiled to not display a message about processes that + terminate due to SIGTERM. + +d. Non-interactive shells now react to the setting of checkwinsize and set + LINES and COLUMNS after a foreground job exits. + +e. There is a new shell option, `globasciiranges', which, when set to on, + forces globbing range comparisons to use character ordering as if they + were run in the C locale. + +f. There is a new shell option, `direxpand', which makes filename completion + expand variables in directory names in the way bash-4.1 did. + +g. In Posix mode, the `command' builtin does not change whether or not a + builtin it shadows is treated as an assignment builtin. + +h. The `return' and `exit' builtins accept negative exit status arguments. + +i. The word completion code checks whether or not a filename containing a + shell variable expands to a directory name and appends `/' to the word + as appropriate. The same code expands shell variables in command names + when performing command completion. + +j. In Posix mode, it is now an error to attempt to define a shell function + with the same name as a Posix special builtin. + +k. When compiled for strict Posix conformance, history expansion is disabled + by default. + +l. The history expansion character (!) does not cause history expansion when + followed by the closing quote in a double-quoted string. + +m. `complete' and its siblings compgen/compopt now takes a new `-o noquote' + option to inhibit quoting of the completions. + +n. Setting HISTSIZE to a value less than zero causes the history list to be + unlimited (setting it 0 zero disables the history list). + +o. Setting HISTFILESIZE to a value less than zero causes the history file size + to be unlimited (setting it to 0 causes the history file to be truncated + to zero size). + +p. The `read' builtin now skips NUL bytes in the input. + +q. There is a new `bind -X' option to print all key sequences bound to Unix + commands. + +r. When in Posix mode, `read' is interruptible by a trapped signal. After + running the trap handler, read returns 128+signal and throws away any + partially-read input. + +s. The command completion code skips whitespace and assignment statements + before looking for the command name word to be completed. + +t. The build process has a new mechanism for constructing separate help files + that better reflects the current set of compilation options. + +u. The -nt and -ot options to test now work with files with nanosecond + timestamp resolution. + +v. The shell saves the command history in any shell for which history is + enabled and HISTFILE is set, not just interactive shells. + +w. The shell has `nameref' variables and new -n(/+n) options to declare and + unset to use them, and a `test -R' option to test for them. + +x. The shell now allows assigning, referencing, and unsetting elements of + indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which + count back from the last element of the array. + +y. The {x} has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark has begun to work with bash-2.05, but I don't know the status. - -Ports of bash-1.12 and bash-2.0 are available for OS/2 from - -ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip -ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip - -I haven't looked at either, but the second appears to be a binary-only -distribution. Beware. - -I have received word that Bash (I'm not sure which version, but I -believe that it's at least bash-2.02.1) is the standard shell on -BeOS. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX 1003.2 standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard has been developed by IEEE -Working Group 1003.2 (POSIX.2). It concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. An initial version of the -standard has been approved and published by the IEEE, and work is -currently underway to update it. - -Bash is concerned with the aspects of the shell's behavior -defined by POSIX.2. The shell command language has of course -been standardized, including the basic flow control and program -execution constructs, I/O redirection and pipelining, argument -handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX.2 not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX.2 also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The Open Group has made an older version of its Single Unix -Specification (version 2), which is very similar to POSIX.2, -available on the web at - -http://www.opengroup.org/onlinepubs/007908799/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX.2 shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix option or -executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file CWRU/POSIX.NOTES in the bash -distribution. They are also listed in a section in the Bash -Reference Manual. - -Section B: The latest version - -B1) What's new in version 2.05a? - -The raison d'etre for bash-2.05a is to make an intermediate release -containing principally bug fixes (some very good work was done and -contributed after bash-2.05 was released) available before I start to -work on the major new features to be available in the next release -(bash-2.06 or bash-3.0 or whatever I tag it). As such, there are -only a few relatively minor new features. - -Bash-2.05a contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-2.05a -distribution): - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -A short feature history dating from bash-2.0: - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >| - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -m/-p/-u, - type -a/-p/-t, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr) - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, - disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, fc -e -, newgrp, print, - read -p/-s/-u/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-2.05a: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - set -o pipefail - `+=' variable assignment operator - TMOUT is default timeout for `read' and `select' - <&N- and >&N- redirections (combination dup and close) - FPATH and PATH mixing - getopts -a - -I invocation option - DEBUG trap now executed before each simple command, instead of after - printf %H, %P, %T, %Z modifiers, output base for %d - -New things in ksh-93 present in bash-2.05a: - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias fc=hist -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -You can build a version of bash that will not report SIGPIPE errors -by uncommenting the definition of DONT_REPORT_SIGPIPE in the file -config-top.h. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline runs in a separate process, a child of -the shell running the pipeline. A subprocess cannot affect its -parent's environment. When the `read' command sets the variable -to the input, that variable is set only in the subshell, not the -parent shell. When the subshell exits, the value of the variable -is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt' that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest drafts of the updated POSIX standard have changed this: the -word list is no longer required. Bash versions 2.05a and later accept -the new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.05 and later versions have reverted to the bash-2.03 behavior of -honoring the current locale setting when processing ranges within pattern -matching bracket expressions ([A-Z]). This is what POSIX.2 and SUSv3/XPG6 -specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash-2.05a distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why does bash-2.05a fail to compile `printf.def' on HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -is 1-56592-147-X. Look for it in fine bookstores near you. This book -covers bash-1.14, but has an appendix describing some of the new features -in bash-2.0. - -A second edition of this book is available, published in January, 1998. -The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores -or on the web. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -a better bash debugger (a minimally-tested version is included with bash-2.05a) -associative arrays -changes to the DEBUG trap to be compatible with ksh93 (which runs the -trap before each simple command, instead of after each one like previous -versions) -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -better internationalization using GNU `gettext' -an option to use external files for the long `help' text -date-stamped command history -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `+=' variable assignment operator -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2002. Never make predictions. - - -This document is Copyright 1995-2001 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-2.05b b/doc/FAQ-2.05b deleted file mode 100644 index f0f3d1b6b..000000000 --- a/doc/FAQ-2.05b +++ /dev/null @@ -1,1771 +0,0 @@ -This is the Bash FAQ, version 3.26, for Bash version 2.05b. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet@po.cwru.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 2.05b? -B2) Are there any user-visible incompatibilities between bash-2.05b and - bash-1.14.7? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 2.05b, first made available on Wednesday, 17 -July, 2002. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 2.05b: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-2.05b.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-2.05b.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-2.05b.tar.gz - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of UNIX. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of UNIX you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions as part of their CYGWIN -project. For more information about the project, look at the URLs - -http://www.cygwin.com/ -http://sourceware.cygnus.com/cygwin - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done a -port of bash-2.05 to the CYGWIN environment, and it is available as -part of their current release. - -Bash-2.05b should require no local Cygnus changes to build and run under -CYGWIN. - -The Cygnus port works only on Intel machines. There is a port of bash -(I don't know which version) to the alpha/NT environment available from - -ftp://ftp.gnustep.org//pub/win32/bash-alpha-nt-1.01.tar.gz - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark has begun to work with bash-2.05, but I don't know the status. - -Ports of bash-1.12 and bash-2.0 are available for OS/2 from - -ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash_112.zip -ftp://hobbes.nmsu.edu/pub/os2/util/shell/bash-2.0(253).zip - -I haven't looked at either, but the second appears to be a binary-only -distribution. Beware. - -I have received word that Bash (I'm not sure which version, but I -believe that it's at least bash-2.02.1) is the standard shell on -BeOS. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2003 Edition incorporating the -Technical Corrigendum 1), as part of the Single UNIX Specification -Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 2.05b? - -The raison d'etre for bash-2.05b is to make a second intermediate -release containing the first of the new features to be available -in bash-3.0 and get feedback on those features before proceeding. -The major new feature is multibyte character support in both Bash -and Readline. - -Bash-2.05b contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-2.05b -distribution): - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - - -A short feature history dating from Bash-2.0: - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -m/-p/-u, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, - disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, fc -e -, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-2.05b: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - set -o pipefail - `+=' variable assignment operator - FPATH and PATH mixing - getopts -a - -I invocation option - DEBUG trap now executed before each simple command, instead of after - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-2.05b: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -You can build a version of bash that will not report SIGPIPE errors -by uncommenting the definition of DONT_REPORT_SIGPIPE in the file -config-top.h. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline runs in a separate process, a child of -the shell running the pipeline. A subprocess cannot affect its -parent's environment. When the `read' command sets the variable -to the input, that variable is set only in the subshell, not the -parent shell. When the subshell exits, the value of the variable -is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest drafts of the updated POSIX standard have changed this: the -word list is no longer required. Bash versions 2.05a and later accept -the new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash-2.05a distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -is 1-56592-147-X. Look for it in fine bookstores near you. This book -covers bash-1.14, but has an appendix describing some of the new features -in bash-2.0. - -A second edition of this book is available, published in January, 1998. -The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores -or on the web. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers -bash-2.0 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -a better bash debugger (a minimally-tested version is included with bash-2.05b) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -better internationalization using GNU `gettext' -date-stamped command history -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `+=' variable assignment operator -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2003. Never make predictions. - - -This document is Copyright 1995-2003 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-20090219 b/doc/FAQ-20090219 deleted file mode 100644 index 29d453a5f..000000000 --- a/doc/FAQ-20090219 +++ /dev/null @@ -1,2060 +0,0 @@ -This is the Bash FAQ, version 4.01, for Bash version 4.0. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 4.0? -B2) Are there any user-visible incompatibilities between bash-4.0, - bash-3.2, and bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 4.0, first made available on 20 February, 2009. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 4.0: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-4.0.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.0.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-4.0.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-4.0-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.2 to the CYGWIN environment, and both -are available as part of their current release. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-4.0, but will gladly accept any patches that are needed. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 4.0? - -Bash-4.0 is the fourth major release of bash. There are numerous new features, -some experimental. Depending on community reception, the experimental -features will evolve. - -Bash-4.0 contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-4.0 -distribution): - -o When using substring expansion on the positional parameters, a starting - index of 0 now causes $0 to be prefixed to the list. - -o There is a new variable, $BASHPID, which always returns the process id of - the current shell. - -o There is a new `autocd' option that, when enabled, causes bash to attempt - to `cd' to a directory name that is supplied as the first word of a - simple command. - -o There is a new `checkjobs' option that causes the shell to check for and - report any running or stopped jobs at exit. - -o The programmable completion code exports a new COMP_TYPE variable, set to - a character describing the type of completion being attempted. - -o The programmable completion code exports a new COMP_KEY variable, set to - the character that caused the completion to be invoked (e.g., TAB). - -o The programmable completion code now uses the same set of characters as - readline when breaking the command line into a list of words. - -o The block multiplier for the ulimit -c and -f options is now 512 when in - Posix mode, as Posix specifies. - -o Changed the behavior of the read builtin to save any partial input received - in the specified variable when the read builtin times out. This also - results in variables specified as arguments to read to be set to the empty - string when there is no input available. When the read builtin times out, - it returns an exit status greater than 128. - -o The shell now has the notion of a `compatibility level', controlled by - new variables settable by `shopt'. Setting this variable currently - restores the bash-3.1 behavior when processing quoted strings on the rhs - of the `=~' operator to the `[[' command. - -o The `ulimit' builtin now has new -b (socket buffer size) and -T (number - of threads) options. - -o There is a new `compopt' builtin that allows completion functions to modify - completion options for existing completions or the completion currently - being executed. - -o The `read' builtin has a new -i option which inserts text into the reply - buffer when using readline. - -o A new `-E' option to the complete builtin allows control of the default - behavior for completion on an empty line. - -o There is now limited support for completing command name words containing - globbing characters. - -o The `help' builtin now has a new -d option, to display a short description, - and a -m option, to print help information in a man page-like format. - -o There is a new `mapfile' builtin to populate an array with lines from a - given file. - -o If a command is not found, the shell attempts to execute a shell function - named `command_not_found_handle', supplying the command words as the - function arguments. - -o There is a new shell option: `globstar'. When enabled, the globbing code - treats `**' specially -- it matches all directories (and files within - them, when appropriate) recursively. - -o There is a new shell option: `dirspell'. When enabled, the filename - completion code performs spelling correction on directory names during - completion. - -o The `-t' option to the `read' builtin now supports fractional timeout - values. - -o Brace expansion now allows zero-padding of expanded numeric values and - will add the proper number of zeroes to make sure all values contain the - same number of digits. - -o There is a new bash-specific bindable readline function: `dabbrev-expand'. - It uses menu completion on a set of words taken from the history list. - -o The command assigned to a key sequence with `bind -x' now sets two new - variables in the environment of the executed command: READLINE_LINE_BUFFER - and READLINE_POINT. The command can change the current readline line - and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, - respectively. - -o There is a new >>& redirection operator, which appends the standard output - and standard error to the named file. - -o The parser now understands `|&' as a synonym for `2>&1 |', which redirects - the standard error for a command through a pipe. - -o The new `;&' case statement action list terminator causes execution to - continue with the action associated with the next pattern in the - statement rather than terminating the command. - -o The new `;;&' case statement action list terminator causes the shell to - test the next set of patterns after completing execution of the current - action, rather than terminating the command. - -o The shell understands a new variable: PROMPT_DIRTRIM. When set to an - integer value greater than zero, prompt expansion of \w and \W will - retain only that number of trailing pathname components and replace - the intervening characters with `...'. - -o There are new case-modifying word expansions: uppercase (^[^]) and - lowercase (,[,]). They can work on either the first character or - array element, or globally. They accept an optional shell pattern - that determines which characters to modify. There is an optionally- - configured feature to include capitalization operators. - -o The shell provides associative array variables, with the appropriate - support to create, delete, assign values to, and expand them. - -o The `declare' builtin now has new -l (convert value to lowercase upon - assignment) and -u (convert value to uppercase upon assignment) options. - There is an optionally-configurable -c option to capitalize a value at - assignment. - -o There is a new `coproc' reserved word that specifies a coprocess: an - asynchronous command run with two pipes connected to the creating shell. - Coprocs can be named. The input and output file descriptors and the - PID of the coprocess are available to the calling shell in variables - with coproc-specific names. - -o A value of 0 for the -t option to `read' now returns success if there is - input available to be read from the specified file descriptor. - -o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged - mode. - -o New bindable readline functions shell-forward-word and shell-backward-word, - which move forward and backward words delimited by shell metacharacters - and honor shell quoting. - -o New bindable readline functions shell-backward-kill-word and shell-kill-word - which kill words backward and forward, but use the same word boundaries - as shell-forward-word and shell-backward-word. - -A short feature history dating from Bash-2.0: - -Bash-3.2 contained the following new features: - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word-, >>& - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u/-i, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf, compopt, mapfile - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>& - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen, compopt, mapfile - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (bash uses different syntax) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -This list is current through ksh93t (11/04/2008) - -New things in ksh-93 not in bash-4.0: - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching (match all instead of any) - exit statuses between 0 and 255 - FPATH and PATH mixing - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - $'' \C[.collating-element.] escape sequence - -C/-I invocation options - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - getopts -a - printf %B, %H, %P, %R, %T, %Z modifiers, output base for %d, `=' flag - read -N (read -n differs, too)/-v - set -o showme/-o multiline (bash default) - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - typeset -C/-S/-T/-X/-h/-s - experimental `type' definitions (a la typedef) using typeset - negative subscripts for indexed array variables - array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} - associative array assignments using `;' as element separator - command substitution $(n<#) expands to current byte offset for fd N - new '${ ' form of command substitution, executed in current shell - new >;/<#pat/<##pat/<#/># redirections - redirection operators preceded with {varname} to store fd number in varname - brace expansion printf-like formats - -New things in ksh-93 present in bash-4.0: - associative arrays - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - brace expansion and set -B - changes to kill builtin - `command', `builtin', `disown' builtins - echo -e - exec -c/-a - read -A (bash uses read -a) - read -t/-d - trap -p - `.' restores the positional parameters when it completes - set -o notify/-C - set -o pipefail - set -G (-o globstar) and ** - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion, TAB displaying possible completions - ENV processed only for interactive shells - The `+=' assignment operator - the `;&' case statement "fallthrough" pattern list terminator - csh-style history expansion and set -H - negative offsets in ${param:offset:length} - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Bash-4.0 introduces the concept of a `compatibility level', controlled by -several options to the `shopt' builtin. If the `compat31' option is enabled, -bash reverts to the bash-3.1 behavior with respect to quoting the rhs of -the =~ operator. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. It's a variant of - - echo .[!.]* ..?* * - -(The ..?* catches files with names of three or more characters beginning -with `..') - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-4.0) - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2009. Never make predictions. - -This document is Copyright 1995-2009 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-3.0 b/doc/FAQ-3.0 deleted file mode 100644 index 1eb11627a..000000000 --- a/doc/FAQ-3.0 +++ /dev/null @@ -1,1788 +0,0 @@ -This is the Bash FAQ, version 3.31, for Bash version 3.0. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet@po.cwru.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.0? -B2) Are there any user-visible incompatibilities between bash-3.0 and - bash-1.14.7? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.0, first made available on 27 July, 2004. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.0: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.0.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.0.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.0.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.0-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done a -port of bash-2.05b to the CYGWIN environment, and it is available as -part of their current release. Bash-3.0 is currently being tested and -should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.0? - -Bash-3.0 is the third major release of bash. The features introduced -in the intermediate releases following bash-2.05 have been completed. -Support for the bash debugger (a separate project) has been integrated. - -Bash-3.0 contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-3.0 -distribution): - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -A short feature history dating from Bash-2.0: - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -m/-p/-u, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -u, umask -S, alias -p, shopt, - disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.0: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - `+=' variable assignment operator - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.0: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -You can build a version of bash that will not report SIGPIPE errors -by uncommenting the definition of DONT_REPORT_SIGPIPE in the file -config-top.h. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -is 1-56592-147-X. Look for it in fine bookstores near you. This book -covers bash-1.14, but has an appendix describing some of the new features -in bash-2.0. - -A second edition of this book is available, published in January, 1998. -The ISBN number is 1-56592-347-2. Look for it in the same fine bookstores -or on the web. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers -bash-2.0 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `+=' variable assignment operator -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2005. Never make predictions. - -This document is Copyright 1995-2005 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-3.1 b/doc/FAQ-3.1 deleted file mode 100644 index 71702653d..000000000 --- a/doc/FAQ-3.1 +++ /dev/null @@ -1,1806 +0,0 @@ -This is the Bash FAQ, version 3.33, for Bash version 3.1. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet@po.cwru.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.1? -B2) Are there any user-visible incompatibilities between bash-3.1 and - bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.1, first made available on 09 December, 2005. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.1: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.1.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.1.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.1.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.1.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.1-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.1 is currently -being tested and should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-3.1. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.1? - -Bash-3.1 is the first maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.1 distribution). - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -A short feature history dating from Bash-2.0: - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.0: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.0: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash will not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Feb 2003). It covers -bash-2.0 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2006. Never make predictions. - -This document is Copyright 1995-2005 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-3.2 b/doc/FAQ-3.2 deleted file mode 100644 index 4cebba094..000000000 --- a/doc/FAQ-3.2 +++ /dev/null @@ -1,1878 +0,0 @@ -This is the Bash FAQ, version 3.36, for Bash version 3.2. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.2, first made available on 12 October, 2006. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.2: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-3.1 or bash-3.2. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.2? - -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.2: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.2: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. It's a variant of - - echo .[!.]* ..?* * - -(The ..?* catches files with names of three or more characters beginning -with `..') - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2007. Never make predictions. - -This document is Copyright 1995-2006 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-4.0 b/doc/FAQ-4.0 deleted file mode 100644 index 59a253188..000000000 --- a/doc/FAQ-4.0 +++ /dev/null @@ -1,2041 +0,0 @@ -This is the Bash FAQ, version 3.37, for Bash version 4.0. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 4.0? -B2) Are there any user-visible incompatibilities between bash-4.0, - bash-3.2, and bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 4.0, first made available on XXX YYYYY, 2008. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 4.0: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-4.0.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-4.0.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.0.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-4.0.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-4.0-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.2 to the CYGWIN environment, and both -are available as part of their current release. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-4.0, but will gladly accept any patches that are needed. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 4.0? - -Bash-4.0 is the fourth major release of bash. There are numerous new features, -some experimental. Depending on community reception, the experimental -features will evolve. - -Bash-4.0 contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-4.0 -distribution): - -o When using substring expansion on the positional parameters, a starting - index of 0 now causes $0 to be prefixed to the list. - -o There is a new variable, $BASHPID, which always returns the process id of - the current shell. - -o There is a new `autocd' option that, when enabled, causes bash to attempt - to `cd' to a directory name that is supplied as the first word of a - simple command. - -o There is a new `checkjobs' option that causes the shell to check for and - report any running or stopped jobs at exit. - -o The programmable completion code exports a new COMP_TYPE variable, set to - a character describing the type of completion being attempted. - -o The programmable completion code exports a new COMP_KEY variable, set to - the character that caused the completion to be invoked (e.g., TAB). - -o The programmable completion code now uses the same set of characters as - readline when breaking the command line into a list of words. - -o The block multiplier for the ulimit -c and -f options is now 512 when in - Posix mode, as Posix specifies. - -o Changed the behavior of the read builtin to save any partial input received - in the specified variable when the read builtin times out. This also - results in variables specified as arguments to read to be set to the empty - string when there is no input available. When the read builtin times out, - it returns an exit status greater than 128. - -o The shell now has the notion of a `compatibility level', controlled by - new variables settable by `shopt'. Setting this variable currently - restores the bash-3.1 behavior when processing quoted strings on the rhs - of the `=~' operator to the `[[' command. - -o The `ulimit' builtin now has new -b (socket buffer size) and -T (number - of threads) options. - -o There is a new `compopt' builtin that allows completion functions to modify - completion options for existing completions or the completion currently - being executed. - -o The `read' builtin has a new -i option which inserts text into the reply - buffer when using readline. - -o A new `-E' option to the complete builtin allows control of the default - behavior for completion on an empty line. - -o There is now limited support for completing command name words containing - globbing characters. - -o The `help' builtin now has a new -d option, to display a short description, - and a -m option, to print help information in a man page-like format. - -o There is a new `mapfile' builtin to populate an array with lines from a - given file. - -o If a command is not found, the shell attempts to execute a shell function - named `command_not_found_handle', supplying the command words as the - function arguments. - -o There is a new shell option: `globstar'. When enabled, the globbing code - treats `**' specially -- it matches all directories (and files within - them, when appropriate) recursively. - -o There is a new shell option: `dirspell'. When enabled, the filename - completion code performs spelling correction on directory names during - completion. - -o The `-t' option to the `read' builtin now supports fractional timeout - values. - -o Brace expansion now allows zero-padding of expanded numeric values and - will add the proper number of zeroes to make sure all values contain the - same number of digits. - -o There is a new bash-specific bindable readline function: `dabbrev-expand'. - It uses menu completion on a set of words taken from the history list. - -o The command assigned to a key sequence with `bind -x' now sets two new - variables in the environment of the executed command: READLINE_LINE_BUFFER - and READLINE_POINT. The command can change the current readline line - and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, - respectively. - -o There is a new >>& redirection operator, which appends the standard output - and standard error to the named file. - -o The parser now understands `|&' as a synonym for `2>&1 |', which redirects - the standard error for a command through a pipe. - -o The new `;&' case statement action list terminator causes execution to - continue with the action associated with the next pattern in the - statement rather than terminating the command. - -o The new `;;&' case statement action list terminator causes the shell to - test the next set of patterns after completing execution of the current - action, rather than terminating the command. - -o The shell understands a new variable: PROMPT_DIRTRIM. When set to an - integer value greater than zero, prompt expansion of \w and \W will - retain only that number of trailing pathname components and replace - the intervening characters with `...'. - -o There are new case-modifying word expansions: uppercase (^[^]) and - lowercase (,[,]). They can work on either the first character or - array element, or globally. They accept an optional shell pattern - that determines which characters to modify. There is an optionally- - configured feature to include capitalization operators. - -o The shell provides associative array variables, with the appropriate - support to create, delete, assign values to, and expand them. - -o The `declare' builtin now has new -l (convert value to lowercase upon - assignment) and -u (convert value to uppercase upon assignment) options. - There is an optionally-configurable -c option to capitalize a value at - assignment. - -o There is a new `coproc' reserved word that specifies a coprocess: an - asynchronous command run with two pipes connected to the creating shell. - Coprocs can be named. The input and output file descriptors and the - PID of the coprocess are available to the calling shell in variables - with coproc-specific names. - -o A value of 0 for the -t option to `read' now returns success if there is - input available to be read from the specified file descriptor. - -o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged - mode. - -o New bindable readline functions shell-forward-word and shell-backward-word, - which move forward and backward words delimited by shell metacharacters - and honor shell quoting. - -o New bindable readline functions shell-backward-kill-word and shell-kill-word - which kill words backward and forward, but use the same word boundaries - as shell-forward-word and shell-backward-word. - -A short feature history dating from Bash-2.0: - -Bash-3.2 contained the following new features: - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word-, >>& - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u/-i, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf, compopt, mapfile - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>& - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen, compopt, mapfile - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (bash uses different syntax) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-4.0: - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-4.0: - associative arrays - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Bash-4.0 introduces the concept of a `compatibility level', controlled by -several options to the `shopt' builtin. If the `compat31' option is enabled, -bash reverts to the bash-3.1 behavior with respect to quoting the rhs of -the =~ operator. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. It's a variant of - - echo .[!.]* ..?* * - -(The ..?* catches files with names of three or more characters beginning -with `..') - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2007. Never make predictions. - -This document is Copyright 1995-2006 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-4.1 b/doc/FAQ-4.1 deleted file mode 100644 index bb2c35dea..000000000 --- a/doc/FAQ-4.1 +++ /dev/null @@ -1,2200 +0,0 @@ -This is the Bash FAQ, version 4.12, for Bash version 4.1. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 4.1? -B2) Are there any user-visible incompatibilities between bash-4.1 and - previous bash versions? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? -E15) Tell me more about the shell compatibility level. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 4.1, first made available on 31 December, 2009. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 4.1: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-4.1.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-4.1.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.1.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-4.1.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-4.1-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both -are available as part of their current release. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-4.1, but will gladly accept any patches that are needed. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 4.1? - -Bash-4.1 is the first revision to the fourth major release of bash. - -Bash-4.1 contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-4.1 -distribution): - -o Here-documents within $(...) command substitutions may once more be - delimited by the closing right paren, instead of requiring a newline. - -o Bash's file status checks (executable, readable, etc.) now take file - system ACLs into account on file systems that support them. - -o Bash now passes environment variables with names that are not valid - shell variable names through into the environment passed to child - processes. - -o The `execute-unix-command' readline function now attempts to clear and - reuse the current line rather than move to a new one after the command - executes. - -o `printf -v' can now assign values to array indices. - -o New `complete -E' and `compopt -E' options that work on the "empty" - completion: completion attempted on an empty command line. - -o New complete/compgen/compopt -D option to define a `default' completion: - a completion to be invoked on command for which no completion has been - defined. If this function returns 124, programmable completion is - attempted again, allowing a user to dynamically build a set of completions - as completion is attempted by having the default completion function - install individual completion functions each time it is invoked. - -o When displaying associative arrays, subscripts are now quoted. - -o Changes to dabbrev-expand to make it more `emacs-like': no space appended - after matches, completions are not sorted, and most recent history entries - are presented first. - -o The [[ and (( commands are now subject to the setting of `set -e' and the - ERR trap. - -o The source/. builtin now removes NUL bytes from the file before attempting - to parse commands. - -o There is a new configuration option (in config-top.h) that forces bash to - forward all history entries to syslog. - -o A new variable $BASHOPTS to export shell options settable using `shopt' to - child processes. - -o There is a new confgure option that forces the extglob option to be - enabled by default. - -o New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace - output to that file descriptor. - -o If the optional left-hand-side of a redirection is of the form {var}, the - shell assigns the file descriptor used to $var or uses $var as the file - descriptor to move or close, depending on the redirection operator. - -o The < and > operators to the [[ conditional command now do string - comparison according to the current locale. - -o Programmable completion now uses the completion for `b' instead of `a' - when completion is attempted on a line like: a $(b c. - -o Force extglob on temporarily when parsing the pattern argument to - the == and != operators to the [[ command, for compatibility. - -o Changed the behavior of interrupting the wait builtin when a SIGCHLD is - received and a trap on SIGCHLD is set to be Posix-mode only. - -o The read builtin has a new `-N nchars' option, which reads exactly NCHARS - characters, ignoring delimiters like newline. - -o The mapfile/readarray builtin no longer stores the commands it invokes via - callbacks in the history list. - -o There is a new `compat40' shopt option. - -o The < and > operators to [[ do string comparisons using the current locale - only if the compatibility level is greater than 40 (set to 41 by default). - -o New bindable readline function: menu-complete-backward. - -o In the readline vi-mode insertion keymap, C-n is now bound to menu-complete - by default, and C-p to menu-complete-backward. - -o When in readline vi command mode, repeatedly hitting ESC now does nothing, - even when ESC introduces a bound key sequence. This is closer to how - historical vi behaves. - -o New bindable readline function: skip-csi-sequence. Can be used as a - default to consume key sequences generated by keys like Home and End - without having to bind all keys. - -o New bindable readline variable: skip-completed-text, active when - completing in the middle of a word. If enabled, it means that characters - in the completion that match characters in the remainder of the word are - "skipped" rather than inserted into the line. - -o The pre-readline-6.0 version of menu completion is available as - "old-menu-complete" for users who do not like the readline-6.0 version. - -o New bindable readline variable: echo-control-characters. If enabled, and - the tty ECHOCTL bit is set, controls the echoing of characters - corresponding to keyboard-generated signals. - -o New bindable readline variable: enable-meta-key. Controls whether or not - readline sends the smm/rmm sequences if the terminal indicates it has a - meta key that enables eight-bit characters. - -A short feature history dating from Bash-2.0: - -Bash-4.0 contained the following new features: - -o When using substring expansion on the positional parameters, a starting - index of 0 now causes $0 to be prefixed to the list. - -o There is a new variable, $BASHPID, which always returns the process id of - the current shell. - -o There is a new `autocd' option that, when enabled, causes bash to attempt - to `cd' to a directory name that is supplied as the first word of a - simple command. - -o There is a new `checkjobs' option that causes the shell to check for and - report any running or stopped jobs at exit. - -o The programmable completion code exports a new COMP_TYPE variable, set to - a character describing the type of completion being attempted. - -o The programmable completion code exports a new COMP_KEY variable, set to - the character that caused the completion to be invoked (e.g., TAB). - -o The programmable completion code now uses the same set of characters as - readline when breaking the command line into a list of words. - -o The block multiplier for the ulimit -c and -f options is now 512 when in - Posix mode, as Posix specifies. - -o Changed the behavior of the read builtin to save any partial input received - in the specified variable when the read builtin times out. This also - results in variables specified as arguments to read to be set to the empty - string when there is no input available. When the read builtin times out, - it returns an exit status greater than 128. - -o The shell now has the notion of a `compatibility level', controlled by - new variables settable by `shopt'. Setting this variable currently - restores the bash-3.1 behavior when processing quoted strings on the rhs - of the `=~' operator to the `[[' command. - -o The `ulimit' builtin now has new -b (socket buffer size) and -T (number - of threads) options. - -o There is a new `compopt' builtin that allows completion functions to modify - completion options for existing completions or the completion currently - being executed. - -o The `read' builtin has a new -i option which inserts text into the reply - buffer when using readline. - -o A new `-E' option to the complete builtin allows control of the default - behavior for completion on an empty line. - -o There is now limited support for completing command name words containing - globbing characters. - -o The `help' builtin now has a new -d option, to display a short description, - and a -m option, to print help information in a man page-like format. - -o There is a new `mapfile' builtin to populate an array with lines from a - given file. - -o If a command is not found, the shell attempts to execute a shell function - named `command_not_found_handle', supplying the command words as the - function arguments. - -o There is a new shell option: `globstar'. When enabled, the globbing code - treats `**' specially -- it matches all directories (and files within - them, when appropriate) recursively. - -o There is a new shell option: `dirspell'. When enabled, the filename - completion code performs spelling correction on directory names during - completion. - -o The `-t' option to the `read' builtin now supports fractional timeout - values. - -o Brace expansion now allows zero-padding of expanded numeric values and - will add the proper number of zeroes to make sure all values contain the - same number of digits. - -o There is a new bash-specific bindable readline function: `dabbrev-expand'. - It uses menu completion on a set of words taken from the history list. - -o The command assigned to a key sequence with `bind -x' now sets two new - variables in the environment of the executed command: READLINE_LINE_BUFFER - and READLINE_POINT. The command can change the current readline line - and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, - respectively. - -o There is a new >>& redirection operator, which appends the standard output - and standard error to the named file. - -o The parser now understands `|&' as a synonym for `2>&1 |', which redirects - the standard error for a command through a pipe. - -o The new `;&' case statement action list terminator causes execution to - continue with the action associated with the next pattern in the - statement rather than terminating the command. - -o The new `;;&' case statement action list terminator causes the shell to - test the next set of patterns after completing execution of the current - action, rather than terminating the command. - -o The shell understands a new variable: PROMPT_DIRTRIM. When set to an - integer value greater than zero, prompt expansion of \w and \W will - retain only that number of trailing pathname components and replace - the intervening characters with `...'. - -o There are new case-modifying word expansions: uppercase (^[^]) and - lowercase (,[,]). They can work on either the first character or - array element, or globally. They accept an optional shell pattern - that determines which characters to modify. There is an optionally- - configured feature to include capitalization operators. - -o The shell provides associative array variables, with the appropriate - support to create, delete, assign values to, and expand them. - -o The `declare' builtin now has new -l (convert value to lowercase upon - assignment) and -u (convert value to uppercase upon assignment) options. - There is an optionally-configurable -c option to capitalize a value at - assignment. - -o There is a new `coproc' reserved word that specifies a coprocess: an - asynchronous command run with two pipes connected to the creating shell. - Coprocs can be named. The input and output file descriptors and the - PID of the coprocess are available to the calling shell in variables - with coproc-specific names. - -o A value of 0 for the -t option to `read' now returns success if there is - input available to be read from the specified file descriptor. - -o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged - mode. - -o New bindable readline functions shell-forward-word and shell-backward-word, - which move forward and backward words delimited by shell metacharacters - and honor shell quoting. - -o New bindable readline functions shell-backward-kill-word and shell-kill-word - which kill words backward and forward, but use the same word boundaries - as shell-forward-word and shell-backward-word. - -Bash-3.2 contained the following new features: - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word-, >>& - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf, compopt, mapfile - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - shell assignment of a file descriptor used in a redirection to a variable - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>& - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen, compopt, mapfile - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - shell assignment of a file descriptor used in a redirection to a variable - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (bash uses different syntax) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -This list is current through ksh93t+ (05/05/2009) - -New things in ksh-93 not in bash-4.1: - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching (match all instead of any) - exit statuses between 0 and 255 - FPATH and PATH mixing - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - $'' \C[.collating-element.] escape sequence - -C/-I invocation options - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - getopts -a - printf %B, %H, %P, %R, %T, %Z modifiers, output base for %d, `=' flag - read -n/-N differ/-v - set -o showme/-o multiline (bash default) - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - [[ -R name ]] (checks whether or not name is a nameref) - typeset -C/-S/-T/-X/-h/-s - experimental `type' definitions (a la typedef) using typeset - negative subscripts for indexed array variables - array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} - associative array assignments using `;' as element separator - command substitution $(n<#) expands to current byte offset for fd N - new '${ ' form of command substitution, executed in current shell - new >;/<>;/<#pat/<##pat/<#/># redirections - brace expansion printf-like formats - [[ -v var ]] operators (checks whether or not var is set) - -New things in ksh-93 present in bash-4.1: - associative arrays - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - brace expansion and set -B - changes to kill builtin - `command', `builtin', `disown' builtins - echo -e - exec -c/-a - read -A (bash uses read -a) - read -t/-d - trap -p - `.' restores the positional parameters when it completes - set -o notify/-C - set -o pipefail - set -G (-o globstar) and ** - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion, TAB displaying possible completions - ENV processed only for interactive shells - The `+=' assignment operator - the `;&' case statement "fallthrough" pattern list terminator - csh-style history expansion and set -H - negative offsets in ${param:offset:length} - redirection operators preceded with {varname} to store fd number in varname - DEBUG can force skipping following command - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Bash-4.0 introduces the concept of a `compatibility level', controlled by -several options to the `shopt' builtin. If the `compat31' option is enabled, -bash reverts to the bash-3.1 behavior with respect to quoting the rhs of -the =~ operator. - -E15) Tell me more about the shell compatibility level. - -Bash-4.0 introduced the concept of a `shell compatibility level', specified -as a set of options to the shopt builtin (compat31, compat32, compat40 at -this writing). There is only one current compatibility level -- each -option is mutually exclusive. This list does not mention behavior that is -standard for a particular version (e.g., setting compat32 means that quoting -the rhs of the regexp matching operator quotes special regexp characters in -the word, which is default behavior in bash-3.2 and above). - -compat31 set - - the < and > operators to the [[ command do not consider the current - locale when comparing strings - - quoting the rhs of the regexp matching operator (=~) has no - special effect - -compat32 set - - the < and > operators to the [[ command do not consider the current - locale when comparing strings - -compat40 set - - the < and > operators to the [[ command do not consider the current - locale when comparing strings - - interrupting a command list such as "a ; b ; c" causes the execution - of the entire list to be aborted (in versions before bash-4.0, - interrupting one command in a list caused the next to be executed) - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. It's a variant of - - echo .[!.]* ..?* * - -(The ..?* catches files with names of three or more characters beginning -with `..') - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-4.0) - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2010. Never make predictions. - -This document is Copyright 1995-2010 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/FAQ-4.2 b/doc/FAQ-4.2 deleted file mode 100644 index 33ca3d32a..000000000 --- a/doc/FAQ-4.2 +++ /dev/null @@ -1,2273 +0,0 @@ -This is the Bash FAQ, version 4.12, for Bash version 4.2. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 4.2? -B2) Are there any user-visible incompatibilities between bash-4.2 and - previous bash versions? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? -E15) Tell me more about the shell compatibility level. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 4.2, first made available on 14 February, 2011. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 4.2: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-4.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-4.2.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-4.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-4.2.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-4.2-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-3.2 and bash-4.0 to the CYGWIN environment, and both -are available as part of their current release. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-4.2, but will gladly accept any patches that are needed. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 4.2? - -Bash-4.2 is the second revision to the fourth major release of bash. - -Bash-4.2 contains the following new features (see the manual page for -complete descriptions and the CHANGES and NEWS files in the bash-4.2 -distribution): - -o `exec -a foo' now sets $0 to `foo' in an executable shell script without a - leading #!. - -o Subshells begun to execute command substitutions or run shell functions or - builtins in subshells do not reset trap strings until a new trap is - specified. This allows $(trap) to display the caller's traps and the - trap strings to persist until a new trap is set. - -o `trap -p' will now show signals ignored at shell startup, though their - disposition still cannot be modified. - -o $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences. - -o declare/typeset has a new `-g' option, which creates variables in the - global scope even when run in a shell function. - -o test/[/[[ have a new -v variable unary operator, which returns success if - `variable' has been set. - -o Posix parsing changes to allow `! time command' and multiple consecutive - instances of `!' (which toggle) and `time' (which have no cumulative - effect). - -o Posix change to allow `time' as a command by itself to print the elapsed - user, system, and real times for the shell and its children. - -o $((...)) is always parsed as an arithmetic expansion first, instead of as - a potential nested command substitution, as Posix requires. - -o A new FUNCNEST variable to allow the user to control the maximum shell - function nesting (recursive execution) level. - -o The mapfile builtin now supplies a third argument to the callback command: - the line about to be assigned to the supplied array index. - -o The printf builtin has as new %(fmt)T specifier, which allows time values - to use strftime-like formatting. - -o There is a new `compat41' shell option. - -o The cd builtin has a new Posix-mandated `-e' option. - -o Negative subscripts to indexed arrays, previously errors, now are treated - as offsets from the maximum assigned index + 1. - -o Negative length specifications in the ${var:offset:length} expansion, - previously errors, are now treated as offsets from the end of the variable. - -o Parsing change to allow `time -p --'. - -o Posix-mode parsing change to not recognize `time' as a keyword if the - following token begins with a `-'. This means no more Posix-mode - `time -p'. Posix interpretation 267. - -o There is a new `lastpipe' shell option that runs the last command of a - pipeline in the current shell context. The lastpipe option has no - effect if job control is enabled. - -o History expansion no longer expands the `$!' variable expansion. - -o Posix mode shells no longer exit if a variable assignment error occurs - with an assignment preceding a command that is not a special builtin. - -o Non-interactive mode shells exit if -u is enabled an an attempt is made - to use an unset variable with the % or # expansions, the `//', `^', or - `,' expansions, or the parameter length expansion. - -o Posix-mode shells use the argument passed to `.' as-is if a $PATH search - fails, effectively searching the current directory. Posix-2008 change. - -A short feature history dating back to Bash-2.0: - -Bash-4.1 contained the following new features: - -o Here-documents within $(...) command substitutions may once more be - delimited by the closing right paren, instead of requiring a newline. - -o Bash's file status checks (executable, readable, etc.) now take file - system ACLs into account on file systems that support them. - -o Bash now passes environment variables with names that are not valid - shell variable names through into the environment passed to child - processes. - -o The `execute-unix-command' readline function now attempts to clear and - reuse the current line rather than move to a new one after the command - executes. - -o `printf -v' can now assign values to array indices. - -o New `complete -E' and `compopt -E' options that work on the "empty" - completion: completion attempted on an empty command line. - -o New complete/compgen/compopt -D option to define a `default' completion: - a completion to be invoked on command for which no completion has been - defined. If this function returns 124, programmable completion is - attempted again, allowing a user to dynamically build a set of completions - as completion is attempted by having the default completion function - install individual completion functions each time it is invoked. - -o When displaying associative arrays, subscripts are now quoted. - -o Changes to dabbrev-expand to make it more `emacs-like': no space appended - after matches, completions are not sorted, and most recent history entries - are presented first. - -o The [[ and (( commands are now subject to the setting of `set -e' and the - ERR trap. - -o The source/. builtin now removes NUL bytes from the file before attempting - to parse commands. - -o There is a new configuration option (in config-top.h) that forces bash to - forward all history entries to syslog. - -o A new variable $BASHOPTS to export shell options settable using `shopt' to - child processes. - -o There is a new confgure option that forces the extglob option to be - enabled by default. - -o New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace - output to that file descriptor. - -o If the optional left-hand-side of a redirection is of the form {var}, the - shell assigns the file descriptor used to $var or uses $var as the file - descriptor to move or close, depending on the redirection operator. - -o The < and > operators to the [[ conditional command now do string - comparison according to the current locale. - -o Programmable completion now uses the completion for `b' instead of `a' - when completion is attempted on a line like: a $(b c. - -o Force extglob on temporarily when parsing the pattern argument to - the == and != operators to the [[ command, for compatibility. - -o Changed the behavior of interrupting the wait builtin when a SIGCHLD is - received and a trap on SIGCHLD is set to be Posix-mode only. - -o The read builtin has a new `-N nchars' option, which reads exactly NCHARS - characters, ignoring delimiters like newline. - -o The mapfile/readarray builtin no longer stores the commands it invokes via - callbacks in the history list. - -o There is a new `compat40' shopt option. - -o The < and > operators to [[ do string comparisons using the current locale - only if the compatibility level is greater than 40 (set to 41 by default). - -o New bindable readline function: menu-complete-backward. - -o In the readline vi-mode insertion keymap, C-n is now bound to menu-complete - by default, and C-p to menu-complete-backward. - -o When in readline vi command mode, repeatedly hitting ESC now does nothing, - even when ESC introduces a bound key sequence. This is closer to how - historical vi behaves. - -o New bindable readline function: skip-csi-sequence. Can be used as a - default to consume key sequences generated by keys like Home and End - without having to bind all keys. - -o New bindable readline variable: skip-completed-text, active when - completing in the middle of a word. If enabled, it means that characters - in the completion that match characters in the remainder of the word are - "skipped" rather than inserted into the line. - -o The pre-readline-6.0 version of menu completion is available as - "old-menu-complete" for users who do not like the readline-6.0 version. - -o New bindable readline variable: echo-control-characters. If enabled, and - the tty ECHOCTL bit is set, controls the echoing of characters - corresponding to keyboard-generated signals. - -o New bindable readline variable: enable-meta-key. Controls whether or not - readline sends the smm/rmm sequences if the terminal indicates it has a - meta key that enables eight-bit characters. - -Bash-4.0 contained the following new features: - -o When using substring expansion on the positional parameters, a starting - index of 0 now causes $0 to be prefixed to the list. - -o There is a new variable, $BASHPID, which always returns the process id of - the current shell. - -o There is a new `autocd' option that, when enabled, causes bash to attempt - to `cd' to a directory name that is supplied as the first word of a - simple command. - -o There is a new `checkjobs' option that causes the shell to check for and - report any running or stopped jobs at exit. - -o The programmable completion code exports a new COMP_TYPE variable, set to - a character describing the type of completion being attempted. - -o The programmable completion code exports a new COMP_KEY variable, set to - the character that caused the completion to be invoked (e.g., TAB). - -o The programmable completion code now uses the same set of characters as - readline when breaking the command line into a list of words. - -o The block multiplier for the ulimit -c and -f options is now 512 when in - Posix mode, as Posix specifies. - -o Changed the behavior of the read builtin to save any partial input received - in the specified variable when the read builtin times out. This also - results in variables specified as arguments to read to be set to the empty - string when there is no input available. When the read builtin times out, - it returns an exit status greater than 128. - -o The shell now has the notion of a `compatibility level', controlled by - new variables settable by `shopt'. Setting this variable currently - restores the bash-3.1 behavior when processing quoted strings on the rhs - of the `=~' operator to the `[[' command. - -o The `ulimit' builtin now has new -b (socket buffer size) and -T (number - of threads) options. - -o There is a new `compopt' builtin that allows completion functions to modify - completion options for existing completions or the completion currently - being executed. - -o The `read' builtin has a new -i option which inserts text into the reply - buffer when using readline. - -o A new `-E' option to the complete builtin allows control of the default - behavior for completion on an empty line. - -o There is now limited support for completing command name words containing - globbing characters. - -o The `help' builtin now has a new -d option, to display a short description, - and a -m option, to print help information in a man page-like format. - -o There is a new `mapfile' builtin to populate an array with lines from a - given file. - -o If a command is not found, the shell attempts to execute a shell function - named `command_not_found_handle', supplying the command words as the - function arguments. - -o There is a new shell option: `globstar'. When enabled, the globbing code - treats `**' specially -- it matches all directories (and files within - them, when appropriate) recursively. - -o There is a new shell option: `dirspell'. When enabled, the filename - completion code performs spelling correction on directory names during - completion. - -o The `-t' option to the `read' builtin now supports fractional timeout - values. - -o Brace expansion now allows zero-padding of expanded numeric values and - will add the proper number of zeroes to make sure all values contain the - same number of digits. - -o There is a new bash-specific bindable readline function: `dabbrev-expand'. - It uses menu completion on a set of words taken from the history list. - -o The command assigned to a key sequence with `bind -x' now sets two new - variables in the environment of the executed command: READLINE_LINE_BUFFER - and READLINE_POINT. The command can change the current readline line - and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT, - respectively. - -o There is a new >>& redirection operator, which appends the standard output - and standard error to the named file. - -o The parser now understands `|&' as a synonym for `2>&1 |', which redirects - the standard error for a command through a pipe. - -o The new `;&' case statement action list terminator causes execution to - continue with the action associated with the next pattern in the - statement rather than terminating the command. - -o The new `;;&' case statement action list terminator causes the shell to - test the next set of patterns after completing execution of the current - action, rather than terminating the command. - -o The shell understands a new variable: PROMPT_DIRTRIM. When set to an - integer value greater than zero, prompt expansion of \w and \W will - retain only that number of trailing pathname components and replace - the intervening characters with `...'. - -o There are new case-modifying word expansions: uppercase (^[^]) and - lowercase (,[,]). They can work on either the first character or - array element, or globally. They accept an optional shell pattern - that determines which characters to modify. There is an optionally- - configured feature to include capitalization operators. - -o The shell provides associative array variables, with the appropriate - support to create, delete, assign values to, and expand them. - -o The `declare' builtin now has new -l (convert value to lowercase upon - assignment) and -u (convert value to uppercase upon assignment) options. - There is an optionally-configurable -c option to capitalize a value at - assignment. - -o There is a new `coproc' reserved word that specifies a coprocess: an - asynchronous command run with two pipes connected to the creating shell. - Coprocs can be named. The input and output file descriptors and the - PID of the coprocess are available to the calling shell in variables - with coproc-specific names. - -o A value of 0 for the -t option to `read' now returns success if there is - input available to be read from the specified file descriptor. - -o CDPATH and GLOBIGNORE are ignored when the shell is running in privileged - mode. - -o New bindable readline functions shell-forward-word and shell-backward-word, - which move forward and backward words delimited by shell metacharacters - and honor shell quoting. - -o New bindable readline functions shell-backward-kill-word and shell-kill-word - which kill words backward and forward, but use the same word boundaries - as shell-forward-word and shell-backward-word. - -Bash-3.2 contained the following new features: - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word-, >>& - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u/-i/-N, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf, compopt, mapfile - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - shell assignment of a file descriptor used in a redirection to a variable - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, BASHPID, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume, PROMPT_DIRTRIM - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word-, >>& - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s/-N, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen, compopt, mapfile - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - autocd shell option and behavior - command-not-found hook with command_not_found_handle shell function - globstar shell option and `**' globbing behavior - |& synonym for `2>&1 |' - ;& and ;;& case action list terminators - case-modifying word expansions and variable attributes - associative arrays - coprocesses using the `coproc' reserved word and variables - shell assignment of a file descriptor used in a redirection to a variable - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (bash uses different syntax) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -This list is current through ksh93t+ (05/05/2009) - -New things in ksh-93 not in bash-4.2: - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching (match all instead of any) - exit statuses between 0 and 255 - FPATH and PATH mixing - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - $'' \C[.collating-element.] escape sequence - -C/-I invocation options - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - getopts -a - printf %B, %H, %P, %R, %Z modifiers, output base for %d, `=' flag - read -n/-N differ/-v - set -o showme/-o multiline (bash default) - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - [[ -R name ]] (checks whether or not name is a nameref) - typeset -C/-S/-T/-X/-h/-s - experimental `type' definitions (a la typedef) using typeset - array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]} - associative array assignments using `;' as element separator - command substitution $(n<#) expands to current byte offset for fd N - new '${ ' form of command substitution, executed in current shell - new >;/<>;/<#pat/<##pat/<#/># redirections - brace expansion printf-like formats - -New things in ksh-93 present in bash-4.2: - associative arrays - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - negative subscripts for indexed array variables - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - brace expansion and set -B - changes to kill builtin - `command', `builtin', `disown' builtins - echo -e - exec -c/-a - printf %T modifier - read -A (bash uses read -a) - read -t/-d - trap -p - `.' restores the positional parameters when it completes - set -o notify/-C - set -o pipefail - set -G (-o globstar) and ** - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion, TAB displaying possible completions - ENV processed only for interactive shells - The `+=' assignment operator - the `;&' case statement "fallthrough" pattern list terminator - csh-style history expansion and set -H - negative offsets in ${param:offset:length} - redirection operators preceded with {varname} to store fd number in varname - DEBUG can force skipping following command - [[ -v var ]] operator (checks whether or not var is set) - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Bash-4.0 introduces the concept of a `compatibility level', controlled by -several options to the `shopt' builtin. If the `compat31' option is enabled, -bash reverts to the bash-3.1 behavior with respect to quoting the rhs of -the =~ operator. - -E15) Tell me more about the shell compatibility level. - -Bash-4.0 introduced the concept of a `shell compatibility level', specified -as a set of options to the shopt builtin (compat31, compat32, compat40 at -this writing). There is only one current compatibility level -- each -option is mutually exclusive. This list does not mention behavior that is -standard for a particular version (e.g., setting compat32 means that quoting -the rhs of the regexp matching operator quotes special regexp characters in -the word, which is default behavior in bash-3.2 and above). - -compat31 set - - the < and > operators to the [[ command do not consider the current - locale when comparing strings - - quoting the rhs of the regexp matching operator (=~) has no - special effect - -compat32 set - - the < and > operators to the [[ command do not consider the current - locale when comparing strings - -compat40 set - - the < and > operators to the [[ command do not consider the current - locale when comparing strings - - interrupting a command list such as "a ; b ; c" causes the execution - of the entire list to be aborted (in versions before bash-4.0, - interrupting one command in a list caused the next to be executed) - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. It's a variant of - - echo .[!.]* ..?* * - -(The ..?* catches files with names of three or more characters beginning -with `..') - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-4.0) - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2010. Never make predictions. - -This document is Copyright 1995-2010 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/Makefile b/doc/Makefile deleted file mode 120000 index cdc927f6b..000000000 --- a/doc/Makefile +++ /dev/null @@ -1 +0,0 @@ -/usr/local/build/chet/bash/bash-current/doc/Makefile \ No newline at end of file diff --git a/doc/Makefile.tmp b/doc/Makefile.tmp deleted file mode 100644 index 76763dd11..000000000 --- a/doc/Makefile.tmp +++ /dev/null @@ -1,294 +0,0 @@ -# This Makefile is for the Bash/documentation directory -*- text -*-. -# -# Copyright (C) 2003 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 2, 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, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA. - -PACKAGE = bash -VERSION = 3.2-maint - -PACKAGE_BUGREPORT = bug-bash@gnu.org -PACKAGE_NAME = bash -PACKAGE_STRING = bash 3.2-maint -PACKAGE_VERSION = 3.2-maint - -# -SHELL = /bin/sh -RM = rm -f - -topdir = /Users/chet/src/bash/src -srcdir = /Users/chet/src/bash/src/doc -VPATH = .:/Users/chet/src/bash/src/doc - -prefix = /usr/local -exec_prefix = ${prefix} - -infodir = ${prefix}/share/info - -# set this to a directory name to have the HTML files installed -htmldir = ${docdir} - -# Support an alternate destination root directory for package building -DESTDIR = - -mandir = ${prefix}/share/man -manpfx = man - -man1ext = .1 -man1dir = $(mandir)/$(manpfx)1 -man3ext = .3 -man3dir = $(mandir)/$(manpfx)3 - -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -BUILD_DIR = /usr/local/build/chet/bash/bash-current - -SUPPORT_SRCDIR = $(topdir)/support - -# bad style -RL_LIBDIR = $(topdir)/lib/readline - -# unused -TEXINDEX = texindex -TEX = tex - -MAKEINFO = makeinfo -TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi -TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html -MAN2HTML = ${BUILD_DIR}/support/man2html -HTMLPOST = ${srcdir}/htmlpost.sh -INFOPOST = ${srcdir}/infopost.sh -QUIETPS = #set this to -q to shut up dvips -PAPERSIZE = letter # change to a4 for A4-size paper -PSDPI = 600 # could be 300 if you like -DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky - -TEXINPUTDIR = $(RL_LIBDIR)/doc -SET_TEXINPUTS = TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS - -# These tools might not be available; they're not required -DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE} -PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ - -MKDIRS = ${SUPPORT_SRCDIR}/mkdirs - -# This should be a program that converts troff to an ascii-readable format -NROFF = groff -Tascii - -# This should be a program that converts troff to postscript -GROFF = groff - -HSUSER = $(RL_LIBDIR)/doc/hsuser.texi -RLUSER = $(RL_LIBDIR)/doc/rluser.texi - -BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/version.texi - -.SUFFIXES: .0 .1 .3 .ms .ps .txt .dvi .html .pdf - -.1.ps: - $(RM) $@ - -${GROFF} -man $< > $@ - -.1.0: - $(RM) $@ - -${NROFF} -man $< > $@ - -.1.html: - $(RM) $@ - -${MAN2HTML} $< | ${HTMLPOST} > $@ - -.ms.ps: - $(RM) $@ - -${GROFF} -ms $< > $@ - -.ms.txt: - $(RM) $@ - -${NROFF} -ms $< > $@ - -.3.ps: - $(RM) $@ - -${GROFF} -man $< > $@ - -.3.0: - $(RM) $@ - -${NROFF} -man $< > $@ - -.3.html: - $(RM) $@ - -${MAN2HTML} $< > $@ - -.ps.pdf: - $(RM) $@ - -${PSPDF} $< - -.dvi.pdf: - $(RM) $@ - -${DVIPDF} $< - -.dvi.ps: - ${RM} $@ - -${DVIPS} $< - -all: ps info dvi text html -nodvi: ps info text html - -PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps -DVIFILES = bashref.dvi bashref.ps -INFOFILES = bashref.info -MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0 -HTMLFILES = bashref.html bash.html -PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf - -ps: ${PSFILES} -dvi: ${DVIFILES} -info: ${INFOFILES} -text: ${MAN0FILES} -html: ${HTMLFILES} -pdf: ${PDFFILES} - -bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - ${SET_TEXINPUTS} $(TEXI2DVI) $(srcdir)/bashref.texi - -bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi - -bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi - -b.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - ./texi2html.debug -o $@ -verbose -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi - -bash.info: bashref.info - ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ - -bash.txt: bash.1 -bash.ps: bash.1 -bash.html: bash.1 $(MAN2HTML) -bashbug.ps: bashbug.1 -builtins.ps: builtins.1 bash.1 -rbash.ps: rbash.1 bash.1 -bash.0: bash.1 -bashbug.0: bashbug.1 -builtins.0: builtins.1 bash.1 -rbash.0: rbash.1 bash.1 -article.ps: article.ms - -bashref.ps: bashref.dvi - -article.pdf: article.ps -bashref.pdf: bashref.dvi -bash.pdf: bash.ps -rose94.pdf: rose94.ps - -$(MAN2HTML): ${topdir}/support/man2html.c - -( cd ${BUILD_DIR}/support ; ${MAKE} ${MFLAGS} man2html) - -clean: - $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \ - *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o - ${RM} core *.core - -mostlyclean: clean - $(RM) Makefile - -distclean: clean maybe-clean - $(RM) Makefile - -maintainer-clean: clean - ${RM} ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES} - ${RM} ${CREATED_FAQ} - $(RM) Makefile - -maybe-clean: - -if test "X$(topdir)" != "X$(BUILD_DIR)"; then \ - $(RM) ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES}; \ - fi - -installdirs: - -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(man1dir) - -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(infodir) - -if test -n "$(htmldir)" ; then \ - $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ - fi - -install: info installdirs bash.info - -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} - -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} -# uncomment the next line to install the builtins man page -# -$(INSTALL_DATA) $(srcdir)/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext} - -$(INSTALL_DATA) $(srcdir)/bash.info $(DESTDIR)$(infodir)/bash.info -# run install-info if it is present to update the info directory - if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ - install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \ - else true; fi -# if htmldir is set, install the html files into that directory - -if test -n "${htmldir}" ; then \ - $(INSTALL_DATA) $(srcdir)/bash.html $(DESTDIR)$(htmldir) ; \ - $(INSTALL_DATA) $(srcdir)/bashref.html $(DESTDIR)$(htmldir) ; \ - fi - -uninstall: - -$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext} - $(RM) $(DESTDIR)$(infodir)/bash.info - -if test -n "$(htmldir)" ; then \ - $(RM) $(DESTDIR)$(htmldir)/bash.html ; \ - $(RM) $(DESTDIR)$(htmldir)/bashref.html ; \ - fi - -# for use by chet -CREATED_FAQ = faq.news faq.news2 faq.mail faq.version - -faq: ${CREATED_FAQ} - -faq.version: FAQ.version FAQ - sh mkfaqvers FAQ.version > $@ - -faq.headers.mail: FAQ.headers.mail FAQ - sh mkfaqvers FAQ.headers.mail > $@ - -faq.headers.news: FAQ.headers.news FAQ - sh mkfaqvers FAQ.headers.news > $@ - -faq.headers.news2: FAQ.headers.news2 FAQ - sh mkfaqvers FAQ.headers.news2 > $@ - -faq.news: FAQ faq.headers.news faq.version - $(RM) $@ - cat faq.headers.news faq.version FAQ > $@ - -faq.news2: FAQ faq.headers.news2 faq.version - $(RM) $@ - cat faq.headers.news2 faq.version FAQ > $@ - -faq.mail: FAQ faq.headers.mail faq.version - $(RM) $@ - cat faq.headers.mail faq.version FAQ > $@ - -inst: bashref.texi - $(SHELL) ./mkinstall - cmp -s INSTALL ../INSTALL || mv INSTALL ../INSTALL - $(RM) INSTALL - -posix: bashref.texi - $(SHELL) ./mkposix - cmp -s POSIX ../POSIX || mv POSIX ../POSIX - $(RM) POSIX - -rbash: bashref.texi - $(SH) ./mkrbash - cmp -s RBASH ../RBASH || mv RBASH ../RBASH - $(RM) RBASH - -xdist: pdf inst posix rbash diff --git a/doc/aosa-bash.pdf b/doc/aosa-bash.pdf deleted file mode 100644 index 006a76776..000000000 Binary files a/doc/aosa-bash.pdf and /dev/null differ diff --git a/doc/article.pdf b/doc/article.pdf deleted file mode 100644 index d2aaf9e2c..000000000 Binary files a/doc/article.pdf and /dev/null differ diff --git a/doc/article.ps b/doc/article.ps deleted file mode 100644 index 3aadf2f30..000000000 --- a/doc/article.ps +++ /dev/null @@ -1,1418 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.16.1 -%%CreationDate: Mon Nov 19 13:06:55 2001 -%%DocumentNeededResources: font Times-Bold -%%+ font Times-Italic -%%+ font Times-Roman -%%+ font Courier -%%DocumentSuppliedResources: procset grops 1.16 1 -%%Pages: 11 -%%PageOrder: Ascend -%%Orientation: Portrait -%%EndComments -%%BeginProlog -%%BeginResource: procset grops 1.16 1 -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}bind def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/FL{ -currentgray exch setgray fill setgray -}bind def -/BL/fill load def -/LW/setlinewidth load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -}bind def -/PEND{ -clear -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -%%IncludeResource: font Times-Roman -%%IncludeResource: font Courier -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron -/scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Courier@0 ENC0/Courier RE/Times-Roman@0 ENC0/Times-Roman RE -/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE -%%EndProlog -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 12/Times-Bold@0 SF(Bash \255 The GNU shell*)227.904 123 Q/F1 10 -/Times-Italic@0 SF(Chet Rame)263.85 147 Q(y)-.3 E(Case W)221.72 159 Q -(estern Reserve Univer)-.92 E(sity)-.1 E -.15(ch)250.425 171 S -(et@po.cwru.edu).15 E/F2 10/Times-Bold@0 SF 2.5(1. Intr)72 207 R -(oduction)-.18 E(Bash)97 222.6 Q/F3 10/Times-Roman@0 SF .904 -(is the shell, or command language interpreter)3.404 F 3.404(,t)-.4 G -.904(hat will appear in the GNU operating system.)-3.404 F 1.075 -(The name is an acron)72 234.6 R 1.075(ym for the \231Bourne-Ag)-.15 F -1.075(ain SHell\232, a pun on Ste)-.05 F 1.375 -.15(ve B)-.25 H 1.075 -(ourne, the author of the direct).15 F .206(ancestor of the current)72 -246.6 R/F4 8/Times-Roman@0 SF(UNIX)2.706 E F3 2.706C(hell)-2.706 E -F1(/bin/sh)2.706 E F3 2.706(,w)C .205(hich appeared in the Se)-2.706 F --.15(ve)-.25 G .205(nth Edition Bell Labs Research v).15 F(er)-.15 E(-) --.2 E(sion of)72 258.6 Q/F5 9/Times-Roman@0 SF(UNIX)2.5 E F3(.)A .387 -(Bash is an)97 274.2 R F2(sh)2.887 E F3 .387 -(\255compatible shell that incorporates useful features from the K)B -.388(orn shell \()-.35 F F2(ksh)A F3 2.888(\)a)C .388(nd the C)-2.888 F -.023(shell \()72 286.2 R F2(csh)A F3 .023 -(\), described later in this article.)B .022 -(It is ultimately intended to be a conformant implementation of the) -5.022 F 3.568(IEEE POSIX Shell and Utilities speci\214cation \(IEEE W)72 -298.2 R 3.568(orking Group 1003.2\).)-.8 F 3.569(It of)8.569 F 3.569 -(fers functional)-.25 F(impro)72 310.2 Q -.15(ve)-.15 G(ments o).15 E --.15(ve)-.15 G 2.5(rs).15 G 2.5(hf)-2.5 G(or both interacti)-2.5 E .3 --.15(ve a)-.25 H(nd programming use.).15 E .697 -(While the GNU operating system will most lik)97 325.8 R .697 -(ely include a v)-.1 F .697(ersion of the Berk)-.15 F(ele)-.1 E 3.197 -(ys)-.15 G .696(hell csh, Bash)-3.197 F .015(will be the def)72 337.8 R -.015(ault shell.)-.1 F(Lik)5.015 E 2.515(eo)-.1 G .015(ther GNU softw) --2.515 F .016(are, Bash is quite portable.)-.1 F .016 -(It currently runs on nearly e)5.016 F -.15(ve)-.25 G(ry).15 E -.15(ve) -72 349.8 S .523(rsion of).15 F F4(UNIX)3.023 E F3 .523(and a fe)3.023 F -3.023(wo)-.25 G .523 -(ther operating systems \255 an independently-supported port e)-3.023 F -.523(xists for OS/2, and)-.15 F .706 -(there are rumors of ports to DOS and W)72 361.8 R(indo)-.4 E .706 -(ws NT)-.25 F 5.706(.P)-.74 G .706(orts to)-5.706 F F5(UNIX)3.206 E F3 -(-lik)A 3.206(es)-.1 G .706(ystems such as QNX and Minix)-3.206 F -(are part of the distrib)72 373.8 Q(ution.)-.2 E .405 -(The original author of Bash w)97 389.4 R .405(as Brian F)-.1 F .405 -(ox, an emplo)-.15 F .405(yee of the Free Softw)-.1 F .405(are F)-.1 F -2.905(oundation. The)-.15 F(cur)2.905 E(-)-.2 E(rent de)72 401.4 Q -.15 -(ve)-.25 G(loper and maintainer is Chet Rame).15 E 1.3 -.65(y, a v)-.15 -H(olunteer who w).45 E(orks at Case W)-.1 E(estern Reserv)-.8 E 2.5(eU) --.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(.)-.65 E F2 2.5(2. What')72 -425.4 R 2.5(sP)-.37 G(OSIX, anyway?)-2.5 E F1(POSIX)97 441 Q F3 .343 -(is a name originally coined by Richard Stallman for a f)2.843 F .343 -(amily of open system standards based)-.1 F(on)72 453 Q F5(UNIX)3.24 E -F3 5.74(.T)C .74(here are a number of aspects of)-5.74 F F5(UNIX)3.24 E -F3 .74(under consideration for standardization, from the basic)3.24 F -.192(system services at the system call and C library le)72 465 R -.15 -(ve)-.25 G 2.692(lt).15 G 2.692(oa)-2.692 G .192 -(pplications and tools to system administration and)-2.692 F 2.5 -(management. Each)72 477 R(area of standardization is assigned to a w) -2.5 E(orking group in the 1003 series.)-.1 E 2.814 -(The POSIX Shell and Utilities standard has been de)97 492.6 R -.15(ve) --.25 G 2.814(loped by IEEE W).15 F 2.813(orking Group 1003.2)-.8 F .254 -(\(POSIX.2\).\210 It concentrates on the command interpreter interf)72 -504.6 R .253(ace and utility programs commonly e)-.1 F -.15(xe)-.15 G -(cuted).15 E 1.112(from the command line or by other programs.)72 516.6 -R 1.112(An initial v)6.112 F 1.113 -(ersion of the standard has been appro)-.15 F -.15(ve)-.15 G 3.613(da) -.15 G(nd)-3.613 E .365(published by the IEEE, and w)72 528.6 R .365 -(ork is currently underw)-.1 F .365(ay to update it.)-.1 F .365 -(There are four primary areas of w)5.365 F(ork)-.1 E -(in the 1003.2 standard:)72 540.6 Q 21.5<8341>72 556.2 S .835 -(spects of the shell')-21.5 F 3.335(ss)-.55 G .835 -(yntax and command language.)-3.335 F 3.335(An)5.835 G .835 -(umber of special b)-3.335 F .835(uiltins such as)-.2 F F2(cd)3.335 E F3 -(and)3.335 E F2(exec)97 568.2 Q F3 .545(are being speci\214ed as part o\ -f the shell, since their functionality usually cannot be implemented) -3.046 F(by a separate e)97 580.2 Q -.15(xe)-.15 G(cutable;).15 E 21.5 -<8341>72 595.8 S .926 -(set of utilities to be called by shell scripts and applications.) --18.074 F .927(Examples are programs lik)5.927 F(e)-.1 E F1 .927 -(sed, tr)3.427 F(,)-1.11 E F3(and)97 607.8 Q F1(awk.)2.797 E F3 .297 -(Utilities commonly implemented as shell b)5.297 F .296 -(uiltins are described in this section, such as)-.2 F F2(test)2.796 E F3 -(and)97 619.8 Q F2(kill)3.422 E F3 5.922(.A)C 3.422(ne)-5.922 G .922 -(xpansion of this section')-3.572 F 3.423(ss)-.55 G .923 -(cope, termed the User Portability Extension, or UPE, has)-3.423 F -(standardized interacti)97 631.8 Q .3 -.15(ve p)-.25 H(rograms such as) -.15 E F1(vi)2.5 E F3(and)2.5 E F1(mailx;)2.5 E F3 21.5<8341>72 647.4 S -.288(group of functional interf)-18.712 F .287(aces to services pro)-.1 -F .287(vided by the shell, such as the traditional)-.15 F/F6 10 -/Courier@0 SF(system\(\))2.787 E F3 3.289(Cl)97 659.4 S .789 -(ibrary function.)-3.289 F .789(There are functions to perform shell w) -5.789 F .789(ord e)-.1 F .79(xpansions, perform \214lename e)-.15 F -(xpan-)-.15 E .324(sion \()97 671.4 R F1(globbing)A F3 .324 -(\), obtain v)B .323(alues of POSIX.2 system con\214guration v)-.25 F -.323(ariables, retrie)-.25 F .623 -.15(ve v)-.25 H .323(alues of en)-.1 -F(viron-)-.4 E(ment v)97 683.4 Q(ariables \()-.25 E F6(getenv\(\))A F3 -(\), and other services;).833 E .32 LW 144 691.4 72 691.4 DL F4 -(*An earlier v)72 703.2 Q -(ersion of this article appeared in The Linux Journal.)-.12 E(\210IEEE,) -72 715 Q/F7 8/Times-Italic@0 SF 1.231(IEEE Standar)3.231 F 3.231(df) --.296 G 1.231(or Information T)-3.231 F(ec)-.736 E(hnolo)-.12 E 1.231 -(gy -- P)-.08 F 1.231(ortable Oper)-.64 F 1.232 -(ating System Interface \(POSIX\) P)-.12 F 1.232(art 2:)-.64 F -(Shell and Utilities)72 725 Q F4 2(,1)C(992.)-2 E EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-2-)282.17 48 Q 21.5<8341>72 84 S -(suite of \231de)-19 E -.15(ve)-.25 G(lopment\232 utilities such as).15 -E/F1 10/Times-Italic@0 SF(c89)2.5 E F0(\(the POSIX.2 v)2.5 E(ersion of) --.15 E F1(cc)2.5 E F0(\), and)A F1(yacc.)2.5 E F0 .483 -(Bash is concerned with the aspects of the shell')97 99.6 R 2.983(sb) --.55 G(eha)-2.983 E .484(vior de\214ned by POSIX.2.)-.2 F .484 -(The shell command)5.484 F 1.439 -(language has of course been standardized, including the basic \215o)72 -111.6 R 3.938(wc)-.25 G 1.438(ontrol and program e)-3.938 F -.15(xe)-.15 -G 1.438(cution con-).15 F 1.284 -(structs, I/O redirection and pipelining, ar)72 123.6 R 1.284 -(gument handling, v)-.18 F 1.284(ariable e)-.25 F 1.284 -(xpansion, and quoting.)-.15 F(The)6.285 E F1(special)3.785 E F0 -.2(bu) -72 135.6 S .676 -(iltins, which must be implemented as part of the shell to pro).2 F .676 -(vide the desired functionality)-.15 F 3.176(,a)-.65 G .676 -(re speci\214ed)-3.176 F .7(as being part of the shell; e)72 147.6 R .7 -(xamples of these are)-.15 F/F2 10/Times-Bold@0 SF -2.3 -.15(ev a)3.201 -H(l).15 E F0(and)3.201 E F2(export)3.201 E F0 5.701(.O)C .701 -(ther utilities appear in the sections of)-5.701 F .256(POSIX.2 not de) -72 159.6 R -.2(vo)-.25 G .256(ted to the shell which are commonly \(and\ - in some cases must be\) implemented as b).2 F(uiltin)-.2 E .213 -(commands, such as)72 171.6 R F2 -.18(re)2.713 G(ad).18 E F0(and)2.713 E -F2(test)2.713 E F0 5.213(.P)C .213 -(OSIX.2 also speci\214es aspects of the shell')-5.213 F 2.713(si)-.55 G -(nteracti)-2.713 E .513 -.15(ve b)-.25 H(eha).15 E .214(vior as part)-.2 -F .598(of the UPE, including job control and command line editing.)72 -183.6 R .598(Interestingly enough, only)5.598 F F1(vi)3.098 E F0 .598 -(-style line edit-)B(ing commands ha)72 195.6 Q .3 -.15(ve b)-.2 H -(een standardized;).15 E F1(emacs)2.5 E F0 -(editing commands were left out due to objections.)2.5 E 1.128 -(While POSIX.2 includes much of what the shell has traditionally pro)97 -211.2 R 1.129(vided, some important things)-.15 F(ha)72 223.2 Q .344 --.15(ve b)-.2 H .044(een omitted as being \231be).15 F .044 -(yond its scope.)-.15 F 5.043<9a54>-.7 G .043 -(here is, for instance, no mention of a dif)-5.043 F .043 -(ference between a)-.25 F F1(lo)72 235.2 Q(gin)-.1 E F0 1.445 -(shell and an)3.945 F 3.945(yo)-.15 G 1.445(ther interacti)-3.945 F -1.745 -.15(ve s)-.25 H 1.446 -(hell \(since POSIX.2 does not specify a login program\).).15 F 1.446 -(No \214x)6.446 F(ed)-.15 E(startup \214les are de\214ned, either \255 \ -the standard does not mention)72 247.2 Q F1(.pr)2.5 E(o\214le)-.45 E F0 -(.)A F2 2.5(3. Basic)72 271.2 R(Bash featur)2.5 E(es)-.18 E F0 1.448 -(Since the Bourne shell pro)97 286.8 R 1.448 -(vides Bash with most of its philosophical underpinnings, Bash inherits) --.15 F .64(most of its features and functionality from sh.)72 298.8 R -.641(Bash implements all of the traditional sh \215o)5.641 F 3.141(wc) --.25 G .641(ontrol con-)-3.141 F .8(structs \()72 310.8 R F1(for)A F0(,) -A F1(if)3.3 E F0(,)A F1(while)3.3 E F0 3.3(,e)C 3.3(tc.\). All)-3.3 F -.799(of the Bourne shell b)3.3 F .799 -(uiltins, including those not speci\214ed in the POSIX.2)-.2 F .536 -(standard, appear in Bash.)72 322.8 R(Shell)5.536 E F1(functions)3.036 E -F0 3.036(,i)C .536(ntroduced in the SVR2 v)-3.036 F .537 -(ersion of the Bourne shell, are similar)-.15 F .779 -(to shell scripts, b)72 334.8 R .779 -(ut are de\214ned using a special syntax and are e)-.2 F -.15(xe)-.15 G -.779(cuted in the same process as the calling).15 F 2.841(shell. Bash)72 -346.8 R .341(has shell functions which beha)2.841 F .641 -.15(ve i)-.2 H -2.841(naf).15 G .341(ashion upw)-2.941 F .342 -(ard-compatible with sh functions.)-.1 F .342(There are)5.342 F 1.447 -(certain shell v)72 358.8 R 1.446 -(ariables that Bash interprets in the same w)-.25 F 1.446 -(ay as sh, such as)-.1 F F2(PS1)3.946 E F0(,)A F2(IFS)3.946 E F0 3.946 -(,a)C(nd)-3.946 E F2 -.74(PA)3.946 G(TH)-.21 E F0 6.446(.B)C(ash)-6.446 -E 1.423(implements essentially the same grammar)72 370.8 R 3.924(,p)-.4 -G 1.424(arameter and v)-3.924 F 1.424(ariable e)-.25 F 1.424 -(xpansion semantics, redirection, and)-.15 F 1.06 -(quoting as the Bourne shell.)72 382.8 R 1.06(Where dif)6.06 F 1.06 -(ferences appear between the POSIX.2 standard and traditional sh)-.25 F -(beha)72 394.8 Q(vior)-.2 E 2.5(,B)-.4 G(ash follo)-2.5 E(ws POSIX.)-.25 -E 1.608(The K)97 410.4 R 1.608(orn Shell \()-.35 F F2(ksh)A F0 4.108 -(\)i)C 4.108(sad)-4.108 G 1.608 -(escendent of the Bourne shell written at A)-4.108 F 1.609 -(T&T Bell Laboratories by)-1.11 F(Da)72 422.4 Q 1.059(vid K)-.2 F 3.559 -(orn\207. It)-.35 F(pro)3.559 E 1.059 -(vides a number of useful features that POSIX and Bash ha)-.15 F 1.359 --.15(ve a)-.2 H 3.558(dopted. Man).15 F 3.558(yo)-.15 G 3.558(ft)-3.558 -G(he)-3.558 E(interacti)72 434.4 Q 1.312 -.15(ve f)-.25 H 1.012 -(acilities in POSIX.2 ha).05 F 1.312 -.15(ve t)-.2 H 1.012 -(heir roots in the ksh: for e).15 F 1.013 -(xample, the POSIX and ksh job control)-.15 F -.1(fa)72 446.4 S .513 -(cilities are nearly identical. Bash includes features from the K).1 F -.513(orn Shell for both interacti)-.35 F .813 -.15(ve u)-.25 H .513 -(se and shell).15 F 3.905(programming. F)72 458.4 R 1.405 -(or programming, Bash pro)-.15 F 1.405(vides v)-.15 F 1.405 -(ariables such as)-.25 F F2(RANDOM)3.905 E F0(and)3.905 E F2(REPL)3.905 -E(Y)-.92 E F0 3.905(,t)C(he)-3.905 E F2(typeset)3.905 E F0 -.2(bu)72 -470.4 S .398(iltin, the ability to remo).2 F .698 -.15(ve s)-.15 H .398 -(ubstrings from v).15 F .398 -(ariables based on patterns, and shell arithmetic.)-.25 F F2(RANDOM) -5.397 E F0 -.15(ex)72 482.4 S .489 -(pands to a random number each time it is referenced; assigning a v).15 -F .49(alue to)-.25 F F2(RANDOM)2.99 E F0 .49(seeds the random)2.99 F -.055(number generator)72 494.4 R(.)-.55 E F2(REPL)5.055 E(Y)-.92 E F0 -.054(is the def)2.554 F .054(ault v)-.1 F .054(ariable used by the)-.25 -F F2 -.18(re)2.554 G(ad).18 E F0 -.2(bu)2.554 G .054(iltin when no v).2 -F .054(ariable names are sup-)-.25 F .742(plied as ar)72 506.4 R 3.243 -(guments. The)-.18 F F2(typeset)3.243 E F0 -.2(bu)3.243 G .743 -(iltin is used to de\214ne v).2 F .743(ariables and gi)-.25 F 1.043 -.15 -(ve t)-.25 H .743(hem attrib).15 F .743(utes such as)-.2 F F2 -.18(re) -3.243 G(ad-).18 E(only)72 518.4 Q F0 5.512(.B)C .512 -(ash arithmetic allo)-5.512 F .512(ws the e)-.25 F -.25(va)-.25 G .511 -(luation of an e).25 F .511 -(xpression and the substitution of the result.)-.15 F .511(Shell v)5.511 -F(ari-)-.25 E .222 -(ables may be used as operands, and the result of an e)72 530.4 R .222 -(xpression may be assigned to a v)-.15 F 2.722(ariable. Nearly)-.25 F -.222(all of)2.722 F(the operators from the C language are a)72 542.4 Q --.25(va)-.2 G(ilable, with the same precedence rules:).25 E/F3 10 -/Courier@0 SF 6($e)97 560.4 S(cho $\(\(3 + 5 * 32\)\))-6 E(163)97 572.4 -Q F0 -.15(Fo)72 594 S 3.24(ri).15 G(nteracti)-3.24 E 1.04 -.15(ve u)-.25 -H .74(se, Bash implements ksh-style aliases and b).15 F .74 -(uiltins such as)-.2 F F2(fc)3.24 E F0 .74(\(discussed belo)3.24 F .74 -(w\) and)-.25 F F2(jobs)3.24 E F0(.)A .291(Bash aliases allo)72 606 R -2.791(was)-.25 G .291(tring to be substituted for a command name.)-2.791 -F(The)5.291 E 2.791(yc)-.15 G .291(an be used to create a mnemonic) --2.791 F .568(for a)72 618 R/F4 9/Times-Roman@0 SF(UNIX)3.068 E F0 .568 -(command name \()3.068 F F3 .568(alias del=rm)B F0 .568(\), to e)B .567 -(xpand a single w)-.15 F .567(ord to a comple)-.1 F 3.067(xc)-.15 G .567 -(ommand \()-3.067 F F3(alias)A .255 -(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 630 R F0 .255 -(\), or to ensure that a command)B(is in)72 642 Q -.2(vo)-.4 G -.1(ke).2 -G 2.5(dw).1 G(ith a basic set of options \()-2.5 E F3 -(alias ls="/bin/ls -F")A F0(\).)A .293(The C shell \()97 657.6 R F2(csh) -A F0 .293(\)\207, originally written by Bill Jo)B 2.792(yw)-.1 G .292 -(hile at Berk)-2.792 F(ele)-.1 E 1.592 -.65(y, i)-.15 H 2.792(sw).65 G -.292(idely used and quite popular)-2.792 F 1.499(for its interacti)72 -669.6 R 1.799 -.15(ve f)-.25 H 3.999(acilities. Bash).05 F 1.499 -(includes a csh-compatible history e)3.999 F 1.5 -(xpansion mechanism \(\231! history\232\),)-.15 F .019(brace e)72 681.6 -R .018(xpansion, access to a stack of directories via the)-.15 F F2 -(pushd)2.518 E F0(,)A F2(popd)2.518 E F0 2.518(,a)C(nd)-2.518 E F2(dirs) -2.518 E F0 -.2(bu)2.518 G .018(iltins, and tilde e).2 F(xpansion,)-.15 E -1.293(to generate users' home directories.)72 693.6 R -.35(Ti)6.294 G -1.294(lde e).35 F 1.294(xpansion has also been adopted by both the K) --.15 F 1.294(orn Shell and)-.35 F .32 LW 144 708.2 72 708.2 DL/F5 8 -/Times-Roman@0 SF(\207Morris Bolsk)72 720 Q 2(ya)-.12 G(nd Da)-2 E -(vid K)-.16 E(orn,)-.28 E/F6 8/Times-Italic@0 SF(The K)2 E -(ornShell Command and Pr)-.32 E -.08(og)-.36 G -.12(ra).08 G -(mming Langua).12 E -.08(ge)-.08 G F5 2(,P).08 G(rentice Hall, 1989.)-2 -E EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-3-)282.17 48 Q(POSIX.2.)72 84 Q .148 -(There were certain areas in which POSIX.2 felt standardization w)97 -99.6 R .149(as necessary)-.1 F 2.649(,b)-.65 G .149(ut no e)-2.849 F -.149(xisting imple-)-.15 F 1.598(mentation pro)72 111.6 R 1.598 -(vided the proper beha)-.15 F(vior)-.2 E 6.598(.T)-.55 G 1.598(he w) --6.598 F 1.597(orking group in)-.1 F -.15(ve)-.4 G 1.597 -(nted and standardized functionality in).15 F .674 -(these areas, which Bash implements.)72 123.6 R(The)5.674 E/F1 10 -/Times-Bold@0 SF(command)3.174 E F0 -.2(bu)3.174 G .674(iltin w).2 F -.674(as in)-.1 F -.15(ve)-.4 G .674 -(nted so that shell functions could be).15 F .996(written to replace b) -72 135.6 R .996(uiltins; it mak)-.2 F .996(es the capabilities of the b) --.1 F .995(uiltin a)-.2 F -.25(va)-.2 G .995(ilable to the function.).25 -F .995(The reserv)5.995 F(ed)-.15 E -.1(wo)72 147.6 S 1.731 -(rd \231!\232 w).1 F 1.731(as added to ne)-.1 F -.05(ga)-.15 G 1.731 -(te the return v).05 F 1.731(alue of a command or pipeline; it w)-.25 F -1.732(as nearly impossible to)-.1 F -.15(ex)72 159.6 S .286 -(press \231if not x\232 cleanly using the sh language.).15 F .286 -(There e)5.286 F .286(xist multiple incompatible implementations of the) --.15 F F1(test)72 171.6 Q F0 -.2(bu)3.163 G .663 -(iltin, which tests \214les for type and other attrib).2 F .664 -(utes and performs arithmetic and string comparisons.)-.2 F .5 -(POSIX considered none of these correct, so the standard beha)72 183.6 R -.5(vior w)-.2 F .5(as speci\214ed in terms of the number of)-.1 F(ar)72 -195.6 Q .412(guments to the command.)-.18 F .412(POSIX.2 dictates e) -5.412 F .412(xactly what will happen when four or fe)-.15 F .412(wer ar) --.25 F .412(guments are)-.18 F(gi)72 207.6 Q -.15(ve)-.25 G 5.01(nt).15 -G(o)-5.01 E F1(test)5.01 E F0 5.01(,a)C 2.51(nd lea)-5.01 F -.15(ve)-.2 -G 5.01(st).15 G 2.51(he beha)-5.01 F 2.51(vior unde\214ned when more ar) --.2 F 2.51(guments are supplied.)-.18 F 2.51(Bash uses the)7.51 F -(POSIX.2 algorithm, which w)72 219.6 Q(as concei)-.1 E -.15(ve)-.25 G -2.5(db).15 G 2.5(yD)-2.5 G -.2(av)-2.5 G(id K).2 E(orn.)-.35 E F1 2.5 -(3.1. F)72 243.6 R(eatur)-.25 E(es not in the Bour)-.18 E(ne Shell)-.15 -E F0 .718(There are a number of minor dif)97 259.2 R .719 -(ferences between Bash and the v)-.25 F .719 -(ersion of sh present on most other)-.15 F -.15(ve)72 271.2 S .874 -(rsions of).15 F/F2 9/Times-Roman@0 SF(UNIX)3.374 E F0 5.873(.T)C .873 -(he majority of these are due to the POSIX standard, b)-5.873 F .873 -(ut some are the result of Bash)-.2 F .386 -(adopting features from other shells.)72 283.2 R -.15(Fo)5.386 G 2.886 -(ri).15 G .386(nstance, Bash includes the ne)-2.886 F 2.886<7799>-.25 G -.386(!\232 reserv)-2.886 F .386(ed w)-.15 F .386(ord, the)-.1 F F1 -(command)2.886 E F0 -.2(bu)72 295.2 S .116(iltin, the ability of the).2 -F F1 -.18(re)2.616 G(ad).18 E F0 -.2(bu)2.615 G .115 -(iltin to correctly return a line ending with a backslash, symbolic ar) -.2 F(guments)-.18 E .798(to the)72 307.2 R F1(umask)3.298 E F0 -.2(bu) -3.298 G .798(iltin, v).2 F .798(ariable substring remo)-.25 F -.25(va) --.15 G .798(l, a w).25 F .799(ay to get the length of a v)-.1 F .799 -(ariable, and the ne)-.25 F 3.299(wa)-.25 G(lgo-)-3.299 E(rithm for the) -72 319.2 Q F1(test)2.5 E F0 -.2(bu)2.5 G -(iltin from the POSIX.2 standard, none of which appear in sh.).2 E 1.225 -(Bash also implements the \231$\(...\)\232 command substitution syntax,\ - which supersedes the sh `...` con-)97 334.8 R 2.851(struct. The)72 -346.8 R .351(\231$\(...\)\232 construct e)2.851 F .351(xpands to the ou\ -tput of the command contained within the parentheses, with)-.15 F .664 -(trailing ne)72 358.8 R .664(wlines remo)-.25 F -.15(ve)-.15 G 3.164 -(d. The).15 F .664(sh syntax is accepted for backw)3.164 F .664 -(ards compatibility)-.1 F 3.164(,b)-.65 G .664 -(ut the \231$\(...\)\232 form is)-3.364 F(preferred because its quoting\ - rules are much simpler and it is easier to nest.)72 370.8 Q .772 -(The Bourne shell does not pro)97 386.4 R .772 -(vide such features as brace e)-.15 F .772 -(xpansion, the ability to de\214ne a v)-.15 F(ariable)-.25 E .283 -(and a function with the same name, local v)72 398.4 R .282 -(ariables in shell functions, the ability to enable and disable indi-) --.25 F .547(vidual b)72 410.4 R .547 -(uiltins or write a function to replace a b)-.2 F .547 -(uiltin, or a means to e)-.2 F .547 -(xport a shell function to a child pro-)-.15 F(cess.)72 422.4 Q .32 -(Bash has closed a long-standing shell security hole by not using the)97 -438 R F1($IFS)2.82 E F0 -.25(va)2.82 G .32(riable to split each w).25 F -(ord)-.1 E 1.254(read by the shell, b)72 450 R 1.254 -(ut splitting only the results of e)-.2 F 1.255 -(xpansion \(ksh and the 4.4 BSD sh ha)-.15 F 1.555 -.15(ve \214)-.2 H --.15(xe).15 G 3.755(dt).15 G 1.255(his as)-3.755 F 2.907(well\). Useful) -72 462 R(beha)2.907 E .407(vior such as a means to abort e)-.2 F -.15 -(xe)-.15 G .407(cution of a script read with the \231.).15 F 2.906<9a63> --.7 G .406(ommand using the)-2.906 F F1 -.18(re)72 474 S(tur).18 E(n) --.15 E F0 -.2(bu)2.742 G .242(iltin or automatically e).2 F .242 -(xporting v)-.15 F .243(ariables in the shell')-.25 F 2.743(se)-.55 G --.4(nv)-2.743 G .243(ironment to children is also not present).4 F .969 -(in the Bourne shell.)72 486 R .968(Bash pro)5.968 F .968 -(vides a much more po)-.15 F .968(werful en)-.25 F .968 -(vironment for both interacti)-.4 F 1.268 -.15(ve u)-.25 H .968 -(se and pro-).15 F(gramming.)72 498 Q F1 2.5(4. Bash-speci\214c)72 522 R --.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 .491(This section details a fe)97 -537.6 R 2.991(wo)-.25 G 2.991(ft)-2.991 G .491(he features which mak) --2.991 F 2.991(eB)-.1 G .491(ash unique.)-2.991 F .492(Most of them pro) -5.491 F .492(vide impro)-.15 F -.15(ve)-.15 G(d).15 E(interacti)72 549.6 -Q 1.182 -.15(ve u)-.25 H .882(se, b).15 F .882(ut a fe)-.2 F 3.382(wp) --.25 G .882(rogramming impro)-3.382 F -.15(ve)-.15 G .882 -(ments are present as well.).15 F .882(Full descriptions of these fea-) -5.882 F(tures can be found in the Bash documentation.)72 561.6 Q F1 2.5 -(4.1. Startup)72 585.6 R(Files)2.5 E F0 .161(Bash e)97 601.2 R -.15(xe) --.15 G .161(cutes startup \214les dif).15 F .161 -(ferently than other shells.)-.25 F .162(The Bash beha)5.161 F .162 -(vior is a compromise between)-.2 F .29 -(the csh principle of startup \214les with \214x)72 613.2 R .29 -(ed names e)-.15 F -.15(xe)-.15 G .29 -(cuted for each shell and the sh \231minimalist\232 beha).15 F(vior)-.2 -E(.)-.55 E 2.955(An interacti)72 625.2 R 3.255 -.15(ve i)-.25 H 2.955 -(nstance of Bash started as a login shell reads and e).15 F -.15(xe)-.15 -G(cutes).15 E/F3 10/Times-Italic@0 SF(~/.bash_pr)5.456 E(o\214le)-.45 E -F0 2.956(\(the \214le)5.456 F .954(.bash_pro\214le in the user')72 637.2 -R 3.454(sh)-.55 G .953(ome directory\), if it e)-3.454 F 3.453 -(xists. An)-.15 F(interacti)3.453 E 1.253 -.15(ve n)-.25 H .953 -(on-login shell reads and e).15 F -.15(xe)-.15 G(cutes).15 E F3 -(~/.bashr)72 649.2 Q(c)-.37 E F0 5.641(.A)C(non-interacti)-2.5 E .942 --.15(ve s)-.25 H .642(hell \(one be).15 F .642(gun to e)-.15 F -.15(xe) --.15 G .642(cute a shell script, for e).15 F .642 -(xample\) reads no \214x)-.15 F .642(ed startup)-.15 F .342(\214le, b)72 -661.2 R .342(ut uses the v)-.2 F .342(alue of the v)-.25 F(ariable)-.25 -E F1($ENV)2.842 E F0 2.841(,i)C 2.841(fs)-2.841 G .341 -(et, as the name of a startup \214le.)-2.841 F .341 -(The ksh practice of read-)5.341 F(ing)72 673.2 Q F1($ENV)3.114 E F0 -.614(for e)3.114 F -.15(ve)-.25 G .614(ry shell, with the accompan).15 F -.615(ying dif)-.15 F .615(\214culty of de\214ning the proper v)-.25 F -.615(ariables and functions)-.25 F .721(for interacti)72 685.2 R 1.021 --.15(ve a)-.25 H .721(nd non-interacti).15 F 1.021 -.15(ve s)-.25 H .721 -(hells or ha).15 F .721(ving the \214le read only for interacti)-.2 F -1.02 -.15(ve s)-.25 H .72(hells, w).15 F .72(as considered)-.1 F .158 -(too comple)72 697.2 R 2.658(x. Ease)-.15 F .158(of use w)2.658 F .158 -(on out here.)-.1 F(Interestingly)5.158 E 2.658(,t)-.65 G .158(he ne) --2.658 F .159(xt release of ksh will change to reading)-.15 F F1($ENV) -2.659 E .32 LW 144 705.2 72 705.2 DL/F4 8/Times-Roman@0 SF .559 -(\207Bill Jo)72 717 R 1.599 -.52(y, A)-.08 H 2.559(nI).52 G .559 -(ntroduction to the C Shell,)-2.559 F/F5 8/Times-Italic@0 SF .558 -(UNIX User')2.558 F 2.558(sS)-.32 G .558(upplementary Documents)-2.558 F -F4 2.558(,U)C(ni)-2.558 E -.12(ve)-.2 G .558(rsity of California at).12 -F(Berk)72 727 Q(ele)-.08 E 1.04 -.52(y, 1)-.12 H(986.).52 E EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-4-)282.17 48 Q(only for interacti)72 84 Q .3 --.15(ve s)-.25 H(hells.).15 E/F1 10/Times-Bold@0 SF 2.5(4.2. New)72 108 -R(Builtin Commands)2.5 E F0 1.02(There are a fe)97 123.6 R 3.52(wb)-.25 -G 1.02(uiltins which are ne)-3.72 F 3.52(wo)-.25 G 3.52(rh)-3.52 G -2.25 --.2(av e)-3.52 H 1.02(been e)3.72 F 1.02(xtended in Bash.)-.15 F(The) -6.02 E F1(enable)3.52 E F0 -.2(bu)3.52 G 1.02(iltin allo).2 F(ws)-.25 E --.2(bu)72 135.6 S .824(iltin commands to be turned on and of).2 F 3.324 -(fa)-.25 G(rbitrarily)-3.324 E 5.824(.T)-.65 G 3.324(ou)-6.624 G .824 -(se the v)-3.324 F .824(ersion of)-.15 F/F2 10/Times-Italic@0 SF(ec) -3.324 E(ho)-.15 E F0 .825(found in a user')3.324 F 3.325(ss)-.55 G -(earch)-3.325 E .625(path rather than the Bash b)72 147.6 R(uiltin,)-.2 -E/F3 10/Courier@0 SF .625(enable -n echo)3.125 F F0(suf)3.125 E 3.125 -(\214ces. The)-.25 F F1(help)3.124 E F0 -.2(bu)3.124 G .624(iltin pro).2 -F .624(vides quick synopses)-.15 F .703(of the shell f)72 159.6 R .704 -(acilities without requiring access to a manual page.)-.1 F F1(Builtin) -5.704 E F0 .704(is similar to)3.204 F F1(command)3.204 E F0 .704 -(in that it)3.204 F .342(bypasses shell functions and directly e)72 -171.6 R -.15(xe)-.15 G .342(cutes b).15 F .342(uiltin commands.)-.2 F -.342(Access to a csh-style stack of directories)5.342 F .072(is pro)72 -183.6 R .073(vided via the)-.15 F F1(pushd)2.573 E F0(,)A F1(popd)2.573 -E F0 2.573(,a)C(nd)-2.573 E F1(dirs)2.573 E F0 -.2(bu)2.573 G(iltins.).2 -E F1(Pushd)5.073 E F0(and)2.573 E F1(popd)2.573 E F0 .073 -(insert and remo)2.573 F .373 -.15(ve d)-.15 H .073(irectories from the) -.15 F 2.858(stack, respecti)72 195.6 R -.15(ve)-.25 G(ly).15 E 5.358(,a) --.65 G(nd)-5.358 E F1(dirs)5.358 E F0 2.858(lists the stack contents.) -5.358 F 2.858(On systems that allo)7.858 F 5.358<778c>-.25 G 2.857 -(ne-grained control of)-5.358 F 1.339(resources, the)72 207.6 R F1 -(ulimit)3.839 E F0 -.2(bu)3.839 G 1.339 -(iltin can be used to tune these settings.).2 F F1(Ulimit)6.34 E F0 -(allo)3.84 E 1.34(ws a user to control, among)-.25 F 1.086 -(other things, whether core dumps are to be generated, ho)72 219.6 R -3.586(wm)-.25 G 1.086(uch memory the shell or a child process is)-3.586 -F(allo)72 231.6 Q .496(wed to allocate, and ho)-.25 F 2.996(wl)-.25 G -(ar)-2.996 E .496(ge a \214le created by a child process can gro)-.18 F -4.296 -.65(w. T)-.25 H(he).65 E F1(suspend)2.996 E F0 .497(command will) -2.997 F .744(stop the shell process when job control is acti)72 243.6 R --.15(ve)-.25 G 3.243(;m).15 G .743(ost other shells do not allo)-3.243 F -3.243(wt)-.25 G(hemselv)-3.243 E .743(es to be stopped)-.15 F(lik)72 -255.6 Q 2.717(et)-.1 G(hat.)-2.717 E F1 -.74(Ty)5.217 G(pe,).74 E F0 -.217(the Bash answer to)2.717 F F1(which)2.717 E F0(and)2.717 E F1 -(whence,)2.717 E F0(sho)2.717 E .218(ws what will happen when a w)-.25 F -.218(ord is typed as a)-.1 F(command:)72 267.6 Q F3 6($t)97 285.6 S -(ype export)-6 E(export is a shell builtin)97 297.6 Q 6($t)97 309.6 S -(ype -t export)-6 E(builtin)97 321.6 Q 6($t)97 333.6 S(ype bash)-6 E -(bash is /bin/bash)97 345.6 Q 6($t)97 357.6 S(ype cd)-6 E -(cd is a function)97 369.6 Q(cd \(\))97 381.6 Q({)97 393.6 Q -(builtin cd ${1+"$@"} && xtitle $HOST: $PWD)121 405.6 Q(})97 417.6 Q F0 --1.11(Va)72 439.2 S .682(rious modes tell what a command w)1.11 F .681 -(ord is \(reserv)-.1 F .681(ed w)-.15 F .681(ord, alias, function, b)-.1 -F .681(uiltin, or \214le\) or which v)-.2 F(er)-.15 E(-)-.2 E 1.15 -(sion of a command will be e)72 451.2 R -.15(xe)-.15 G 1.15 -(cuted based on a user').15 F 3.65(ss)-.55 G 1.15(earch path.)-3.65 F -1.15(Some of this functionality has been)6.15 F -(adopted by POSIX.2 and folded into the)72 463.2 Q F1(command)2.5 E F0 -(utility)2.5 E(.)-.65 E F1 2.5(4.3. Editing)72 487.2 R(and Completion) -2.5 E F0 .682(One area in which Bash shines is command line editing.)97 -502.8 R .682(Bash uses the)5.682 F F2 -.37(re)3.182 G(adline).37 E F0 -.681(library to read and)3.181 F .942(edit lines when interacti)72 514.8 -R -.15(ve)-.25 G 5.942(.R).15 G .942(eadline is a po)-5.942 F .942 -(werful and \215e)-.25 F .942(xible input f)-.15 F .943 -(acility that a user can con\214gure to)-.1 F(indi)72 526.8 Q .732 -(vidual tastes.)-.25 F .732(It allo)5.732 F .732(ws lines to be edited \ -using either emacs or vi commands, where those commands)-.25 F .2 -(are appropriate.)72 538.8 R .2 -(The full capability of emacs is not present \255 there is no w)5.2 F .2 -(ay to e)-.1 F -.15(xe)-.15 G .2(cute a named command).15 F 1.15 -(with M-x, for instance \255 b)72 550.8 R 1.15(ut the e)-.2 F 1.149 -(xisting commands are more than adequate.)-.15 F 1.149 -(The vi mode is compliant)6.149 F -(with the command line editing standardized by POSIX.2.)72 562.8 Q 1.69 -(Readline is fully customizable.)97 578.4 R 1.691 -(In addition to the basic commands and k)6.69 F 1.991 -.15(ey b)-.1 H -1.691(indings, the library).15 F(allo)72 590.4 Q .028 -(ws users to de\214ne additional k)-.25 F .327 -.15(ey b)-.1 H .027 -(indings using a startup \214le.).15 F(The)5.027 E F2(inputr)2.527 E(c) --.37 E F0 .027(\214le, which def)2.527 F .027(aults to the \214le)-.1 F -F2(~/.inputr)72 602.4 Q(c)-.37 E F0 3.002(,i)C 3.002(sr)-3.002 G .503(e\ -ad each time readline initializes, permitting users to maintain a consi\ -stent interf)-3.002 F .503(ace across a)-.1 F .893(set of programs.)72 -614.4 R .893(Readline includes an e)5.893 F .893(xtensible interf)-.15 F -.892(ace, so each program using the library can add its)-.1 F -.25(ow)72 -626.4 S 3.56(nb).25 G 1.06(indable commands and program-speci\214c k) --3.56 F 1.361 -.15(ey b)-.1 H 3.561(indings. Bash).15 F 1.061 -(uses this f)3.561 F 1.061(acility to add bindings that)-.1 F -(perform history e)72 638.4 Q(xpansion or shell w)-.15 E(ord e)-.1 E -(xpansions on the current input line.)-.15 E .707 -(Readline interprets a number of v)97 654 R .706 -(ariables which further tune its beha)-.25 F(vior)-.2 E 5.706(.V)-.55 G -.706(ariables e)-6.816 F .706(xist to control)-.15 F .157 -(whether or not eight-bit characters are directly read as input or con) -72 666 R -.15(ve)-.4 G .158(rted to meta-pre\214x).15 F .158(ed k)-.15 F -.458 -.15(ey s)-.1 H .158(equences \(a).15 F(meta-pre\214x)72 678 Q .082 -(ed k)-.15 F .382 -.15(ey s)-.1 H .081(equence consists of the characte\ -r with the eighth bit zeroed, preceded by the).15 F F2(meta-pr)2.581 E -(e\214x)-.37 E F0(character)72 690 Q 3.233(,u)-.4 G .733 -(sually escape, which selects an alternate k)-3.233 F -.15(ey)-.1 G .734 -(map\), to decide whether to output characters with).15 F .624 -(the eighth bit set directly or as a meta-pre\214x)72 702 R .624(ed k) --.15 F .924 -.15(ey s)-.1 H .623 -(equence, whether or not to wrap to a ne).15 F 3.123(ws)-.25 G .623 -(creen line)-3.123 F 1.196 -(when a line being edited is longer than the screen width, the k)72 714 -R -.15(ey)-.1 G 1.196(map to which subsequent k).15 F 1.496 -.15(ey b) --.1 H(indings).15 E .531(should apply)72 726 R 3.031(,o)-.65 G 3.031(re) --3.031 G -.15(ve)-3.281 G 3.031(nw).15 G .531 -(hat happens when readline w)-3.031 F .531(ants to ring the terminal') --.1 F 3.03(sb)-.55 G 3.03(ell. All)-3.03 F .53(of these v)3.03 F -(ariables)-.25 E EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-5-)282.17 48 Q -(can be set in the inputrc \214le.)72 84 Q .284 -(The startup \214le understands a set of C preprocessor)97 99.6 R(-lik) --.2 E 2.785(ec)-.1 G .285(onditional constructs which allo)-2.785 F -2.785(wv)-.25 G(ariables)-3.035 E .12(or k)72 111.6 R .42 -.15(ey b)-.1 -H .119(indings to be assigned based on the application using readline, \ -the terminal currently being used, or).15 F .338(the editing mode.)72 -123.6 R .338(Users can add program-speci\214c bindings to mak)5.338 F -2.838(et)-.1 G .338(heir li)-2.838 F -.15(ve)-.25 G 2.838(se).15 G 2.838 -(asier: I)-2.838 F(ha)2.838 E .639 -.15(ve b)-.2 H .339(indings that).15 -F(let me edit the v)72 135.6 Q(alue of)-.25 E/F1 10/Times-Bold@0 SF($P) -2.5 E -.95(AT)-.74 G(H).95 E F0(and double-quote the current or pre)2.5 -E(vious w)-.25 E(ord:)-.1 E/F2 10/Courier@0 SF 6(#M)97 153.6 S -(acros that are convenient for shell interaction)-6 E($if Bash)97 165.6 -Q 6(#e)97 177.6 S(dit the path)-6 E -("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 189.6 Q 6(#p)97 201.6 -S(repare to type a quoted word -- insert open and close double)-6 E 6 -(#q)97 213.6 S(uotes and move to just after the open quote)-6 E -("\\C-x\\"": "\\"\\"\\C-b")97 225.6 Q 6(#Q)97 237.6 S -(uote the current or previous word)-6 E("\\C-xq": "\\eb\\"\\ef\\"")97 -249.6 Q($endif)97 261.6 Q F0 .322(There is a readline command to re-rea\ -d the \214le, so users can edit the \214le, change some bindings, and b\ -e)72 283.2 R(gin)-.15 E(to use them almost immediately)72 295.2 Q(.)-.65 -E .851(Bash implements the)97 310.8 R F1(bind)3.351 E F0 -.2(bu)3.351 G -.851(iltin for more dyamic control of readline than the startup \214le \ -permits.).2 F F1(Bind)72 322.8 Q F0 .25(is used in se)2.75 F -.15(ve) --.25 G .25(ral w).15 F 2.75(ays. In)-.1 F/F3 10/Times-Italic@0 SF(list) -2.75 E F0 .25(mode, it can display the current k)2.75 F .55 -.15(ey b) --.1 H .25(indings, list all the readline edit-).15 F .149(ing directi)72 -334.8 R -.15(ve)-.25 G 2.649(sa).15 G -.25(va)-2.849 G .149 -(ilable for binding, list which k).25 F -.15(ey)-.1 G 2.649(si).15 G --1.9 -.4(nv o)-2.649 H .349 -.1(ke a g).4 H -2.15 -.25(iv e).1 H 2.65 -(nd).25 G(irecti)-2.65 E -.15(ve)-.25 G 2.65(,o).15 G 2.65(ro)-2.65 G -.15(utput the current set of k)-2.65 F -.15(ey)-.1 G .042(bindings in a\ - format that can be incorporated directly into an inputrc \214le.)72 -346.8 R(In)5.041 E F3(batc)2.541 E(h)-.15 E F0 .041 -(mode, it reads a series of)2.541 F -.1(ke)72 358.8 S 2.858(yb)-.05 G -.359(indings directly from a \214le and passes them to readline.)-2.858 -F .359(In its most common usage,)5.359 F F1(bind)2.859 E F0(tak)2.859 E -.359(es a sin-)-.1 F 1.117(gle string and passes it directly to readlin\ -e, which interprets the line as if it had just been read from the)72 -370.8 R(inputrc \214le.)72 382.8 Q(Both k)5 E .3 -.15(ey b)-.1 H -(indings and v).15 E(ariable assignments may appear in the string gi) --.25 E -.15(ve)-.25 G 2.5(nt).15 G(o)-2.5 E F1(bind)2.5 E F0(.)A .53 -(The readline library also pro)97 398.4 R .53(vides an interf)-.15 F .53 -(ace for)-.1 F F3(wor)3.03 E 3.03(dc)-.37 G(ompletion)-3.03 E F0 5.53 -(.W)C .53(hen the)-5.53 F F3(completion)3.03 E F0(character)3.03 E 1.261 -(\(usually T)72 410.4 R 1.261(AB\) is typed, readline looks at the w) --.93 F 1.26(ord currently being entered and computes the set of \214le-) --.1 F .523(names of which the current w)72 422.4 R .523(ord is a v)-.1 F -.523(alid pre\214x.)-.25 F .524 -(If there is only one possible completion, the rest of the)5.523 F .358 -(characters are inserted directly)72 434.4 R 2.858(,o)-.65 G .358(therw\ -ise the common pre\214x of the set of \214lenames is added to the curre\ -nt)-2.858 F -.1(wo)72 446.4 S 3.199(rd. A).1 F .699(second T)3.199 F -.699(AB character entered immediately after a non-unique completion cau\ -ses readline to list)-.93 F 1.814 -(the possible completions; there is an option to ha)72 458.4 R 2.113 --.15(ve t)-.2 H 1.813(he list displayed immediately).15 F 6.813(.R)-.65 -G 1.813(eadline pro)-6.813 F(vides)-.15 E .482 -(hooks so that applications can pro)72 470.4 R .482 -(vide speci\214c types of completion before the def)-.15 F .483 -(ault \214lename completion)-.1 F .132(is attempted.)72 482.4 R .132 -(This is quite \215e)5.132 F .132 -(xible, though it is not completely user)-.15 F 2.632 -(-programmable. Bash,)-.2 F .132(for e)2.632 F .132(xample, can)-.15 F -.37(complete \214lenames, command names \(including aliases, b)72 494.4 -R .37(uiltins, shell reserv)-.2 F .37(ed w)-.15 F .37 -(ords, shell functions, and)-.1 F -.15(exe)72 506.4 S .424 -(cutables found in the \214le system\), shell v).15 F .424 -(ariables, usernames, and hostnames.)-.25 F .423 -(It uses a set of heuristics)5.424 F(that, while not perfect, is genera\ -lly quite good at determining what type of completion to attempt.)72 -518.4 Q F1 2.5(4.4. History)72 542.4 R F0 .144 -(Access to the list of commands pre)97 558 R .144(viously entered \(the) --.25 F F3 .144(command history)2.644 F F0 2.644(\)i)C 2.644(sp)-2.644 G -(ro)-2.644 E .144(vided jointly by Bash)-.15 F .078 -(and the readline library)72 570 R 5.077(.B)-.65 G .077(ash pro)-5.077 F -.077(vides v)-.15 F .077(ariables \()-.25 F F1($HISTFILE)A F0(,)A F1 -($HISTSIZE)2.577 E F0 2.577(,a)C(nd)-2.577 E F1($HISTCONTR)2.577 E(OL) --.3 E F0 2.577(\)a)C(nd)-2.577 E(the)72 582 Q F1(history)2.89 E F0(and) -2.89 E F1(fc)2.89 E F0 -.2(bu)2.89 G .39 -(iltins to manipulate the history list.).2 F .391(The v)5.391 F .391 -(alue of)-.25 F F1($HISTFILE)2.891 E F0 .391(specifes the \214le where) -2.891 F .49(Bash writes the command history on e)72 594 R .489 -(xit and reads it on startup.)-.15 F F1($HISTSIZE)5.489 E F0 .489 -(is used to limit the number)2.989 F .642(of commands sa)72 606 R -.15 -(ve)-.2 G 3.142(di).15 G 3.142(nt)-3.142 G .642(he history)-3.142 F(.) --.65 E F1($HISTCONTR)5.642 E(OL)-.3 E F0(pro)3.142 E .642 -(vides a crude form of control o)-.15 F -.15(ve)-.15 G 3.142(rw).15 G -.642(hich com-)-3.142 F .025(mands are sa)72 618 R -.15(ve)-.2 G 2.525 -(do).15 G 2.525(nt)-2.525 G .025(he history list: a v)-2.525 F .025 -(alue of)-.25 F F3(ignor)2.525 E(espace)-.37 E F0 .025(means to not sa) -2.525 F .324 -.15(ve c)-.2 H .024(ommands which be).15 F .024 -(gin with a)-.15 F .927(space; a v)72 630 R .927(alue of)-.25 F F3 -(ignor)3.427 E(edups)-.37 E F0 .927(means to not sa)3.427 F 1.228 -.15 -(ve c)-.2 H .928(ommands identical to the last command sa).15 F -.15(ve) --.2 G(d.).15 E F1($HIST)5.928 E(-)-.92 E(CONTR)72 642 Q(OL)-.3 E F0 -.1 -(wa)3.778 G 3.778(sn).1 G(amed)-3.778 E F1($history_contr)3.778 E(ol) --.18 E F0 1.278(in earlier v)3.778 F 1.278 -(ersions of Bash; the old name is still accepted for)-.15 F(backw)72 654 -Q .575(ards compatibility)-.1 F 5.575(.T)-.65 G(he)-5.575 E F1(history) -3.075 E F0 .575 -(command can read or write \214les containing the history list and dis-) -3.075 F .167(play the current list contents.)72 666 R(The)5.167 E F1(fc) -2.667 E F0 -.2(bu)2.667 G .167(iltin, adopted from POSIX.2 and the K).2 -F .167(orn Shell, allo)-.35 F .167(ws display and)-.25 F(re-e)72 678 Q --.15(xe)-.15 G .58 -(cution, with optional editing, of commands from the history list.).15 F -.58(The readline library of)5.58 F .58(fers a set of)-.25 F 1.255(comma\ -nds to search the history list for a portion of the current input line \ -or a string typed by the user)72 690 R(.)-.55 E(Finally)72 702 Q 2.535 -(,t)-.65 G(he)-2.535 E F3(history)2.535 E F0(library)2.535 E 2.535(,g) --.65 G .036(enerally incorporated directly into the readline library) --2.535 F 2.536(,i)-.65 G .036(mplements a f)-2.536 F .036(acility for) --.1 F 1.023(history recall, e)72 714 R 1.022(xpansion, and re-e)-.15 F --.15(xe)-.15 G 1.022(cution of pre).15 F 1.022(vious commands v)-.25 F -1.022(ery similar to csh \(\231bang history\232, so)-.15 F -(called because the e)72 726 Q -(xclamation point introduces a history substitution\):)-.15 E EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-6-)282.17 48 Q/F1 10/Courier@0 SF 6($e)97 84 S -(cho a b c d e)-6 E 6(abcde)97 96 S 6($!)97 108 S 6(!fghi)-6 G -(echo a b c d e f g h i)97 120 Q 6(abcdefghi)97 132 S 6($!)97 144 S(-2) --6 E(echo a b c d e)97 156 Q 6(abcde)97 168 S 6($e)97 180 S(cho !-2:1-4) --6 E(echo a b c d)97 192 Q 6(abcd)97 204 S F0 1.456 -(The command history is only sa)72 225.6 R -.15(ve)-.2 G 3.957(dw).15 G -1.457(hen the shell is interacti)-3.957 F -.15(ve)-.25 G 3.957(,s).15 G -3.957(oi)-3.957 G 3.957(ti)-3.957 G 3.957(sn)-3.957 G 1.457(ot a)-3.957 -F -.25(va)-.2 G 1.457(ilable for use by shell).25 F(scripts.)72 237.6 Q -/F2 10/Times-Bold@0 SF 2.5(4.5. New)72 261.6 R(Shell V)2.5 E(ariables) --.92 E F0 .59(There are a number of con)97 277.2 R -.15(ve)-.4 G .589 -(nience v).15 F .589(ariables that Bash interprets to mak)-.25 F 3.089 -(el)-.1 G .589(ife easier)-3.089 F 5.589(.T)-.55 G .589(hese include) --5.589 F F2(FIGNORE)72 289.2 Q F0 3.973(,w)C 1.473 -(hich is a set of \214lename suf)-3.973 F<8c78>-.25 E 1.474 -(es identifying \214les to e)-.15 F 1.474 -(xclude when completing \214lenames;)-.15 F F2(HOSTTYPE)72 301.2 Q F0 -2.932(,w)C .432 -(hich is automatically set to a string describing the type of hardw) --2.932 F .431(are on which Bash is cur)-.1 F(-)-.2 E .335(rently e)72 -313.2 R -.15(xe)-.15 G(cuting;).15 E F2(command_oriented_history)2.835 E -F0 2.835(,w)C .335(hich directs Bash to sa)-2.835 F .635 -.15(ve a)-.2 H -.336(ll lines of a multiple-line com-).15 F 1.071(mand such as a)72 -325.2 R/F3 10/Times-Italic@0 SF(while)3.571 E F0(or)3.571 E F3(for)3.571 -E F0 1.071(loop in a single history entry)3.571 F 3.57(,a)-.65 G(llo) --3.57 E 1.07(wing easy re-editing; and)-.25 F F2(IGNOREEOF)3.57 E F0(,)A -.747(whose v)72 337.2 R .747(alue indicates the number of consecuti)-.25 -F 1.047 -.15(ve E)-.25 H .747(OF characters that an interacti).15 F -1.048 -.15(ve s)-.25 H .748(hell will read before).15 F -.15(ex)72 349.2 -S 1.432(iting \255 an easy w).15 F 1.432(ay to k)-.1 F 1.432 -(eep yourself from being logged out accidentally)-.1 F 6.432(.T)-.65 G -(he)-6.432 E F2(auto_r)3.932 E(esume)-.18 E F0 -.25(va)3.932 G(riable) -.25 E .571(alters the w)72 361.2 R .571 -(ay the shell treats simple command names: if job control is acti)-.1 F --.15(ve)-.25 G 3.071(,a).15 G .571(nd this v)-3.071 F .571 -(ariable is set, sin-)-.25 F(gle-w)72 373.2 Q .239(ord simple commands \ -without redirections cause the shell to \214rst look for and restart a \ -suspended job)-.1 F(with that name before starting a ne)72 385.2 Q 2.5 -(wp)-.25 G(rocess.)-2.5 E F2 2.5(4.6. Brace)72 409.2 R(Expansion)2.5 E -F0 .653(Since sh of)97 424.8 R .653(fers no con)-.25 F -.15(ve)-.4 G -.653(nient w).15 F .653 -(ay to generate arbitrary strings that share a common pre\214x or suf) --.1 F<8c78>-.25 E 2.124(\(\214lename e)72 436.8 R 2.124 -(xpansion requires that the \214lenames e)-.15 F 2.123 -(xist\), Bash implements)-.15 F F3(br)4.623 E 2.123(ace e)-.15 F -(xpansion)-.2 E F0 4.623(,ac)C(apability)-4.623 E(pick)72 448.8 Q .773 -(ed up from csh.)-.1 F .774(Brace e)5.773 F .774 -(xpansion is similar to \214lename e)-.15 F .774(xpansion, b)-.15 F .774 -(ut the strings generated need not)-.2 F 1.211(correspond to e)72 460.8 -R 1.211(xisting \214les.)-.15 F 3.711(Ab)6.211 G 1.211(race e)-3.711 F -1.211(xpression consists of an optional)-.15 F F3(pr)3.71 E(eamble)-.37 -E F0 3.71(,f)C(ollo)-3.71 E 1.21(wed by a pair of)-.25 F 2.938 -(braces enclosing a series of comma-separated strings, and an optional) -72 472.8 R F3(postamble)5.438 E F0 7.938(.T)C 2.938(he preamble is) --7.938 F(prepended to each string within the braces, and the postamble \ -is then appended to each resulting string:)72 484.8 Q F1 6($e)97 502.8 S -(cho a{d,c,b}e)-6 E(ade ace abe)97 514.8 Q F0 .306(As this e)72 536.4 R -.306(xample demonstrates, the results of brace e)-.15 F .305 -(xpansion are not sorted, as the)-.15 F 2.805(ya)-.15 G .305 -(re by \214lename e)-2.805 F(xpan-)-.15 E(sion.)72 548.4 Q F2 2.5 -(4.7. Pr)72 572.4 R(ocess Substitution)-.18 E F0 .457 -(On systems that can support it, Bash pro)97 588 R .457(vides a f)-.15 F -.457(acility kno)-.1 F .458(wn as)-.25 F F3(pr)2.958 E .458 -(ocess substitution)-.45 F F0 5.458(.P)C .458(rocess sub-)-5.458 F .347 -(stitution is similar to command substitution in that its speci\214cati\ -on includes a command to e)72 600 R -.15(xe)-.15 G .346(cute, b).15 F -.346(ut the)-.2 F .181(shell does not collect the command')72 612 R -2.681(so)-.55 G .181(utput and insert it into the command line.)-2.681 F -(Rather)5.181 E 2.681(,B)-.4 G .182(ash opens a pipe)-2.681 F 1.861 -(to the command, which is run in the background.)72 624 R 1.861 -(The shell uses named pipes \(FIFOs\) or the)6.861 F F3(/de)4.361 E -(v/fd)-.15 E F0 .961(method of naming open \214les to e)72 636 R .962(x\ -pand the process substitution to a \214lename which connects to the pip\ -e)-.15 F .104(when opened.)72 648 R .103 -(This \214lename becomes the result of the e)5.104 F 2.603 -(xpansion. Process)-.15 F .103(substitution can be used to com-)2.603 F -(pare the outputs of tw)72 660 Q 2.5(od)-.1 G(if)-2.5 E(ferent v)-.25 E -(ersions of an application as part of a re)-.15 E(gression test:)-.15 E -F1 6($c)97 678 S(mp <\(old_prog\) <\(new_prog\))-6 E EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-7-)282.17 48 Q/F1 10/Times-Bold@0 SF 2.5 -(4.8. Pr)72 84 R(ompt Customization)-.18 E F0 2.229 -(One of the more popular interacti)97 99.6 R 2.529 -.15(ve f)-.25 H -2.229(eatures that Bash pro).15 F 2.23 -(vides is the ability to customize the)-.15 F 3.234(prompt. Both)72 -111.6 R F1($PS1)3.234 E F0(and)3.234 E F1($PS2,)3.234 E F0 .734 -(the primary and secondary prompts, are e)3.234 F .733 -(xpanded before being displayed.)-.15 F -.15(Pa)72 123.6 S .804 -(rameter and v).15 F .804(ariable e)-.25 F .805 -(xpansion is performed when the prompt string is e)-.15 F .805 -(xpanded, so an)-.15 F 3.305(ys)-.15 G .805(hell v)-3.305 F(ariable)-.25 -E .729(can be put into the prompt \(e.g.,)72 135.6 R F1($SHL)3.228 E(VL) --.92 E F0 3.228(,w)C .728(hich indicates ho)-3.228 F 3.228(wd)-.25 G -.728(eeply the current shell is nested\).)-3.228 F(Bash)5.728 E 1.895(s\ -pecially interprets characters in the prompt string preceded by a backs\ -lash.)72 147.6 R 1.895(Some of these backslash)6.895 F .874 -(escapes are replaced with the current time, the date, the current w)72 -159.6 R .874(orking directory)-.1 F 3.373(,t)-.65 G .873 -(he username, and the)-3.373 F .78 -(command number or history number of the command being entered.)72 171.6 -R .781(There is e)5.781 F -.15(ve)-.25 G 3.281(nab).15 G .781 -(ackslash escape to)-3.281 F .007 -(cause the shell to change its prompt when running as root after an)72 -183.6 R/F2 10/Times-Italic@0 SF(su)2.507 E F0 5.007(.B)C .007 -(efore printing each primary prompt,)-5.007 F .305(Bash e)72 195.6 R -.305(xpands the v)-.15 F(ariable)-.25 E F1($PR)2.805 E(OMPT_COMMAND)-.3 -E F0 .305(and, if it has a v)2.805 F .306(alue, e)-.25 F -.15(xe)-.15 G -.306(cutes the e).15 F .306(xpanded v)-.15 F .306(alue as)-.25 F 3.735 -(ac)72 207.6 S 1.235(ommand, allo)-3.735 F 1.234 -(wing additional prompt customization.)-.25 F -.15(Fo)6.234 G 3.734(re) -.15 G 1.234(xample, this assignment causes the current)-3.884 F(user)72 -219.6 Q 2.917(,t)-.4 G .417 -(he current host, the time, the last component of the current w)-2.917 F -.417(orking directory)-.1 F 2.917(,t)-.65 G .418(he le)-2.917 F -.15(ve) --.25 G 2.918(lo).15 G 2.918(fs)-2.918 G .418(hell nest-)-2.918 F(ing, a\ -nd the history number of the current command to be embedded into the pr\ -imary prompt:)72 231.6 Q/F3 10/Courier@0 SF 6($P)97 249.6 S -(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')-6 E -(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 261.6 Q -(chet@odin [21:03:54] src\(2:637\)$)97 273.6 Q F0 .146(The string being\ - assigned is surrounded by single quotes so that if it is e)72 295.2 R -.146(xported, the v)-.15 F .146(alue of)-.25 F F1($SHL)2.646 E(VL)-.92 E -F0(will)2.646 E(be updated by a child shell:)72 307.2 Q F3 -(chet@odin [21:17:35] src\(2:638\)$ export PS1)97 325.2 Q -(chet@odin [21:17:40] src\(2:639\)$ bash)97 337.2 Q -(chet@odin [21:17:46] src\(3:696\)$)97 349.2 Q F0 -(The \\$ escape is displayed as \231)72 370.8 Q F1($)A F0 2.5<9a77>C -(hen running as a normal user)-2.5 E 2.5(,b)-.4 G(ut as \231)-2.7 E F1 -(#)A F0 2.5<9a77>C(hen running as root.)-2.5 E F1 2.5(4.9. File)72 394.8 -R(System V)2.5 E(iews)-.37 E F0 .029(Since Berk)97 410.4 R(ele)-.1 E -2.529(yi)-.15 G .029 -(ntroduced symbolic links in 4.2 BSD, one of their most anno)-2.529 F -.03(ying properties has been)-.1 F .764(the \231w)72 422.4 R .764 -(arping\232 to a completely dif)-.1 F .764 -(ferent area of the \214le system when using)-.25 F F1(cd)3.263 E F0 -3.263(,a)C .763(nd the resultant non-intu-)-3.263 F(iti)72 434.4 Q .704 --.15(ve b)-.25 H(eha).15 E .405(vior of \231)-.2 F F1 .405(cd ..)B F0 -2.905(\232. The)B/F4 9/Times-Roman@0 SF(UNIX)2.905 E F0 -.1(ke)2.905 G -.405(rnel treats symbolic links).1 F F2(physically)2.905 E F0 5.405(.W)C -.405(hen the k)-5.405 F .405(ernel is translating)-.1 F 3.223(ap)72 -446.4 S .723(athname in which one component is a symbolic link, it repl\ -aces all or part of the pathname while pro-)-3.223 F .668 -(cessing the link.)72 458.4 R .668 -(If the contents of the symbolic link be)5.668 F .669 -(gin with a slash, the k)-.15 F .669(ernel replaces the pathname)-.1 F -.219(entirely; if not, the link contents replace the current component.) -72 470.4 R .219(In either case, the symbolic link is visible.)5.219 F -.058(If the link v)72 482.4 R .058(alue is an absolute pathname, the us\ -er \214nds himself in a completely dif)-.25 F .059 -(ferent part of the \214le sys-)-.25 F(tem.)72 494.4 Q .704(Bash pro)97 -510 R .704(vides a)-.15 F F2(lo)3.203 E(gical)-.1 E F0(vie)3.203 E 3.203 -(wo)-.25 G 3.203(ft)-3.203 G .703(he \214le system.)-3.203 F .703 -(In this def)5.703 F .703(ault mode, command and \214lename com-)-.1 F -.522(pletion and b)72 522 R .522(uiltin commands such as)-.2 F F1(cd) -3.022 E F0(and)3.022 E F1(pushd)3.022 E F0 .522 -(which change the current w)3.022 F .522(orking directory transpar)-.1 F -(-)-.2 E .127(ently follo)72 534 R 2.627(ws)-.25 G .127 -(ymbolic links as if the)-2.627 F 2.627(yw)-.15 G .127(ere directories.) --2.627 F(The)5.126 E F1($PWD)2.626 E F0 -.25(va)2.626 G .126 -(riable, which holds the shell').25 F 2.626(si)-.55 G .126(dea of)-2.626 -F .366(the current w)72 546 R .366(orking directory)-.1 F 2.866(,d)-.65 -G .367 -(epends on the path used to reach the directory rather than its ph) --2.866 F .367(ysical loca-)-.05 F -(tion in the local \214le system hierarch)72 558 Q 3.8 -.65(y. F)-.05 H -(or e).5 E(xample:)-.15 E F3 6($c)97 576 S 6(d/)-6 G(usr/local/bin)-6 E -6($e)97 588 S(cho $PWD)-6 E(/usr/local/bin)97 600 Q 6($p)97 612 S(wd)-6 -E(/usr/local/bin)97 624 Q 6($/)97 636 S(bin/pwd)-6 E -(/net/share/sun4/local/bin)97 648 Q 6($c)97 660 S 6(d.)-6 G(.)-6 E 6($p) -97 672 S(wd)-6 E(/usr/local)97 684 Q 6($/)97 696 S(bin/pwd)-6 E -(/net/share/sun4/local)97 708 Q 6($c)97 720 S 6(d.)-6 G(.)-6 E EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-8-)282.17 48 Q/F1 10/Courier@0 SF 6($p)97 84 S -(wd)-6 E(/usr)97 96 Q 6($/)97 108 S(bin/pwd)-6 E(/usr)97 120 Q F0 .3(On\ -e problem with this, of course, arises when programs that do not unders\ -tand the shell')72 141.6 R 2.8(sl)-.55 G .3(ogical notion of)-2.8 F .217 -(the \214le system interpret \231..)72 153.6 R 2.718<9a64>-.7 G(if) --2.718 E(ferently)-.25 E 5.218(.T)-.65 G .218 -(his generally happens when Bash completes \214lenames containing)-5.218 -F(\231..)72 165.6 Q 3.384<9a61>-.7 G .884 -(ccording to a logical hierarch)-3.384 F 3.384(yw)-.05 G .884 -(hich does not correspond to their ph)-3.384 F .883(ysical location.) --.05 F -.15(Fo)5.883 G 3.383(ru).15 G .883(sers who)-3.383 F -(\214nd this troublesome, a corresponding)72 177.6 Q/F2 10 -/Times-Italic@0 SF(physical)2.5 E F0(vie)2.5 E 2.5(wo)-.25 G 2.5(ft)-2.5 -G(he \214le system is a)-2.5 E -.25(va)-.2 G(ilable:).25 E F1 6($c)97 -195.6 S 6(d/)-6 G(usr/local/bin)-6 E 6($p)97 207.6 S(wd)-6 E -(/usr/local/bin)97 219.6 Q 6($s)97 231.6 S(et -o physical)-6 E 6($p)97 -243.6 S(wd)-6 E(/net/share/sun4/local/bin)97 255.6 Q/F3 10/Times-Bold@0 -SF 2.5(4.10. Inter)72 285.6 R(nationalization)-.15 E F0 .145 -(One of the most signi\214cant impro)97 301.2 R -.15(ve)-.15 G .145 -(ments in v).15 F .145(ersion 1.13 of Bash w)-.15 F .145 -(as the change to \231eight-bit clean-)-.1 F 2.933(liness\232. Pre)72 -313.2 R .433(vious v)-.25 F .432 -(ersions used the eighth bit of characters to mark whether or not the) --.15 F 2.932(yw)-.15 G .432(ere quoted when)-2.932 F 1.495(performing w) -72 325.2 R 1.495(ord e)-.1 F 3.995(xpansions. While)-.15 F 1.495 -(this did not af)3.995 F 1.496 -(fect the majority of users, most of whom used only)-.25 F(se)72 337.2 Q --.15(ve)-.25 G 1.236(n-bit ASCII characters, some found it con\214ning.) -.15 F(Be)6.236 E 1.236(ginning with v)-.15 F 1.236 -(ersion 1.13, Bash implemented a)-.15 F(dif)72 349.2 Q .02(ferent quoti\ -ng mechanism that did not alter the eighth bit of characters.)-.25 F -.021(This allo)5.021 F .021(wed Bash to manipulate)-.25 F .427 -(\214les with \231odd\232 characters in their names, b)72 361.2 R .427 -(ut did nothing to help users enter those names, so v)-.2 F .426 -(ersion 1.13)-.15 F 1.458 -(introduced changes to readline that made it eight-bit clean as well.)72 -373.2 R 1.458(Options e)6.458 F 1.458(xist that force readline to)-.15 F -.744(attach no special signi\214cance to characters with the eighth bit\ - set \(the def)72 385.2 R .744(ault beha)-.1 F .744(vior is to con)-.2 F --.15(ve)-.4 G .744(rt these).15 F .641(characters to meta-pre\214x)72 -397.2 R .641(ed k)-.15 F .941 -.15(ey s)-.1 H .642 -(equences\) and to output these characters without con).15 F -.15(ve)-.4 -G .642(rsion to meta-pre-).15 F<8c78>72 409.2 Q .008(ed sequences.)-.15 -F .007(These changes, along with the e)5.007 F .007(xpansion of k)-.15 F --.15(ey)-.1 G .007(maps to a full eight bits, enable readline to).15 F --.1(wo)72 421.2 S(rk with most of the ISO-8859 f).1 E -(amily of character sets, used by man)-.1 E 2.5(yE)-.15 G -(uropean countries.)-2.5 E F3 2.5(4.11. POSIX)72 445.2 R(Mode)2.5 E F0 -.584(Although Bash is intended to be POSIX.2 conformant, there are area\ -s in which the def)97 460.8 R .584(ault beha)-.1 F(vior)-.2 E .463 -(is not compatible with the standard.)72 472.8 R -.15(Fo)5.463 G 2.962 -(ru).15 G .462(sers who wish to operate in a strict POSIX.2 en)-2.962 F -.462(vironment, Bash)-.4 F .505(implements a)72 484.8 R F2 .505 -(POSIX mode)3.005 F F0 5.505(.W)C .505(hen this mode is acti)-5.505 F --.15(ve)-.25 G 3.005(,B).15 G .505(ash modi\214es its def)-3.005 F .505 -(ault operation where it dif)-.1 F(fers)-.25 E .267 -(from POSIX.2 to match the standard.)72 496.8 R .266 -(POSIX mode is entered when Bash is started with the)5.267 F F3(-posix) -2.766 E F0(option.)2.766 E .149(This feature is also a)72 508.8 R -.25 -(va)-.2 G .149(ilable as an option to the).25 F F3(set)2.649 E F0 -.2 -(bu)2.649 G(iltin,).2 E F3 .149(set -o posix)2.649 F F0 5.149(.F)C .149 -(or compatibility with other GNU)-5.299 F(softw)72 520.8 Q 4.02(are tha\ -t attempts to be POSIX.2 compliant, Bash also enters POSIX mode if the \ -v)-.1 F(ariable)-.25 E F3($POSIXL)72 532.8 Q(Y_CORRECT)-.92 E F0 5.824 -(is set when Bash is started or assigned a v)8.324 F 5.825 -(alue during e)-.25 F -.15(xe)-.15 G(cution.).15 E F3($POSIX_PED)72 -544.8 Q(ANTIC)-.35 E F0 .27 -(is accepted as well, to be compatible with some older GNU utilities.) -2.77 F .27(When Bash is)5.27 F .506(started in POSIX mode, for e)72 -556.8 R .506(xample, it sources the \214le named by the v)-.15 F .507 -(alue of)-.25 F F3($ENV)3.007 E F0 .507(rather than the \231nor)3.007 F -(-)-.2 E(mal\232 startup \214les, and does not allo)72 568.8 Q 2.5(wr) --.25 G(eserv)-2.5 E(ed w)-.15 E(ords to be aliased.)-.1 E F3 2.5(5. New) -72 592.8 R -.25(Fe)2.5 G(atur).25 E(es and Futur)-.18 E 2.5(eP)-.18 G -(lans)-2.5 E F0 1.632(There are se)97 608.4 R -.15(ve)-.25 G 1.632 -(ral features introduced in the current v).15 F 1.631(ersion of Bash, v) --.15 F 1.631(ersion 1.14, and a number)-.15 F .241 -(under consideration for future releases.)72 620.4 R .242 -(This section will brie\215y detail the ne)5.242 F 2.742(wf)-.25 G .242 -(eatures in v)-2.742 F .242(ersion 1.14 and)-.15 F(describe se)72 632.4 -Q -.15(ve)-.25 G(ral features that may appear in later v).15 E(ersions.) --.15 E F3 2.5(5.1. New)72 656.4 R -.25(Fe)2.5 G(atur).25 E -(es in Bash-1.14)-.18 E F0 .884(The ne)97 672 R 3.384(wf)-.25 G .884 -(eatures a)-3.384 F -.25(va)-.2 G .884(ilable in Bash-1.14 answer se).25 -F -.15(ve)-.25 G .883(ral of the most common requests for enhance-).15 F -2.931(ments. Most)72 684 R(notably)2.931 E 2.931(,t)-.65 G .432(here is\ - a mechanism for including non-visible character sequences in prompts, \ -such)-2.931 F .136 -(as those which cause a terminal to print characters in dif)72 696 R -.135(ferent colors or in standout mode.)-.25 F .135(There w)5.135 F .135 -(as noth-)-.1 F .558(ing pre)72 708 R -.15(ve)-.25 G .558 -(nting the use of these sequences in earlier v).15 F .559(ersions, b) --.15 F .559(ut the readline redisplay algorithm assumed)-.2 F -(each character occupied ph)72 720 Q(ysical screen space and w)-.05 E -(ould wrap lines prematurely)-.1 E(.)-.65 E EP -%%Page: 9 9 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-9-)282.17 48 Q .13(Readline has a fe)97 84 R -2.63(wn)-.25 G .63 -.25(ew va)-2.63 H .13(riables, se).25 F -.15(ve)-.25 -G .13(ral ne).15 F 2.63(wb)-.25 G .13 -(indable commands, and some additional emacs mode)-2.63 F(def)72 96 Q -.918(ault k)-.1 F 1.218 -.15(ey b)-.1 H 3.418(indings. A).15 F(ne)3.418 -E 3.418(wh)-.25 G .919(istory search mode has been implemented: in this\ - mode, readline searches)-3.418 F .336(the history for lines be)72 108 R -.336(ginning with the characters between the be)-.15 F .336 -(ginning of the current line and the cursor)-.15 F(.)-.55 E .555(The e) -72 120 R .556(xisting readline incremental search commands no longer ma\ -tch identical lines more than once.)-.15 F(File-)5.556 E 1.979 -(name completion no)72 132 R 4.479(we)-.25 G 1.979(xpands v)-4.629 F -1.979(ariables in directory names.)-.25 F 1.978(The history e)6.978 F -1.978(xpansion f)-.15 F 1.978(acilities are no)-.1 F(w)-.25 E 1.449 -(nearly completely csh-compatible: missing modi\214ers ha)72 144 R 1.749 --.15(ve b)-.2 H 1.449(een added and history substitution has been).15 F --.15(ex)72 156 S(tended.).15 E(Se)97 171.6 Q -.15(ve)-.25 G .474 -(ral of the features described earlier).15 F 2.973(,s)-.4 G .473(uch as) --2.973 F/F1 10/Times-Bold@0 SF .473(set -o posix)2.973 F F0(and)2.973 E -F1($POSIX_PED)2.973 E(ANTIC)-.35 E F0 2.973(,a)C .473(re ne)-2.973 F -2.973(wi)-.25 G(n)-2.973 E -.15(ve)72 183.6 S .106(rsion 1.14.).15 F -.106(There is a ne)5.106 F 2.606(ws)-.25 G .106(hell v)-2.606 F -(ariable,)-.25 E F1(OSTYPE)2.606 E F0 2.606(,t)C 2.606(ow)-2.606 G .106 -(hich Bash assigns a v)-2.606 F .106(alue that identi\214es the v)-.25 F -(er)-.15 E(-)-.2 E 1.38(sion of)72 195.6 R/F2 9/Times-Roman@0 SF(UNIX) -3.88 E F0(it')3.88 E 3.879(sr)-.55 G 1.379(unning on \(great for puttin\ -g architecture-speci\214c binary directories into the)-3.879 F F1($P) -3.879 E -.95(AT)-.74 G(H).95 E F0(\).)A -1 -.8(Tw o)72 207.6 T -.25(va) -6.215 G 2.915(riables ha).25 F 3.215 -.15(ve b)-.2 H 2.915(een renamed:) -.15 F F1($HISTCONTR)5.416 E(OL)-.3 E F0(replaces)5.416 E F1 -($history_contr)5.416 E(ol)-.18 E F0 5.416(,a)C(nd)-5.416 E F1 -($HOSTFILE)5.416 E F0(replaces)72 219.6 Q F1 -($hostname_completion_\214le)2.521 E F0 5.021(.I)C 2.521(nb)-5.021 G -.021(oth cases, the old names are accepted for backw)-2.521 F .02 -(ards compatibil-)-.1 F(ity)72 231.6 Q 5.788(.T)-.65 G .788(he ksh) --5.788 F/F3 10/Times-Italic@0 SF(select)3.288 E F0 .788 -(construct, which allo)3.288 F .788 -(ws the generation of simple menus, has been implemented.)-.25 F(Ne) -5.788 E(w)-.25 E 1.496(capabilities ha)72 243.6 R 1.796 -.15(ve b)-.2 H -1.496(een added to e).15 F 1.495(xisting v)-.15 F(ariables:)-.25 E F1 -($auto_r)3.995 E(esume)-.18 E F0 1.495(can no)3.995 F 3.995(wt)-.25 G -(ak)-3.995 E 3.995(ev)-.1 G 1.495(alues of)-4.245 F F3 -.2(ex)3.995 G -(act).2 E F0(or)3.995 E F3(sub-)3.995 E(string)72 255.6 Q F0 4.843(,a)C -(nd)-4.843 E F1($HISTCONTR)4.843 E(OL)-.3 E F0 2.343(understands the v) -4.843 F(alue)-.25 E F3(ignor)4.844 E(eboth)-.37 E F0 4.844(,w)C 2.344 -(hich combines the tw)-4.844 F 4.844(op)-.1 G(re)-4.844 E(viously)-.25 E -1.556(acceptable v)72 267.6 R 4.056(alues. The)-.25 F F1(dirs)4.056 E F0 --.2(bu)4.056 G 1.556(iltin has acquired options to print out speci\214c\ - members of the directory).2 F 3.062(stack. The)72 279.6 R F1($nolinks) -3.062 E F0 -.25(va)3.062 G .562(riable, which forces a ph).25 F .562 -(ysical vie)-.05 F 3.062(wo)-.25 G 3.062(ft)-3.062 G .563 -(he \214le system, has been superseded by the)-3.062 F F172 291.6 -Q F0 .494(option to the)2.994 F F1(set)2.994 E F0 -.2(bu)2.994 G .494 -(iltin \(equi).2 F -.25(va)-.25 G .494(lent to).25 F F1 .494(set -o ph) -2.994 F(ysical)-.15 E F0 .493(\); the v)B .493 -(ariable is retained for backw)-.25 F .493(ards compati-)-.1 F(bility)72 -303.6 Q 5.196(.T)-.65 G .196(he v)-5.196 F .196 -(ersion string contained in)-.15 F F1($B)2.696 E(ASH_VERSION)-.3 E F0 -(no)2.696 E 2.696(wi)-.25 G .196(ncludes an indication of the patch le) --2.696 F -.15(ve)-.25 G 2.696(la).15 G(s)-2.696 E .85(well as the \231b) -72 315.6 R .85(uild v)-.2 F 3.35(ersion\232. Some)-.15 F .85 -(little-used features ha)3.35 F 1.15 -.15(ve b)-.2 H .85(een remo).15 F --.15(ve)-.15 G 3.35(d: the).15 F F1(by)3.35 E(e)-.1 E F0(synon)3.35 E -.85(ym for)-.15 F F1(exit)3.35 E F0(and)3.35 E(the)72 327.6 Q F1($NO_PR) -3.498 E(OMPT_V)-.3 E(ARS)-1.35 E F0 -.25(va)3.498 G .998 -(riable are gone.).25 F .998(There is no)5.998 F 3.498(wa)-.25 G 3.498 -(no)-3.498 G -2.19 -.18(rg a)-3.498 H .998 -(nized test suite that can be run as a).18 F(re)72 339.6 Q -(gression test when b)-.15 E(uilding a ne)-.2 E 2.5(wv)-.25 G -(ersion of Bash.)-2.65 E 1.696(The documentation has been thoroughly o) -97 355.2 R -.15(ve)-.15 G 1.696(rhauled: there is a ne).15 F 4.196(wm) --.25 G 1.695(anual page on the readline)-4.196 F .467(library and the)72 -367.2 R F3(info)2.967 E F0 .467 -(\214le has been updated to re\215ect the current v)2.967 F 2.968 -(ersion. As)-.15 F(al)2.968 E -.1(wa)-.1 G .468(ys, as man).1 F 2.968 -(yb)-.15 G .468(ugs as possi-)-3.168 F(ble ha)72 379.2 Q .3 -.15(ve b) --.2 H(een \214x).15 E(ed, although some surely remain.)-.15 E F1 2.5 -(5.2. Other)72 403.2 R -.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 1.68 -(There are a fe)97 418.8 R 4.18(wf)-.25 G 1.68 -(eatures that I hope to include in later Bash releases.)-4.18 F 1.68 -(Some are based on w)6.68 F(ork)-.1 E(already done in other shells.)72 -430.8 Q .958(In addition to simple v)97 446.4 R .959(ariables, a future\ - release of Bash will include one-dimensional arrays, using)-.25 F .206 -(the ksh implementation of arrays as a model.)72 458.4 R .205 -(Additions to the ksh syntax, such as)5.205 F F3(varname)2.705 E F0 .205 -(=\( ... \) to assign)B 2.587(al)72 470.4 S .087(ist of w)-2.587 F .088 -(ords directly to an array and a mechanism to allo)-.1 F 2.588(wt)-.25 G -(he)-2.588 E F1 -.18(re)2.588 G(ad).18 E F0 -.2(bu)2.588 G .088 -(iltin to read a list of v).2 F .088(alues directly)-.25 F .092 -(into an array)72 482.4 R 2.592(,w)-.65 G .092(ould be desirable.)-2.692 -F(Gi)5.092 E -.15(ve)-.25 G 2.592(nt).15 G .092(hose e)-2.592 F .092 -(xtensions, the ksh)-.15 F F1 .092(set \255A)2.592 F F0 .091 -(syntax may not be w)2.591 F .091(orth support-)-.1 F(ing \(the)72 494.4 -Q F12.5 E F0(option assigns a list of v)2.5 E(alues to an array) --.25 E 2.5(,b)-.65 G(ut is a rather peculiar special case\).)-2.7 E .76 -(Some shells include a means of)97 510 R F3(pr)3.26 E -.1(og)-.45 G -.15 -(ra).1 G(mmable).15 E F0 -.1(wo)3.26 G .76 -(rd completion, where the user speci\214es on a per).1 F(-)-.2 E .163 -(command basis ho)72 522 R 2.663(wt)-.25 G .163(he ar)-2.663 F .163(gum\ -ents of the command are to be treated when completion is attempted: as \ -\214le-)-.18 F .194(names, hostnames, e)72 534 R -.15(xe)-.15 G .194 -(cutable \214les, and so on.).15 F .195 -(The other aspects of the current Bash implementation could)5.195 F .482 -(remain as-is; the e)72 546 R .482(xisting heuristics w)-.15 F .481 -(ould still be v)-.1 F 2.981(alid. Only)-.25 F .481 -(when completing the ar)2.981 F .481(guments to a simple)-.18 F -(command w)72 558 Q(ould the programmable completion be in ef)-.1 E -(fect.)-.25 E .479(It w)97 573.6 R .479(ould also be nice to gi)-.1 F -.779 -.15(ve t)-.25 H .479(he user \214ner).15 F .479 -(-grained control o)-.2 F -.15(ve)-.15 G 2.98(rw).15 G .48 -(hich commands are sa)-2.98 F -.15(ve)-.2 G 2.98(do).15 G .48(nto the) --2.98 F 1.786(history list.)72 585.6 R 1.786(One proposal is for a v) -6.786 F 1.786(ariable, tentati)-.25 F -.15(ve)-.25 G 1.786(ly named).15 -F F1(HISTIGNORE)4.286 E F0 4.285(,w)C 1.785(hich w)-4.285 F 1.785 -(ould contain a)-.1 F .496(colon-separated list of commands.)72 597.6 R -.496(Lines be)5.496 F .496 -(ginning with these commands, after the restrictions of)-.15 F F1($HIST) -2.997 E(-)-.92 E(CONTR)72 609.6 Q(OL)-.3 E F0(ha)2.65 E .45 -.15(ve b) --.2 H .15(een applied, w).15 F .15 -(ould not be placed onto the history list.)-.1 F .15 -(The shell pattern-matching capa-)5.15 F(bilities could also be a)72 -621.6 Q -.25(va)-.2 G(ilable when specifying the contents of).25 E F1 -($HISTIGNORE)2.5 E F0(.)A .729(One thing that ne)97 637.2 R .729 -(wer shells such as)-.25 F F1(wksh)3.229 E F0 .729(\(also kno)3.229 F -.729(wn as)-.25 F F1(dtksh)3.23 E F0 3.23(\)p)C(ro)-3.23 E .73 -(vide is a command to dynami-)-.15 F 1.189 -(cally load code implementing additional b)72 649.2 R 1.189 -(uiltin commands into a running shell.)-.2 F 1.188(This ne)6.188 F 3.688 -(wb)-.25 G 1.188(uiltin w)-3.888 F(ould)-.1 E(tak)72 661.2 Q 2.875(ea) --.1 G 2.875(no)-2.875 G .375 -(bject \214le or shared library implementing the \231body\232 of the b) --2.875 F .375(uiltin \()-.2 F F3(xxx_b)A(uiltin\(\))-.2 E F0 .375 -(for those f)2.875 F(amiliar)-.1 E .052 -(with Bash internals\) and a structure containing the name of the ne)72 -673.2 R 2.552(wc)-.25 G .051(ommand, the function to call when the) --2.552 F(ne)72 685.2 Q 3.458(wb)-.25 G .958(uiltin is in)-3.658 F -.2 -(vo)-.4 G -.1(ke).2 G 3.458(d\().1 G .959 -(presumably de\214ned in the shared object speci\214ed as an ar)-3.458 F -.959(gument\), and the docu-)-.18 F 1.352 -(mentation to be printed by the)72 697.2 R F1(help)3.851 E F0 1.351 -(command \(possibly present in the shared object as well\).)3.851 F -1.351(It w)6.351 F(ould)-.1 E(manage the details of e)72 709.2 Q -(xtending the internal table of b)-.15 E(uiltins.)-.2 E EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-10-)279.67 48 Q 3.291(Af)97 84 S 1.291 -.25 -(ew o)-3.291 H .791(ther b).25 F .791(uiltins w)-.2 F .791 -(ould also be desirable: tw)-.1 F 3.291(oa)-.1 G .791(re the POSIX.2) --3.291 F/F1 10/Times-Bold@0 SF(getconf)3.292 E F0 .792 -(command, which prints)3.292 F 1.412(the v)72 96 R 1.412 -(alues of system con\214guration v)-.25 F 1.411 -(ariables de\214ned by POSIX.2, and a)-.25 F F1(diso)3.911 E(wn)-.1 E F0 --.2(bu)3.911 G 1.411(iltin, which causes a).2 F 1.347 -(shell running with job control acti)72 108 R 1.647 -.15(ve t)-.25 H -3.847<6f99>.15 G(for)-3.847 E 1.347 -(get about\232 one or more background jobs in its internal jobs)-.18 F -3.465(table. Using)72 120 R F1(getconf)3.465 E F0 3.465(,f)C .965(or e) --3.465 F .965(xample, a user could retrie)-.15 F 1.264 -.15(ve a v)-.25 -H .964(alue for)-.1 F F1($P)3.464 E -.95(AT)-.74 G(H).95 E F0 .964 -(guaranteed to \214nd all of the)3.464 F .884 -(POSIX standard utilities, or \214nd out ho)72 132 R 3.385(wl)-.25 G -.885 -(ong \214lenames may be in the \214le system containing a speci\214ed) --3.385 F(directory)72 144 Q(.)-.65 E 1.521 -(There are no implementation timetables for an)97 159.6 R 4.021(yo)-.15 -G 4.021(ft)-4.021 G 1.52(hese features, nor are there concrete plans to) --4.021 F(include them.)72 171.6 Q(If an)5 E(yone has comments on these \ -proposals, feel free to send me electronic mail.)-.15 E F1 2.5 -(6. Re\215ections)72 195.6 R(and Lessons Lear)2.5 E(ned)-.15 E F0 .433 -(The lesson that has been repeated most often during Bash de)97 211.2 R --.15(ve)-.25 G .433(lopment is that there are dark corners).15 F .181 -(in the Bourne shell, and people use all of them.)72 223.2 R .18 -(In the original description of the Bourne shell, quoting and)5.181 F -.073(the shell grammar are both poorly speci\214ed and incomplete; subs\ -equent descriptions ha)72 235.2 R .373 -.15(ve n)-.2 H .073 -(ot helped much.).15 F 1.856(The grammar presented in Bourne')72 247.2 R -4.356(sp)-.55 G 1.856(aper describing the shell distrib)-4.356 F 1.855 -(uted with the Se)-.2 F -.15(ve)-.25 G 1.855(nth Edition of).15 F/F2 9 -/Times-Roman@0 SF(UNIX)72 259.2 Q F0 2.5<8769>C 2.5(ss)-2.5 G 2.5(of) --2.5 G(ar of)-2.6 E 2.5(ft)-.25 G(hat it does not allo)-2.5 E 2.5(wt) --.25 G(he command)-2.5 E/F3 10/Courier@0 SF(who|wc)2.5 E F0 5(.I)C 2.5 -(nf)-5 G(act, as T)-2.6 E(om Duf)-.8 E 2.5(fs)-.25 G(tates:)-2.5 E 1.375 -(Nobody really kno)97 274.8 R 1.375(ws what the Bourne shell')-.25 F -3.875(sg)-.55 G 1.375(rammar is.)-3.875 F(Ev)6.376 E 1.376(en e)-.15 F -1.376(xamination of the source)-.15 F(code is little help.\210)97 286.8 -Q .382(The POSIX.2 standard includes a)72 302.4 R/F4 10/Times-Italic@0 -SF(yacc)2.882 E F0 .382 -(grammar that comes close to capturing the Bourne shell')2.882 F 2.882 -(sb)-.55 G(eha)-2.882 E(vior)-.2 E(,)-.4 E -.2(bu)72 314.4 S 3.246(ti).2 -G 3.246(td)-3.246 G(isallo)-3.246 E .747(ws some constructs which sh ac\ -cepts without complaint \255 and there are scripts out there that)-.25 F -.501(use them.)72 326.4 R .501(It took a fe)5.501 F 3.001(wv)-.25 G .501 -(ersions and se)-3.151 F -.15(ve)-.25 G .501(ral b).15 F .5 -(ug reports before Bash implemented sh-compatible quoting,)-.2 F .279 -(and there are still some \231le)72 338.4 R -.05(ga)-.15 G .279 -(l\232 sh constructs which Bash \215ags as syntax errors.).05 F .28 -(Complete sh compatibility)5.28 F(is a tough nut.)72 350.4 Q 1.231 -(The shell is bigger and slo)97 366 R 1.231(wer than I w)-.25 F 1.231 -(ould lik)-.1 F 1.23(e, though the current v)-.1 F 1.23 -(ersion is substantially f)-.15 F(aster)-.1 E .086(than pre)72 378 R -(viously)-.25 E 5.086(.T)-.65 G .087 -(he readline library could stand a substantial re)-5.086 F 2.587 -(write. A)-.25 F .087(hand-written parser to replace the)2.587 F -(current)72 390 Q F4(yacc)2.978 E F0 .478(-generated one w)B .477 -(ould probably result in a speedup, and w)-.1 F .477(ould solv)-.1 F -2.977(eo)-.15 G .477(ne glaring problem:)-2.977 F(the)5.477 E .384 -(shell could parse commands in \231$\(...\)\232 constructs as the)72 402 -R 2.884(ya)-.15 G .385 -(re entered, rather than reporting errors when the)-2.884 F -(construct is e)72 414 Q(xpanded.)-.15 E 1.064(As al)97 429.6 R -.1(wa) --.1 G 1.064(ys, there is some chaf).1 F 3.564(ft)-.25 G 3.564(og)-3.564 -G 3.564(ow)-3.564 G 1.064(ith the wheat.)-3.564 F 1.063 -(Areas of duplicated functionality need to be)6.063 F .382(cleaned up.) -72 441.6 R .382(There are se)5.382 F -.15(ve)-.25 G .382 -(ral cases where Bash treats a v).15 F .382 -(ariable specially to enable functionality a)-.25 F -.25(va)-.2 G -(ilable).25 E .185(another w)72 453.6 R .185(ay \()-.1 F F1($notify)A F0 -(vs.)2.684 E F1 .184(set -o notify)5.184 F F0(and)2.684 E F1($nolinks) -2.684 E F0(vs.)2.684 E F1 .184(set -o ph)2.684 F(ysical)-.15 E F0 2.684 -(,f)C .184(or instance\); the special treatment)-2.684 F 3.421(of the v) -72 465.6 R 3.421(ariable name should probably be remo)-.25 F -.15(ve) --.15 G 5.921(d. A).15 F(fe)5.921 E 5.921(wm)-.25 G 3.422 -(ore things could stand remo)-5.921 F -.25(va)-.15 G 3.422(l; the).25 F -F1($allo)72 477.6 Q(w_null_glob_expansion)-.1 E F0(and)4.112 E F1 -($glob_dot_\214lenames)4.112 E F0 -.25(va)4.111 G 1.611 -(riables are of particularly questionable v).25 F(alue.)-.25 E(The)72 -489.6 Q F1($[...])3.977 E F0 1.477(arithmetic e)3.977 F -.25(va)-.25 G -1.478(luation syntax is redundant no).25 F 3.978(wt)-.25 G 1.478 -(hat the POSIX-mandated)-3.978 F F1($\(\(...\)\))3.978 E F0 1.478 -(construct has)3.978 F .326(been implemented, and could be deleted.)72 -501.6 R .326(It w)5.326 F .326(ould be nice if the te)-.1 F .326 -(xt output by the)-.15 F F1(help)2.825 E F0 -.2(bu)2.825 G .325 -(iltin were e).2 F(xter)-.15 E(-)-.2 E .061 -(nal to the shell rather than compiled into it.)72 513.6 R .062 -(The beha)5.062 F .062(vior enabled by)-.2 F F1 -($command_oriented_history)2.562 E F0 2.562(,w)C(hich)-2.562 E 1.125 -(causes the shell to attempt to sa)72 525.6 R 1.424 -.15(ve a)-.2 H -1.124(ll lines of a multi-line command in a single history entry).15 F -3.624(,s)-.65 G 1.124(hould be)-3.624 F(made the def)72 537.6 Q -(ault and the v)-.1 E(ariable remo)-.25 E -.15(ve)-.15 G(d.).15 E F1 2.5 -(7. A)72 561.6 R -.1(va)-1 G(ilability).1 E F0 .047 -(As with all other GNU softw)97 577.2 R .047(are, Bash is a)-.1 F -.25 -(va)-.2 G .047(ilable for anon).25 F .047(ymous FTP from)-.15 F F4(pr) -2.547 E(ep.ai.mit.edu:/pub/gnu)-.37 E F0 1.05(and from other GNU softw) -72 589.2 R 1.05(are mirror sites.)-.1 F 1.049(The current v)6.049 F -1.049(ersion is in)-.15 F F4(bash-1.14.1.tar)3.549 E(.gz)-1.11 E F0 -1.049(in that directory)3.549 F(.)-.65 E(Use)72 601.2 Q F4(ar)5.965 E --.15(ch)-.37 G(ie).15 E F0 3.465(to \214nd the nearest archi)5.965 F -3.766 -.15(ve s)-.25 H 5.966(ite. The).15 F 3.466(latest v)5.966 F 3.466 -(ersion is al)-.15 F -.1(wa)-.1 G 3.466(ys a).1 F -.25(va)-.2 G 3.466 -(ilable for FTP from).25 F F4(bash.CWR)72 613.2 Q -.25(U.)-.4 G -(Edu:/pub/dist.).25 E F0(Bash documentation is a)5 E -.25(va)-.2 G -(ilable for FTP from).25 E F4(bash.CWR)2.5 E -.25(U.)-.4 G -(Edu:/pub/bash.).25 E F0 1.169(The Free Softw)97 628.8 R 1.169(are F)-.1 -F 1.169(oundation sells tapes and CD-R)-.15 F 1.168 -(OMs containing Bash; send electronic mail to)-.4 F F3 -(gnu@prep.ai.mit.edu)72 640.8 Q F0(or call)2.5 E F3(+1-617-876-3296)2.5 -E F0(for more information.)2.5 E .694(Bash is also distrib)97 656.4 R -.694(uted with se)-.2 F -.15(ve)-.25 G .694(ral v).15 F .694(ersions of) --.15 F F2(UNIX)3.194 E F0 .694(-compatible systems.)B .695 -(It is included as /bin/sh)5.694 F .948(and /bin/bash on se)72 668.4 R --.15(ve)-.25 G .948(ral Linux distrib).15 F .948 -(utions \(more about the dif)-.2 F .948 -(ference in a moment\), and as contrib)-.25 F(uted)-.2 E .32 LW 144 -676.4 72 676.4 DL/F5 8/Times-Roman@0 SF .781 -(\207S. R. Bourne, \231UNIX T)72 688.2 R .781(ime-Sharing System:)-.28 F -.781(The UNIX Shell\232,)4.781 F/F6 8/Times-Italic@0 SF .78 -(Bell System T)2.78 F(ec)-.736 E .78(hnical J)-.12 F(ournal)-.2 E F5 -2.78(,5)C .78(7\(6\), July-)-2.78 F(August, 1978, pp. 1971-1990.)72 -698.2 Q<8854>72 710 Q .431(om Duf)-.64 F .431 -(f, \231Rc \255 A Shell for Plan 9 and)-.2 F/F7 7/Times-Roman@0 SF(UNIX) -2.432 E F5(systems\232,)2.432 E F6(Pr)2.432 E .432 -(oc. of the Summer 1990 EUUG Confer)-.36 F(ence)-.296 E F5 2.432(,L)C -(on-)-2.432 E(don, July)72 720 Q 2(,1)-.52 G(990, pp. 21-33.)-2 E EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(-11-)279.67 48 Q(softw)72 84 Q(are in BSDI')-.1 -E 2.5(sB)-.55 G(SD/386* and FreeBSD.)-2.5 E .598(The Linux distrib)97 -99.6 R .598(ution deserv)-.2 F .598(es special mention.)-.15 F .598 -(There are tw)5.598 F 3.099(oc)-.1 G .599 -(on\214gurations included in the stan-)-3.099 F .733(dard Bash distrib) -72 111.6 R .732(ution: a \231normal\232 con\214guration, in which all o\ -f the standard features are included, and a)-.2 F .519(\231minimal\232 \ -con\214guration, which omits job control, aliases, history and command \ -line editing, the directory)72 123.6 R .886(stack and)72 135.6 R/F1 10 -/Times-Bold@0 SF(pushd/popd/dirs,)3.386 E F0 .886(process substitution,\ - prompt string special character decoding, and the)3.386 F/F2 10 -/Times-Italic@0 SF(select)3.385 E F0 3.368(construct. This)72 147.6 R -.868(minimal v)3.368 F .869 -(ersion is designed to be a drop-in replacement for the traditional)-.15 -F/F3 9/Times-Roman@0 SF(UNIX)3.369 E F0(/bin/sh,)3.369 E -(and is included as the Linux /bin/sh in se)72 159.6 Q -.15(ve)-.25 G -(ral packagings.).15 E F1 2.5(8. Conclusion)72 183.6 R F0 .8 -(Bash is a w)97 199.2 R(orth)-.1 E 3.3(ys)-.05 G .8(uccessor to sh.)-3.3 -F .8(It is suf)5.8 F .8(\214ciently portable to run on nearly e)-.25 F --.15(ve)-.25 G .8(ry v).15 F .8(ersion of)-.15 F F3(UNIX)3.299 E F0 .31 -(from 4.3 BSD to SVR4.2, and se)72 211.2 R -.15(ve)-.25 G(ral).15 E F3 -(UNIX)2.81 E F0 -.1(wo)2.81 G(rkalik).1 E 2.81(es. It)-.1 F .311(is rob) -2.81 F .311(ust enough to replace sh on most of those)-.2 F 1.515 -(systems, and pro)72 223.2 R 1.515(vides more functionality)-.15 F 6.515 -(.I)-.65 G 4.015(th)-6.515 G 1.515(as se)-4.015 F -.15(ve)-.25 G 1.515 -(ral thousand re).15 F 1.515(gular users, and their feedback has)-.15 F -(helped to mak)72 235.2 Q 2.5(ei)-.1 G 2.5(ta)-2.5 G 2.5(sg)-2.5 G -(ood as it is today \255 a testament to the bene\214ts of free softw) --2.5 E(are.)-.1 E .32 LW 144 708.2 72 708.2 DL/F4 8/Times-Roman@0 SF -(*BSD/386 is a trademark of Berk)72 720 Q(ele)-.08 E 2(yS)-.12 G(oftw)-2 -E(are Design, Inc.)-.08 E EP -%%Trailer -end -%%EOF diff --git a/doc/article.pt.ps b/doc/article.pt.ps deleted file mode 100644 index 875a04e64..000000000 --- a/doc/article.pt.ps +++ /dev/null @@ -1,1331 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.08 -%%DocumentNeededResources: font Palatino-Bold -%%+ font Palatino-Italic -%%+ font Palatino-Roman -%%+ font Courier -%%DocumentSuppliedResources: procset grops 1.08 0 -%%Pages: 12 -%%PageOrder: Ascend -%%Orientation: Portrait -%%EndComments -%%BeginProlog -%%BeginResource: procset grops 1.08 0 -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}bind def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/FL{ -currentgray exch setgray fill setgray -}bind def -/BL/fill load def -/LW/setlinewidth load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -}bind def -/PEND{ -clear -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%IncludeResource: font Palatino-Bold -%%IncludeResource: font Palatino-Italic -%%IncludeResource: font Palatino-Roman -%%IncludeResource: font Courier -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL -792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron -/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space -/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft -/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four -/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C -/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash -/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q -/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase -/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger -/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar -/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus -/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu -/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright -/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde -/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute -/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls -/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute -/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve -/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis]def/Courier@0 ENC0/Courier RE -/Palatino-Roman@0 ENC0/Palatino-Roman RE/Palatino-Italic@0 ENC0/Palatino-Italic -RE/Palatino-Bold@0 ENC0/Palatino-Bold RE -%%EndProlog -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 12/Palatino-Bold@0 SF(Bash \255 The GNU shell*)223.71 120 Q/F1 10 -/Palatino-Italic@0 SF(Chet Ramey)263.415 144 Q(Case W)220.45 156 Q -(estern Reserve University)-.2 E(chet@po.cwru.edu)251.305 168 Q/F2 10 -/Palatino-Bold@0 SF 2.5(1. Introduction)72 234 R(Bash)97 249.6 Q/F3 10 -/Palatino-Roman@0 SF .551(is the shell, or command language interpr)3.051 F -(eter)-.18 E 3.051(,t)-.74 G .55(hat will appear in the GNU operating)334.708 -249.6 R 4.36(system. The)72 261.6 R 1.86(name is an acr)4.36 F 1.861 -(onym for the `)-.18 F 1.861(`Bourne-Again SHell')-.37 F 1.861 -(', a pun on Steve Bourne, the)-.37 F 1.274(author of the dir)72 273.6 R 1.274 -(ect ancestor of the curr)-.18 F(ent)-.18 E/F4 9/Palatino-Roman@0 SF(UNIX)3.774 -E F3 3.773<8773>C(hell)307.862 273.6 Q F1(/bin/sh)3.773 E F3 3.773(,w)C 1.273 -(hich appear)370.458 273.6 R 1.273(ed in the Seventh)-.18 F -(Edition Bell Labs Resear)72 285.6 Q(ch version of)-.18 E F4(UNIX)2.5 E F3(.)A -.925(Bash is an)97 301.2 R F2(sh)3.425 E F3 .925 -(\255compatible shell that incorporates useful featur)B .926(es fr)-.18 F .926 -(om the Korn shell \()-.18 F F2(ksh)A F3(\))A .737(and the C shell \()72 313.2 -R F2(csh)A F3 .737(\), described later in this article.)B .737 -(It is ultimately intended to be a conformant)5.737 F .278 -(implementation of the IEEE POSIX Shell and Utilities speci\214cation \(IEEE W) -72 325.2 R .279(orking Gr)-.92 F .279(oup 1003.2\).)-.18 F(It of)72 337.2 Q -(fers functional impr)-.18 E(ovements over sh for both interactive and pr)-.18 -E(ogramming use.)-.18 E 1.299(While the GNU operating system will most likely \ -include a version of the Berkeley shell)97 352.8 R .527 -(csh, Bash will be the default shell.)72 364.8 R .527(Like other GNU softwar) -5.527 F .527(e, Bash is quite portable.)-.18 F .527(It curr)5.527 F(ently)-.18 -E -.08(ru)72 376.8 S 1.391(ns on nearly every version of).08 F F4(UNIX)3.891 E -F3 1.391(and a few other operating systems \255 an independently-)3.891 F .278 -(supported port exists for OS/2, and ther)72 388.8 R 2.779(ea)-.18 G .639 -.18 -(re r)264.36 388.8 T .279(umors of ports to DOS and W).1 F .279(indows NT)-.55 -F 5.279(.P)-.74 G .279(orts to)475.591 388.8 R F4(UNIX)72 400.8 Q F3 -(-like systems such as QNX and Minix ar)A 2.5(ep)-.18 G -(art of the distribution.)285.547 400.8 Q .897 -(The original author of Bash was Brian Fox, an employee of the Fr)97 416.4 R -.896(ee Softwar)-.18 F 3.396(eF)-.18 G(oundation.)455.63 416.4 Q 1.287 -(The curr)72 428.4 R 1.287(ent developer and maintainer is Chet Ramey)-.18 F -3.787(,av)-1.11 G 1.287(olunteer who works at Case W)335.573 428.4 R(estern) --.92 E(Reserve University)72 440.4 Q(.)-1.11 E F2 2.5(2. What')72 464.4 R 2.5 -(sP)-.55 G(OSIX, anyway?)124.22 464.4 Q F1(POSIX)97 480 Q F3 .947 -(is a name originally coined by Richar)5.113 F 3.447(dS)-.18 G .947 -(tallman for a family of open system stan-)316.422 480 R(dar)72 492 Q .644 -(ds based on)-.18 F F4(UNIX)3.144 E F3 5.644(.T)C(her)181.403 492 Q 3.144(ea) --.18 G 1.004 -.18(re a n)208.717 492 T .644(umber of aspects of).18 F F4(UNIX) -3.145 E F3 .645(under consideration for standar)3.145 F(d-)-.18 E .814 -(ization, fr)72 504 R .814(om the basic system services at the system call and\ - C library level to applications and)-.18 F 1.191 -(tools to system administration and management.)72 516 R 1.192(Each ar)6.191 F -1.192(ea of standar)-.18 F 1.192(dization is assigned to a)-.18 F(working gr)72 -528 Q(oup in the 1003 series.)-.18 E .426 -(The POSIX Shell and Utilities standar)97 543.6 R 2.926(dh)-.18 G .426 -(as been developed by IEEE W)279.198 543.6 R .426(orking Gr)-.92 F .426 -(oup 1003.2)-.18 F .238 -(\(POSIX.2\).\210 It concentrates on the command interpr)72 555.6 R .238 -(eter interface and utility pr)-.18 F .238(ograms commonly)-.18 F 1.212 -(executed fr)72 567.6 R 1.212(om the command line or by other pr)-.18 F 3.712 -(ograms. An)-.18 F 1.212(initial version of the standar)3.712 F 3.712(dh)-.18 G -(as)494.76 567.6 Q .695(been appr)72 579.6 R .695 -(oved and published by the IEEE, and work is curr)-.18 F .694 -(ently underway to update it.)-.18 F(Ther)5.694 E(e)-.18 E(ar)72 591.6 Q 2.5 -(ef)-.18 G(our primary ar)91.39 591.6 Q(eas of work in the 1003.2 standar)-.18 -E(d:)-.18 E 18.94<8341>72 607.2 S .397 -(spects of the shell's syntax and command language.)104.78 607.2 R 2.897(An) -5.397 G .397(umber of special builtins such as)357.913 607.2 R F2(cd)97 619.2 Q -F3(and)3.144 E F2(exec)3.144 E F3(ar)3.144 E 3.144(eb)-.18 G .644(eing speci\ -\214ed as part of the shell, since their functionality usually cannot)175.586 -619.2 R(be implemented by a separate executable;)97 631.2 Q 18.94<8341>72 646.8 -S .661(set of utilities to be called by shell scripts and applications.)107.94 -646.8 R .661(Examples ar)5.661 F 3.161(ep)-.18 G -.18(ro)447.859 646.8 S .661 -(grams like).18 F F1 3.472(sed, tr)97 658.8 R(,)-.74 E F3(and)5.972 E F1(awk.) -4.306 E F3 1.806(Utilities commonly implemented as shell builtins ar)5.972 F -4.305(ed)-.18 G 1.805(escribed in this)433.67 658.8 R .32 LW 76 668.8 72 668.8 -DL 80 668.8 76 668.8 DL 84 668.8 80 668.8 DL 88 668.8 84 668.8 DL 92 668.8 88 -668.8 DL 96 668.8 92 668.8 DL 100 668.8 96 668.8 DL 104 668.8 100 668.8 DL 108 -668.8 104 668.8 DL 112 668.8 108 668.8 DL 116 668.8 112 668.8 DL 120 668.8 116 -668.8 DL 124 668.8 120 668.8 DL 128 668.8 124 668.8 DL 132 668.8 128 668.8 DL -136 668.8 132 668.8 DL 140 668.8 136 668.8 DL 144 668.8 140 668.8 DL/F5 8 -/Palatino-Roman@0 SF(*An earlier version of this article appear)72 678.8 Q -(ed in The Linux Journal.)-.144 E<87>72 688.8 Q/F6 7/Palatino-Roman@0 SF(UNIX)2 -E F5(is a trademark of Bell Laboratories.)2 E(\210IEEE,)72 698.8 Q/F7 8 -/Palatino-Italic@0 SF 1.14(IEEE Standard for Information T)3.14 F 1.141 -(echnology -- Portable Operating System Interface \(POSIX\) Part 2: Shell and) --.888 F(Utilities)72 708.8 Q F5 2(,1)C(992.)106.672 708.8 Q EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-2-)279.67 48 S .638(section, such as)97 84 R/F1 -10/Palatino-Bold@0 SF(test)3.138 E F0(and)3.138 E F1(kill)3.138 E F0 5.638(.A)C -3.138(ne)240.928 84 S .638 -(xpansion of this section's scope, termed the User Porta-)254.676 84 R -(bility Extension, or UPE, has standar)97 96 Q(dized interactive pr)-.18 E -(ograms such as)-.18 E/F2 10/Palatino-Italic@0 SF(vi)2.5 E F0(and)4.166 E F2 -(mailx;)2.5 E F0 18.94<8341>72 111.6 S(gr)108.58 111.6 Q 1.3 -(oup of functional interfaces to services pr)-.18 F 1.299 -(ovided by the shell, such as the traditional)-.18 F/F3 10/Courier@0 SF -(system\(\))97 123.6 Q F0 3.385(Cl)3.385 G .885(ibrary function.)161.77 123.6 R -(Ther)5.885 E 3.385(ea)-.18 G 1.245 -.18(re f)271.195 123.6 T .885 -(unctions to perform shell wor).18 F 3.385(de)-.18 G .885(xpansions, per) -435.555 123.6 R(-)-.18 E 1.945(form \214lename expansion \()97 135.6 R F2 -(globbing)A F0 1.945(\), obtain values of POSIX.2 system con\214guration vari-) -B(ables, r)97 147.6 Q(etrieve values of envir)-.18 E(onment variables \()-.18 E -F3(getenv\(\))A F0(\), and other services;).833 E 18.94<8341>72 163.2 S -(suite of `)107.28 163.2 Q(`development')-.37 E 2.5('u)-.37 G(tilities such as) -219.63 163.2 Q F2(c89)2.5 E F0(\(the POSIX.2 version of)4.166 E F2(cc)2.5 E F0 -(\), and)A F2(yacc.)2.5 E F0 1.326(Bash is concerned with the aspects of the s\ -hell's behavior de\214ned by POSIX.2.)97 178.8 R 1.326(The shell)6.326 F 1.156 -(command language has of course been standar)72 190.8 R 1.156 -(dized, including the basic \215ow contr)-.18 F 1.156(ol and pr)-.18 F(o-)-.18 -E 1.168(gram execution constr)72 202.8 R 1.168(ucts, I/O r)-.08 F(edir)-.18 E -1.168(ection and pipelining, ar)-.18 F 1.168(gument handling, variable expan-) --.18 F 1(sion, and quoting.)72 214.8 R(The)6 E F2(special)3.5 E F0 .999 -(builtins, which must be implemented as part of the shell to pr)5.166 F(o-)-.18 -E .698(vide the desir)72 226.8 R .698(ed functionality)-.18 F 3.198(,a)-1.11 G -1.059 -.18(re s)213.942 226.8 T .699 -(peci\214ed as being part of the shell; examples of these ar).18 F(e)-.18 E F1 -(eval)3.199 E F0(and)72 238.8 Q F1(export)3.339 E F0 5.839(.O)C .839(ther util\ -ities appear in the sections of POSIX.2 not devoted to the shell which ar) -137.358 238.8 R(e)-.18 E .131(commonly \(and in some cases must be\) implement\ -ed as builtin commands, such as)72 250.8 R F1(read)2.632 E F0(and)2.632 E F1 -(test)2.632 E F0(.)A .408(POSIX.2 also speci\214es aspects of the shell's inte\ -ractive behavior as part of the UPE, including job)72 262.8 R(contr)72 274.8 Q -1.726(ol and command line editing.)-.18 F(Inter)6.726 E 1.726 -(estingly enough, only)-.18 F F2(vi)4.227 E F0 1.727 -(-style line editing commands)B(have been standar)72 286.8 Q(dized;)-.18 E F2 -(emacs)2.5 E F0(editing commands wer)2.5 E 2.5(el)-.18 G -(eft out due to objections.)321.07 286.8 Q .376 -(While POSIX.2 includes much of what the shell has traditionally pr)97 302.4 R -.375(ovided, some important)-.18 F .183(things have been omitted as being `)72 -314.4 R .183(`beyond its scope.')-.37 F 5.184('T)-.37 G(her)324.548 314.4 Q -2.684(ei)-.18 G .184(s, for instance, no mention of a dif-)349.312 314.4 R(fer) -72 326.4 Q 1.325(ence between a)-.18 F F2(login)3.825 E F0 1.325 -(shell and any other interactive shell \(since POSIX.2 does not specify a)5.491 -F .068(login pr)72 338.4 R 2.568(ogram\). No)-.18 F .068 -(\214xed startup \214les ar)2.568 F 2.568(ed)-.18 G .068 -(e\214ned, either \255 the standar)264.836 338.4 R 2.569(dd)-.18 G .069 -(oes not mention)398.607 338.4 R F2(.pr)2.569 E(o\214le)-.18 E F0(.)1.666 E F1 -2.5(3. Basic)72 362.4 R(Bash features)2.5 E F0 1.359(Since the Bourne shell pr) -97 378 R 1.358(ovides Bash with most of its philosophical underpinnings, Bash) --.18 F .721(inherits most of its featur)72 390 R .721(es and functionality fr) --.18 F .721(om sh.)-.18 F .722(Bash implements all of the traditional sh)5.721 -F 1.342(\215ow contr)72 402 R 1.342(ol constr)-.18 F 1.342(ucts \()-.08 F F2 -(for)A F0(,)A F2(if)3.842 E F0(,)A F2(while)3.842 E F0 3.842(,e)C 3.842 -(tc.\). All)245.072 402 R 1.342 -(of the Bourne shell builtins, including those not)3.842 F .034 -(speci\214ed in the POSIX.2 standar)72 414 R .034(d, appear in Bash.)-.18 F -(Shell)5.034 E F2(functions)2.534 E F0 2.534(,i)C(ntr)368.5 414 Q .035 -(oduced in the SVR2 version)-.18 F .237(of the Bourne shell, ar)72 426 R 2.736 -(es)-.18 G .236(imilar to shell scripts, but ar)181.472 426 R 2.736(ed)-.18 G -.236(e\214ned using a special syntax and ar)319.828 426 R 2.736(ee)-.18 G(xe-) -490.72 426 Q .276(cuted in the same pr)72 438 R .276 -(ocess as the calling shell.)-.18 F .277 -(Bash has shell functions which behave in a fashion)5.276 F(upwar)72 450 Q .114 -(d-compatible with sh functions.)-.18 F(Ther)5.114 E 2.614(ea)-.18 G .474 -.18 -(re c)279.8 450 T .114(ertain shell variables that Bash interpr).18 F .113 -(ets in the)-.18 F .975(same way as sh, such as)72 462 R F1(PS1)3.475 E F0(,)A -F1(IFS)3.475 E F0 3.475(,a)C(nd)235.91 462 Q F1 -.74(PA)3.475 G(TH)-.18 E F0 -5.975(.B)C .976(ash implements essentially the same grammar)293.13 462 R(,)-.74 -E .025(parameter and variable expansion semantics, r)72 474 R(edir)-.18 E .025 -(ection, and quoting as the Bourne shell.)-.18 F(Wher)5.025 E(e)-.18 E(dif)72 -486 Q(fer)-.18 E 2.74(ences appear between the POSIX.2 standar)-.18 F 5.24(da) --.18 G 2.74(nd traditional sh behavior)314.53 486 R 5.24(,B)-.74 G 2.74 -(ash follows)451.05 486 R(POSIX.)72 498 Q .494(The Korn Shell \()97 513.6 R F1 -(ksh)A F0 2.994(\)i)C 2.994(sad)196.116 513.6 S .494 -(escendent of the Bourne shell written at A)217.454 513.6 R .494 -(T&T Bell Laboratories)-.74 F 1.435(by David Korn\207.)72 525.6 R 1.435(It pr) -6.435 F 1.435(ovides a number of useful featur)-.18 F 1.436 -(es that POSIX and Bash have adopted.)-.18 F .87 -(Many of the interactive facilities in POSIX.2 have their r)72 537.6 R .869 -(oots in the ksh: for example, the POSIX)-.18 F .85(and ksh job contr)72 549.6 -R .85(ol facilities ar)-.18 F 3.351(en)-.18 G .851 -(early identical. Bash includes featur)225.181 549.6 R .851(es fr)-.18 F .851 -(om the Korn Shell for)-.18 F .564(both interactive use and shell pr)72 561.6 R -3.063(ogramming. For)-.18 F(pr)3.063 E .563(ogramming, Bash pr)-.18 F .563 -(ovides variables such as)-.18 F F1(RANDOM)72 573.6 Q F0(and)2.768 E F1(REPL) -2.768 E(Y)-.92 E F0 2.768(,t)C(he)184.284 573.6 Q F1(typeset)2.768 E F0 .268 -(builtin, the ability to r)2.768 F .269(emove substrings fr)-.18 F .269 -(om variables based)-.18 F .582(on patterns, and shell arithmetic.)72 585.6 R -F1(RANDOM)5.582 E F0 .581(expands to a random number each time it is r)3.081 F -(efer)-.18 E(-)-.18 E 2.583(enced; assigning a value to)72 597.6 R F1(RANDOM) -5.083 E F0 2.583(seeds the random number generator)5.083 F(.)-.74 E F1(REPL) -7.583 E(Y)-.92 E F0 2.584(is the)5.083 F .034(default variable used by the)72 -609.6 R F1(read)2.534 E F0 .034(builtin when no variable names ar)2.534 F 2.534 -(es)-.18 G .034(upplied as ar)383.348 609.6 R 2.534(guments. The)-.18 F F1 -(typeset)72 621.6 Q F0 .416 -(builtin is used to de\214ne variables and give them attributes such as)2.916 F -F1(readonly)2.916 E F0 5.416(.B)C .416(ash arith-)461.754 621.6 R 1.31 -(metic allows the evaluation of an expr)72 633.6 R 1.31 -(ession and the substitution of the r)-.18 F 3.81(esult. Shell)-.18 F -(variables)3.81 E .561(may be used as operands, and the r)72 645.6 R .561 -(esult of an expr)-.18 F .561(ession may be assigned to a variable.)-.18 F -(Nearly)5.562 E(all of the operators fr)72 657.6 Q(om the C language ar)-.18 E -2.5(ea)-.18 G(vailable, with the same pr)271.68 657.6 Q(ecedence r)-.18 E -(ules:)-.08 E F3 6($e)97 675.6 S(cho $\(\(3 + 5 * 32\)\))115 675.6 Q(163)97 -687.6 Q .32 LW 76 698 72 698 DL 80 698 76 698 DL 84 698 80 698 DL 88 698 84 698 -DL 92 698 88 698 DL 96 698 92 698 DL 100 698 96 698 DL 104 698 100 698 DL 108 -698 104 698 DL 112 698 108 698 DL 116 698 112 698 DL 120 698 116 698 DL 124 698 -120 698 DL 128 698 124 698 DL 132 698 128 698 DL 136 698 132 698 DL 140 698 136 -698 DL 144 698 140 698 DL/F4 8/Palatino-Roman@0 SF -(\207Morris Bolsky and David Korn,)72 708 Q/F5 8/Palatino-Italic@0 SF -(The KornShell Command and Pr)2 E(ogramming Language)-.144 E F4 2(,P)C -.144 -(re)374.688 708 S(ntice Hall, 1989.).144 E EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-3-)279.67 48 S .953 -(For interactive use, Bash implements ksh-style aliases and builtins such as)72 -84 R/F1 10/Palatino-Bold@0 SF(fc)3.453 E F0 .953(\(discussed below\))3.453 F -(and)72 96 Q F1(jobs)2.603 E F0 5.103(.B)C .104 -(ash aliases allow a string to be substituted for a command name.)124.686 96 R -.104(They can be used to)5.104 F(cr)72 108 Q .936(eate a mnemonic for a)-.18 F -/F2 9/Palatino-Roman@0 SF(UNIX)3.435 E F0 .935(command name \()3.435 F/F3 10 -/Courier@0 SF .935(alias del=rm)B F0 .935(\), to expand a single wor)B 3.435 -(dt)-.18 G 3.435(oa)490.105 108 S 1.465(complex command \()72 120 R F3 1.465 -(alias news='xterm -g 80x45 -title trn -e trn -e -S1 -N)B(&')72 132 Q F0 .738 -(\), or to ensur)B 3.238(et)-.18 G .737 -(hat a command is invoked with a basic set of options \()153.612 132 R F3 .737 -(alias ls="/bin/ls)B(-F")72 144 Q F0(\).)A .4(The C shell \()97 159.6 R F1(csh) -A F0 .401(\)\207, originally written by Bill Joy while at Berkeley)B 2.901(,i) --1.11 G 2.901(sw)396.846 159.6 S .401(idely used and quite)412.327 159.6 R .002 -(popular for its interactive facilities.)72 171.6 R .002 -(Bash includes a csh-compatible history expansion mechanism)5.002 F(\(`)72 -183.6 Q 2.058(`! history')-.37 F 2.058 -('\), brace expansion, access to a stack of dir)-.37 F 2.058(ectories via the) --.18 F F1(pushd)4.558 E F0(,)A F1(popd)4.558 E F0 4.558(,a)C(nd)469.742 183.6 Q -F1(dirs)4.558 E F0 .648 -(builtins, and tilde expansion, to generate users' home dir)72 195.6 R 3.148 -(ectories. T)-.18 F .647(ilde expansion has also been)-.55 F -(adopted by both the Korn Shell and POSIX.2.)72 207.6 Q(Ther)97 223.2 Q 2.98 -(ew)-.18 G(er)133.62 223.2 Q 2.98(ec)-.18 G .48(ertain ar)154.39 223.2 R .48 -(eas in which POSIX.2 felt standar)-.18 F .48(dization was necessary)-.18 F -2.98(,b)-1.11 G .48(ut no exist-)453.78 223.2 R 1.061(ing implementation pr)72 -235.2 R 1.062(ovided the pr)-.18 F 1.062(oper behavior)-.18 F 6.062(.T)-.74 G -1.062(he working gr)312.43 235.2 R 1.062(oup invented and standar)-.18 F(d-) --.18 E .279(ized functionality in these ar)72 247.2 R .279 -(eas, which Bash implements.)-.18 F(The)5.278 E F1(command)2.778 E F0 .278 -(builtin was invented so)2.778 F 1.376 -(that shell functions could be written to r)72 259.2 R 1.376 -(eplace builtins; it makes the capabilities of the builtin)-.18 F .477 -(available to the function.)72 271.2 R .477(The r)5.477 F .477(eserved wor)-.18 -F 2.977(d`)-.18 G(`!')278.12 271.2 Q 2.977('w)-.37 G .477 -(as added to negate the r)300.187 271.2 R .477(eturn value of a com-)-.18 F -1.09(mand or pipeline; it was nearly impossible to expr)72 283.2 R 1.09(ess `) --.18 F 1.09(`if not x')-.37 F 3.59('c)-.37 G 1.09 -(leanly using the sh language.)370.99 283.2 R(Ther)72 295.2 Q 3.684(ee)-.18 G -1.183(xist multiple incompatible implementations of the)105.774 295.2 R F1 -(test)3.683 E F0 1.183(builtin, which tests \214les for type)3.683 F .38 -(and other attributes and performs arithmetic and string comparisons.)72 307.2 -R .38(POSIX consider)5.38 F .38(ed none of)-.18 F .469(these corr)72 319.2 R -.468(ect, so the standar)-.18 F 2.968(db)-.18 G .468 -(ehavior was speci\214ed in terms of the number of ar)210.762 319.2 R .468 -(guments to the)-.18 F 2.52(command. POSIX.2)72 331.2 R .021 -(dictates exactly what will happen when four or fewer ar)2.52 F .021 -(guments ar)-.18 F 2.521(eg)-.18 G .021(iven to)473.589 331.2 R F1(test)72 -343.2 Q F0 4.905(,a)C 2.405(nd leaves the behavior unde\214ned when mor)100.505 -343.2 R 4.905(ea)-.18 G -.18(rg)325.27 343.2 S 2.404(uments ar).18 F 4.904(es) --.18 G 4.904(upplied. Bash)395.178 343.2 R 2.404(uses the)4.904 F -(POSIX.2 algorithm, which was conceived by David Korn.)72 355.2 Q F1 2.5 -(3.1. Features)72 379.2 R(not in the Bourne Shell)2.5 E F0(Ther)97 394.8 Q -3.958(ea)-.18 G 1.818 -.18(re a n)131.258 394.8 T 1.458(umber of minor dif).18 -F(fer)-.18 E 1.458(ences between Bash and the version of sh pr)-.18 F 1.458 -(esent on)-.18 F .503(most other versions of)72 406.8 R F2(UNIX)3.003 E F0 -5.503(.T)C .503(he majority of these ar)212.582 406.8 R 3.002(ed)-.18 G .502 -(ue to the POSIX standar)326.876 406.8 R .502(d, but some ar)-.18 F(e)-.18 E -1.173(the r)72 418.8 R 1.173(esult of Bash adopting featur)-.18 F 1.173(es fr) --.18 F 1.173(om other shells.)-.18 F 1.174 -(For instance, Bash includes the new `)6.173 F(`!')-.37 E(')-.37 E -.18(re)72 -430.8 S .414(served wor).18 F .414(d, the)-.18 F F1(command)2.913 E F0 .413 -(builtin, the ability of the)2.913 F F1(read)2.913 E F0 .413(builtin to corr) -2.913 F .413(ectly r)-.18 F .413(eturn a line end-)-.18 F 1.635 -(ing with a backslash, symbolic ar)72 442.8 R 1.635(guments to the)-.18 F F1 -(umask)4.135 E F0 1.636(builtin, variable substring r)4.136 F 1.636(emoval, a) --.18 F .791(way to get the length of a variable, and the new algorithm for the) -72 454.8 R F1(test)3.29 E F0 .79(builtin fr)3.29 F .79(om the POSIX.2)-.18 F -(standar)72 466.8 Q(d, none of which appear in sh.)-.18 E 1.408 -(Bash also implements the `)97 482.4 R(`$\(...\)')-.37 E 3.908('c)-.37 G 1.408 -(ommand substitution syntax, which supersedes the sh)255.56 482.4 R .54 -(`...` constr)72 494.4 R 3.04(uct. The)-.08 F -.37(``)3.04 G($\(...\)').37 E -3.04('c)-.37 G(onstr)193.76 494.4 Q .54 -(uct expands to the output of the command contained within the)-.08 F(par)72 -506.4 Q .708(entheses, with trailing newlines r)-.18 F 3.208(emoved. The)-.18 F -.709(sh syntax is accepted for backwar)3.208 F .709(ds compati-)-.18 F(bility) -72 518.4 Q 2.901(,b)-1.11 G .401(ut the `)104.901 518.4 R(`$\(...\)')-.37 E -2.901('f)-.37 G .401(orm is pr)169.634 518.4 R(eferr)-.18 E .401 -(ed because its quoting r)-.18 F .4(ules ar)-.08 F 2.9(em)-.18 G .4 -(uch simpler and it is easier)383.64 518.4 R(to nest.)72 530.4 Q .697 -(The Bourne shell does not pr)97 546 R .697(ovide such featur)-.18 F .698 -(es as brace expansion, the ability to de\214ne a)-.18 F 2.079(variable and a \ -function with the same name, local variables in shell functions, the ability t\ -o)72 558 R 1.933 -(enable and disable individual builtins or write a function to r)72 570 R 1.933 -(eplace a builtin, or a means to)-.18 F(export a shell function to a child pr) -72 582 Q(ocess.)-.18 E 1.019 -(Bash has closed a long-standing shell security hole by not using the)97 597.6 -R F1($IFS)3.518 E F0 1.018(variable to split)3.518 F .861(each wor)72 609.6 R -3.361(dr)-.18 G .861(ead by the shell, but splitting only the r)126.222 609.6 R -.861(esults of expansion \(ksh and the 4.4 BSD sh)-.18 F .337 -(have \214xed this as well\).)72 621.6 R .337 -(Useful behavior such as a means to abort execution of a script r)5.337 F .336 -(ead with)-.18 F .282(the `)72 633.6 R(`.')-.37 E 2.782('c)-.37 G .283 -(ommand using the)108.754 633.6 R F1(return)2.783 E F0 .283 -(builtin or automatically exporting variables in the shell's envi-)2.783 F -.18 -(ro)72 645.6 S .166(nment to childr).18 F .166(en is also not pr)-.18 F .166 -(esent in the Bourne shell.)-.18 F .165(Bash pr)5.165 F .165(ovides a much mor) --.18 F 2.665(ep)-.18 G(owerful)469.19 645.6 Q(envir)72 657.6 Q -(onment for both interactive use and pr)-.18 E(ogramming.)-.18 E .32 LW 76 688 -72 688 DL 80 688 76 688 DL 84 688 80 688 DL 88 688 84 688 DL 92 688 88 688 DL -96 688 92 688 DL 100 688 96 688 DL 104 688 100 688 DL 108 688 104 688 DL 112 -688 108 688 DL 116 688 112 688 DL 120 688 116 688 DL 124 688 120 688 DL 128 688 -124 688 DL 132 688 128 688 DL 136 688 132 688 DL 140 688 136 688 DL 144 688 140 -688 DL/F4 8/Palatino-Roman@0 SF 1.489(\207Bill Joy)72 698 R 3.489(,A)-.888 G -3.489(nI)113.666 698 S(ntr)124.507 698 Q 1.489(oduction to the C Shell,)-.144 F -/F5 8/Palatino-Italic@0 SF 1.489(UNIX User)3.489 F 2.369 -.44('s S).296 H 1.489 -(upplementary Documents).44 F F4 3.489(,U)C 1.489(niversity of California at) -377.116 698 R(Berkeley)72 708 Q 2(,1)-.888 G(986.)109.88 708 Q EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-4-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5 -(4. Bash-speci\214c)72 84 R(Features)2.5 E F0 .897 -(This section details a few of the featur)97 99.6 R .897 -(es which make Bash unique.)-.18 F .898(Most of them pr)5.898 F(ovide)-.18 E -(impr)72 111.6 Q 2.913(oved interactive use, but a few pr)-.18 F 2.912 -(ogramming impr)-.18 F 2.912(ovements ar)-.18 F 5.412(ep)-.18 G -.18(re)410.494 -111.6 S 2.912(sent as well.).18 F(Full)7.912 E(descriptions of these featur)72 -123.6 Q(es can be found in the Bash documentation.)-.18 E F1 2.5(4.1. Startup) -72 147.6 R(Files)2.5 E F0 .207(Bash executes startup \214les dif)97 163.2 R -(fer)-.18 E .207(ently than other shells.)-.18 F .207 -(The Bash behavior is a compr)5.207 F(omise)-.18 E 1.451(between the csh princ\ -iple of startup \214les with \214xed names executed for each shell and the sh) -72 175.2 R -.37(``)72 187.2 S(minimalist').37 E 2.677('b)-.37 G(ehavior)138.207 -187.2 Q 5.177(.A)-.74 G 2.678(ni)186.504 187.2 S .178 -(nteractive instance of Bash started as a login shell r)197.912 187.2 R .178 -(eads and executes)-.18 F/F2 10/Palatino-Italic@0 SF(~/.bash_pr)72 199.2 Q -(o\214le)-.18 E F0 .521(\(the \214le .bash_pr)4.687 F .52(o\214le in the user) --.18 F .52('s home dir).74 F .52(ectory\), if it exists.)-.18 F .52 -(An interactive non-)5.52 F 1.692(login shell r)72 211.2 R 1.692 -(eads and executes)-.18 F F2(~/.bashr)4.192 E(c)-.18 E F0 6.692(.A)1.666 G -1.693(non-interactive shell \(one begun to execute a shell)271.99 211.2 R .56 -(script, for example\) r)72 223.2 R .559 -(eads no \214xed startup \214le, but uses the value of the variable)-.18 F F1 -($ENV)3.059 E F0 3.059(,i)C 3.059(fs)470.522 223.2 S .559(et, as)481.151 223.2 -R .06(the name of a startup \214le.)72 235.2 R .061(The ksh practice of r)5.06 -F(eading)-.18 E F1($ENV)2.561 E F0 .061(for every shell, with the accompany-) -2.561 F 1.309(ing dif)72 247.2 R 1.309(\214culty of de\214ning the pr)-.18 F -1.308(oper variables and functions for interactive and non-interactive)-.18 F -.385(shells or having the \214le r)72 259.2 R .385 -(ead only for interactive shells, was consider)-.18 F .385(ed too complex.)-.18 -F .385(Ease of use)5.385 F .252(won out her)72 271.2 R 2.752(e. Inter)-.18 F -(estingly)-.18 E 2.752(,t)-1.11 G .251(he next r)202.258 271.2 R .251 -(elease of ksh will change to r)-.18 F(eading)-.18 E F1($ENV)2.751 E F0 .251 -(only for interac-)2.751 F(tive shells.)72 283.2 Q F1 2.5(4.2. New)72 307.2 R -(Builtin Commands)2.5 E F0(Ther)97 322.8 Q 3.077(ea)-.18 G .937 -.18(re a f) -130.377 322.8 T .577(ew builtins which ar).18 F 3.077(en)-.18 G .578 -(ew or have been extended in Bash.)259.179 322.8 R(The)5.578 E F1(enable)3.078 -E F0(builtin)3.078 E .073(allows builtin commands to be turned on and of)72 -334.8 R 2.573(fa)-.18 G(rbitrarily)296.267 334.8 Q 5.073(.T)-1.11 G 2.573(ou) -347.87 334.8 S .073(se the version of)361.933 334.8 R F2(echo)2.573 E F0 .073 -(found in a)4.239 F -1.76(user 's)72 346.8 R(sear)2.755 E .255 -(ch path rather than the Bash builtin,)-.18 F/F3 10/Courier@0 SF .255 -(enable -n echo)2.755 F F0(suf)2.756 E 2.756(\214ces. The)-.18 F F1(help)2.756 -E F0 .256(builtin pr)2.756 F(o-)-.18 E .618 -(vides quick synopses of the shell facilities without r)72 358.8 R .618 -(equiring access to a manual page.)-.18 F F1(Builtin)5.618 E F0(is)3.118 E .955 -(similar to)72 370.8 R F1(command)3.455 E F0 .955 -(in that it bypasses shell functions and dir)3.455 F .956 -(ectly executes builtin commands.)-.18 F 2.025 -(Access to a csh-style stack of dir)72 382.8 R 2.025(ectories is pr)-.18 F -2.025(ovided via the)-.18 F F1(pushd)4.524 E F0(,)A F1(popd)4.524 E F0 4.524 -(,a)C(nd)429.142 382.8 Q F1(dirs)4.524 E F0(builtins.)4.524 E F1(Pushd)72 394.8 -Q F0(and)4.255 E F1(popd)4.255 E F0 1.755(insert and r)4.255 F 1.756(emove dir) --.18 F 1.756(ectories fr)-.18 F 1.756(om the stack, r)-.18 F(espectively)-.18 E -4.256(,a)-1.11 G(nd)430.102 394.8 Q F1(dirs)4.256 E F0 1.756(lists the)4.256 F -.458(stack contents.)72 406.8 R .457 -(On systems that allow \214ne-grained contr)5.458 F .457(ol of r)-.18 F(esour) --.18 E .457(ces, the)-.18 F F1(ulimit)2.957 E F0 .457(builtin can be)2.957 F -1.216(used to tune these settings.)72 418.8 R F1(Ulimit)6.216 E F0 1.216 -(allows a user to contr)3.716 F 1.216(ol, among other things, whether cor)-.18 -F(e)-.18 E .306(dumps ar)72 430.8 R 2.806(et)-.18 G 2.806(ob)125.652 430.8 S -2.806(eg)139.448 430.8 S .306 -(enerated, how much memory the shell or a child pr)152.604 430.8 R .306 -(ocess is allowed to allocate,)-.18 F .991(and how lar)72 442.8 R .991 -(ge a \214le cr)-.18 F .991(eated by a child pr)-.18 F .991(ocess can gr)-.18 F -(ow)-.18 E 5.991(.T)-.92 G(he)343.212 442.8 Q F1(suspend)3.491 E F0 .992 -(command will stop the)3.491 F .532(shell pr)72 454.8 R .532 -(ocess when job contr)-.18 F .532 -(ol is active; most other shells do not allow themselves to be stopped)-.18 F -.339(like that.)72 466.8 R F1 -.9(Ty)5.339 G(pe,).9 E F0 .339 -(the Bash answer to)2.839 F F1(which)2.839 E F0(and)2.839 E F1(whence,)2.839 E -F0 .34(shows what will happen when a wor)2.839 F 2.84(di)-.18 G(s)499.76 466.8 -Q(typed as a command:)72 478.8 Q F3 6($t)97 496.8 S(ype export)115 496.8 Q -(export is a shell builtin)97 508.8 Q 6($t)97 520.8 S(ype -t export)115 520.8 Q -(builtin)97 532.8 Q 6($t)97 544.8 S(ype bash)115 544.8 Q(bash is /bin/bash)97 -556.8 Q 6($t)97 568.8 S(ype cd)115 568.8 Q(cd is a function)97 580.8 Q(cd \(\)) -97 592.8 Q({)97 604.8 Q(builtin cd ${1+"$@"} && xtitle $HOST: $PWD)121 616.8 Q -(})97 628.8 Q F0 -.92(Va)72 650.4 S 1.138(rious modes tell what a command wor) -.92 F 3.638(di)-.18 G 3.638(s\()273.156 650.4 S -.18(re)284.364 650.4 S 1.138 -(served wor).18 F 1.138(d, alias, function, builtin, or \214le\) or)-.18 F .596 -(which version of a command will be executed based on a user)72 662.4 R .597 -('s sear).74 F .597(ch path.)-.18 F .597(Some of this func-)5.597 F -(tionality has been adopted by POSIX.2 and folded into the)72 674.4 Q F1 -(command)2.5 E F0(utility)2.5 E(.)-1.11 E EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-5-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5 -(4.3. Editing)72 84 R(and Completion)2.5 E F0 1.094(One ar)97 99.6 R 1.094 -(ea in which Bash shines is command line editing.)-.18 F 1.093(Bash uses the) -6.093 F/F2 10/Palatino-Italic@0 SF -.18(re)3.593 G(adline).18 E F0 1.093 -(library to)5.259 F -.18(re)72 111.6 S .27(ad and edit lines when interactive.) -.18 F .271(Readline is a powerful and \215exible input facility that a user) -5.27 F .013(can con\214gur)72 123.6 R 2.513(et)-.18 G 2.513(oi)137.466 123.6 S -.013(ndividual tastes.)148.349 123.6 R .012 -(It allows lines to be edited using either emacs or vi commands,)5.013 F(wher) -72 135.6 Q 3.039(et)-.18 G .539(hose commands ar)105.809 135.6 R 3.039(ea)-.18 -G(ppr)202.526 135.6 Q 3.039(opriate. The)-.18 F .539 -(full capability of emacs is not pr)3.039 F .54(esent \255 ther)-.18 F 3.04(ei) --.18 G 3.04(sn)485.44 135.6 S(o)498.54 135.6 Q .421(way to execute a named com\ -mand with M-x, for instance \255 but the existing commands ar)72 147.6 R 2.921 -(em)-.18 G(or)489.98 147.6 Q(e)-.18 E 2.773(than adequate.)72 159.6 R 2.773 -(The vi mode is compliant with the command line editing standar)7.773 F 2.774 -(dized by)-.18 F(POSIX.2.)72 171.6 Q 1.222(Readline is fully customizable.)97 -187.2 R 1.221(In addition to the basic commands and key bindings, the)6.222 F -.263(library allows users to de\214ne additional key bindings using a startup \ -\214le.)72 199.2 R(The)5.263 E F2(inputr)2.763 E(c)-.18 E F0 .263 -(\214le, which)4.429 F .519(defaults to the \214le)72 211.2 R F2(~/.inputr) -3.019 E(c)-.18 E F0 3.019(,i)1.666 G 3.019(sr)204.981 211.2 S .519 -(ead each time r)216.01 211.2 R .519 -(eadline initializes, permitting users to maintain a)-.18 F 1.084 -(consistent interface acr)72 223.2 R 1.084(oss a set of pr)-.18 F 3.585 -(ograms. Readline)-.18 F 1.085(includes an extensible interface, so each)3.585 -F(pr)72 235.2 Q .885 -(ogram using the library can add its own bindable commands and pr)-.18 F .885 -(ogram-speci\214c key bind-)-.18 F 2.844(ings. Bash)72 247.2 R .345(uses this \ -facility to add bindings that perform history expansion or shell wor)2.844 F -2.845(de)-.18 G(xpan-)478.68 247.2 Q(sions on the curr)72 259.2 Q -(ent input line.)-.18 E .164(Readline interpr)97 274.8 R .163 -(ets a number of variables which further tune its behavior)-.18 F 5.163(.V)-.74 -G .163(ariables exist to)435.264 274.8 R(contr)72 286.8 Q 2.503 -(ol whether or not eight-bit characters ar)-.18 F 5.003(ed)-.18 G(ir)300.789 -286.8 Q 2.503(ectly r)-.18 F 2.503(ead as input or converted to meta-)-.18 F -(pr)72 298.8 Q .076(e\214xed key sequences \(a meta-pr)-.18 F .076 -(e\214xed key sequence consists of the character with the eighth bit)-.18 F -(zer)72 310.8 Q .204(oed, pr)-.18 F .204(eceded by the)-.18 F F2(meta-pr)2.704 -E(e\214x)-.18 E F0(character)4.37 E 2.704(,u)-.74 G .205 -(sually escape, which selects an alternate keymap\),)282.17 310.8 R .76 -(to decide whether to output characters with the eighth bit set dir)72 322.8 R -.759(ectly or as a meta-pr)-.18 F .759(e\214xed key)-.18 F .19 -(sequence, whether or not to wrap to a new scr)72 334.8 R .191 -(een line when a line being edited is longer than the)-.18 F(scr)72 346.8 Q -.099(een width, the keymap to which subsequent key bindings should apply)-.18 F -2.598(,o)-1.11 G 2.598(re)411.096 346.8 S .098(ven what happens)422.434 346.8 R -1.031(when r)72 358.8 R 1.031(eadline wants to ring the terminal's bell.)-.18 F -1.031(All of these variables can be set in the inputr)6.031 F(c)-.18 E(\214le.) -72 370.8 Q .239(The startup \214le understands a set of C pr)97 386.4 R(epr) --.18 E(ocessor)-.18 E .238(-like conditional constr)-.18 F .238 -(ucts which allow)-.08 F 1.431 -(variables or key bindings to be assigned based on the application using r)72 -398.4 R 1.432(eadline, the terminal)-.18 F(curr)72 410.4 Q 1.676 -(ently being used, or the editing mode.)-.18 F 1.676(Users can add pr)6.676 F -1.676(ogram-speci\214c bindings to make)-.18 F .478(their lives easier:)72 -422.4 R 2.978(Ih)5.478 G .478(ave bindings that let me edit the value of) -165.012 422.4 R F1($P)2.978 E -.92(AT)-.74 G(H).92 E F0 .479 -(and double-quote the cur)2.979 F(-)-.18 E -.18(re)72 434.4 S(nt or pr).18 E -(evious wor)-.18 E(d:)-.18 E/F3 10/Courier@0 SF 6(#M)97 452.4 S -(acros that are convenient for shell interaction)115 452.4 Q($if Bash)97 464.4 -Q 6(#e)97 476.4 S(dit the path)115 476.4 Q -("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 488.4 Q 6(#p)97 500.4 S -(repare to type a quoted word -- insert open and close double)115 500.4 Q 6(#q) -97 512.4 S(uotes and move to just after the open quote)115 512.4 Q -("\\C-x\\"": "\\"\\"\\C-b")97 524.4 Q 6(#Q)97 536.4 S -(uote the current or previous word)115 536.4 Q("\\C-xq": "\\eb\\"\\ef\\"")97 -548.4 Q($endif)97 560.4 Q F0(Ther)72 582 Q 3.06(ei)-.18 G 3.06(sar)103.27 582 S -.56(eadline command to r)122.4 582 R(e-r)-.18 E .559 -(ead the \214le, so users can edit the \214le, change some bindings,)-.18 F -(and begin to use them almost immediately)72 594 Q(.)-1.11 E .701 -(Bash implements the)97 609.6 R F1(bind)3.201 E F0 .701(builtin for mor)3.201 F -3.201(ed)-.18 G .701(yamic contr)299.567 609.6 R .702(ol of r)-.18 F .702 -(eadline than the startup \214le)-.18 F(permits.)72 621.6 Q F1(Bind)5.572 E F0 -.572(is used in several ways.)3.072 F(In)5.572 E F2(list)3.071 E F0 .571 -(mode, it can display the curr)4.737 F .571(ent key bindings, list)-.18 F .752 -(all the r)72 633.6 R .752(eadline editing dir)-.18 F .752 -(ectives available for binding, list which keys invoke a given dir)-.18 F -(ective,)-.18 E 1.327(or output the curr)72 645.6 R 1.327 -(ent set of key bindings in a format that can be incorporated dir)-.18 F 1.327 -(ectly into an)-.18 F(inputr)72 657.6 Q 3.075<638c>-.18 G 3.075(le. In)113.365 -657.6 R F2(batch)3.075 E F0 .575(mode, it r)4.741 F .575 -(eads a series of key bindings dir)-.18 F .575(ectly fr)-.18 F .576 -(om a \214le and passes them)-.18 F .751(to r)72 669.6 R 3.251(eadline. In)-.18 -F .751(its most common usage,)3.251 F F1(bind)3.251 E F0 .75 -(takes a single string and passes it dir)3.251 F .75(ectly to r)-.18 F(ead-) --.18 E .604(line, which interpr)72 681.6 R .604 -(ets the line as if it had just been r)-.18 F .605(ead fr)-.18 F .605 -(om the inputr)-.18 F 3.105<638c>-.18 G 3.105(le. Both)406.525 681.6 R .605 -(key bindings)3.105 F -(and variable assignments may appear in the string given to)72 693.6 Q F1(bind) -2.5 E F0(.)A 1.692(The r)97 709.2 R 1.691(eadline library also pr)-.18 F 1.691 -(ovides an interface for)-.18 F F2 1.691(word completion)4.191 F F0 6.691(.W)C -1.691(hen the)419.582 709.2 R F2(completion)4.191 E F0 3.377 -(character \(usually T)72 721.2 R 3.377(AB\) is typed, r)-.74 F 3.378 -(eadline looks at the wor)-.18 F 5.878(dc)-.18 G(urr)375.406 721.2 Q 3.378 -(ently being enter)-.18 F 3.378(ed and)-.18 F EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-6-)279.67 48 S .089 -(computes the set of \214lenames of which the curr)72 84 R .088(ent wor)-.18 F -2.588(di)-.18 G 2.588(sav)326.968 84 S .088(alid pr)347.034 84 R 2.588 -(e\214x. If)-.18 F(ther)2.588 E 2.588(ei)-.18 G 2.588(so)437.136 84 S .088 -(nly one pos-)449.424 84 R .81(sible completion, the r)72 96 R .81 -(est of the characters ar)-.18 F 3.31(ei)-.18 G .81(nserted dir)285.2 96 R -(ectly)-.18 E 3.31(,o)-1.11 G .81(therwise the common pr)365.38 96 R .81 -(e\214x of)-.18 F .715(the set of \214lenames is added to the curr)72 108 R -.715(ent wor)-.18 F 3.215(d. A)-.18 F .714(second T)3.214 F .714 -(AB character enter)-.74 F .714(ed immediately)-.18 F .527 -(after a non-unique completion causes r)72 120 R .527 -(eadline to list the possible completions; ther)-.18 F 3.027(ei)-.18 G 3.028 -(sa)453.964 120 S 3.028(no)466.232 120 S(ption)480.54 120 Q .265 -(to have the list displayed immediately)72 132 R 5.265(.R)-1.11 G .265 -(eadline pr)255.87 132 R .264(ovides hooks so that applications can pr)-.18 F -(ovide)-.18 E 1.287(speci\214c types of completion befor)72 144 R 3.787(et)-.18 -G 1.287(he default \214lename completion is attempted.)237.284 144 R 1.287 -(This is quite)6.287 F 1.378(\215exible, though it is not completely user)72 -156 R(-pr)-.18 E 3.877(ogrammable. Bash,)-.18 F 1.377 -(for example, can complete \214le-)3.877 F 1.456 -(names, command names \(including aliases, builtins, shell r)72 168 R 1.457 -(eserved wor)-.18 F 1.457(ds, shell functions, and)-.18 F .598(executables fou\ -nd in the \214le system\), shell variables, usernames, and hostnames.)72 180 R -.598(It uses a set of)5.598 F .346(heuristics that, while not perfect, is gene\ -rally quite good at determining what type of completion)72 192 R(to attempt.)72 -204 Q/F1 10/Palatino-Bold@0 SF 2.5(4.4. History)72 228 R F0 .487 -(Access to the list of commands pr)97 243.6 R .487(eviously enter)-.18 F .487 -(ed \(the)-.18 F/F2 10/Palatino-Italic@0 SF .487(command history)2.987 F F0 -2.987(\)i)C 2.987(sp)424.717 243.6 S -.18(ro)437.954 243.6 S .486 -(vided jointly).18 F .577(by Bash and the r)72 255.6 R .577(eadline library) --.18 F 5.577(.B)-1.11 G .578(ash pr)229.432 255.6 R .578(ovides variables \() --.18 F F1($HISTFILE)A F0(,)A F1($HISTSIZE)3.078 E F0 3.078(,a)C(nd)456.582 -255.6 Q F1($HIST)3.078 E(-)-.92 E(CONTROL)72 267.6 Q F0 3.306(\)a)C .806 -(nd the)135.846 267.6 R F1(history)3.306 E F0(and)3.306 E F1(fc)3.306 E F0 .805 -(builtins to manipulate the history list.)3.305 F .805(The value of)5.805 F F1 -($HIST)3.305 E(-)-.92 E(FILE)72 279.6 Q F0 1.393(specifes the \214le wher)3.893 -F 3.893(eB)-.18 G 1.393(ash writes the command history on exit and r)209.125 -279.6 R 1.394(eads it on startup.)-.18 F F1($HISTSIZE)72 291.6 Q F0 1.295 -(is used to limit the number of commands saved in the history)3.795 F(.)-1.11 E -F1($HISTCONTROL)6.294 E F0(pr)72 303.6 Q .778(ovides a cr)-.18 F .779 -(ude form of contr)-.08 F .779(ol over which commands ar)-.18 F 3.279(es)-.18 G -.779(aved on the history list: a value of)349.157 303.6 R F2(ignor)72 315.6 Q -(espace)-.18 E F0 .548 -(means to not save commands which begin with a space; a value of)4.714 F F2 -(ignor)3.047 E(edups)-.18 E F0(means)4.713 E .296 -(to not save commands identical to the last command saved.)72 327.6 R F1 -($HISTCONTROL)5.296 E F0 .297(was named)2.796 F F1($his-)2.797 E(tory_control) -72 339.6 Q F0 .611 -(in earlier versions of Bash; the old name is still accepted for backwar)3.112 -F .611(ds compatibil-)-.18 F(ity)72 351.6 Q 5.678(.T)-1.11 G(he)96.928 351.6 Q -F1(history)3.178 E F0 .678(command can r)3.178 F .678 -(ead or write \214les containing the history list and display the cur)-.18 F(-) --.18 E -.18(re)72 363.6 S .913(nt list contents.).18 F(The)5.913 E F1(fc)3.413 -E F0 .913(builtin, adopted fr)3.413 F .912 -(om POSIX.2 and the Korn Shell, allows display and)-.18 F -.18(re)72 375.6 S -.12(-execution, with optional editing, of commands fr).18 F .12 -(om the history list.)-.18 F .12(The r)5.12 F .12(eadline library of)-.18 F -(fers)-.18 E 2.518(as)72 387.6 S .018(et of commands to sear)83.758 387.6 R -.018(ch the history list for a portion of the curr)-.18 F .017 -(ent input line or a string typed)-.18 F 1.024(by the user)72 399.6 R 6.025(.F) --.74 G(inally)136.364 399.6 Q 3.525(,t)-1.11 G(he)169.649 399.6 Q F2(history) -3.525 E F0(library)5.191 E 3.525(,g)-1.11 G 1.025(enerally incorporated dir) -257.59 399.6 R 1.025(ectly into the r)-.18 F 1.025(eadline library)-.18 F(,) --1.11 E .709(implements a facility for history r)72 411.6 R .709 -(ecall, expansion, and r)-.18 F .709(e-execution of pr)-.18 F .709 -(evious commands very)-.18 F .711(similar to csh \(`)72 423.6 R .711 -(`bang history')-.37 F .711(', so called because the exclamation point intr) --.37 F .712(oduces a history sub-)-.18 F(stitution\):)72 435.6 Q/F3 10 -/Courier@0 SF 6($e)97 453.6 S(cho a b c d e)115 453.6 Q 6(abcde)97 465.6 S 6 -($!)97 477.6 S 6(!fghi)115 477.6 S(echo a b c d e f g h i)97 489.6 Q 6 -(abcdefghi)97 501.6 S 6($!)97 513.6 S(-2)115 513.6 Q(echo a b c d e)97 525.6 Q -6(abcde)97 537.6 S 6($e)97 549.6 S(cho !-2:1-4)115 549.6 Q(echo a b c d)97 -561.6 Q 6(abcd)97 573.6 S F0 .555(The command history is only saved when the s\ -hell is interactive, so it is not available for use by)72 595.2 R -(shell scripts.)72 607.2 Q F1 2.5(4.5. New)72 631.2 R(Shell V)2.5 E(ariables) --1.11 E F0(Ther)97 646.8 Q 2.916(ea)-.18 G .776 -.18(re a n)130.216 646.8 T -.416(umber of convenience variables that Bash interpr).18 F .417 -(ets to make life easier)-.18 F 5.417(.T)-.74 G(hese)484.36 646.8 Q(include)72 -658.8 Q F1(FIGNORE)3.043 E F0 3.043(,w)C .542(hich is a set of \214lename suf) -169.706 658.8 R .542(\214xes identifying \214les to exclude when complet-)-.18 -F .167(ing \214lenames;)72 670.8 R F1(HOSTTYPE)2.667 E F0 2.667(,w)C .167 -(hich is automatically set to a string describing the type of har)205.061 670.8 -R(dwar)-.18 E(e)-.18 E .333(on which Bash is curr)72 682.8 R .333 -(ently executing;)-.18 F F1(command_oriented_history)2.833 E F0 2.832(,w)C .332 -(hich dir)380.94 682.8 R .332(ects Bash to save all)-.18 F 1.264 -(lines of a multiple-line command such as a)72 694.8 R F2(while)3.765 E F0(or) -3.765 E F2(for)3.765 E F0 1.265(loop in a single history entry)3.765 F 3.765 -(,a)-1.11 G(llowing)470.09 694.8 Q .13(easy r)72 706.8 R .13(e-editing; and) --.18 F F1(IGNOREEOF)2.63 E F0 2.63(,w)C .13 -(hose value indicates the number of consecutive EOF charac-)237.84 706.8 R .901 -(ters that an interactive shell will r)72 718.8 R .901(ead befor)-.18 F 3.401 -(ee)-.18 G .901(xiting \255 an easy way to keep yourself fr)280.258 718.8 R -.902(om being)-.18 F 3.629(logged out accidentally)72 730.8 R 8.629(.T)-1.11 G -(he)198.697 730.8 Q F1(auto_resume)6.129 E F0 3.628 -(variable alters the way the shell tr)6.128 F 3.628(eats simple)-.18 F EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-7-)279.67 48 S .888 -(command names: if job contr)72 84 R .889 -(ol is active, and this variable is set, single-wor)-.18 F 3.389(ds)-.18 G .889 -(imple commands)426.431 84 R .843(without r)72 96 R(edir)-.18 E .843 -(ections cause the shell to \214rst look for and r)-.18 F .842 -(estart a suspended job with that name)-.18 F(befor)72 108 Q 2.5(es)-.18 G -(tarting a new pr)106.41 108 Q(ocess.)-.18 E/F1 10/Palatino-Bold@0 SF 2.5 -(4.6. Brace)72 132 R(Expansion)2.5 E F0 .608(Since sh of)97 147.6 R .609 -(fers no convenient way to generate arbitrary strings that shar)-.18 F 3.109 -(eac)-.18 G .609(ommon pr)440.711 147.6 R(e\214x)-.18 E .036(or suf)72 159.6 R -.036(\214x \(\214lename expansion r)-.18 F(equir)-.18 E .035 -(es that the \214lenames exist\), Bash implements)-.18 F/F2 10 -/Palatino-Italic@0 SF .035(brace expansion)2.535 F F0 2.535(,a)C .716 -(capability picked up fr)72 171.6 R .716(om csh.)-.18 F .717 -(Brace expansion is similar to \214lename expansion, but the strings)5.716 F -2.557(generated need not corr)72 183.6 R 2.557(espond to existing \214les.)-.18 -F 5.057(Ab)7.557 G 2.557(race expr)322.296 183.6 R 2.557 -(ession consists of an optional)-.18 F F2(pr)72 195.6 Q(eamble)-.18 E F0 4.412 -(,f)1.666 G 1.912(ollowed by a pair of braces enclosing a series of comma-sepa\ -rated strings, and an)120.028 195.6 R(optional)72 207.6 Q F2(postamble)2.842 E -F0 5.342(.T)1.666 G .342(he pr)167.49 207.6 R .342(eamble is pr)-.18 F .342 -(epended to each string within the braces, and the postam-)-.18 F -(ble is then appended to each r)72 219.6 Q(esulting string:)-.18 E/F3 10 -/Courier@0 SF 6($e)97 237.6 S(cho a{d,c,b}e)115 237.6 Q(ade ace abe)97 249.6 Q -F0 .898(As this example demonstrates, the r)72 271.2 R .899 -(esults of brace expansion ar)-.18 F 3.399(en)-.18 G .899 -(ot sorted, as they ar)374.176 271.2 R 3.399(eb)-.18 G 3.399<798c>477.961 271.2 -S(le-)492.97 271.2 Q(name expansion.)72 283.2 Q F1 2.5(4.7. Process)72 307.2 R -(Substitution)2.5 E F0 .692(On systems that can support it, Bash pr)97 322.8 R -.692(ovides a facility known as)-.18 F F2(pr)3.192 E .692(ocess substitution) --.18 F F0 5.692(.P)C -.18(ro)491.44 322.8 S(-).18 E .479(cess substitution is \ -similar to command substitution in that its speci\214cation includes a command) -72 334.8 R .969(to execute, but the shell does not collect the command's outpu\ -t and insert it into the command)72 346.8 R 2.925(line. Rather)72 358.8 R 2.925 -(,B)-.74 G .425(ash opens a pipe to the command, which is r)136.65 358.8 R .426 -(un in the backgr)-.08 F 2.926(ound. The)-.18 F .426(shell uses)2.926 F .659 -(named pipes \(FIFOs\) or the)72 370.8 R F2(/dev/fd)3.158 E F0 .658 -(method of naming open \214les to expand the pr)4.824 F .658(ocess substitu-) --.18 F .559(tion to a \214lename which connects to the pipe when opened.)72 -382.8 R .56(This \214lename becomes the r)5.56 F .56(esult of)-.18 F .302 -(the expansion.)72 394.8 R(Pr)5.302 E .302 -(ocess substitution can be used to compar)-.18 F 2.801(et)-.18 G .301 -(he outputs of two dif)344.255 394.8 R(fer)-.18 E .301(ent versions)-.18 F -(of an application as part of a r)72 406.8 Q(egr)-.18 E(ession test:)-.18 E F3 -6($c)97 424.8 S(mp <\(old_prog\) <\(new_prog\))115 424.8 Q F1 2.5(4.8. Prompt) -72 454.8 R(Customization)2.5 E F0 .745(One of the mor)97 470.4 R 3.245(ep)-.18 -G .745(opular interactive featur)179.97 470.4 R .745(es that Bash pr)-.18 F -.745(ovides is the ability to customize)-.18 F 1.946(the pr)72 482.4 R 4.446 -(ompt. Both)-.18 F F1($PS1)4.446 E F0(and)4.446 E F1($PS2,)4.446 E F0 1.945 -(the primary and secondary pr)4.445 F 1.945(ompts, ar)-.18 F 4.445(ee)-.18 G -1.945(xpanded befor)432.885 482.4 R(e)-.18 E 2.168(being displayed.)72 494.4 R -2.168(Parameter and variable expansion is performed when the pr)7.168 F 2.169 -(ompt string is)-.18 F .77 -(expanded, so any shell variable can be put into the pr)72 506.4 R .77 -(ompt \(e.g.,)-.18 F F1($SHL)3.27 E(VL)-.92 E F0 3.27(,w)C .77 -(hich indicates how)419.37 506.4 R .609(deeply the curr)72 518.4 R .609 -(ent shell is nested\).)-.18 F .609(Bash specially interpr)5.609 F .609 -(ets characters in the pr)-.18 F .61(ompt string pr)-.18 F(e-)-.18 E 1.224 -(ceded by a backslash.)72 530.4 R 1.224(Some of these backslash escapes ar) -6.224 F 3.724(er)-.18 G 1.224(eplaced with the curr)348.91 530.4 R 1.224 -(ent time, the)-.18 F .542(date, the curr)72 542.4 R .542(ent working dir)-.18 -F(ectory)-.18 E 3.042(,t)-1.11 G .542 -(he username, and the command number or history number)237.3 542.4 R .623 -(of the command being enter)72 554.4 R 3.123(ed. Ther)-.18 F 3.123(ei)-.18 G -3.122(se)249.038 554.4 S .622 -(ven a backslash escape to cause the shell to change its)261.19 554.4 R(pr)72 -566.4 Q 1.098(ompt when r)-.18 F 1.098(unning as r)-.08 F 1.098(oot after an) --.18 F F2(su)3.599 E F0 6.099(.B)C(efor)273.626 566.4 Q 3.599(ep)-.18 G 1.099 -(rinting each primary pr)305.375 566.4 R 1.099(ompt, Bash expands)-.18 F 1.458 -(the variable)72 578.4 R F1($PROMPT_COMMAND)3.958 E F0 1.457 -(and, if it has a value, executes the expanded value as a)3.957 F 1.038 -(command, allowing additional pr)72 590.4 R 1.038(ompt customization.)-.18 F -1.038(For example, this assignment causes the)6.038 F(curr)72 602.4 Q .754 -(ent user)-.18 F 3.254(,t)-.74 G .754(he curr)134.598 602.4 R .753 -(ent host, the time, the last component of the curr)-.18 F .753 -(ent working dir)-.18 F(ectory)-.18 E 3.253(,t)-1.11 G(he)493.39 602.4 Q .813 -(level of shell nesting, and the history number of the curr)72 614.4 R .813 -(ent command to be embedded into the)-.18 F(primary pr)72 626.4 Q(ompt:)-.18 E -F3 6($P)97 644.4 S(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')115 644.4 Q -(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 656.4 Q -(chet@odin [21:03:54] src\(2:637\)$)97 668.4 Q F0 1.289 -(The string being assigned is surr)72 690 R 1.289 -(ounded by single quotes so that if it is exported, the value of)-.18 F F1 -($SHL)72 702 Q(VL)-.92 E F0(will be updated by a child shell:)2.5 E F3 -(chet@odin [21:17:35] src\(2:638\)$ export PS1)97 720 Q EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-8-)279.67 48 S/F1 10/Courier@0 SF -(chet@odin [21:17:40] src\(2:639\)$ bash)97 84 Q -(chet@odin [21:17:46] src\(3:696\)$)97 96 Q F0 .981 -(The \\$ escape is displayed as `)72 117.6 R(`)-.37 E/F2 10/Palatino-Bold@0 SF -($)A F0 1.721 -.37('' w)D .981(hen r).37 F .981(unning as a normal user)-.08 F -3.481(,b)-.74 G .981(ut as `)382.843 117.6 R(`)-.37 E F2(#)A F0 1.721 -.37 -('' w)D .982(hen r).37 F .982(unning as)-.08 F -.18(ro)72 129.6 S(ot.).18 E F2 -2.5(4.9. File)72 153.6 R(System V)2.5 E(iews)-.55 E F0 .42(Since Berkeley intr) -97 169.2 R .42(oduced symbolic links in 4.2 BSD, one of their most annoying pr) --.18 F(operties)-.18 E .705(has been the `)72 181.2 R(`warping')-.37 E 3.205 -('t)-.37 G 3.205(oac)185.91 181.2 S .705(ompletely dif)207.22 181.2 R(fer)-.18 -E .705(ent ar)-.18 F .705(ea of the \214le system when using)-.18 F F2(cd)3.206 -E F0 3.206(,a)C .706(nd the)474.994 181.2 R -.18(re)72 193.2 S 2.292 -(sultant non-intuitive behavior of `).18 F(`)-.37 E F2 2.292(cd ..)B F0 -.37 -('')C 7.291(.T).37 G(he)282.761 193.2 Q/F3 9/Palatino-Roman@0 SF(UNIX)4.791 E -F0 2.291(kernel tr)4.791 F 2.291(eats symbolic links)-.18 F/F4 10 -/Palatino-Italic@0 SF(physically)4.791 E F0(.)1.666 E .225(When the kernel is \ -translating a pathname in which one component is a symbolic link, it r)72 205.2 -R(eplaces)-.18 E .81(all or part of the pathname while pr)72 217.2 R .81 -(ocessing the link.)-.18 F .81(If the contents of the symbolic link begin)5.81 -F .033(with a slash, the kernel r)72 229.2 R .033(eplaces the pathname entir) --.18 F .033(ely; if not, the link contents r)-.18 F .034(eplace the curr)-.18 F -(ent)-.18 E 2.814(component. In)72 241.2 R .314 -(either case, the symbolic link is visible.)2.814 F .313 -(If the link value is an absolute pathname,)5.314 F -(the user \214nds himself in a completely dif)72 253.2 Q(fer)-.18 E -(ent part of the \214le system.)-.18 E 1.291(Bash pr)97 268.8 R 1.291(ovides a) --.18 F F4(logical)3.791 E F0 1.291(view of the \214le system.)5.457 F 1.292 -(In this default mode, command and \214le-)6.292 F .727 -(name completion and builtin commands such as)72 280.8 R F2(cd)3.227 E F0(and) -3.227 E F2(pushd)3.227 E F0 .727(which change the curr)3.227 F .727(ent work-) --.18 F .245(ing dir)72 292.8 R .245(ectory transpar)-.18 F .245 -(ently follow symbolic links as if they wer)-.18 F 2.746(ed)-.18 G(ir)365.822 -292.8 Q 2.746(ectories. The)-.18 F F2($PWD)2.746 E F0(variable,)2.746 E .562 -(which holds the shell's idea of the curr)72 304.8 R .561(ent working dir)-.18 -F(ectory)-.18 E 3.061(,d)-1.11 G .561(epends on the path used to r)354.924 -304.8 R(each)-.18 E(the dir)72 316.8 Q -(ectory rather than its physical location in the local \214le system hierar) --.18 E(chy)-.18 E 5(.F)-1.11 G(or example:)427.35 316.8 Q F1 6($c)97 334.8 S 6 -(d/)115 334.8 S(usr/local/bin)133 334.8 Q 6($e)97 346.8 S(cho $PWD)115 346.8 Q -(/usr/local/bin)97 358.8 Q 6($p)97 370.8 S(wd)115 370.8 Q(/usr/local/bin)97 -382.8 Q 6($/)97 394.8 S(bin/pwd)115 394.8 Q(/net/share/sun4/local/bin)97 406.8 -Q 6($c)97 418.8 S 6(d.)115 418.8 S(.)133 418.8 Q 6($p)97 430.8 S(wd)115 430.8 Q -(/usr/local)97 442.8 Q 6($/)97 454.8 S(bin/pwd)115 454.8 Q -(/net/share/sun4/local)97 466.8 Q 6($c)97 478.8 S 6(d.)115 478.8 S(.)133 478.8 -Q 6($p)97 490.8 S(wd)115 490.8 Q(/usr)97 502.8 Q 6($/)97 514.8 S(bin/pwd)115 -514.8 Q(/usr)97 526.8 Q F0 .094(One pr)72 548.4 R .094 -(oblem with this, of course, arises when pr)-.18 F .095 -(ograms that do not understand the shell's logical)-.18 F .805 -(notion of the \214le system interpr)72 560.4 R .805(et `)-.18 F(`..')-.37 E -3.305('d)-.37 G(if)251.245 560.4 Q(fer)-.18 E(ently)-.18 E 5.805(.T)-1.11 G -.804(his generally happens when Bash completes)304.86 560.4 R 1.864 -(\214lenames containing `)72 572.4 R(`..')-.37 E 4.364('a)-.37 G(ccor)194.902 -572.4 Q 1.864(ding to a logical hierar)-.18 F 1.865(chy which does not corr) --.18 F 1.865(espond to their)-.18 F .584(physical location.)72 584.4 R .583 -(For users who \214nd this tr)5.584 F .583(oublesome, a corr)-.18 F(esponding) --.18 E F4(physical)3.083 E F0 .583(view of the \214le)4.749 F -(system is available:)72 596.4 Q F1 6($c)97 614.4 S 6(d/)115 614.4 S -(usr/local/bin)133 614.4 Q 6($p)97 626.4 S(wd)115 626.4 Q(/usr/local/bin)97 -638.4 Q 6($s)97 650.4 S(et -o physical)115 650.4 Q 6($p)97 662.4 S(wd)115 662.4 -Q(/net/share/sun4/local/bin)97 674.4 Q EP -%%Page: 9 9 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-9-)279.67 48 S/F1 10/Palatino-Bold@0 SF 2.5 -(4.10. Internationalization)72 84 R F0 .316(One of the most signi\214cant impr) -97 99.6 R .316(ovements in version 1.13 of Bash was the change to `)-.18 F -(`eight-)-.37 E .534(bit cleanliness')72 111.6 R 3.034('. Pr)-.37 F .533 -(evious versions used the eighth bit of characters to mark whether or not they) --.18 F(wer)72 123.6 Q 3.109(eq)-.18 G .609(uoted when performing wor)102.399 -123.6 R 3.109(de)-.18 G 3.109(xpansions. While)244.335 123.6 R .609 -(this did not af)3.109 F .61(fect the majority of users,)-.18 F 1.249 -(most of whom used only seven-bit ASCII characters, some found it con\214ning.) -72 135.6 R 1.248(Beginning with)6.248 F .251 -(version 1.13, Bash implemented a dif)72 147.6 R(fer)-.18 E .251 -(ent quoting mechanism that did not alter the eighth bit of)-.18 F 3.228 -(characters. This)72 159.6 R .727(allowed Bash to manipulate \214les with `) -3.228 F(`odd')-.37 E 3.227('c)-.37 G .727(haracters in their names, but did) -356.825 159.6 R 1.924 -(nothing to help users enter those names, so version 1.13 intr)72 171.6 R 1.925 -(oduced changes to r)-.18 F 1.925(eadline that)-.18 F .658 -(made it eight-bit clean as well.)72 183.6 R .658(Options exist that for)5.658 -F .658(ce r)-.18 F .658(eadline to attach no special signi\214cance)-.18 F .834 -(to characters with the eighth bit set \(the default behavior is to convert th\ -ese characters to meta-)72 195.6 R(pr)72 207.6 Q 2.375(e\214xed key sequences\ -\) and to output these characters without conversion to meta-pr)-.18 F -(e\214xed)-.18 E 2.924(sequences. These)72 219.6 R .424 -(changes, along with the expansion of keymaps to a full eight bits, enable r) -2.924 F(ead-)-.18 E 1.025(line to work with most of the ISO-8859 family of cha\ -racter sets, used by many Eur)72 231.6 R 1.025(opean coun-)-.18 F(tries.)72 -243.6 Q F1(4.1)72 267.6 Q 2.5(1. POSIX)-.37 F(Mode)2.5 E F0 .834 -(Although Bash is intended to be POSIX.2 conformant, ther)97 283.2 R 3.334(ea) --.18 G 1.194 -.18(re a)374.606 283.2 T -.18(re).18 G .835 -(as in which the default).18 F .622 -(behavior is not compatible with the standar)72 295.2 R 3.121(d. For)-.18 F -.621(users who wish to operate in a strict POSIX.2)3.121 F(envir)72 307.2 Q -2.453(onment, Bash implements a)-.18 F/F2 10/Palatino-Italic@0 SF 2.453 -(POSIX mode)4.953 F F0 7.453(.W)C 2.453 -(hen this mode is active, Bash modi\214es its)305.808 307.2 R .969 -(default operation wher)72 319.2 R 3.469(ei)-.18 G 3.469(td)186.917 319.2 S(if) -199.756 319.2 Q .969(fers fr)-.18 F .969(om POSIX.2 to match the standar)-.18 F -3.468(d. POSIX)-.18 F .968(mode is enter)3.468 F(ed)-.18 E .474 -(when Bash is started with the)72 331.2 R F1(-posix)2.974 E F0 2.974 -(option. This)2.974 F(featur)2.974 E 2.974(ei)-.18 G 2.975(sa)334.31 331.2 S -.475(lso available as an option to the)346.525 331.2 R F1(set)2.975 E F0 -(builtin,)72 343.2 Q F1 1.631(set -o posix)4.131 F F0 6.631(.F)C 1.631 -(or compatibility with other GNU softwar)177.054 343.2 R 4.131(et)-.18 G 1.63 -(hat attempts to be POSIX.2)379.02 343.2 R .627 -(compliant, Bash also enters POSIX mode if the variable)72 355.2 R F1($POSIXL) -3.128 E(Y_CORRECT)-.92 E F0 .628(is set when Bash)3.128 F .891 -(is started or assigned a value during execution.)72 367.2 R F1 -($POSIX_PEDANTIC)5.891 E F0 .89(is accepted as well, to be)3.391 F .445 -(compatible with some older GNU utilities.)72 379.2 R .446 -(When Bash is started in POSIX mode, for example, it)5.445 F(sour)72 391.2 Q -.342(ces the \214le named by the value of)-.18 F F1($ENV)2.842 E F0 .342 -(rather than the `)2.842 F(`normal')-.37 E 2.842('s)-.37 G .341 -(tartup \214les, and does not)392.566 391.2 R(allow r)72 403.2 Q(eserved wor) --.18 E(ds to be aliased.)-.18 E F1 2.5(5. New)72 427.2 R -(Features and Future Plans)2.5 E F0(Ther)97 442.8 Q 4.157(ea)-.18 G 2.017 -.18 -(re s)131.457 442.8 T 1.658(everal featur).18 F 1.658(es intr)-.18 F 1.658 -(oduced in the curr)-.18 F 1.658(ent version of Bash, version 1.14, and a)-.18 -F .714(number under consideration for futur)72 454.8 R 3.214(er)-.18 G 3.214 -(eleases. This)253.61 454.8 R .714 -(section will brie\215y detail the new featur)3.214 F(es)-.18 E -(in version 1.14 and describe several featur)72 466.8 Q -(es that may appear in later versions.)-.18 E F1 2.5(5.1. New)72 490.8 R -(Features in Bash-1.14)2.5 E F0 1.303(The new featur)97 506.4 R 1.304 -(es available in Bash-1.14 answer several of the most common r)-.18 F 1.304 -(equests for)-.18 F 2.815(enhancements. Most)72 518.4 R(notably)2.815 E 2.815 -(,t)-1.11 G(her)209.475 518.4 Q 2.815(ei)-.18 G 2.815(sam)234.37 518.4 S .314 -(echanism for including non-visible character sequences)258.07 518.4 R 1.795 -(in pr)72 530.4 R 1.796 -(ompts, such as those which cause a terminal to print characters in dif)-.18 F -(fer)-.18 E 1.796(ent colors or in)-.18 F .354(standout mode.)72 542.4 R(Ther) -5.354 E 2.854(ew)-.18 G .354(as nothing pr)183.572 542.4 R .353 -(eventing the use of these sequences in earlier versions, but)-.18 F 2.113 -(the r)72 554.4 R 2.113(eadline r)-.18 F 2.114 -(edisplay algorithm assumed each character occupied physical scr)-.18 F 2.114 -(een space and)-.18 F(would wrap lines pr)72 566.4 Q(ematur)-.18 E(ely)-.18 E -(.)-1.11 E 1.183(Readline has a few new variables, several new bindable comman\ -ds, and some additional)97 582 R 1.399(emacs mode default key bindings.)72 594 -R 3.899(An)6.399 G 1.399(ew history sear)252.724 594 R 1.4 -(ch mode has been implemented: in this)-.18 F .033(mode, r)72 606 R .033 -(eadline sear)-.18 F .032(ches the history for lines beginning with the charac\ -ters between the beginning)-.18 F .452(of the curr)72 618 R .452 -(ent line and the cursor)-.18 F 5.452(.T)-.74 G .452(he existing r)233.074 618 -R .452(eadline incr)-.18 F .452(emental sear)-.18 F .453(ch commands no longer) --.18 F .947(match identical lines mor)72 630 R 3.447(et)-.18 G .947(han once.) -198.068 630 R .946(Filename completion now expands variables in dir)5.947 F -(ectory)-.18 E 2.516(names. The)72 642 R .016(history expansion facilities ar) -2.516 F 2.516(en)-.18 G .017 -(ow nearly completely csh-compatible: missing modi-)270.006 642 R -(\214ers have been added and history substitution has been extended.)72 654 Q -.535(Several of the featur)97 669.6 R .535(es described earlier)-.18 F 3.035 -(,s)-.74 G .535(uch as)282.59 669.6 R F1 .534(set -o posix)3.035 F F0(and)3.034 -E F1($POSIX_PEDANTIC)3.034 E F0 3.034(,a)C -.18(re)495.44 669.6 S .749 -(new in version 1.14.)72 681.6 R(Ther)5.749 E 3.249(ei)-.18 G 3.249(san)199.455 -681.6 S .749(ew shell variable,)221.013 681.6 R F1(OSTYPE)3.249 E F0 3.25(,t)C -3.25(ow)351.81 681.6 S .75(hich Bash assigns a value that)368.86 681.6 R .417 -(identi\214es the version of)72 693.6 R/F3 9/Palatino-Roman@0 SF(UNIX)2.917 E -F0 .416(it's r)2.917 F .416(unning on \(gr)-.08 F .416(eat for putting ar)-.18 -F(chitectur)-.18 E .416(e-speci\214c binary dir)-.18 F(ec-)-.18 E 2.257 -(tories into the)72 705.6 R F1($P)4.757 E -.92(AT)-.74 G(H).92 E F0 4.757 -(\). T)B 2.257(wo variables have been r)-.9 F(enamed:)-.18 E F1($HISTCONTROL) -4.758 E F0 -.18(re)4.758 G(places).18 E F1($his-)4.758 E(tory_control)72 717.6 -Q F0 5.733(,a)C(nd)140.793 717.6 Q F1($HOSTFILE)5.733 E F0 -.18(re)5.732 G -(places).18 E F1($hostname_completion_\214le)5.732 E F0 8.232(.I)C 5.732(nb) -401.622 717.6 S 3.232(oth cases, the old)418.704 717.6 R 2.337(names ar)72 -729.6 R 4.837(ea)-.18 G 2.338(ccepted for backwar)128.914 729.6 R 2.338 -(ds compatibility)-.18 F 7.338(.T)-1.11 G 2.338(he ksh)311.846 729.6 R F2 -(select)4.838 E F0(constr)6.504 E 2.338(uct, which allows the)-.08 F EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-1)277.17 48 S 2.5(0-)288 48 S .565 -(generation of simple menus, has been implemented.)72 84 R .564 -(New capabilities have been added to exist-)5.565 F 1.446(ing variables:)72 96 -R/F1 10/Palatino-Bold@0 SF($auto_resume)3.946 E F0 1.446 -(can now take values of)3.946 F/F2 10/Palatino-Italic@0 SF(exact)3.947 E F0(or) -5.613 E F2(substring)3.947 E F0 3.947(,a)1.666 G(nd)405.913 96 Q F1 -($HISTCONTROL)3.947 E F0 1.8(understands the value)72 108 R F2(ignor)4.3 E -(eboth)-.18 E F0 4.3(,w)1.666 G 1.799(hich combines the two pr)238.106 108 R -1.799(eviously acceptable values.)-.18 F(The)6.799 E F1(dirs)72 120 Q F0 2.612 -(builtin has acquir)5.112 F 2.613 -(ed options to print out speci\214c members of the dir)-.18 F 2.613 -(ectory stack.)-.18 F(The)7.613 E F1($nolinks)72 132 Q F0 .177 -(variable, which for)2.677 F .176 -(ces a physical view of the \214le system, has been superseded by the)-.18 F F1 -2.676 E F0 1.486(option to the)72 144 R F1(set)3.986 E F0 1.486 -(builtin \(equivalent to)3.986 F F1 1.486(set -o physical)3.986 F F0 1.486 -(\); the variable is r)B 1.486(etained for backwar)-.18 F(ds)-.18 E -(compatibility)72 156 Q 5.564(.T)-1.11 G .564(he version string contained in) -144.074 156 R F1($BASH_VERSION)3.064 E F0 .563(now includes an indication of) -3.064 F .501(the patch level as well as the `)72 168 R .501(`build version') --.37 F 3.001('. Some)-.37 F .502(little-used featur)3.001 F .502 -(es have been r)-.18 F 3.002(emoved: the)-.18 F F1(bye)72 180 Q F0 .943 -(synonym for)3.443 F F1(exit)3.443 E F0 .943(and the)3.443 F F1($NO_PROMPT_V) -3.443 E(ARS)-1.29 E F0 .943(variable ar)3.443 F 3.443(eg)-.18 G 3.443 -(one. Ther)379.707 180 R 3.443(ei)-.18 G 3.443(sn)435.873 180 S .942(ow an or) -449.376 180 R(ga-)-.18 E(nized test suite that can be r)72 192 Q(un as a r)-.08 -E(egr)-.18 E(ession test when building a new version of Bash.)-.18 E 1.42 -(The documentation has been thor)97 207.6 R 1.421(oughly over)-.18 F 1.421 -(hauled: ther)-.18 F 3.921(ei)-.18 G 3.921(san)372.184 207.6 S 1.421 -(ew manual page on the)395.086 207.6 R -.18(re)72 219.6 S 1.142 -(adline library and the).18 F F2(info)3.642 E F0 1.142 -(\214le has been updated to r)3.642 F 1.142(e\215ect the curr)-.18 F 1.142 -(ent version.)-.18 F 1.141(As always, as)6.142 F -(many bugs as possible have been \214xed, although some sur)72 231.6 Q(ely r) --.18 E(emain.)-.18 E F1 2.5(5.2. Other)72 255.6 R(Features)2.5 E F0(Ther)97 -271.2 Q 3.692(ea)-.18 G 1.552 -.18(re a f)130.992 271.2 T 1.192(ew featur).18 F -1.192(es that I hope to include in later Bash r)-.18 F 3.693(eleases. Some)-.18 -F(ar)3.693 E 3.693(eb)-.18 G 1.193(ased on)468.887 271.2 R(work alr)72 283.2 Q -(eady done in other shells.)-.18 E 2.717 -(In addition to simple variables, a futur)97 298.8 R 5.217(er)-.18 G 2.716 -(elease of Bash will include one-dimensional)297.159 298.8 R .575 -(arrays, using the ksh implementation of arrays as a model.)72 310.8 R .575 -(Additions to the ksh syntax, such as)5.575 F F2(varname)72 322.8 Q F0 1.116 -(=\( ... \) to assign a list of wor)B 1.115(ds dir)-.18 F 1.115 -(ectly to an array and a mechanism to allow the)-.18 F F1(read)3.615 E F0 .492 -(builtin to r)72 334.8 R .492(ead a list of values dir)-.18 F .493 -(ectly into an array)-.18 F 2.993(,w)-1.11 G .493(ould be desirable.)313.615 -334.8 R .493(Given those extensions,)5.493 F .621(the ksh)72 346.8 R F1 .621 -(set \255A)3.121 F F0 .621(syntax may not be worth supporting \(the)3.121 F F1 -3.12 E F0 .62(option assigns a list of values to an)3.12 F(array)72 358.8 -Q 2.5(,b)-1.11 G(ut is a rather peculiar special case\).)104.88 358.8 Q .522 -(Some shells include a means of)97 374.4 R F2(pr)3.022 E(ogrammable)-.18 E F0 -(wor)3.022 E 3.022(dc)-.18 G .522(ompletion, wher)331.796 374.4 R 3.023(et)-.18 -G .523(he user speci\214es on)416.561 374.4 R 3.291(ap)72 386.4 S(er)86.301 -386.4 Q .791(-command basis how the ar)-.18 F .791(guments of the command ar) --.18 F 3.291(et)-.18 G 3.29(ob)358.98 386.4 S 3.29(et)373.26 386.4 S -.18(re) -384.6 386.4 S .79(ated when completion is).18 F .588 -(attempted: as \214lenames, hostnames, executable \214les, and so on.)72 398.4 -R .589(The other aspects of the curr)5.589 F(ent)-.18 E .649 -(Bash implementation could r)72 410.4 R .648 -(emain as-is; the existing heuristics would still be valid.)-.18 F .648 -(Only when)5.648 F 2.136(completing the ar)72 422.4 R 2.137 -(guments to a simple command would the pr)-.18 F 2.137 -(ogrammable completion be in)-.18 F(ef)72 434.4 Q(fect.)-.18 E .223 -(It would also be nice to give the user \214ner)97 450 R .223(-grained contr) --.18 F .222(ol over which commands ar)-.18 F 2.722(es)-.18 G(aved)482.45 450 Q -1.603(onto the history list.)72 462 R 1.604(One pr)6.604 F 1.604 -(oposal is for a variable, tentatively named)-.18 F F1(HISTIGNORE)4.104 E F0 -4.104(,w)C(hich)485.01 462 Q .471 -(would contain a colon-separated list of commands.)72 474 R .471 -(Lines beginning with these commands, after)5.471 F .056(the r)72 486 R .056 -(estrictions of)-.18 F F1($HISTCONTROL)2.556 E F0 .057 -(have been applied, would not be placed onto the history list.)2.556 F 1.246(T\ -he shell pattern-matching capabilities could also be available when specifying\ - the contents of)72 498 R F1($HISTIGNORE)72 510 Q F0(.)A .612 -(One thing that newer shells such as)97 525.6 R F1(wksh)3.112 E F0 .612 -(\(also known as)3.112 F F1(dtksh)3.112 E F0 3.112(\)p)C -.18(ro)397.502 525.6 -S .612(vide is a command to).18 F 1.826 -(dynamically load code implementing additional builtin commands into a r)72 -537.6 R 1.826(unning shell.)-.08 F(This)6.826 E 1.2 -(new builtin would take an object \214le or shar)72 549.6 R 1.2 -(ed library implementing the `)-.18 F(`body')-.37 E 3.7('o)-.37 G 3.7(ft)450.03 -549.6 S 1.2(he builtin)460.32 549.6 R(\()72 561.6 Q F2(xxx_builtin\(\))A F0 -1.094(for those familiar with Bash internals\) and a str)3.595 F(uctur)-.08 E -3.594(ec)-.18 G 1.094(ontaining the name of the)386.094 561.6 R .731 -(new command, the function to call when the new builtin is invoked \(pr)72 -573.6 R .731(esumably de\214ned in the)-.18 F(shar)72 585.6 Q .881 -(ed object speci\214ed as an ar)-.18 F .881 -(gument\), and the documentation to be printed by the)-.18 F F1(help)3.38 E F0 -(com-)3.38 E .974(mand \(possibly pr)72 597.6 R .974(esent in the shar)-.18 F -.975(ed object as well\).)-.18 F .975(It would manage the details of extending) -5.975 F(the internal table of builtins.)72 609.6 Q 2.641(Af)97 625.2 S .141 -(ew other builtins would also be desirable: two ar)110.751 625.2 R 2.641(et) --.18 G .14(he POSIX.2)337.93 625.2 R F1(getconf)2.64 E F0 .14(command, which) -2.64 F 1.518(prints the values of system con\214guration variables de\214ned b\ -y POSIX.2, and a)72 637.2 R F1(disown)4.019 E F0(builtin,)4.019 E .93 -(which causes a shell r)72 649.2 R .929(unning with job contr)-.08 F .929 -(ol active to `)-.18 F(`for)-.37 E .929(get about')-.18 F 3.429('o)-.37 G .929 -(ne or mor)397.563 649.2 R 3.429(eb)-.18 G(ackgr)456.25 649.2 Q(ound)-.18 E -.095(jobs in its internal jobs table.)72 661.2 R(Using)5.095 E F1(getconf)2.595 -E F0 2.595(,f)C .095(or example, a user could r)274.02 661.2 R .096 -(etrieve a value for)-.18 F F1($P)2.596 E -.92(AT)-.74 G(H).92 E F0 .73 -(guaranteed to \214nd all of the POSIX standar)72 673.2 R 3.23(du)-.18 G .73 -(tilities, or \214nd out how long \214lenames may be in)282.86 673.2 R -(the \214le system containing a speci\214ed dir)72 685.2 Q(ectory)-.18 E(.) --1.11 E(Ther)97 700.8 Q 4.171(ea)-.18 G 2.031 -.18(re n)131.471 700.8 T 4.171 -(oi).18 G 1.671(mplementation timetables for any of these featur)162.563 700.8 -R 1.672(es, nor ar)-.18 F 4.172(et)-.18 G(her)443.888 700.8 Q 4.172(ec)-.18 G -(oncr)471.67 700.8 Q(ete)-.18 E .034(plans to include them.)72 712.8 R .034 -(If anyone has comments on these pr)5.034 F .034(oposals, feel fr)-.18 F .033 -(ee to send me electr)-.18 F(onic)-.18 E(mail.)72 724.8 Q EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-1)277.445 48 S 2.5(1-)287.725 48 S/F1 10 -/Palatino-Bold@0 SF 2.5(6. Re\215ections)72 84 R(and Lessons Learned)2.5 E F0 -1.503(The lesson that has been r)97 99.6 R 1.504 -(epeated most often during Bash development is that ther)-.18 F 4.004(ea)-.18 G --.18(re)495.44 99.6 S 1.052 -(dark corners in the Bourne Shell, and people use all of them.)72 111.6 R 1.051 -(In the original description of the)6.052 F 1.37 -(Bourne shell, quoting and the shell grammar ar)72 123.6 R 3.87(eb)-.18 G 1.37 -(oth poorly speci\214ed and incomplete; subse-)304.61 123.6 R .387 -(quent descriptions have not helped much.)72 135.6 R .387(The grammar pr)5.387 -F .386(esented in Bourne's paper describing)-.18 F .059 -(the shell distributed with the Seventh Edition of)72 147.6 R/F2 9 -/Palatino-Roman@0 SF(UNIX)2.559 E F0 2.559<8769>C 2.559(ss)321.048 147.6 S -2.559(of)332.087 147.6 S .059(ar of)343.436 147.6 R 2.559(ft)-.18 G .059 -(hat it does not allow the com-)372.704 147.6 R(mand)72 159.6 Q/F3 10/Courier@0 -SF(who|wc)2.5 E F0 5(.I)C 2.5(nf)147.13 159.6 S(act, as T)158.78 159.6 Q -(om Duf)-.92 E 2.5(fs)-.18 G(tates:)237.21 159.6 Q .985(Nobody r)97 175.2 R -.984(eally knows what the Bourne shell's grammar is.)-.18 F .984 -(Even examination of the)5.984 F(sour)97 187.2 Q(ce code is little help.\210) --.18 E .782(The POSIX.2 standar)72 202.8 R 3.282(di)-.18 G .782(ncludes a) -177.496 202.8 R/F4 10/Palatino-Italic@0 SF(yacc)3.282 E F0 .782 -(grammar that comes close to capturing the Bourne shell's)3.282 F(behavior)72 -214.8 Q 3.67(,b)-.74 G 1.17(ut it disallows some constr)122.07 214.8 R 1.169 -(ucts which sh accepts without complaint \255 and ther)-.08 F 3.669(ea)-.18 G --.18(re)495.44 214.8 S .223(scripts out ther)72 226.8 R 2.723(et)-.18 G .223 -(hat use them.)149.659 226.8 R .224(It took a few versions and several bug r) -5.223 F .224(eports befor)-.18 F 2.724(eB)-.18 G .224(ash imple-)457.436 226.8 -R .427(mented sh-compatible quoting, and ther)72 238.8 R 2.927(ea)-.18 G .787 --.18(re s)264.265 238.8 T .426(till some `).18 F(`legal')-.37 E 2.926('s)-.37 G -2.926(hc)359.87 238.8 S(onstr)373.056 238.8 Q .426(ucts which Bash \215ags as) --.08 F(syntax err)72 250.8 Q 2.5(ors. Complete)-.18 F -(sh compatibility is a tough nut.)2.5 E .314 -(The shell is bigger and slower than I would like, though the curr)97 266.4 R -.314(ent version is substantially)-.18 F 1.507(faster than pr)72 278.4 R -(eviously)-.18 E 6.507(.T)-1.11 G 1.507(he r)185.841 278.4 R 1.507 -(eadline library could stand a substantial r)-.18 F 4.006(ewrite. A)-.18 F -(hand-written)4.006 E .574(parser to r)72 290.4 R .574(eplace the curr)-.18 F -(ent)-.18 E F4(yacc)3.074 E F0 .574(-generated one would pr)B .574(obably r) --.18 F .575(esult in a speedup, and would)-.18 F 1.865(solve one glaring pr)72 -302.4 R 4.365(oblem: the)-.18 F 1.864(shell could parse commands in `)4.364 F -(`$\(...\)')-.37 E 4.364('c)-.37 G(onstr)408.058 302.4 Q 1.864(ucts as they ar) --.08 F(e)-.18 E(enter)72 314.4 Q(ed, rather than r)-.18 E(eporting err)-.18 E -(ors when the constr)-.18 E(uct is expanded.)-.08 E .198(As always, ther)97 330 -R 2.698(ei)-.18 G 2.698(ss)176.004 330 S .198(ome chaf)187.182 330 R 2.699(ft) --.18 G 2.699(og)236.659 330 S 2.699(ow)250.378 330 S .199(ith the wheat.) -266.877 330 R(Ar)5.199 E .199(eas of duplicated functionality need)-.18 F 1.009 -(to be cleaned up.)72 342 R(Ther)6.009 E 3.509(ea)-.18 G 1.369 -.18(re s) -189.785 342 T 1.009(everal cases wher).18 F 3.509(eB)-.18 G 1.009(ash tr) -300.041 342 R 1.008(eats a variable specially to enable func-)-.18 F 1.316 -(tionality available another way \()72 354 R F1($notify)A F0(vs.)3.816 E F1 -1.316(set -o notify)6.316 F F0(and)3.816 E F1($nolinks)3.816 E F0(vs.)3.816 E -F1 1.316(set -o physical)3.816 F F0 3.816(,f)C(or)494.59 354 Q .925 -(instance\); the special tr)72 366 R .925 -(eatment of the variable name should pr)-.18 F .925(obably be r)-.18 F 3.425 -(emoved. A)-.18 F .925(few mor)3.425 F(e)-.18 E 2.296(things could stand r)72 -378 R 2.296(emoval; the)-.18 F F1($allow_null_glob_expansion)4.796 E F0(and) -4.796 E F1($glob_dot_\214lenames)4.797 E F0(vari-)4.797 E .728(ables ar)72 390 -R 3.228(eo)-.18 G 3.228(fp)119.946 390 S .728(articularly questionable value.) -132.514 390 R(The)5.728 E F1($[...])3.227 E F0 .727 -(arithmetic evaluation syntax is r)3.227 F(edundant)-.18 E .804 -(now that the POSIX-mandated)72 402 R F1($\(\(...\)\))3.304 E F0(constr)3.304 E -.805(uct has been implemented, and could be deleted.)-.08 F(It)5.805 E 1.056 -(would be nice if the text output by the)72 414 R F1(help)3.556 E F0 1.055 -(builtin wer)3.556 F 3.555(ee)-.18 G 1.055 -(xternal to the shell rather than com-)339.79 414 R 1.365(piled into it.)72 426 -R 1.365(The behavior enabled by)6.365 F F1($command_oriented_history)3.865 E F0 -3.865(,w)C 1.365(hich causes the shell to)397.55 426 R 1.047 -(attempt to save all lines of a multi-line command in a single history entry)72 -438 R 3.547(,s)-1.11 G 1.047(hould be made the)418.109 438 R -(default and the variable r)72 450 Q(emoved.)-.18 E F1 2.5(7. A)72 474 R -(vailability)-.7 E F0 6.17(As with all other GNU softwar)97 489.6 R 6.17 -(e, Bash is available for anonymous FTP fr)-.18 F(om)-.18 E F4(pr)72 501.6 Q -(ep.ai.mit.edu:/pub/gnu)-.18 E F0 2.136(and fr)6.302 F 2.136 -(om other GNU softwar)-.18 F 4.635(em)-.18 G(irr)334.21 501.6 Q 2.135 -(or sites.)-.18 F 2.135(The curr)7.135 F 2.135(ent version is in)-.18 F F4 -(bash-1.14.1.tar)72 513.6 Q(.gz)-.74 E F0 .241(in that dir)4.407 F(ectory)-.18 -E 5.241(.U)-1.11 G(se)234.27 513.6 Q F4(ar)2.741 E(chie)-.18 E F0 .241 -(to \214nd the near)4.407 F .241(est ar)-.18 F .241(chive site.)-.18 F .242 -(The latest version is)5.241 F .295(always available for FTP fr)72 525.6 R(om) --.18 E F4(bash.CWRU.Edu:/pub/dist.)2.795 E F0 .295 -(Bash documentation is available for FTP)4.461 F(fr)72 537.6 Q(om)-.18 E F4 -(bash.CWRU.Edu:/pub/bash.)2.5 E F0 1.207(The Fr)97 553.2 R 1.207(ee Softwar) --.18 F 3.707(eF)-.18 G 1.207 -(oundation sells tapes and CD-ROMs containing Bash; send electr)188.531 553.2 R -(onic)-.18 E(mail to)72 565.2 Q F3(gnu@prep.ai.mit.edu)2.5 E F0(or call)2.5 E -F3(+1-617-876-3296)2.5 E F0(for mor)2.5 E 2.5(ei)-.18 G(nformation.)387.54 -565.2 Q .283(Bash is also distributed with several versions of)97 580.8 R F2 -(UNIX)2.782 E F0 .282(-compatible systems.)B .282(It is included as)5.282 F -.624(/bin/sh and /bin/bash on several Linux distributions \(mor)72 592.8 R -3.124(ea)-.18 G .624(bout the dif)353.78 592.8 R(fer)-.18 E .624 -(ence in a moment\),)-.18 F(and as contributed softwar)72 604.8 Q 2.5(ei)-.18 G -2.5(nB)200.83 604.8 S(SDI's BSD/386* and Fr)215.26 604.8 Q(eeBSD.)-.18 E .529 -(The Linux distribution deserves special mention.)97 620.4 R(Ther)5.529 E 3.029 -(ea)-.18 G .889 -.18(re t)354.414 620.4 T .529(wo con\214gurations included in) -.18 F .037(the standar)72 632.4 R 2.537(dB)-.18 G .038(ash distribution: a `) -136.364 632.4 R(`normal')-.37 E 2.538('c)-.37 G .038 -(on\214guration, in which all of the standar)268.256 632.4 R 2.538(df)-.18 G -(eatur)456.022 632.4 Q .038(es ar)-.18 F(e)-.18 E .451(included, and a `)72 -644.4 R(`minimal')-.37 E 2.951('c)-.37 G .451 -(on\214guration, which omits job contr)199.384 644.4 R .451 -(ol, aliases, history and command)-.18 F .356(line editing, the dir)72 656.4 R -.356(ectory stack and)-.18 F F1(pushd/popd/dirs,)2.856 E F0(pr)2.856 E .357 -(ocess substitution, pr)-.18 F .357(ompt string special)-.18 F .32 LW 76 666.4 -72 666.4 DL 80 666.4 76 666.4 DL 84 666.4 80 666.4 DL 88 666.4 84 666.4 DL 92 -666.4 88 666.4 DL 96 666.4 92 666.4 DL 100 666.4 96 666.4 DL 104 666.4 100 -666.4 DL 108 666.4 104 666.4 DL 112 666.4 108 666.4 DL 116 666.4 112 666.4 DL -120 666.4 116 666.4 DL 124 666.4 120 666.4 DL 128 666.4 124 666.4 DL 132 666.4 -128 666.4 DL 136 666.4 132 666.4 DL 140 666.4 136 666.4 DL 144 666.4 140 666.4 -DL/F5 8/Palatino-Roman@0 SF .42(\207S. R. Bourne, `)72 676.4 R .42(`UNIX T) --.296 F .42(ime-Sharing System:)-.44 F .42(The UNIX Shell')4.42 F(',)-.296 E/F6 -8/Palatino-Italic@0 SF .42(Bell System T)2.42 F .42(echnical Journal)-.888 F F5 -2.42(,5)C .42(7\(6\), July-August,)405.004 676.4 R(1978, pp. 1971-1990.)72 -686.4 Q<8854>72 696.4 Q .209(om Duf)-.736 F .209(f, `)-.144 F .209 -(`Rc \255 A Shell for Plan 9 and)-.296 F/F7 7/Palatino-Roman@0 SF(UNIX)2.209 E -F5(systems')2.209 E(',)-.296 E F6(Pr)2.209 E .208 -(oc. of the Summer 1990 EUUG Confer)-.144 F(ence)-.144 E F5 2.208(,L)C .208 -(ondon, Ju-)430.704 696.4 R(ly)72 706.4 Q 2(,1)-.888 G(990, pp. 21-33.)85.888 -706.4 Q(*BSD/386 is a trademark of Berkeley Softwar)72 716.4 Q 2(eD)-.144 G -(esign, Inc.)243.472 716.4 Q EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Palatino-Roman@0 SF 2.5(-1)277.17 48 S 2.5(2-)288 48 S 1.319 -(character decoding, and the)72 84 R/F1 10/Palatino-Italic@0 SF(select)3.818 E -F0(constr)5.484 E 3.818(uct. This)-.08 F 1.318 -(minimal version is designed to be a dr)3.818 F(op-in)-.18 E -.18(re)72 96 S -1.292(placement for the traditional).18 F/F2 9/Palatino-Roman@0 SF(UNIX)3.792 E -F0 1.293(/bin/sh, and is included as the Linux /bin/sh in several)3.792 F -(packagings.)72 108 Q/F3 10/Palatino-Bold@0 SF 2.5(8. Conclusion)72 132 R F0 -.19(Bash is a worthy successor to sh.)97 147.6 R .19(It is suf)5.19 F .19 -(\214ciently portable to r)-.18 F .19(un on nearly every version of)-.08 F F2 -(UNIX)72 159.6 Q F0(fr)2.929 E .429(om 4.3 BSD to SVR4.2, and several)-.18 F F2 -(UNIX)2.93 E F0 2.93(workalikes. It)2.93 F .43(is r)2.93 F .43 -(obust enough to r)-.18 F .43(eplace sh on)-.18 F 1.22 -(most of those systems, and pr)72 171.6 R 1.219(ovides mor)-.18 F 3.719(ef)-.18 -G(unctionality)271.896 171.6 Q 6.219(.I)-1.11 G 3.719(th)336.255 171.6 S 1.219 -(as several thousand r)349.054 171.6 R 1.219(egular users,)-.18 F .052(and the\ -ir feedback has helped to make it as good as it is today \255 a testament to t\ -he bene\214ts of fr)72 183.6 R(ee)-.18 E(softwar)72 195.6 Q(e.)-.18 E EP -%%Trailer -end -%%EOF diff --git a/doc/article.txt b/doc/article.txt deleted file mode 100644 index c19ff9248..000000000 --- a/doc/article.txt +++ /dev/null @@ -1,1111 +0,0 @@ - - - - - - - - - - Bash - The GNU shell* - - - Chet Ramey - Case Western Reserve University - chet@po.cwru.edu - - - - - - -_1. _I_n_t_r_o_d_u_c_t_i_o_n - - _B_a_s_h is the shell, or command language interpreter, -that will appear in the GNU operating system. The name is -an acronym for the "Bourne-Again SHell", a pun on Steve -Bourne, the author of the direct ancestor of the current -UNIX|- shell /_b_i_n/_s_h, which appeared in the Seventh Edition -Bell Labs Research version of UNIX. - - Bash is an sh-compatible shell that incorporates useful -features from the Korn shell (ksh) and the C shell (csh), -described later in this article. It is ultimately intended -to be a conformant implementation of the IEEE POSIX Shell -and Utilities specification (IEEE Working Group 1003.2). It -offers functional improvements over sh for both interactive -and programming use. - - While the GNU operating system will most likely include -a version of the Berkeley shell csh, Bash will be the -default shell. Like other GNU software, Bash is quite port- -able. It currently runs on nearly every version of UNIX and -a few other operating systems - an independently-supported -port exists for OS/2, and there are rumors of ports to DOS -and Windows NT. Ports to UNIX-like systems such as QNX and -Minix are part of the distribution. - - The original author of Bash was Brian Fox, an employee -of the Free Software Foundation. The current developer and -maintainer is Chet Ramey, a volunteer who works at Case -Western Reserve University. - -_2. _W_h_a_t'_s _P_O_S_I_X, _a_n_y_w_a_y? - - _P_O_S_I_X is a name originally coined by Richard Stallman -_________________________ -*An earlier version of this article appeared in The -Linux Journal. -|- UNIX is a trademark of Bell Laboratories. - - - - - October 28, 1994 - - - - - - - 2 - - - -for a family of open system standards based on UNIX. There -are a number of aspects of UNIX under consideration for -standardization, from the basic system services at the sys- -tem call and C library level to applications and tools to -system administration and management. Each area of stan- -dardization is assigned to a working group in the 1003 -series. - - The POSIX Shell and Utilities standard has been -developed by IEEE Working Group 1003.2 (POSIX.2).|= It con- -centrates on the command interpreter interface and utility -programs commonly executed from the command line or by other -programs. An initial version of the standard has been -approved and published by the IEEE, and work is currently -underway to update it. There are four primary areas of work -in the 1003.2 standard: - -o+ Aspects of the shell's syntax and command language. A - number of special builtins such as _c_d and _e_x_e_c are - being specified as part of the shell, since their func- - tionality usually cannot be implemented by a separate - executable; - -o+ A set of utilities to be called by shell scripts and - applications. Examples are programs like _s_e_d, _t_r, and - _a_w_k. Utilities commonly implemented as shell builtins - are described in this section, such as _t_e_s_t and _k_i_l_l. - An expansion of this section's scope, termed the User - Portability Extension, or UPE, has standardized - interactive programs such as _v_i and _m_a_i_l_x; - -o+ A group of functional interfaces to services provided - by the shell, such as the traditional system() C - library function. There are functions to perform shell - word expansions, perform filename expansion (_g_l_o_b_b_i_n_g), - obtain values of POSIX.2 system configuration vari- - ables, retrieve values of environment variables - (getenv()), _a_n_d _o_t_h_e_r _s_e_r_v_i_c_e_s; - -o+ A suite of "development" utilities such as _c_8_9 (the - POSIX.2 version of _c_c), and _y_a_c_c. - - Bash is concerned with the aspects of the shell's -behavior defined by POSIX.2. The shell command language has -of course been standardized, including the basic flow con- -trol and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quot- -ing. The _s_p_e_c_i_a_l builtins, which must be implemented as -part of the shell to provide the desired functionality, are -_________________________ -|=IEEE, _I_E_E_E _S_t_a_n_d_a_r_d _f_o_r _I_n_f_o_r_m_a_t_i_o_n _T_e_c_h_n_o_l_o_g_y -- -_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, 1992. - - - - - October 28, 1994 - - - - - - - 3 - - - -specified as being part of the shell; examples of these are -_e_v_a_l and _e_x_p_o_r_t. Other utilities appear in the sections of -POSIX.2 not devoted to the shell which are commonly (and in -some cases must be) implemented as builtin commands, such as -_r_e_a_d and _t_e_s_t. POSIX.2 also specifies aspects of the -shell's interactive behavior as part of the UPE, including -job control and command line editing. Interestingly enough, -only _v_i-style line editing commands have been standardized; -_e_m_a_c_s editing commands were left out due to objections. - - While POSIX.2 includes much of what the shell has trad- -itionally provided, some important things have been omitted -as being "beyond its scope." There is, for instance, no -mention of a difference between a _l_o_g_i_n shell and any other -interactive shell (since POSIX.2 does not specify a login -program). No fixed startup files are defined, either - the -standard does not mention ._p_r_o_f_i_l_e. - -_3. _B_a_s_i_c _B_a_s_h _f_e_a_t_u_r_e_s - - Since the Bourne shell provides Bash with most of its -philosophical underpinnings, Bash inherits most of its -features and functionality from sh. Bash implements all of -the traditional sh flow control constructs (_f_o_r, _i_f, _w_h_i_l_e, -etc.). All of the Bourne shell builtins, including those -not specified in the POSIX.2 standard, appear in Bash. -Shell _f_u_n_c_t_i_o_n_s, introduced in the SVR2 version of the -Bourne shell, are similar to shell scripts, but are defined -using a special syntax and are executed in the same process -as the calling shell. Bash has shell functions which behave -in a fashion upward-compatible with sh functions. There are -certain shell variables that Bash interprets in the same way -as sh, such as _P_S_1, _I_F_S, and _P_A_T_H. Bash implements essen- -tially the same grammar, parameter and variable expansion -semantics, redirection, and quoting as the Bourne shell. -Where differences appear between the POSIX.2 standard and -traditional sh behavior, Bash follows POSIX. - - The Korn Shell (ksh) is a descendent of the Bourne -shell written at AT&T Bell Laboratories by David Korn|-. It -provides a number of useful features that POSIX and Bash -have adopted. Many of the interactive facilities in POSIX.2 -have their roots in the ksh: for example, the POSIX and ksh -job control facilities are nearly identical. Bash includes -features from the Korn Shell for both interactive use and -shell programming. For programming, Bash provides variables -such as _R_A_N_D_O_M and _R_E_P_L_Y, the _t_y_p_e_s_e_t builtin, the ability -to remove substrings from variables based on patterns, and -shell arithmetic. _R_A_N_D_O_M expands to a random number each -time it is referenced; assigning a value to _R_A_N_D_O_M seeds the -_________________________ -|-Morris Bolsky and David Korn, _T_h_e _K_o_r_n_S_h_e_l_l _C_o_m_m_a_n_d -_a_n_d _P_r_o_g_r_a_m_m_i_n_g _L_a_n_g_u_a_g_e, Prentice Hall, 1989. - - - - - October 28, 1994 - - - - - - - 4 - - - -random number generator. _R_E_P_L_Y is the default variable used -by the _r_e_a_d builtin when no variable names are supplied as -arguments. The _t_y_p_e_s_e_t builtin is used to define variables -and give them attributes such as readonly. Bash arithmetic -allows the evaluation of an expression and the substitution -of the result. Shell variables may be used as operands, and -the result of an expression may be assigned to a variable. -Nearly all of the operators from the C language are avail- -able, with the same precedence rules: -9 $ echo $((3 + 5 * 32)) - 163 -9 -For interactive use, Bash implements ksh-style aliases and -builtins such as _f_c (discussed below) and _j_o_b_s. Bash -aliases allow a string to be substituted for a command name. -They can be used to create a mnemonic for a UNIX command -name (alias del=rm), to expand a single word to a complex -command (alias news='xterm -g 80x45 -title trn -e trn -e -S1 --N &'), or to ensure that a command is invoked with a basic -set of options (alias ls="/bin/ls -F"). - - The C shell (csh)|-, originally written by Bill Joy -while at Berkeley, is widely used and quite popular for its -interactive facilities. Bash includes a csh-compatible his- -tory expansion mechanism ("! history"), brace expansion, -access to a stack of directories via the _p_u_s_h_d, _p_o_p_d, and -_d_i_r_s builtins, and tilde expansion, to generate users' home -directories. Tilde expansion has also been adopted by both -the Korn Shell and POSIX.2. - - There were certain areas in which POSIX.2 felt stan- -dardization was necessary, but no existing implementation -provided the proper behavior. The working group invented -and standardized functionality in these areas, which Bash -implements. The _c_o_m_m_a_n_d builtin was invented so that shell -functions could be written to replace builtins; it makes the -capabilities of the builtin available to the function. The -reserved word "!" was added to negate the return value of a -command or pipeline; it was nearly impossible to express "if -not x" cleanly using the sh language. There exist multiple -incompatible implementations of the _t_e_s_t builtin, which -tests files for type and other attributes and performs -arithmetic and string comparisons. POSIX considered none of -these correct, so the standard behavior was specified in -terms of the number of arguments to the command. POSIX.2 -dictates exactly what will happen when four or fewer argu- -ments are given to _t_e_s_t, and leaves the behavior undefined -when more arguments are supplied. Bash uses the POSIX.2 -_________________________ -|-Bill Joy, An Introduction to the C Shell, _U_N_I_X _U_s_e_r'_s -_S_u_p_p_l_e_m_e_n_t_a_r_y _D_o_c_u_m_e_n_t_s, University of California at -Berkeley, 1986. - - - - - October 28, 1994 - - - - - - - 5 - - - -algorithm, which was conceived by David Korn. - -_3._1. _F_e_a_t_u_r_e_s _n_o_t _i_n _t_h_e _B_o_u_r_n_e _S_h_e_l_l - - There are a number of minor differences between Bash -and the version of sh present on most other versions of -UNIX. The majority of these are due to the POSIX standard, -but some are the result of Bash adopting features from other -shells. For instance, Bash includes the new "!" reserved -word, the _c_o_m_m_a_n_d builtin, the ability of the _r_e_a_d builtin -to correctly return a line ending with a backslash, symbolic -arguments to the _u_m_a_s_k builtin, variable substring removal, -a way to get the length of a variable, and the new algorithm -for the _t_e_s_t builtin from the POSIX.2 standard, none of -which appear in sh. - - Bash also implements the "$(...)" command substitution -syntax, which supersedes the sh `...` construct. The -"$(...)" construct expands to the output of the command con- -tained within the parentheses, with trailing newlines -removed. The sh syntax is accepted for backwards compati- -bility, but the "$(...)" form is preferred because its quot- -ing rules are much simpler and it is easier to nest. - - The Bourne shell does not provide such features as -brace expansion, the ability to define a variable and a -function with the same name, local variables in shell func- -tions, the ability to enable and disable individual builtins -or write a function to replace a builtin, or a means to -export a shell function to a child process. - - Bash has closed a long-standing shell security hole by -not using the $_I_F_S variable to split each word read by the -shell, but splitting only the results of expansion (ksh and -the 4.4 BSD sh have fixed this as well). Useful behavior -such as a means to abort execution of a script read with the -"." command using the return builtin or automatically -exporting variables in the shell's environment to children -is also not present in the Bourne shell. Bash provides a -much more powerful environment for both interactive use and -programming. - -_4. _B_a_s_h-_s_p_e_c_i_f_i_c _F_e_a_t_u_r_e_s - - This section details a few of the features which make -Bash unique. Most of them provide improved interactive use, -but a few programming improvements are present as well. -Full descriptions of these features can be found in the Bash -documentation. - -_4._1. _S_t_a_r_t_u_p _F_i_l_e_s - - Bash executes startup files differently than other -shells. The Bash behavior is a compromise between the csh - - - - October 28, 1994 - - - - - - - 6 - - - -principle of startup files with fixed names executed for -each shell and the sh "minimalist" behavior. An interactive -instance of Bash started as a login shell reads and executes -~/._b_a_s_h__p_r_o_f_i_l_e (the file .bash_profile in the user's home -directory), if it exists. An interactive non-login shell -reads and executes ~/._b_a_s_h_r_c. A non-interactive shell (one -begun to execute a shell script, for example) reads no fixed -startup file, but uses the value of the variable $_E_N_V, if -set, as the name of a startup file. The ksh practice of -reading $_E_N_V for every shell, with the accompanying diffi- -culty of defining the proper variables and functions for -interactive and non-interactive shells or having the file -read only for interactive shells, was considered too com- -plex. Ease of use won out here. Interestingly, the next -release of ksh will change to reading $_E_N_V only for interac- -tive shells. - -_4._2. _N_e_w _B_u_i_l_t_i_n _C_o_m_m_a_n_d_s - - There are a few builtins which are new or have been -extended in Bash. The _e_n_a_b_l_e builtin allows builtin com- -mands to be turned on and off arbitrarily. To use the ver- -sion of _e_c_h_o found in a user's search path rather than the -Bash builtin, enable -n echo suffices. The _h_e_l_p builtin -provides quick synopses of the shell facilities without -requiring access to a manual page. _B_u_i_l_t_i_n is similar to -_c_o_m_m_a_n_d in that it bypasses shell functions and directly -executes builtin commands. Access to a csh-style stack of -directories is provided via the _p_u_s_h_d, _p_o_p_d, and _d_i_r_s buil- -tins. _P_u_s_h_d and _p_o_p_d insert and remove directories from the -stack, respectively, and _d_i_r_s lists the stack contents. On -systems that allow fine-grained control of resources, the -_u_l_i_m_i_t builtin can be used to tune these settings. _U_l_i_m_i_t -allows a user to control, among other things, whether core -dumps are to be generated, how much memory the shell or a -child process is allowed to allocate, and how large a file -created by a child process can grow. The _s_u_s_p_e_n_d command -will stop the shell process when job control is active; most -other shells do not allow themselves to be stopped like -that. _T_y_p_e, the Bash answer to _w_h_i_c_h and _w_h_e_n_c_e, shows what -will happen when a word is typed as a command: -9 $ type export - export is a shell builtin - $ type -t export - builtin - $ type bash - bash is /bin/bash - $ type cd - cd is a function - cd () - { - builtin cd ${1+"$@"} && xtitle $HOST: $PWD - } -9 - - - October 28, 1994 - - - - - - - 7 - - - -Various modes tell what a command word is (reserved word, -alias, function, builtin, or file) or which version of a -command will be executed based on a user's search path. -Some of this functionality has been adopted by POSIX.2 and -folded into the _c_o_m_m_a_n_d utility. - -_4._3. _E_d_i_t_i_n_g _a_n_d _C_o_m_p_l_e_t_i_o_n - - One area in which Bash shines is command line editing. -Bash uses the _r_e_a_d_l_i_n_e library to read and edit lines when -interactive. Readline is a powerful and flexible input -facility that a user can configure to individual tastes. It -allows lines to be edited using either emacs or vi commands, -where those commands are appropriate. The full capability -of emacs is not present - there is no way to execute a named -command with M-x, for instance - but the existing commands -are more than adequate. The vi mode is compliant with the -command line editing standardized by POSIX.2. - - Readline is fully customizable. In addition to the -basic commands and key bindings, the library allows users to -define additional key bindings using a startup file. The -_i_n_p_u_t_r_c file, which defaults to the file ~/._i_n_p_u_t_r_c, is read -each time readline initializes, permitting users to maintain -a consistent interface across a set of programs. Readline -includes an extensible interface, so each program using the -library can add its own bindable commands and program- -specific key bindings. Bash uses this facility to add bind- -ings that perform history expansion or shell word expansions -on the current input line. - - Readline interprets a number of variables which further -tune its behavior. Variables exist to control whether or -not eight-bit characters are directly read as input or con- -verted to meta-prefixed key sequences (a meta-prefixed key -sequence consists of the character with the eighth bit -zeroed, preceded by the _m_e_t_a-_p_r_e_f_i_x character, usually -escape, which selects an alternate keymap), to decide -whether to output characters with the eighth bit set -directly or as a meta-prefixed key sequence, whether or not -to wrap to a new screen line when a line being edited is -longer than the screen width, the keymap to which subsequent -key bindings should apply, or even what happens when read- -line wants to ring the terminal's bell. All of these vari- -ables can be set in the inputrc file. - - The startup file understands a set of C preprocessor- -like conditional constructs which allow variables or key -bindings to be assigned based on the application using read- -line, the terminal currently being used, or the editing -mode. Users can add program-specific bindings to make their -lives easier: I have bindings that let me edit the value of -$_P_A_T_H and double-quote the current or previous word: -9 # Macros that are convenient for shell interaction - - -9 October 28, 1994 - - - - - - - 8 - - - - $if Bash - # edit the path - "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" - # prepare to type a quoted word -- insert open and close double - # quotes and move to just after the open quote - "\C-x\"": "\"\"\C-b" - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $endif -9 -There is a readline command to re-read the file, so users -can edit the file, change some bindings, and begin to use -them almost immediately. - - Bash implements the _b_i_n_d builtin for more dyamic con- -trol of readline than the startup file permits. _B_i_n_d is -used in several ways. In _l_i_s_t mode, it can display the -current key bindings, list all the readline editing direc- -tives available for binding, list which keys invoke a given -directive, or output the current set of key bindings in a -format that can be incorporated directly into an inputrc -file. In _b_a_t_c_h mode, it reads a series of key bindings -directly from a file and passes them to readline. In its -most common usage, _b_i_n_d takes a single string and passes it -directly to readline, which interprets the line as if it had -just been read from the inputrc file. Both key bindings and -variable assignments may appear in the string given to _b_i_n_d. - - The readline library also provides an interface for -_w_o_r_d _c_o_m_p_l_e_t_i_o_n. When the _c_o_m_p_l_e_t_i_o_n character (usually -TAB) is typed, readline looks at the word currently being -entered and computes the set of filenames of which the -current word is a valid prefix. If there is only one possi- -ble completion, the rest of the characters are inserted -directly, otherwise the common prefix of the set of -filenames is added to the current word. A second TAB char- -acter entered immediately after a non-unique completion -causes readline to list the possible completions; there is -an option to have the list displayed immediately. Readline -provides hooks so that applications can provide specific -types of completion before the default filename completion -is attempted. This is quite flexible, though it is not com- -pletely user-programmable. Bash, for example, can complete -filenames, command names (including aliases, builtins, shell -reserved words, shell functions, and executables found in -the file system), shell variables, usernames, and hostnames. -It uses a set of heuristics that, while not perfect, is gen- -erally quite good at determining what type of completion to -attempt. - -_4._4. _H_i_s_t_o_r_y - - Access to the list of commands previously entered (the -_c_o_m_m_a_n_d _h_i_s_t_o_r_y) is provided jointly by Bash and the - - -9 October 28, 1994 - - - - - - - 9 - - - -readline library. Bash provides variables ($HISTFILE, -$HISTSIZE, and $HISTCONTROL) and the _h_i_s_t_o_r_y and _f_c builtins -to manipulate the history list. The value of $_H_I_S_T_F_I_L_E -specifes the file where Bash writes the command history on -exit and reads it on startup. $_H_I_S_T_S_I_Z_E is used to limit -the number of commands saved in the history. $_H_I_S_T_C_O_N_T_R_O_L -provides a crude form of control over which commands are -saved on the history list: a value of _i_g_n_o_r_e_s_p_a_c_e means to -not save commands which begin with a space; a value of -_i_g_n_o_r_e_d_u_p_s means to not save commands identical to the last -command saved. $HISTCONTROL was named $history_control in -earlier versions of Bash; the old name is still accepted for -backwards compatibility. The _h_i_s_t_o_r_y command can read or -write files containing the history list and display the -current list contents. The _f_c builtin, adopted from POSIX.2 -and the Korn Shell, allows display and re-execution, with -optional editing, of commands from the history list. The -readline library offers a set of commands to search the his- -tory list for a portion of the current input line or a -string typed by the user. Finally, the _h_i_s_t_o_r_y library, -generally incorporated directly into the readline library, -implements a facility for history recall, expansion, and -re-execution of previous commands very similar to csh ("bang -history", so called because the exclamation point introduces -a history substitution): -9 $ echo a b c d e - a b c d e - $ !! f g h i - echo a b c d e f g h i - a b c d e f g h i - $ !-2 - echo a b c d e - a b c d e - $ echo !-2:1-4 - echo a b c d - a b c d -9 -The command history is only saved when the shell is interac- -tive, so it is not available for use by shell scripts. - -_4._5. _N_e_w _S_h_e_l_l _V_a_r_i_a_b_l_e_s - - There are a number of convenience variables that Bash -interprets to make life easier. These include _F_I_G_N_O_R_E, -which is a set of filename suffixes identifying files to -exclude when completing filenames; _H_O_S_T_T_Y_P_E, which is -automatically set to a string describing the type of -hardware on which Bash is currently executing; -_c_o_m_m_a_n_d__o_r_i_e_n_t_e_d__h_i_s_t_o_r_y, which directs Bash to save all -lines of a multiple-line command such as a _w_h_i_l_e or _f_o_r loop -in a single history entry, allowing easy re-editing; and -_I_G_N_O_R_E_E_O_F, whose value indicates the number of consecutive -EOF characters that an interactive shell will read before - - - - October 28, 1994 - - - - - - - 10 - - - -exiting - an easy way to keep yourself from being logged out -accidentally. The _a_u_t_o__r_e_s_u_m_e variable alters the way the -shell treats simple command names: if job control is active, -and this variable is set, single-word simple commands -without redirections cause the shell to first look for and -restart a suspended job with that name before starting a new -process. - -_4._6. _B_r_a_c_e _E_x_p_a_n_s_i_o_n - - Since sh offers no convenient way to generate arbitrary -strings that share a common prefix or suffix (filename -expansion requires that the filenames exist), Bash imple- -ments _b_r_a_c_e _e_x_p_a_n_s_i_o_n, a capability picked up from csh. -Brace expansion is similar to filename expansion, but the -strings generated need not correspond to existing files. A -brace expression consists of an optional _p_r_e_a_m_b_l_e, followed -by a pair of braces enclosing a series of comma-separated -strings, and an optional _p_o_s_t_a_m_b_l_e. The preamble is -prepended to each string within the braces, and the postam- -ble is then appended to each resulting string: -9 $ echo a{d,c,b}e - ade ace abe -9 -As this example demonstrates, the results of brace expansion -are not sorted, as they are by filename expansion. - -_4._7. _P_r_o_c_e_s_s _S_u_b_s_t_i_t_u_t_i_o_n - - On systems that can support it, Bash provides a facil- -ity known as _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. Process substitution is -similar to command substitution in that its specification -includes a command to execute, but the shell does not col- -lect the command's output and insert it into the command -line. Rather, Bash opens a pipe to the command, which is -run in the background. The shell uses named pipes (FIFOs) -or the /_d_e_v/_f_d method of naming open files to expand the -process substitution to a filename which connects to the -pipe when opened. This filename becomes the result of the -expansion. Process substitution can be used to compare the -outputs of two different versions of an application as part -of a regression test: -9 $ cmp <(old_prog) <(new_prog) -9 -_4._8. _P_r_o_m_p_t _C_u_s_t_o_m_i_z_a_t_i_o_n - - One of the more popular interactive features that Bash -provides is the ability to customize the prompt. Both $_P_S_1 -and $_P_S_2, the primary and secondary prompts, are expanded -before being displayed. Parameter and variable expansion is -performed when the prompt string is expanded, so any shell -variable can be put into the prompt (e.g., $_S_H_L_V_L, which - - - - October 28, 1994 - - - - - - - 11 - - - -indicates how deeply the current shell is nested). Bash -specially interprets characters in the prompt string pre- -ceded by a backslash. Some of these backslash escapes are -replaced with the current time, the date, the current work- -ing directory, the username, and the command number or his- -tory number of the command being entered. There is even a -backslash escape to cause the shell to change its prompt -when running as root after an _s_u. Before printing each pri- -mary prompt, Bash expands the variable $_P_R_O_M_P_T__C_O_M_M_A_N_D and, -if it has a value, executes the expanded value as a command, -allowing additional prompt customization. For example, this -assignment causes the current user, the current host, the -time, the last component of the current working directory, -the level of shell nesting, and the history number of the -current command to be embedded into the primary prompt: -9 $ PS1='\u@\h [\t] \W($SHLVL:\!)\$ ' - chet@odin [21:03:44] documentation(2:636)$ cd .. - chet@odin [21:03:54] src(2:637)$ -9 -The string being assigned is surrounded by single quotes so -that if it is exported, the value of $_S_H_L_V_L will be updated -by a child shell: -9 chet@odin [21:17:35] src(2:638)$ export PS1 - chet@odin [21:17:40] src(2:639)$ bash - chet@odin [21:17:46] src(3:696)$ -9 -The \$ escape is displayed as "$" when running as a normal -user, but as "#" when running as root. - -_4._9. _F_i_l_e _S_y_s_t_e_m _V_i_e_w_s - - Since Berkeley introduced symbolic links in 4.2 BSD, -one of their most annoying properties has been the "warping" -to a completely different area of the file system when using -_c_d, and the resultant non-intuitive behavior of "cd ..". -The UNIX kernel treats symbolic links _p_h_y_s_i_c_a_l_l_y. When the -kernel is translating a pathname in which one component is a -symbolic link, it replaces all or part of the pathname while -processing the link. If the contents of the symbolic link -begin with a slash, the kernel replaces the pathname -entirely; if not, the link contents replace the current com- -ponent. In either case, the symbolic link is visible. If -the link value is an absolute pathname, the user finds him- -self in a completely different part of the file system. - - Bash provides a _l_o_g_i_c_a_l view of the file system. In -this default mode, command and filename completion and buil- -tin commands such as _c_d and _p_u_s_h_d which change the current -working directory transparently follow symbolic links as if -they were directories. The $_P_W_D variable, which holds the -shell's idea of the current working directory, depends on -the path used to reach the directory rather than its - - - - October 28, 1994 - - - - - - - 12 - - - -physical location in the local file system hierarchy. For -example: -9 $ cd /usr/local/bin - $ echo $PWD - /usr/local/bin - $ pwd - /usr/local/bin - $ /bin/pwd - /net/share/sun4/local/bin - $ cd .. - $ pwd - /usr/local - $ /bin/pwd - /net/share/sun4/local - $ cd .. - $ pwd - /usr - $ /bin/pwd - /usr -9 -One problem with this, of course, arises when programs that -do not understand the shell's logical notion of the file -system interpret ".." differently. This generally happens -when Bash completes filenames containing ".." according to a -logical hierarchy which does not correspond to their physi- -cal location. For users who find this troublesome, a -corresponding _p_h_y_s_i_c_a_l view of the file system is available: -9 $ cd /usr/local/bin - $ pwd - /usr/local/bin - $ set -o physical - $ pwd - /net/share/sun4/local/bin -9 -_4._1_0. _I_n_t_e_r_n_a_t_i_o_n_a_l_i_z_a_t_i_o_n - - One of the most significant improvements in version -1.13 of Bash was the change to "eight-bit cleanliness". -Previous versions used the eighth bit of characters to mark -whether or not they were quoted when performing word expan- -sions. While this did not affect the majority of users, -most of whom used only seven-bit ASCII characters, some -found it confining. Beginning with version 1.13, Bash -implemented a different quoting mechanism that did not alter -the eighth bit of characters. This allowed Bash to manipu- -late files with "odd" characters in their names, but did -nothing to help users enter those names, so version 1.13 -introduced changes to readline that made it eight-bit clean -as well. Options exist that force readline to attach no -special significance to characters with the eighth bit set -(the default behavior is to convert these characters to -meta-prefixed key sequences) and to output these characters - - - - October 28, 1994 - - - - - - - 13 - - - -without conversion to meta-prefixed sequences. These -changes, along with the expansion of keymaps to a full eight -bits, enable readline to work with most of the ISO-8859 fam- -ily of character sets, used by many European countries. - -_4._1_1. _P_O_S_I_X _M_o_d_e - - Although Bash is intended to be POSIX.2 conformant, -there are areas in which the default behavior is not compa- -tible with the standard. For users who wish to operate in a -strict POSIX.2 environment, Bash implements a _P_O_S_I_X _m_o_d_e. -When this mode is active, Bash modifies its default opera- -tion where it differs from POSIX.2 to match the standard. -POSIX mode is entered when Bash is started with the -_p_o_s_i_x -option. This feature is also available as an option to the -set builtin, set -o posix. For compatibility with other GNU -software that attempts to be POSIX.2 compliant, Bash also -enters POSIX mode if the variable $_P_O_S_I_X_L_Y__C_O_R_R_E_C_T is set -when Bash is started or assigned a value during execution. -$_P_O_S_I_X__P_E_D_A_N_T_I_C is accepted as well, to be compatible with -some older GNU utilities. When Bash is started in POSIX -mode, for example, it sources the file named by the value of -$_E_N_V rather than the "normal" startup files, and does not -allow reserved words to be aliased. - -_5. _N_e_w _F_e_a_t_u_r_e_s _a_n_d _F_u_t_u_r_e _P_l_a_n_s - - There are several features introduced in the current -version of Bash, version 1.14, and a number under considera- -tion for future releases. This section will briefly detail -the new features in version 1.14 and describe several -features that may appear in later versions. - -_5._1. _N_e_w _F_e_a_t_u_r_e_s _i_n _B_a_s_h-_1._1_4 - - The new features available in Bash-1.14 answer several -of the most common requests for enhancements. Most notably, -there is a mechanism for including non-visible character -sequences in prompts, such as those which cause a terminal -to print characters in different colors or in standout mode. -There was nothing preventing the use of these sequences in -earlier versions, but the readline redisplay algorithm -assumed each character occupied physical screen space and -would wrap lines prematurely. - - Readline has a few new variables, several new bindable -commands, and some additional emacs mode default key bind- -ings. A new history search mode has been implemented: in -this mode, readline searches the history for lines beginning -with the characters between the beginning of the current -line and the cursor. The existing readline incremental -search commands no longer match identical lines more than -once. Filename completion now expands variables in direc- -tory names. The history expansion facilities are now nearly - - - - October 28, 1994 - - - - - - - 14 - - - -completely csh-compatible: missing modifiers have been added -and history substitution has been extended. - - Several of the features described earlier, such as _s_e_t --_o _p_o_s_i_x and $_P_O_S_I_X__P_E_D_A_N_T_I_C, are new in version 1.14. -There is a new shell variable, _O_S_T_Y_P_E, to which Bash assigns -a value that identifies the version of UNIX it's running on -(great for putting architecture-specific binary directories -into the $PATH). Two variables have been renamed: $_H_I_S_T_C_O_N_- -_T_R_O_L replaces $_h_i_s_t_o_r_y__c_o_n_t_r_o_l, and $_H_O_S_T_F_I_L_E replaces -$_h_o_s_t_n_a_m_e__c_o_m_p_l_e_t_i_o_n__f_i_l_e. In both cases, the old names are -accepted for backwards compatibility. The ksh _s_e_l_e_c_t con- -struct, which allows the generation of simple menus, has -been implemented. New capabilities have been added to -existing variables: $_a_u_t_o__r_e_s_u_m_e can now take values of -_e_x_a_c_t or _s_u_b_s_t_r_i_n_g, and $_H_I_S_T_C_O_N_T_R_O_L understands the value -_i_g_n_o_r_e_b_o_t_h, which combines the two previously acceptable -values. The _d_i_r_s builtin has acquired options to print out -specific members of the directory stack. The $_n_o_l_i_n_k_s vari- -able, which forces a physical view of the file system, has -been superseded by the -_P option to the _s_e_t builtin -(equivalent to set -o physical); the variable is retained -for backwards compatibility. The version string contained -in $_B_A_S_H__V_E_R_S_I_O_N now includes an indication of the patch -level as well as the "build version". Some little-used -features have been removed: the _b_y_e synonym for _e_x_i_t and -the $_N_O__P_R_O_M_P_T__V_A_R_S variable are gone. There is now an -organized test suite that can be run as a regression test -when building a new version of Bash. - - The documentation has been thoroughly overhauled: there -is a new manual page on the readline library and the _i_n_f_o -file has been updated to reflect the current version. As -always, as many bugs as possible have been fixed, although -some surely remain. - -_5._2. _O_t_h_e_r _F_e_a_t_u_r_e_s - - There are a few features that I hope to include in -later Bash releases. Some are based on work already done in -other shells. - - In addition to simple variables, a future release of -Bash will include one-dimensional arrays, using the ksh -implementation of arrays as a model. Additions to the ksh -syntax, such as _v_a_r_n_a_m_e=( ... ) to assign a list of words -directly to an array and a mechanism to allow the _r_e_a_d buil- -tin to read a list of values directly into an array, would -be desirable. Given those extensions, the ksh _s_e_t -_A syntax -may not be worth supporting (the -_A option assigns a list of -values to an array, but is a rather peculiar special case). - - Some shells include a means of _p_r_o_g_r_a_m_m_a_b_l_e word com- -pletion, where the user specifies on a per-command basis how - - - - October 28, 1994 - - - - - - - 15 - - - -the arguments of the command are to be treated when comple- -tion is attempted: as filenames, hostnames, executable -files, and so on. The other aspects of the current Bash -implementation could remain as-is; the existing heuristics -would still be valid. Only when completing the arguments to -a simple command would the programmable completion be in -effect. - - It would also be nice to give the user finer-grained -control over which commands are saved onto the history list. -One proposal is for a variable, tentatively named _H_I_S_T_I_G_- -_N_O_R_E, which would contain a colon-separated list of com- -mands. Lines beginning with these commands, after the res- -trictions of $_H_I_S_T_C_O_N_T_R_O_L have been applied, would not be -placed onto the history list. The shell pattern-matching -capabilities could also be available when specifying the -contents of $_H_I_S_T_I_G_N_O_R_E. - - One thing that newer shells such as _w_k_s_h (also known as -_d_t_k_s_h) provide is a command to dynamically load code imple- -menting additional builtin commands into a running shell. -This new builtin would take an object file or shared library -implementing the "body" of the builtin (_x_x_x__b_u_i_l_t_i_n() for -those familiar with Bash internals) and a structure contain- -ing the name of the new command, the function to call when -the new builtin is invoked (presumably defined in the shared -object specified as an argument), and the documentation to -be printed by the _h_e_l_p command (possibly present in the -shared object as well). It would manage the details of -extending the internal table of builtins. - - A few other builtins would also be desirable: two are -the POSIX.2 _g_e_t_c_o_n_f command, which prints the values of sys- -tem configuration variables defined by POSIX.2, and a _d_i_s_o_w_n -builtin, which causes a shell running with job control -active to "forget about" one or more background jobs in its -internal jobs table. Using _g_e_t_c_o_n_f, for example, a user -could retrieve a value for $_P_A_T_H guaranteed to find all of -the POSIX standard utilities, or find out how long filenames -may be in the file system containing a specified directory. - - There are no implementation timetables for any of these -features, nor are there concrete plans to include them. If -anyone has comments on these proposals, feel free to send me -electronic mail. - -_6. _R_e_f_l_e_c_t_i_o_n_s _a_n_d _L_e_s_s_o_n_s _L_e_a_r_n_e_d - - The lesson that has been repeated most often during -Bash development is that there are dark corners in the -Bourne shell, and people use all of them. In the original -description of the Bourne shell, quoting and the shell gram- -mar are both poorly specified and incomplete; subsequent -descriptions have not helped much. The grammar presented in - - - - October 28, 1994 - - - - - - - 16 - - - -Bourne's paper describing the shell distributed with the -Seventh Edition of UNIX|- is so far off that it does not -allow the command who|wc. In fact, as Tom Duff states: - - Nobody really knows what the Bourne shell's gram- - mar is. Even examination of the source code is - little help.|= - -The POSIX.2 standard includes a _y_a_c_c grammar that comes -close to capturing the Bourne shell's behavior, but it -disallows some constructs which sh accepts without complaint -- and there are scripts out there that use them. It took a -few versions and several bug reports before Bash implemented -sh-compatible quoting, and there are still some "legal" sh -constructs which Bash flags as syntax errors. Complete sh -compatibility is a tough nut. - - The shell is bigger and slower than I would like, -though the current version is substantially faster than pre- -viously. The readline library could stand a substantial -rewrite. A hand-written parser to replace the current -_y_a_c_c-generated one would probably result in a speedup, and -would solve one glaring problem: the shell could parse com- -mands in "$(...)" constructs as they are entered, rather -than reporting errors when the construct is expanded. - - As always, there is some chaff to go with the wheat. -Areas of duplicated functionality need to be cleaned up. -There are several cases where Bash treats a variable spe- -cially to enable functionality available another way -($notify vs. set -o notify and $nolinks vs. set -o physi- -cal, for instance); the special treatment of the variable -name should probably be removed. A few more things could -stand removal; the $_a_l_l_o_w__n_u_l_l__g_l_o_b__e_x_p_a_n_s_i_o_n and -$_g_l_o_b__d_o_t__f_i_l_e_n_a_m_e_s variables are of particularly question- -able value. The $[...] arithmetic evaluation syntax is -redundant now that the POSIX-mandated $((...)) construct has -been implemented, and could be deleted. It would be nice if -the text output by the _h_e_l_p builtin were external to the -shell rather than compiled into it. The behavior enabled by -$_c_o_m_m_a_n_d__o_r_i_e_n_t_e_d__h_i_s_t_o_r_y, which causes the shell to attempt -to save all lines of a multi-line command in a single his- -tory entry, should be made the default and the variable -removed. - - -_________________________ -|-S. R. Bourne, "UNIX Time-Sharing System: The UNIX -Shell", _B_e_l_l _S_y_s_t_e_m _T_e_c_h_n_i_c_a_l _J_o_u_r_n_a_l, 57(6), July- -August, 1978, pp. 1971-1990. -|=Tom Duff, "Rc - A Shell for Plan 9 and UNIX systems", -_P_r_o_c. _o_f _t_h_e _S_u_m_m_e_r _1_9_9_0 _E_U_U_G _C_o_n_f_e_r_e_n_c_e, London, July, -1990, pp. 21-33. - - - - - October 28, 1994 - - - - - - - 17 - - - -_7. _A_v_a_i_l_a_b_i_l_i_t_y - - As with all other GNU software, Bash is available for -anonymous FTP from _p_r_e_p._a_i._m_i_t._e_d_u:/_p_u_b/_g_n_u and from other -GNU software mirror sites. The current version is in _b_a_s_h- -_1._1_4._1._t_a_r._g_z in that directory. Use _a_r_c_h_i_e to find the -nearest archive site. The latest version is always avail- -able for FTP from _b_a_s_h._C_W_R_U._E_d_u:/_p_u_b/_d_i_s_t. Bash documenta- -tion is available for FTP from _b_a_s_h._C_W_R_U._E_d_u:/_p_u_b/_b_a_s_h. - - The Free Software Foundation sells tapes and CD-ROMs -containing Bash; send electronic mail to gnu@prep.ai.mit.edu -or call +1-617-876-3296 for more information. - - Bash is also distributed with several versions of -UNIX-compatible systems. It is included as /bin/sh and -/bin/bash on several Linux distributions (more about the -difference in a moment), and as contributed software in -BSDI's BSD/386* and FreeBSD. - - The Linux distribution deserves special mention. There -are two configurations included in the standard Bash distri- -bution: a "normal" configuration, in which all of the stan- -dard features are included, and a "minimal" configuration, -which omits job control, aliases, history and command line -editing, the directory stack and _p_u_s_h_d/_p_o_p_d/_d_i_r_s, process -substitution, prompt string special character decoding, and -the _s_e_l_e_c_t construct. This minimal version is designed to -be a drop-in replacement for the traditional UNIX /bin/sh, -and is included as the Linux /bin/sh in several packagings. - -_8. _C_o_n_c_l_u_s_i_o_n - - Bash is a worthy successor to sh. It is sufficiently -portable to run on nearly every version of UNIX from 4.3 BSD -to SVR4.2, and several UNIX workalikes. It is robust enough -to replace sh on most of those systems, and provides more -functionality. It has several thousand regular users, and -their feedback has helped to make it as good as it is today -- a testament to the benefits of free software. - - - - - - - - - - -_________________________ -*BSD/386 is a trademark of Berkeley Software Design, -Inc. - - - - - October 28, 1994 - - diff --git a/doc/bash.0 b/doc/bash.0 deleted file mode 100644 index 94f8b4446..000000000 --- a/doc/bash.0 +++ /dev/null @@ -1,5696 +0,0 @@ -BASH(1) BASH(1) - - - -NNAAMMEE - bash - GNU Bourne-Again SHell - -SSYYNNOOPPSSIISS - bbaasshh [options] [command_string | file] - -CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2013 by the Free Software Foundation, Inc. - -DDEESSCCRRIIPPTTIIOONN - BBaasshh is an sshh-compatible command language interpreter that executes - commands read from the standard input or from a file. BBaasshh also incor- - porates useful features from the _K_o_r_n and _C shells (kksshh and ccsshh). - - BBaasshh is intended to be a conformant implementation of the Shell and - Utilities portion of the IEEE POSIX specification (IEEE Standard - 1003.1). BBaasshh can be configured to be POSIX-conformant by default. - -OOPPTTIIOONNSS - All of the single-character shell options documented in the descrip- - tion 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: - - --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- - ments after the _c_o_m_m_a_n_d___s_t_r_i_n_g, they are assigned to the - positional parameters, starting with $$00. - --ii If the --ii option is present, the shell is _i_n_t_e_r_a_c_t_i_v_e. - --ll Make bbaasshh act as if it had been invoked as a login shell (see - IINNVVOOCCAATTIIOONN below). - --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d - (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). - --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- - ject to language translation when the current locale is not CC - 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 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 - 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- - 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 - 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 - 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- - table object) file format. - ----dduummpp--ssttrriinnggss - Equivalent to --DD. - ----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 - IINNVVOOCCAATTIIOONN below). - - ----llooggiinn - Equivalent to --ll. - - ----nnooeeddiittiinngg - 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 - 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 - default if the shell is invoked as sshh. - - ----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). - - ----rreessttrriicctteedd - The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). - - ----vveerrbboossee - Equivalent to --vv. - - ----vveerrssiioonn - 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 - 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 - 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 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 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-- - 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 - 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 - shell is started to inhibit this behavior. - - When a login shell exits, 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 - _~_/_._b_a_s_h_r_c. - - 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- - 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- - 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 - 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 - 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 - 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 - 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 _r_s_h_d does not generally invoke the shell with those - options or allow them to be specified. - - If the shell is started with the effective user (group) id not equal to - the real user (group) id, and the --pp option is not supplied, no startup - 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 - reset. - -DDEEFFIINNIITTIIOONNSS - 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 - 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- - score. Also referred to as an iiddeennttiiffiieerr. - mmeettaacchhaarraacctteerr - A character that, when unquoted, separates words. One of the - following: - || && ;; (( )) << >> ssppaaccee ttaabb - ccoonnttrrooll ooppeerraattoorr - A _t_o_k_e_n that performs a control function. It is one of the fol- - lowing symbols: - |||| && &&&& ;; ;;;; (( )) || ||&& <> - -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 - word of a ccaassee or ffoorr command: - - !! 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 - _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 - 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 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 - 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- - tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used, - _c_o_m_m_a_n_d's standard output and standard error are connected 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 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- - 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 - 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 - 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 - specify the format of the time information. - - Each command in a pipeline is executed as a separate process (i.e., in - a subshell). - - LLiissttss - A _l_i_s_t is a sequence of one or more pipelines separated by one of the - operators ;;, &&, &&&&, or ||||, and optionally terminated by one of ;;, &&, or - <>. - - Of these list operators, &&&& and |||| have equal precedence, followed by ;; - and &&, which have equal precedence. - - A sequence of one or more newlines may appear in a _l_i_s_t instead of a - semicolon to delimit commands. - - If a command is terminated by the control operator &&, the shell exe- - cutes the command in the _b_a_c_k_g_r_o_u_n_d in a subshell. The shell does not - wait for the command to finish, and the return status is 0. Commands - separated by a ;; are executed sequentially; the shell waits for each - command to terminate in turn. The return status is the exit status of - the last command executed. - - AND and OR lists are sequences of one of more pipelines separated by - the &&&& and |||| control operators, respectively. AND and OR lists are - executed with left associativity. An AND list has the form - - _c_o_m_m_a_n_d_1 &&&& _c_o_m_m_a_n_d_2 - - _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status - of zero. - - An OR list has the form - - _c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2 - - - _c_o_m_m_a_n_d_2 is executed if and only if _c_o_m_m_a_n_d_1 returns a non-zero exit - status. The return status of AND and OR lists is the exit status of - the last command executed in the list. - - CCoommppoouunndd CCoommmmaannddss - A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a - command's description may be separated from the rest of the command by - one or more newlines, and may be followed by a newline in place of a - semicolon. - - (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU-- - TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com- - mands that affect the shell's environment do not remain in - effect after the command completes. The return status is the - exit status of _l_i_s_t. - - { _l_i_s_t; } - _l_i_s_t is simply executed in the current shell environment. _l_i_s_t - must be terminated with a newline or semicolon. This is known - as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of - _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are - _r_e_s_e_r_v_e_d _w_o_r_d_s and must occur where a reserved word is permitted - to be recognized. Since they do not cause a word break, they - must be separated from _l_i_s_t by whitespace or another shell - metacharacter. - - ((_e_x_p_r_e_s_s_i_o_n)) - The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described - below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expres- - sion is non-zero, the return status is 0; otherwise the return - status is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"". - - [[[[ _e_x_p_r_e_s_s_i_o_n ]]]] - Return a status of 0 or 1 depending on the evaluation of the - conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of - the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - Word splitting and pathname expansion are not performed on the - words between the [[[[ and ]]]]; tilde expansion, parameter and - variable expansion, arithmetic expansion, command substitution, - process substitution, and quote removal are performed. Condi- - tional operators such as --ff must be unquoted to be recognized as - primaries. - - When used with [[[[, the << and >> operators sort lexicographically - using the current locale. - - When the ==== and !!== operators are used, the string to the right - of the operator is considered a pattern and matched according to - the rules described below under PPaatttteerrnn MMaattcchhiinngg. The == opera- - tor is equivalent to ====. If the shell option nnooccaasseemmaattcchh is - enabled, the match is performed without regard to the case of - alphabetic characters. The return value is 0 if the string - matches (====) or does not match (!!==) the pattern, and 1 other- - wise. Any part of the pattern may be quoted to force the quoted - portion to be matched as a string. - - An additional binary operator, ==~~, is available, with the same - precedence as ==== and !!==. When it is used, the string to the - right of the operator is considered an extended regular expres- - sion and matched accordingly (as in _r_e_g_e_x(3)). The return value - is 0 if the string matches the pattern, and 1 otherwise. If the - regular expression is syntactically incorrect, the conditional - expression's return value is 2. If the shell option nnooccaasseemmaattcchh - is enabled, the match is performed without regard to the case of - alphabetic characters. Any part of the pattern may be quoted to - force the quoted portion to be matched as a string. Bracket - expressions in regular expressions must be treated carefully, - since normal quoting characters lose their meanings between - brackets. If the pattern is stored in a shell variable, quoting - the variable expansion forces the entire pattern to be matched - as a string. Substrings matched by parenthesized subexpressions - within the regular expression are saved in the array variable - BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0 is the - portion of the string matching the entire regular expression. - The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion of the - string matching the _nth parenthesized subexpression. - - Expressions may be combined using the following operators, - listed in decreasing order of precedence: - - (( _e_x_p_r_e_s_s_i_o_n )) - Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to - override the normal precedence of operators. - !! _e_x_p_r_e_s_s_i_o_n - True if _e_x_p_r_e_s_s_i_o_n is false. - _e_x_p_r_e_s_s_i_o_n_1 &&&& _e_x_p_r_e_s_s_i_o_n_2 - True if both _e_x_p_r_e_s_s_i_o_n_1 and _e_x_p_r_e_s_s_i_o_n_2 are true. - _e_x_p_r_e_s_s_i_o_n_1 |||| _e_x_p_r_e_s_s_i_o_n_2 - True if either _e_x_p_r_e_s_s_i_o_n_1 or _e_x_p_r_e_s_s_i_o_n_2 is true. - - The &&&& and |||| operators do not evaluate _e_x_p_r_e_s_s_i_o_n_2 if the value - of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of - the entire conditional expression. - - ffoorr _n_a_m_e [ [ iinn [ _w_o_r_d _._._. ] ] ; ] ddoo _l_i_s_t ; ddoonnee - The list of words following iinn is expanded, generating a list of - items. The variable _n_a_m_e is set to each element of this list in - turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit- - ted, the ffoorr command executes _l_i_s_t once for each positional - parameter that is set (see PPAARRAAMMEETTEERRSS below). The return status - is the exit status of the last command that executes. If the - expansion of the items following iinn results in an empty list, no - commands are executed, and the return status is 0. - - ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) ; ddoo _l_i_s_t ; ddoonnee - First, the arithmetic expression _e_x_p_r_1 is evaluated according to - the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The - arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until - it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero - value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is - evaluated. If any expression is omitted, it behaves as if it - evaluates to 1. The return value is the exit status of the last - command in _l_i_s_t that is executed, or false if any of the expres- - sions is invalid. - - sseelleecctt _n_a_m_e [ iinn _w_o_r_d ] ; ddoo _l_i_s_t ; ddoonnee - The list of words following iinn is expanded, generating a list of - items. The set of expanded words is printed on the standard - error, each preceded by a number. If the iinn _w_o_r_d is omitted, - the positional parameters are printed (see PPAARRAAMMEETTEERRSS below). - The PPSS33 prompt is then displayed and a line read from the stan- - dard input. If the line consists of a number corresponding to - one of the displayed words, then the value of _n_a_m_e is set to - that word. If the line is empty, the words and prompt are dis- - played again. If EOF is read, the command completes. Any other - value read causes _n_a_m_e to be set to null. The line read is - saved in the variable RREEPPLLYY. The _l_i_s_t is executed after each - selection until a bbrreeaakk command is executed. The exit status of - sseelleecctt is the exit status of the last command executed in _l_i_s_t, - or zero if no commands were executed. - - ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc - A ccaassee command first expands _w_o_r_d, and tries to match it against - each _p_a_t_t_e_r_n in turn, using the 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 substitution, command substitution, process - substitution and quote removal. Each _p_a_t_t_e_r_n examined is - expanded using tilde expansion, parameter and variable expan- - sion, arithmetic substitution, command substitution, and process - substitution. If the shell option nnooccaasseemmaattcchh is enabled, the - match is performed 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. - - iiff _l_i_s_t; tthheenn _l_i_s_t_; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii - The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn - _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in - turn, and if its exit status is zero, the corresponding tthheenn - _l_i_s_t is executed and the command completes. Otherwise, the eellssee - _l_i_s_t is executed, if present. The exit status is the exit sta- - tus of the last command executed, or zero if no condition tested - true. - - wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long - as the last command in the list _l_i_s_t_-_1 returns an exit status of - zero. The uunnttiill command is identical to the wwhhiillee command, - except that the test is negated; _l_i_s_t_-_2 is executed as long as - the last command in _l_i_s_t_-_1 returns a non-zero exit status. The - exit status of the wwhhiillee and uunnttiill commands is the exit status - of the last command executed in _l_i_s_t_-_2, or zero if none was exe- - cuted. - - CCoopprroocceesssseess - A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A - coprocess is executed asynchronously in a subshell, as if the command - had been terminated with the && control operator, with a two-way pipe - established between the executing shell and the coprocess. - - The format for a coprocess is: - - ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] - - This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the - default name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_- - _p_l_e _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word - of the simple command. When the coprocess is executed, the shell cre- - ates an array variable (see AArrrraayyss below) named _N_A_M_E in the context of - the executing shell. The standard output of _c_o_m_m_a_n_d is connected via a - pipe to a file descriptor in the executing shell, and that file - descriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is - connected via a pipe to a file descriptor in the executing shell, and - that file descriptor is assigned to _N_A_M_E[1]. This pipe is established - before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN - below). The file descriptors can be utilized as arguments to shell - commands and redirections using standard word expansions. The file - 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 - 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 - 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. - 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. _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 - (see RREEDDIIRREECCTTIIOONN below) specified when a function is defined are - performed when the function is executed. The exit status of a - function definition is zero unless a syntax error occurs or a - readonly function with the same name already exists. When exe- - cuted, the exit status of a function is the exit status of the - last command executed in the body. (See FFUUNNCCTTIIOONNSS below.) - -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 - 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 - 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 - 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-- - 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 - 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 - 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 - is, it is removed from the input stream and effectively ignored). - - 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, - when history expansion is enabled, !!. The characters $$ and `` retain - their special meaning within double quotes. The backslash retains its - special meaning 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 - quotes (see PPAARRAAMMEETTEERRSS below). - - Words of the form $$'_s_t_r_i_n_g' are treated specially. The word expands to - _s_t_r_i_n_g, with backslash-escaped characters replaced as specified by the - ANSI C standard. Backslash escape sequences, if present, are decoded - as follows: - \\aa alert (bell) - \\bb backspace - \\ee - \\EE an escape character - \\ff form feed - \\nn new line - \\rr carriage return - \\tt horizontal tab - \\vv vertical tab - \\\\ backslash - \\'' single quote - \\"" double quote - \\_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 - value _H_H (one or two hex digits) - \\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 - 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 - 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 - 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- - 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 - 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 - 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-- - 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. When in _p_o_s_i_x _m_o_d_e, - these builtins may appear in a command after one or more instances of - the ccoommmmaanndd builtin and retain these assignment statement properties. - - In the context where an assignment statement is assigning a value to a - shell variable or array index, the += operator can be used to append to - or add to the variable's previous value. When += is applied to a vari- - able for which the _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated - as an arithmetic expression and added to the variable's current value, - which is also evaluated. When += is applied to an array variable using - compound assignment (see AArrrraayyss below), the variable's value is not - 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 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 or assigned to, 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 argument to the function. For - instance, if a variable name is passed to a shell function as its first - argument, running - declare -n ref=$1 - inside the function creates a nameref variable rreeff whose value is the - variable name passed as the first argument. References and assignments - to rreeff are treated as references and assignments to the variable whose - name was passed as $$11. If the control variable in a ffoorr loop has the - nameref attribute, the list of words can be a list of shell variables, - and a name reference will be established for each word in the list, in - turn, when the loop is executed. Array variables cannot be given the - --nn 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, - 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 - replaced when a shell function is executed (see FFUUNNCCTTIIOONNSS below). - - 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 - only be referenced; assignment to them is not allowed. - ** Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, it expands to a sin- - gle word with the value of each parameter separated by the first - character of the IIFFSS special variable. That is, "$$**" is equiva- - lent 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 sepa- - rated by spaces. If IIFFSS is null, the parameters are joined - without intervening separators. - @@ Expands to the positional parameters, starting from one. When - the expansion occurs within double quotes, each parameter - expands to a separate word. That is, "$$@@" is equivalent to "$$11" - "$$22" ... If the double-quoted expansion occurs within a word, - the expansion of the first parameter is joined with the begin- - ning part of the original word, and the expansion of the last - parameter is joined with the last part of the original word. - When there are no positional parameters, "$$@@" and $$@@ expand to - nothing (i.e., they are removed). - ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- - ground pipeline. - -- 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- - shell. - !! Expands to the process ID of the most recently executed back- - ground (asynchronous) command. - 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 - zero. - __ At shell startup, set to the absolute pathname used to invoke - the shell or shell script being executed as passed in the envi- - ronment or argument list. Subsequently, expands to the last - argument to the previous command, after expansion. Also set to - the full pathname used to invoke each command executed and - placed in the environment exported to that command. When check- - ing mail, this parameter holds the name of the mail file cur- - rently being checked. - - SShheellll VVaarriiaabblleess - The following variables are set by the shell: - - 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 - 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 - 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. - 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; unsetting - array elements cause aliases to be removed from the alias list. - BBAASSHH__AARRGGCC - 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 - 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) - BBAASSHH__AARRGGVV - 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 - 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) - BBAASSHH__CCMMDDSS - An associative array variable whose members correspond to the - internal hash table of commands as maintained by the hhaasshh - builtin. Elements added to this array appear in the hash table; - unsetting array elements cause commands to be removed from the - hash table. - BBAASSHH__CCOOMMMMAANNDD - The command currently being executed or about to be executed, - unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the - trap. - BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG - The command argument to the --cc invocation option. - BBAASSHH__LLIINNEENNOO - An array variable whose members are the line numbers in source - files where each corresponding member of FFUUNNCCNNAAMMEE was invoked. - $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file - ($${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}) where $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called (or - $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- - tion). Use LLIINNEENNOO to obtain the current line number. - BBAASSHH__RREEMMAATTCCHH - An array variable whose members are assigned by the ==~~ binary - operator to the [[[[ conditional command. The element with index - 0 is the portion of the string matching the entire regular - expression. The element with index _n is the portion of the - string matching the _nth parenthesized subexpression. This vari- - able is read-only. - BBAASSHH__SSOOUURRCCEE - An array variable whose members are the source filenames where - the corresponding shell function names in the FFUUNNCCNNAAMMEE array - variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is - defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. - BBAASSHH__SSUUBBSSHHEELLLL - Incremented by one within each subshell or subshell environment - when the shell begins executing in that environment. The ini- - tial value is 0. - BBAASSHH__VVEERRSSIINNFFOO - A readonly array variable whose members hold version information - for this instance of bbaasshh. The values assigned to the array - members are as follows: - BBAASSHH__VVEERRSSIINNFFOO[[0]] The major version number (the _r_e_l_e_a_s_e). - BBAASSHH__VVEERRSSIINNFFOO[[1]] The minor version number (the _v_e_r_s_i_o_n). - BBAASSHH__VVEERRSSIINNFFOO[[2]] The patch level. - BBAASSHH__VVEERRSSIINNFFOO[[3]] The build version. - BBAASSHH__VVEERRSSIINNFFOO[[4]] The release status (e.g., _b_e_t_a_1). - BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE. - BBAASSHH__VVEERRSSIIOONN - Expands to a string describing the version of this instance of - bbaasshh. - CCOOMMPP__CCWWOORRDD - An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current - cursor position. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see - PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__KKEEYY - The key (or final key of a key sequence) used to invoke the cur- - rent completion function. - CCOOMMPP__LLIINNEE - The current command line. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn - below). - CCOOMMPP__PPOOIINNTT - The index of the current cursor position relative to the begin- - ning of the current command. If the current cursor position is - at the end of the current command, the value of this variable is - equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn - below). - CCOOMMPP__TTYYPPEE - Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: _T_A_B, - for normal completion, _?, for listing completions after succes- - sive tabs, _!, for listing alternatives on partial word comple- - tion, _@, to list completions if the word is not unmodified, or - _%, for menu completion. This variable is available only in - shell functions and external commands invoked by the pro- - grammable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn - below). - CCOOMMPP__WWOORRDDBBRREEAAKKSS - The set of characters that the rreeaaddlliinnee library treats as word - separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS - is unset, it loses its special properties, even if it is subse- - quently reset. - CCOOMMPP__WWOORRDDSS - An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The line is split into - words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as - described above. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see - PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file - descriptors for output from and input to an unnamed coprocess - (see CCoopprroocceesssseess above). - DDIIRRSSTTAACCKK - An array variable (see AArrrraayyss below) containing the current con- - tents of the directory stack. Directories appear in the stack - in the order they are displayed by the ddiirrss builtin. Assigning - to members of this array variable may be used to modify directo- - ries already in the stack, but the ppuusshhdd and ppooppdd builtins must - be used to add and remove directories. Assignment to this vari- - able will not change the current directory. If DDIIRRSSTTAACCKK is - unset, it loses its special properties, even if it is subse- - quently 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 - 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 and return an error sta- - tus. 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 - ccaalllleerr builtin displays the current call stack using this infor- - mation. - GGRROOUUPPSS An array variable containing the list of groups of which the - current user is a member. Assignments to GGRROOUUPPSS have no effect - and return an error status. 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, - 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- - 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 - 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_- - _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 - 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 - builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - 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- - dent. - PPIIPPEESSTTAATTUUSS - 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- - 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 - reset. - RREEAADDLLIINNEE__LLIINNEE - The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - 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 - 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. - 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 - 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 - 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 - 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 bbuuiillttiinn bbeellooww uunnddeerr SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS ffoorr aa ddeessccrriippttiioonn ooff tthhee vvaarriioouuss ccoommppaattiibbiilliittyy lleevveellss - aanndd tthheeiirr eeffffeeccttss.. TThhee vvaalluuee mmaayy bbee aa ddeecciimmaall nnuummbbeerr ((ee..gg..,, - 44..22)) oorr aann iinntteeggeerr ((ee..gg..,, 4422)) ccoorrrreessppoonnddiinngg ttoo tthhee ddeessiirreedd ccoomm-- - ppaattiibbiilliittyy lleevveell.. IIff BBAASSHH__CCOOMMPPAATT iiss uunnsseett oorr sseett ttoo tthhee eemmppttyy - ssttrriinngg,, tthhee ccoommppaattiibbiilliittyy lleevveell iiss sseett ttoo tthhee ddeeffaauulltt ffoorr tthhee - ccuurrrreenntt vveerrssiioonn.. IIff BBAASSHH__CCOOMMPPAATT iiss sseett ttoo aa vvaalluuee tthhaatt iiss nnoott - oonnee ooff tthhee vvaalliidd ccoommppaattiibbiilliittyy lleevveellss,, tthhee sshheellll pprriinnttss aann eerrrroorr - mmeessssaaggee aanndd sseettss tthhee ccoommppaattiibbiilliittyy lleevveell ttoo tthhee ddeeffaauulltt ffoorr tthhee - ccuurrrreenntt vveerrssiioonn.. TThhee vvaalliidd ccoommppaattiibbiilliittyy lleevveellss ccoorrrreessppoonndd ttoo - tthhee ccoommppaattiibbiilliittyy ooppttiioonnss aacccceepptteedd bbyy tthhee sshhoopptt bbuuiillttiinn - ddeessccrriibbeedd bbeellooww ((ffoorr eexxaammppllee,, ccoommppaatt4422 mmeeaannss tthhaatt 44..22 aanndd 4422 aarree - vvaalliidd vvaalluueess)).. TThhee ccuurrrreenntt vveerrssiioonn iiss aallssoo aa vvaalliidd vvaalluuee.. - BBAASSHH__EENNVV - 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. - 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 - 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 - ".:~:/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 - 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 - 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 - 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 - an Emacs shell buffer and disables line editing. - EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX - mode. - FFCCEEDDIITT The default editor for the ffcc builtin command. - FFIIGGNNOORREE - 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 - 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 - 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. - 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 - 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 - 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 - 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, - 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 - 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 - matching characters, `&&' matches the previous history line. `&&' - 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. - 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 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 - startup files. - HHIISSTTTTIIMMEEFFOORRMMAATT - 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 - 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 - 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- - 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 - 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 - end of input to the shell. - IINNPPUUTTRRCC - 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 - specifically selected with a variable starting with 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 - 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 - pattern matching. - LLCC__MMEESSSSAAGGEESS - 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 - 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 - 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- - 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 - 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 - name of the current mailfile. Example: - MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has - mail!"' - BBaasshh supplies a default value for this variable, but the loca- - tion of the user mail files that it uses is system dependent - (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 - 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 - value of PPAATTHH indicates the current directory. A null directory - name may appear as two adjacent colons, or as an initial or - trailing colon. The default path is system-dependent, and is - set by the administrator who installs bbaasshh. A common value is - ``/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 - 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 - number of trailing directory components to retain when expanding - the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). - Characters removed are replaced with an ellipsis. - PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and used as the primary prompt string. The default value is - ``\\ss--\\vv\\$$ ''. - 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 ``++ ''. - 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 - 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 - as follows; the braces denote optional portions. - %%%% A literal %%. - %%[[_p]][[ll]]RR The elapsed time in seconds. - %%[[_p]][[ll]]UU The number of CPU seconds spent in user mode. - %%[[_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 - 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 - 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 fraction is included. - - If this variable is not set, bbaasshh acts as if it had the value - $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\%%33llSS''. If the value is null, no - timing information is displayed. A trailing newline is added - when the format string is displayed. - TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the - default timeout for the rreeaadd builtin. The sseelleecctt command termi- - nates if input does not arrive after TTMMOOUUTT seconds when input is - coming from a terminal. In an interactive shell, the value is - interpreted as the number of seconds to wait for 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 - arrive. - TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which - bbaasshh creates temporary files for the shell's use. - aauuttoo__rreessuummee - This variable controls how the shell interacts with the user and - 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 - 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 - 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- - ment character causes history substitution to be skipped for the - remaining words on the line. It does not necessarily cause the - shell parser to treat the rest of the line as a comment. - - AArrrraayyss - BBaasshh provides one-dimensional indexed and associative array variables. - Any variable may be used as an indexed array; the ddeeccllaarree builtin will - explicitly declare an array. There is no maximum limit on the size of - an array, nor any requirement that members be indexed or assigned con- - tiguously. Indexed arrays are referenced using integers (including - arithmetic expressions) and are zero-based; associative arrays are - referenced 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 - 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_- - _s_c_r_i_p_t is ignored. - - Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. - - Attributes may be specified for an array variable using the ddeeccllaarree and - rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. - - 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 - 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 - count back from the end of the array, and an index of -1 references the - last element. - - Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. - The 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 - 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 - special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep- - arate word. When there are no array members, ${_n_a_m_e[@]} expands to - nothing. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part of - the original word, and the expansion of the last parameter is joined - with the last part of the original word. This is analogous to the - expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss - above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- - _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- - ments in the array. Referencing an array variable without a subscript - is equivalent to referencing the array with a subscript of 0. If the - _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array evaluates to - a number less than zero, it is interpreted as relative to one greater - than the maximum index of the array, so negative indices count back - from the end of the array, and an index of -1 references the last ele- - ment. - - An array variable is considered set if a subscript has been assigned a - value. The null string is a valid value. - - The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] - destroys the array element at index _s_u_b_s_c_r_i_p_t. 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 - 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_- - _t_i_o_n, _a_r_i_t_h_m_e_t_i_c _e_x_p_a_n_s_i_o_n, _w_o_r_d _s_p_l_i_t_t_i_n_g, and _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n. - - The order of expansions is: brace expansion, tilde expansion, parame- - ter, variable and arithmetic expansion and command substitution (done - in a left-to-right fashion), word splitting, and pathname expansion. - - On systems that can support it, there is an additional expansion avail- - able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. - - Only brace expansion, word splitting, and pathname expansion can change - the number of words of the expansion; other expansions expand a single - word to a single word. The only exceptions to this are the expansions - of "$$@@" and "$${{_n_a_m_e[[@@]]}}" as explained above (see PPAARRAAMMEETTEERRSS). - - BBrraaccee EExxppaannssiioonn - _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism by which arbitrary strings may be gener- - ated. This mechanism is similar to _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, but the file- - names generated need not exist. Patterns to be brace expanded take the - form of an optional _p_r_e_a_m_b_l_e, followed by either a series of comma-sep- - arated strings or a sequence expression between a pair of braces, fol- - lowed by an optional _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each - string contained within the braces, and the postscript is then appended - to each resulting string, expanding left to right. - - Brace expansions may be nested. The results of each expanded string - are not sorted; left to right order is preserved. For example, - a{{d,c,b}}e expands into `ade ace abe'. - - A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are - either integers or single characters, and _i_n_c_r, an optional increment, - is an integer. When integers are supplied, the expression expands to - each number between _x and _y, inclusive. Supplied integers may be pre- - fixed with _0 to force each term to have the same width. When either _x - or _y begins with a zero, the shell attempts to force all generated - terms to contain the same number of digits, zero-padding where neces- - sary. When characters are supplied, the expression expands to each - character lexicographically between _x and _y, inclusive, using the - default C locale. Note that both _x and _y must be of the same type. - When the increment is supplied, it is used as the difference between - each term. The default increment is 1 or -1 as appropriate. - - Brace expansion is performed before any other expansions, and any char- - acters special to other expansions are preserved in the result. It is - strictly textual. BBaasshh does not apply any syntactic interpretation to - the context of the expansion or the text between the braces. - - A correctly-formed brace expansion must contain unquoted opening and - closing braces, and at least one unquoted comma or a valid sequence - expression. Any incorrectly formed brace expansion is left unchanged. - A {{ 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. - - This construct is typically used as shorthand when the common prefix of - the strings to be generated is longer than in the above example: - - mkdir /usr/local/src/bash/{old,new,dist,bugs} - 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 - ++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 - with the specified login name. - - 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 - 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- - sist of a number without a leading `+' or `-', `+' is assumed. - - If the login name is invalid, or the tilde expansion fails, the word is - unchanged. - - 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 - 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 - 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 - 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 - 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 - (AArrrraayyss). - - If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), it - introduces a level of variable indirection. BBaasshh uses the value of the - variable formed from the rest of _p_a_r_a_m_e_t_e_r as the name of the variable; - this variable is then expanded and that value is used in the rest of - the substitution, rather than the value of _p_a_r_a_m_e_t_e_r itself. This is - known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The exceptions to this are the expansions - of ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point - must immediately follow the left brace in order to introduce indirec- - tion. - - In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- - ter expansion, command substitution, and arithmetic expansion. - - 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 - 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 - 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 - 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 - 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 - 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_- - _s_e_t. If _p_a_r_a_m_e_t_e_r is @@, an indexed array subscripted by @@ or **, - or an associative array name, the results differ as described - below. If _l_e_n_g_t_h is omitted, expands to the substring of the - value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t - and extending to the end of the value. _l_e_n_g_t_h and _o_f_f_s_e_t are - arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). - - 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 - beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one - greater than the greatest positional parameter, so an offset of - -1 evaluates to the last positional parameter. It is an expan- - sion error if _l_e_n_g_t_h evaluates to a number less than zero. - - If _p_a_r_a_m_e_t_e_r is 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 - zero. - - 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 - 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 - 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 - 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, - 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- - 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. - - ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d} - ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} - RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion. If the pattern matches - a trailing portion of the expanded value of _p_a_r_a_m_e_t_e_r, then the - result of the expansion is the expanded value of _p_a_r_a_m_e_t_e_r with - the shortest matching pattern (the ``%%'' case) or the longest - matching pattern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ - or **, the pattern removal operation is applied to each posi- - tional parameter in turn, and the expansion is the resultant - list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or - **, the pattern removal operation is applied to each member of - the array in turn, and the expansion is the resultant list. - - ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g} - PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- - tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and - 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 _p_a_r_a_m_e_t_e_r is @@ or **, the sub- - stitution operation is applied to each positional parameter in - turn, and the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is - an array variable subscripted with @@ or **, the substitution - operation is applied to each member of the array in turn, and - the expansion is the resultant list. - - ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} - ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} - ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} - ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} - CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- - betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro- - duce a pattern just as in pathname expansion. Each character in - the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and, - if it matches the pattern, its case is converted. The pattern - should not attempt to match more than one character. The ^^ - operator converts lowercase letters matching _p_a_t_t_e_r_n to upper- - case; the ,, operator converts matching uppercase letters to low- - ercase. The ^^^^ and ,,,, expansions convert each matched character - in the expanded value; the ^^ and ,, expansions match and convert - only the first character in the expanded value. If _p_a_t_t_e_r_n is - omitted, it is treated like a ??, which matches every character. - If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is - applied to each positional parameter in turn, and the expansion - is the resultant list. If _p_a_r_a_m_e_t_e_r is an array variable sub- - scripted with @@ or **, the case modification operation is applied - to each member of the array in turn, and the expansion is the - resultant list. - - CCoommmmaanndd SSuubbssttiittuuttiioonn - _C_o_m_m_a_n_d _s_u_b_s_t_i_t_u_t_i_o_n allows the output of a command to replace the com- - mand name. There are two forms: - - $$((_c_o_m_m_a_n_d)) - or - ``_c_o_m_m_a_n_d`` - - BBaasshh performs the expansion by executing _c_o_m_m_a_n_d and replacing the com- - mand substitution with the standard output of the command, with any - trailing newlines deleted. Embedded newlines are not deleted, but they - may be removed during word splitting. The command substitution $$((ccaatt - _f_i_l_e)) can be replaced by the equivalent but faster $$((<< _f_i_l_e)). - - When the old-style backquote form of substitution is used, backslash - retains its literal meaning except when followed by $$, ``, or \\. The - first backquote not preceded by a backslash terminates the command sub- - stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the - parentheses make up the command; none are treated specially. - - Command substitutions may be nested. To nest when using the backquoted - form, escape the inner backquotes with backslashes. - - If the substitution appears within double quotes, word splitting and - pathname expansion are not performed on the results. - - AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion allows the evaluation of an arithmetic expression - and the substitution of the result. The format for arithmetic expan- - sion is: - - $$((((_e_x_p_r_e_s_s_i_o_n)))) - - The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a - double quote inside the parentheses is not treated specially. All - tokens in the expression undergo parameter expansion, string expansion, - command substitution, and quote removal. Arithmetic expansions may be - nested. - - The evaluation is performed according to the rules listed below under - AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message - indicating failure and no substitution occurs. - - PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is supported on systems that support named pipes - (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. It takes the form - of <<((_l_i_s_t)) or >>((_l_i_s_t)). The process _l_i_s_t is run with its input or out- - put connected to a _F_I_F_O or some file in //ddeevv//ffdd. The name of this file - is passed as an argument to the current command as the result of the - expansion. If the >>((_l_i_s_t)) form is used, writing to the file will pro- - vide input for _l_i_s_t. If the <<((_l_i_s_t)) form is used, the file passed as - an argument should be read to obtain the output of _l_i_s_t. - - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic - expansion. - - WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes - for _w_o_r_d _s_p_l_i_t_t_i_n_g. - - The shell treats each character of IIFFSS as a delimiter, and splits the - results of the other expansions into words on these characters. If IIFFSS - is unset, or its value is exactly <><><>, the default, - then sequences of <>, <>, and <> at the beginning and - end of the results of the previous expansions are ignored, and any - sequence of IIFFSS characters not at the beginning or end serves to - delimit words. If IIFFSS has a value other than the default, then - sequences of the whitespace characters ssppaaccee and ttaabb are ignored at the - beginning and end of the word, as long as the whitespace character is - in the value of IIFFSS (an IIFFSS whitespace character). Any character in - IIFFSS that is not IIFFSS whitespace, along with any adjacent IIFFSS whitespace - characters, delimits a field. A sequence of IIFFSS whitespace characters - is also treated as a delimiter. If the value of IIFFSS is null, no word - splitting occurs. - - Explicit null arguments ("""" or '''') are retained. Unquoted implicit - null arguments, resulting from the expansion of parameters that have no - values, are removed. If a parameter with no value is expanded within - double quotes, a null argument results and is retained. - - Note that if no expansion occurs, no splitting is performed. - - PPaatthhnnaammee EExxppaannssiioonn - After word splitting, unless the --ff option has been set, bbaasshh scans - each word for the characters **, ??, and [[. If one of these characters - appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an - alphabetically sorted list of filenames matching the pattern (see PPaatt-- - tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the - shell option nnuullllgglloobb is not enabled, the word is left unchanged. If - the nnuullllgglloobb option is set, and no matches are found, the word is - removed. If the ffaaiillgglloobb shell option is set, and no matches are - found, an error message is printed and the command is not executed. If - the shell option nnooccaasseegglloobb is enabled, the match is performed without - regard to the case of alphabetic characters. When a pattern is used - for pathname expansion, the character ````..'''' at the start of a name or - immediately following a slash must be matched explicitly, unless the - shell option ddoottgglloobb is set. When matching a pathname, the slash char- - acter must always be matched explicitly. In other cases, the ````..'''' - character is not treated specially. See the description of sshhoopptt below - under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullll-- - gglloobb, ffaaiillgglloobb, and ddoottgglloobb shell options. - - The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file- - names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching filename - that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed from the - list of matches. 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 ignoring filenames beginning with a ````..'''', make ````..**'''' one - of the patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when - GGLLOOBBIIGGNNOORREE is unset. - - PPaatttteerrnn MMaattcchhiinngg - - Any character that appears in a pattern, other than the special pattern - characters described below, matches itself. The NUL character may not - occur in a pattern. A backslash escapes the following character; the - escaping backslash is discarded when matching. The special pattern - characters must be quoted if they are to be matched literally. - - The special pattern characters have the following meanings: - - ** Matches any string, including the null string. When the - gglloobbssttaarr shell option is enabled, and ** is used in a - pathname expansion context, two adjacent **s used as a - single pattern will match all files and zero or more - directories and subdirectories. If followed by a //, two - adjacent **s will match only directories and subdirecto- - ries. - ?? Matches any single character. - [[......]] Matches any one of the enclosed characters. A pair of - characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_- - _s_i_o_n; any character that falls between those two charac- - ters, inclusive, using the current locale's collating - sequence and character set, is matched. If the first - character following the [[ is a !! or a ^^ then any charac- - ter not enclosed is matched. The sorting order of char- - acters in range expressions is determined by the current - locale and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell - variables, if set. To obtain the traditional interpreta- - tion of range expressions, where [[aa--dd]] is equivalent to - [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or - enable the gglloobbaasscciiiirraannggeess shell option. A -- may be - matched by including it as the first or last character in - the set. A ]] may be matched by including it as the first - character in the set. - - Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using - the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following - classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt - ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt - A character class matches any character belonging to that - class. The wwoorrdd character class matches letters, digits, - and the character _. - - Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified - using the syntax [[==_c==]], which matches all characters with - the same collation weight (as defined by the current - locale) as the character _c. - - Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat- - ing symbol _s_y_m_b_o_l. - - If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several - extended pattern matching operators are recognized. In the following - description, a _p_a_t_t_e_r_n_-_l_i_s_t is a list of one or more patterns separated - by a ||. Composite patterns may be formed using one or more of the fol- - lowing sub-patterns: - - ??((_p_a_t_t_e_r_n_-_l_i_s_t)) - Matches zero or one occurrence of the given patterns - **((_p_a_t_t_e_r_n_-_l_i_s_t)) - Matches zero or more occurrences of the given patterns - ++((_p_a_t_t_e_r_n_-_l_i_s_t)) - Matches one or more occurrences of the given patterns - @@((_p_a_t_t_e_r_n_-_l_i_s_t)) - Matches one of the given patterns - !!((_p_a_t_t_e_r_n_-_l_i_s_t)) - Matches anything except one of the given patterns - - QQuuoottee RReemmoovvaall - After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions - are removed. - -RREEDDIIRREECCTTIIOONN - Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d - using a special notation interpreted by the shell. Redirection allows - commands' file handles to be duplicated, opened, closed, made to refer - to different files, and can change the files the command reads from and - writes to. Redirection may also be used to modify file handles in the - current shell execution environment. The following redirection opera- - tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol- - low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear, - from left to right. - - Each redirection that may be preceded by a file descriptor number may - instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for - each redirection operator except >&- and <&-, the shell will allocate a - file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e. - If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines - the file descriptor to close. - - In the following descriptions, if the file descriptor number is omit- - ted, and the first character of the redirection operator is <<, the re- - direction refers to the standard input (file descriptor 0). If the - first character of the redirection operator is >>, the redirection - refers to the standard output (file descriptor 1). - - The word following the redirection operator in the following descrip- - tions, unless otherwise noted, is subjected to brace expansion, tilde - expansion, parameter and variable expansion, command substitution, - arithmetic expansion, quote removal, pathname expansion, and word - splitting. If it expands to more than one word, bbaasshh reports an error. - - Note that the order of redirections is significant. For example, the - command - - ls >> dirlist 2>>&&1 - - directs both standard output and standard error to the file _d_i_r_l_i_s_t, - while the command - - ls 2>>&&1 >> dirlist - - directs only the standard output to file _d_i_r_l_i_s_t, because the standard - error was duplicated from the standard output before the standard out- - put was redirected to _d_i_r_l_i_s_t. - - BBaasshh handles several filenames specially when they are used in redirec- - tions, as described in the following table: - - //ddeevv//ffdd//_f_d - If _f_d is a valid integer, file descriptor _f_d is dupli- - cated. - //ddeevv//ssttddiinn - File descriptor 0 is duplicated. - //ddeevv//ssttddoouutt - File descriptor 1 is duplicated. - //ddeevv//ssttddeerrrr - File descriptor 2 is duplicated. - //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t - If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts - to open the corresponding TCP socket. - //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t - If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts - to open the corresponding UDP socket. - - A failure to open or create a file causes the redirection to fail. - - Redirections using file descriptors greater than 9 should be used with - care, as they may conflict with file descriptors the shell uses inter- - nally. - - RReeddiirreeccttiinngg IInnppuutt - Redirection of input causes the file whose name results from the expan- - sion of _w_o_r_d to be opened for reading on file descriptor _n, or the - standard input (file descriptor 0) if _n is not specified. - - The general format for redirecting input is: - - [_n]<<_w_o_r_d - - RReeddiirreeccttiinngg OOuuttppuutt - Redirection of output causes the file whose name results from the - expansion of _w_o_r_d to be opened for writing on file descriptor _n, or the - standard output (file descriptor 1) if _n is not specified. If the file - does not exist it is created; if it does exist it is truncated to zero - size. - - The general format for redirecting output is: - - [_n]>>_w_o_r_d - - If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett - builtin has been enabled, the redirection will fail if the file whose - name results from the expansion of _w_o_r_d exists and is a regular file. - If the redirection operator is >>||, or the redirection operator is >> and - the nnoocclloobbbbeerr option to the sseett builtin command is not enabled, the re- - direction is attempted even if the file named by _w_o_r_d exists. - - AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt - Redirection of output in this fashion causes the file whose name - results from the expansion of _w_o_r_d to be opened for appending on file - descriptor _n, or the standard output (file descriptor 1) if _n is not - specified. If the file does not exist it is created. - - The general format for appending output is: - - [_n]>>>>_w_o_r_d - - - RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be redirected to the - file whose name is the expansion of _w_o_r_d. - - There are two formats for redirecting standard output and standard - error: - - &&>>_w_o_r_d - and - >>&&_w_o_r_d - - Of the two forms, the first is preferred. This is semantically equiva- - lent to - - >>_w_o_r_d 2>>&&1 - - When using the second form, _w_o_r_d may not expand to a number or --. If - it does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee - DDeessccrriippttoorrss below) for compatibility reasons. - - AAppppeennddiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct allows both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to be appended to the - file whose name is the expansion of _w_o_r_d. - - The format for appending standard output and standard error is: - - &&>>>>_w_o_r_d - - This is semantically equivalent to - - >>>>_w_o_r_d 2>>&&1 - - (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). - - HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the - current source until a line containing only _d_e_l_i_m_i_t_e_r (with no trailing - blanks) is seen. All of the lines read up to that point are then used - as the standard input for a command. - - The format of here-documents is: - - <<<<[--]_w_o_r_d - _h_e_r_e_-_d_o_c_u_m_e_n_t - _d_e_l_i_m_i_t_e_r - - No parameter and variable expansion, command substitution, arithmetic - expansion, or pathname expansion is performed on _w_o_r_d. If any charac- - ters in _w_o_r_d are quoted, the _d_e_l_i_m_i_t_e_r is the result of quote removal - on _w_o_r_d, and the lines in the here-document are not expanded. If _w_o_r_d - is unquoted, all lines of the here-document are subjected to parameter - expansion, command substitution, and arithmetic expansion, the charac- - ter sequence \\<> is ignored, and \\ must be used to quote the - characters \\, $$, and ``. - - If the redirection operator is <<<<--, then all leading tab characters are - stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This - allows here-documents within shell scripts to be indented in a natural - fashion. - - HHeerree SSttrriinnggss - A variant of here documents, the format is: - - <<<<<<_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 to the command on - its standard input. - - DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss - The redirection operator - - [_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 - 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 - redirected as described previously. - - MMoovviinngg FFiillee DDeessccrriippttoorrss - The redirection operator - - [_n]<<&&_d_i_g_i_t-- - - 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. - - Similarly, the redirection operator - - [_n]>>&&_d_i_g_i_t-- - - 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 - The redirection operator - - [_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 - 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 - 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 - 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 - 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 - sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - - The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands - following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- - pound command. As a consequence, aliases defined in a function are not - available until after that function is executed. To be safe, always - put alias definitions on a separate line, and do not use aalliiaass in com- - pound commands. - - For almost every purpose, aliases are superseded by shell functions. - -FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the list of commands - 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 - 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- - 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 - option has been enabled. - - Variables local to the function may be declared with the llooccaall builtin - command. Ordinarily, variables and their values are shared between the - function and its caller. - - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, - defines a maximum function nesting level. Function invocations that - exceed the limit cause the entire command to abort. - - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. Any command associated with the RREETTUURRNN trap is executed - before execution resumes. When a function completes, the values of the - positional parameters and the special parameter ## are restored to the - values they had prior to the function's execution. - - Function names and definitions may be listed with the --ff option to the - ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee-- - sseett will list the function names only (and optionally the source file - and line number, if the eexxttddeebbuugg shell option is enabled). Functions - may be exported so that subshells automatically have them defined with - the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell - functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- - dren. Care should be taken in cases where this may cause a problem. - - 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 - recursive calls. - -AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc - EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check - for overflow, though division by 0 is trapped and flagged as an error. - The operators and their precedence, associativity, and values are the - same as in the C language. The following list of operators is grouped - into levels of equal-precedence operators. The levels are listed in - order of decreasing precedence. - - _i_d++++ _i_d---- - variable post-increment and post-decrement - ++++_i_d ----_i_d - variable pre-increment and pre-decrement - -- ++ unary minus and plus - !! ~~ logical and bitwise negation - **** exponentiation - ** // %% multiplication, division, remainder - ++ -- addition, subtraction - <<<< >>>> left and right bitwise shifts - <<== >>== << >> - comparison - ==== !!== equality and inequality - && bitwise AND - ^^ bitwise exclusive OR - || bitwise OR - &&&& logical AND - |||| logical OR - _e_x_p_r??_e_x_p_r::_e_x_p_r - conditional operator - == **== //== %%== ++== --== <<<<== >>>>== &&== ^^== ||== - assignment - _e_x_p_r_1 ,, _e_x_p_r_2 - comma - - 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 - 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 - 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 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 - 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- - 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 - above. - -CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. If any _f_i_l_e argument to one of the pri- - maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If - the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, - _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, - is checked. - - Unless otherwise specified, primaries that operate on files follow sym- - bolic links and operate on the target of the link, rather than the link - itself. - - When used with [[[[, the << and >> operators sort lexicographically using - the current locale. The tteesstt command sorts using ASCII ordering. - - --aa _f_i_l_e - True if _f_i_l_e exists. - --bb _f_i_l_e - True if _f_i_l_e exists and is a block special file. - --cc _f_i_l_e - True if _f_i_l_e exists and is a character special file. - --dd _f_i_l_e - True if _f_i_l_e exists and is a directory. - --ee _f_i_l_e - True if _f_i_l_e exists. - --ff _f_i_l_e - True if _f_i_l_e exists and is a regular file. - --gg _f_i_l_e - True if _f_i_l_e exists and is set-group-id. - --hh _f_i_l_e - True if _f_i_l_e exists and is a symbolic link. - --kk _f_i_l_e - True if _f_i_l_e exists and its ``sticky'' bit is set. - --pp _f_i_l_e - True if _f_i_l_e exists and is a named pipe (FIFO). - --rr _f_i_l_e - True if _f_i_l_e exists and is readable. - --ss _f_i_l_e - True if _f_i_l_e exists and has a size greater than zero. - --tt _f_d True if file descriptor _f_d is open and refers to a terminal. - --uu _f_i_l_e - True if _f_i_l_e exists and its set-user-id bit is set. - --ww _f_i_l_e - True if _f_i_l_e exists and is writable. - --xx _f_i_l_e - True if _f_i_l_e exists and is executable. - --GG _f_i_l_e - True if _f_i_l_e exists and is owned by the effective group id. - --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 - 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- - 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 - _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 - 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 - 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 - 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- - ence. - --zz _s_t_r_i_n_g - True if the length of _s_t_r_i_n_g is zero. - _s_t_r_i_n_g - --nn _s_t_r_i_n_g - True if the length of _s_t_r_i_n_g is non-zero. - - _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, - this performs pattern matching as described above (CCoommppoouunndd CCoomm-- - mmaannddss). - - _s_t_r_i_n_g_1 !!== _s_t_r_i_n_g_2 - True if the strings are not equal. - - _s_t_r_i_n_g_1 << _s_t_r_i_n_g_2 - True if _s_t_r_i_n_g_1 sorts before _s_t_r_i_n_g_2 lexicographically. - - _s_t_r_i_n_g_1 >> _s_t_r_i_n_g_2 - 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. - -SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN - 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 - 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 - 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- - able. - - If no command name results, the variable assignments affect the current - shell environment. Otherwise, the variables are added to the environ- - ment of the executed command and do not affect the current shell envi- - ronment. If any of the assignments attempts to assign a value to a - readonly variable, an error occurs, and the command exits with a non- - zero status. - - If no command name results, redirections are performed, but do not - 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 - 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 - 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 - 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 - 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. - - If the search is successful, or if the command name contains one or - more slashes, the shell executes the named program in a separate execu- - tion environment. Argument 0 is set to the name given, and the remain- - ing arguments to the command are set to the arguments given, if any. - - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below - under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. - - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the - specified interpreter on operating systems that do not handle this exe- - cutable format themselves. The arguments to the interpreter consist of - a single optional argument following the interpreter name on the first - line of the program, followed by the name of the program, followed by - the command arguments, if any. - -CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- - ing: - - +o open files inherited by the shell at invocation, as modified by - redirections supplied to the eexxeecc builtin - - +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or - inherited by the shell at invocation - - +o the file creation mode mask as set by uummaasskk or inherited from - the shell's parent - - +o current traps set by ttrraapp - - +o shell parameters that are set by variable assignment or with sseett - or inherited from the shell's parent in the environment - - +o shell functions defined during execution or inherited from the - shell's parent in the environment - - +o options enabled at invocation (either by default or with com- - mand-line arguments) or by sseett - - +o options enabled by sshhoopptt - - +o shell aliases defined with aalliiaass - - +o various process IDs, including those of background jobs, the - value of $$$$, and the value of PPPPIIDD - - When a simple command other than a builtin or shell function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- - ited from the shell. - - - +o the shell's open files, plus any modifications and additions - specified by redirections to the command - - +o the current working directory - - +o the file creation mode mask - - +o shell variables and functions marked for export, along with - variables exported for the command, passed in the environment - - +o traps caught by the shell are reset to the values inherited from - the shell's parent, and traps ignored by the shell are ignored - - A command invoked in this separate environment cannot affect the - shell's execution environment. - - Command substitution, commands grouped with parentheses, and asynchro- - nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are - reset to the values that the shell inherited from its parent at invoca- - tion. Builtin commands that are invoked as part of a pipeline are also - executed in a subshell environment. Changes made to the subshell envi- - ronment cannot affect the shell's execution environment. - - Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh - clears the --ee option in such subshells. - - If a command is followed by a && and job control is not active, the - default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. - Otherwise, the invoked command inherits the file descriptors of the - calling shell as modified by redirections. - -EENNVVIIRROONNMMEENNTT - When a program is invoked it is given an array of strings called the - _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form - _n_a_m_e=_v_a_l_u_e. - - The shell provides several ways to manipulate the environment. On - invocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child pro- - cesses. Executed commands inherit the environment. The eexxppoorrtt and - ddeeccllaarree --xx commands allow parameters and functions to be added to and - deleted from the environment. If the value of a parameter in the envi- - ronment is modified, the new value becomes part of the environment, - replacing the old. The environment inherited by any executed command - consists of the shell's initial environment, whose values may be modi- - fied in the shell, less any pairs removed by the uunnsseett command, plus - any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. - - The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented - temporarily by prefixing it with parameter assignments, as described - above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- - ronment seen by that command. - - If the --kk option is set (see the sseett builtin command below), then _a_l_l - parameter assignments are placed in the environment for a command, not - just those that precede the command name. - - When bbaasshh invokes an external command, the variable __ is set to the - full filename of the command and passed to that command in its environ- - ment. - -EEXXIITT SSTTAATTUUSS - The exit status of an executed command is the value returned by the - _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between - 0 and 255, though, as explained below, the shell may use values above - 125 specially. Exit statuses from shell builtins and compound commands - are also limited to this range. Under certain circumstances, the shell - will use special values to indicate specific failure modes. - - For the shell's purposes, a command which exits with a zero exit status - has succeeded. An exit status of zero indicates success. A non-zero - exit status indicates failure. When a command terminates on a fatal - signal _N, bbaasshh uses the value of 128+_N as the exit status. - - If a command is not found, the child process created to execute it - returns a status of 127. If a command is found but is not executable, - the return status is 126. - - If a command fails because of an error during expansion or redirection, - the exit status is greater than zero. - - Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and - non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins - return an exit status of 2 to indicate incorrect usage. - - BBaasshh itself returns the exit status of the last command executed, - unless a syntax error occurs, in which case it exits with a non-zero - value. See also the eexxiitt builtin command below. - -SSIIGGNNAALLSS - When bbaasshh is interactive, in the absence of any traps, it ignores - SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT - is caught and handled (so that the wwaaiitt builtin is interruptible). In - all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh - ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. - - Non-builtin commands run by bbaasshh have signal handlers set to the values - inherited by the shell from its parent. When job control is not in - effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to - these inherited handlers. Commands run as a result of command substi- - tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT-- - TTOOUU, and SSIIGGTTSSTTPP. - - The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, - an interactive shell resends the SSIIGGHHUUPP to all jobs, running or - stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the - SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular - job, it should be removed from the jobs table with the ddiissoowwnn builtin - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP - using ddiissoowwnn --hh. - - If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a - SSIIGGHHUUPP to all jobs when an interactive login shell exits. - - If bbaasshh is waiting for a command to complete and receives a signal for - which a trap has been set, the trap will not be executed until the com- - mand completes. When bbaasshh is waiting for an asynchronous command via - the wwaaiitt builtin, the reception of a signal for which a trap has been - set will cause the wwaaiitt builtin to return immediately with an exit sta- - tus greater than 128, immediately after which the trap is executed. - -JJOOBB CCOONNTTRROOLL - _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the - execution of processes and continue (_r_e_s_u_m_e) their execution at a later - point. A user typically employs this facility via an interactive - interface supplied jointly by the operating system kernel's terminal - driver and bbaasshh. - - The shell associates a _j_o_b with each pipeline. It keeps a table of - currently executing jobs, which may be listed with the jjoobbss command. - When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a - line that looks like: - - [1] 25647 - - indicating that this job is job number 1 and that the process ID of the - last process in the pipeline associated with this job is 25647. All of - the processes in a single pipeline are members of the same job. BBaasshh - uses the _j_o_b abstraction as the basis for job control. - - To facilitate the implementation of the user interface to job control, - the operating system maintains the notion of a _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s - _g_r_o_u_p _I_D. Members of this process group (processes whose process group - ID is equal to the current terminal process group ID) receive keyboard- - generated signals such as SSIIGGIINNTT. These processes are said to be in - the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID - differs from the terminal's; such processes are immune to keyboard-gen- - erated signals. Only foreground processes are allowed to read from or, - if the user so specifies with stty tostop, write to the terminal. - Background processes which attempt to read from (write to when stty - tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal - by the kernel's terminal driver, which, unless caught, suspends the - process. - - If the operating system on which bbaasshh is running supports job control, - bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- - ically ^^ZZ, Control-Z) while a process is running causes that process to - be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d - character (typically ^^YY, Control-Y) causes the process to be stopped - when it attempts to read input from the terminal, and control to be - returned to bbaasshh. The user may then manipulate the state of this job, - using the bbgg command to continue it in the background, the ffgg command - to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ - takes effect immediately, and has the additional side effect of causing - pending output and typeahead to be discarded. - - There are a number of ways to refer to a job in the shell. The charac- - ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be - referred to as %%nn. A job may also be referred to using a prefix of the - name used to start it, or using a substring that appears in its command - line. For example, %%ccee refers to a stopped ccee job. If a prefix - matches more than one job, bbaasshh reports an error. Using %%??ccee, on the - other hand, refers to any job containing the string ccee in its command - line. If the substring matches more than one job, bbaasshh reports an - error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- - _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground - or started in the background. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using - %%--. If there is only a single job, %%++ and %%-- can both be used to refer - to that job. In output pertaining to jobs (e.g., the output of the - jjoobbss command), the current job is always flagged with a ++, and the pre- - vious job with a --. A single % (with no accompanying job specifica- - tion) also refers to the current job. - - Simply naming a job can be used to bring it into the foreground: %%11 is - a synonym for ````ffgg %%11'''', bringing job 1 from the background into the - foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, - equivalent to ````bbgg %%11''''. - - The shell learns immediately whenever a job changes state. Normally, - bbaasshh waits until it is about to print a prompt before reporting changes - in a job's status so as to not interrupt any other output. If the --bb - option to the sseett builtin command is enabled, bbaasshh reports such changes - immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that - exits. - - If an attempt to exit bbaasshh is made while jobs are stopped (or, if the - cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- - ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option - is enabled, lists the jobs and their statuses. The jjoobbss command may - then be used to inspect their status. If a second attempt to exit is - made without an intervening command, the shell does not print another - warning, and any stopped jobs are terminated. - -PPRROOMMPPTTIINNGG - When executing interactively, bbaasshh displays the primary prompt PPSS11 when - it is ready to read a command, and the secondary prompt PPSS22 when it - needs more input to complete a command. BBaasshh allows these prompt - strings to be customized by inserting a number of backslash-escaped - special characters that are decoded as follows: - \\aa an ASCII bell character (07) - \\dd the date in "Weekday Month Date" format (e.g., "Tue May - 26") - \\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 - in a locale-specific time representation. The braces are - required - \\ee an ASCII escape character (033) - \\hh the hostname up to the first `.' - \\HH the hostname - \\jj the number of jobs currently managed by the shell - \\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 - 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 - \\@@ the current time in 12-hour am/pm format - \\AA the current time in 24-hour HH:MM format - \\uu the username of the current user - \\vv the version of bbaasshh (e.g., 2.00) - \\VV the release of bbaasshh, version + patch level (e.g., 2.00.0) - \\ww the current working directory, with $$HHOOMMEE abbreviated - with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari- - able) - \\WW the basename of the current working directory, with $$HHOOMMEE - abbreviated with a tilde - \\!! the history number of this command - \\## the command number of this command - \\$$ if the effective UID is 0, a ##, otherwise a $$ - \\_n_n_n the character corresponding to the octal number _n_n_n - \\\\ a backslash - \\[[ begin a sequence of non-printing characters, which could - be used to embed a terminal control sequence into the - 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 - under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - -RREEAADDLLIINNEE - 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 - 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 - 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 - 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 - 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 - 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, - 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- - 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 - programs that use this library may add their own commands and bindings. - - For example, placing - - 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_- - _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, - _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 - string that is inserted when the key is pressed (a _m_a_c_r_o). - - RReeaaddlliinnee KKeeyy BBiinnddiinnggss - The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple. - All that is required is the name of the command or the text of a macro - and a key sequence to which it should be bound. The name may be speci- - 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. - - When using the form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e is the name - of a key spelled out in English. For example: - - Control-u: universal-argument - 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 - 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 - the symbolic character names are not recognized. - - "\C-u": universal-argument - "\C-x\C-r": re-read-init-file - "\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 - bound to insert the text ``Function Key 1''. - - The full set of GNU Emacs style escape sequences is - \\CC-- control prefix - \\MM-- meta prefix - \\ee an escape character - \\\\ backslash - \\"" literal " - \\'' literal ' - - In addition to the GNU Emacs style escape sequences, a second set of - backslash escapes is available: - \\aa alert (bell) - \\bb backspace - \\dd delete - \\ff form feed - \\nn newline - \\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 (one to three digits) - \\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 - 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- - mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - - RReeaaddlliinnee VVaarriiaabblleess - Readline has variables that can be used to further customize its behav- - ior. A variable may be set in the _i_n_p_u_t_r_c file with a statement of the - form - - 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- - 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 - bell. If set to nnoonnee, readline never rings the bell. If set to - 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 - treated specially by the kernel's terminal driver to their read- - line equivalents. - 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 - variable. - ccoommmmeenntt--bbeeggiinn ((````##'''')) - The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt - command is executed. This command is bound to MM--## in emacs mode - and to ## in vi command mode. - ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) - If set to OOnn, readline performs filename matching and completion - in a case-insensitive fashion. - ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) - The length in characters of the common prefix of a list of pos- - sible completions that is displayed without modification. When - set to a value greater than zero, common prefixes longer than - this value are replaced with an ellipsis when displaying possi- - ble completions. - ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) - This determines when the user is queried about viewing the num- - ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- - ttiioonnss command. It may be set to any integer value greater than - or equal to zero. If the number of possible completions is - greater than or equal to the value of this variable, the user is - 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 - 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). - 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 - mapped to sseellff--iinnsseerrtt. - eeddiittiinngg--mmooddee ((eemmaaccss)) - Controls whether readline begins with a set of key bindings sim- - ilar to _E_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or - vvii. - eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) - When set to OOnn, on operating systems that indicate they support - it, readline echoes a character corresponding to a signal gener- - ated from the keyboard. - eennaabbllee--kkeeyyppaadd ((OOffff)) - When set to OOnn, readline will try to enable the application key- - pad when it is called. Some systems need this to enable the - arrow keys. - eennaabbllee--mmeettaa--kkeeyy ((OOnn)) - When set to OOnn, readline will try to enable any meta modifier - key the terminal claims to support when it is called. On many - terminals, the meta key is used to send eight-bit characters. - eexxppaanndd--ttiillddee ((OOffff)) - If set to OOnn, tilde expansion is performed when readline - attempts word completion. - hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to OOnn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- - ttoorryy or nneexxtt--hhiissttoorryy. - hhiissttoorryy--ssiizzee ((00)) - Set the maximum number of history entries saved in the history - list. If set to zero, any existing history entries are deleted - and no new entries are saved. If set to a value less than zero, - the number of history entries is not limited. By default, the - number of history entries is not limited. - hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) - When set to OOnn, makes readline use a single line for display, - scrolling the input horizontally on a single screen line when it - becomes longer than the screen width rather than wrapping to a - new line. - iinnppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will enable eight-bit input (that is, it - will not strip the high bit from the characters it reads), - regardless of what the terminal claims it can support. The name - mmeettaa--ffllaagg is a synonym for this variable. - iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ'''')) - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- - ters _E_S_C and _C_-_J will terminate an incremental search. - kkeeyymmaapp ((eemmaaccss)) - Set the current readline keymap. The set of valid keymap names - is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_- - _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is - equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the - value of eeddiittiinngg--mmooddee also affects the default keymap. - kkeeyysseeqq--ttiimmeeoouutt ((550000)) - Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when - reading an ambiguous key sequence (one that can form a complete - key sequence using the input read so far, or can take additional - input to complete a longer key sequence). If no input is - received within the timeout, _r_e_a_d_l_i_n_e will use the shorter but - complete key sequence. The value is specified in milliseconds, - so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for - additional input. If this variable is set to a value less than - or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait - until another key is pressed to decide which key sequence to - complete. - mmaarrkk--ddiirreeccttoorriieess ((OOnn)) - If set to OOnn, completed directory names have a slash appended. - mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, history lines that have been modified are dis- - played with a preceding asterisk (**). - mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) - If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended (subject to the value of - mmaarrkk--ddiirreeccttoorriieess). - mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, causes readline to match files - whose names begin with a `.' (hidden files) when performing - filename completion. If set to OOffff, the leading `.' must be - supplied by the user in the filename to be completed. - mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) - If set to OOnn, menu completion displays the common prefix of the - list of possible completions (which may be empty) before cycling - through the list. - oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, readline will display characters with the eighth - bit set directly rather than as a meta-prefixed escape sequence. - ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis- - play a screenful of possible completions at a time. - pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, readline will display completions with matches - sorted horizontally in alphabetical order, rather than down the - screen. - rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to OOnn, readline will undo all changes to history lines - before returning when aacccceepptt--lliinnee is executed. By default, his- - tory lines may be modified and retain individual undo lists - across calls to rreeaaddlliinnee. - sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff)) - This alters the default behavior of the completion functions. - If set to OOnn, words which have more than one possible completion - cause the matches to be listed immediately instead of ringing - the bell. - sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in - a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately - 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 (+). - sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) - If set to OOnn, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - readline does not insert characters from the completion that - match characters after point in the word being completed, so - portions of the word following the cursor are not duplicated. - vviissiibbllee--ssttaattss ((OOffff)) - If set to OOnn, a character denoting a file's type as reported by - _s_t_a_t(2) is appended to the filename when listing possible com- - pletions. - - RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - Readline implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There - are four parser directives used. - - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using - readline. The text of the test extends to the end of the line; - no characters are required to isolate it. - - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether readline is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for - instance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and - _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in - emacs mode. - - tteerrmm The tteerrmm== form may be used to include terminal-specific - key bindings, perhaps to bind the key sequences output by - the terminal's function keys. The word on the right side - of the == is tested against the both full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, - for instance. - - aapppplliiccaattiioonn - The aapppplliiccaattiioonn construct is used to include application- - specific settings. Each program using the readline - library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization - 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 - bbaasshh: - - $$iiff Bash - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $$eennddiiff - - $$eennddiiff This command, as seen in the previous example, terminates an $$iiff - command. - - $$eellssee Commands in this branch of the $$iiff directive are executed if the - test fails. - - $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the follow- - ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: - - $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c - - SSeeaarrcchhiinngg - Readline provides commands for searching through the command history - (see HHIISSTTOORRYY below) for lines containing a specified string. There are - two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l. - - Incremental searches begin before the user has finished typing the - search string. As each character of the search string is typed, read- - line displays the next entry from the history matching the string typed - so far. An incremental search requires only as many characters as - needed to find the desired history entry. The characters present in - the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an - incremental search. If that variable has not been assigned a value the - Escape and Control-J characters will terminate an incremental search. - Control-G will abort an incremental search and restore the original - line. When the search is terminated, the history entry containing the - search string becomes the current line. - - To find other matching entries in the history list, type Control-S or - Control-R as appropriate. This will search backward or forward in the - history for the next entry matching the search string typed so far. - Any other key sequence bound to a readline command will terminate the - search and execute that command. For instance, a _n_e_w_l_i_n_e will termi- - nate the search and accept the line, thereby executing the command from - the history list. - - Readline remembers the last incremental search string. If two Control- - Rs are typed without any intervening characters defining a new search - string, any remembered search string is used. - - Non-incremental searches read the entire search string before starting - to search for matching history lines. The search string may be typed - by the user or be part of the contents of the current line. - - RReeaaddlliinnee CCoommmmaanndd NNaammeess - The following is a list of the names of the commands and the default - key sequences to which they are bound. Command names without an accom- - panying key sequence are unbound by default. In the following descrip- - tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to - a cursor position saved by the sseett--mmaarrkk command. The text between the - point and mark is referred to as the _r_e_g_i_o_n. - - CCoommmmaannddss ffoorr MMoovviinngg - bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa)) - Move to the start of the current line. - eenndd--ooff--lliinnee ((CC--ee)) - Move to the end of the line. - ffoorrwwaarrdd--cchhaarr ((CC--ff)) - Move forward a character. - bbaacckkwwaarrdd--cchhaarr ((CC--bb)) - Move back a character. - ffoorrwwaarrdd--wwoorrdd ((MM--ff)) - Move forward to the end of the next word. Words are composed of - alphanumeric characters (letters and digits). - bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) - Move back to the start of the current or previous word. Words - are composed of alphanumeric characters (letters and digits). - sshheellll--ffoorrwwaarrdd--wwoorrdd - Move forward to the end of the next word. Words are delimited - by non-quoted shell metacharacters. - sshheellll--bbaacckkwwaarrdd--wwoorrdd - Move back to the start of the current or previous word. Words - are delimited by non-quoted shell metacharacters. - cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen leaving the current line at the top of the - screen. With an argument, refresh the current line without - clearing the screen. - rreeddrraaww--ccuurrrreenntt--lliinnee - Refresh the current line. - - CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy - aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn)) - Accept the line regardless of where the cursor is. If this line - is non-empty, add it to the history list according to the state - of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history - line, then restore the history line to its original state. - pprreevviioouuss--hhiissttoorryy ((CC--pp)) - Fetch the previous command from the history list, moving back in - the list. - nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in - the list. - bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<)) - Move to the first line in the history. - eenndd--ooff--hhiissttoorryy ((MM-->>)) - Move to the end of the input history, i.e., the line currently - being entered. - rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr)) - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental - search. - ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss)) - Search forward starting at the current line and moving `down' - through the history as necessary. This is an incremental - search. - nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) - Search backward through the history starting at the current line - using a non-incremental search for a string supplied by the - user. - nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental - search for a string supplied by the user. - hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. - hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd - Search backward through the history for the string of characters - between the start of the current line and the point. This is a - 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, - insert the _nth word from the previous command (the words in the - previous command begin with word 0). A negative argument - inserts the _nth word from the end of the previous command. Once - the argument _n is computed, the argument is extracted as if the - "!_n" history expansion had been specified. - yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word - of the previous history entry). With a numeric argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last word (or - the word specified by the argument to the first call) of each - line in turn. Any numeric argument supplied to these successive - calls determines the direction to move through the history. A - negative argument switches the direction through the history - (back or forward). The history expansion facilities are used to - extract the last argument, as if the "!$" history expansion had - been specified. - sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) - Expand the line as the shell does. This performs alias and his- - tory expansion as well as all of the shell word expansions. See - HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion. - hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) - Perform history expansion on the current line. See HHIISSTTOORRYY - EEXXPPAANNSSIIOONN below for a description of history expansion. - mmaaggiicc--ssppaaccee - Perform history expansion on the current line and insert a - space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history - expansion. - aalliiaass--eexxppaanndd--lliinnee - Perform alias expansion on the current line. See AALLIIAASSEESS above - for a description of alias expansion. - hhiissttoorryy--aanndd--aalliiaass--eexxppaanndd--lliinnee - Perform history and alias expansion on the current line. - iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__)) - A synonym for yyaannkk--llaasstt--aarrgg. - ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) - Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. - eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xxCC--ee)) - Invoke an editor on the current command line, and execute the - result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, - $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order. - - CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt - ddeelleettee--cchhaarr ((CC--dd)) - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last - character typed was not bound to ddeelleettee--cchhaarr, then return EEOOFF. - bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) - Delete the character behind the cursor. When given a numeric - argument, save the deleted text on the kill ring. - ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr - 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 - 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. - 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 - line, this transposes the last two words on the line. - uuppccaassee--wwoorrdd ((MM--uu)) - 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 - argument, lowercase the previous word, but do not move point. - ccaappiittaalliizzee--wwoorrdd ((MM--cc)) - 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- - 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 - 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 - space. By default, this command is unbound. - - KKiilllliinngg aanndd YYaannkkiinngg - kkiillll--lliinnee ((CC--kk)) - Kill the text from point to the end of the line. - 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 - killed text is saved on the kill-ring. - kkiillll--wwhhoollee--lliinnee - 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 - same as those used by ffoorrwwaarrdd--wwoorrdd. - bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as - those used by bbaacckkwwaarrdd--wwoorrdd. - sshheellll--kkiillll--wwoorrdd ((MM--dd)) - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the - same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd. - sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as - those used by sshheellll--bbaacckkwwaarrdd--wwoorrdd. - uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) - 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 - the kill-ring. - ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) - Delete all spaces and tabs around point. - kkiillll--rreeggiioonn - Kill the text in the current region. - 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- - aries are the same as bbaacckkwwaarrdd--wwoorrdd. - ccooppyy--ffoorrwwaarrdd--wwoorrdd - 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- - 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 - new argument. M-- starts a negative argument. - uunniivveerrssaall--aarrgguummeenntt - This is another way to specify an argument. If this command is - followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is fol- - lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the - numeric argument, but is otherwise ignored. As a special case, - if this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argu- - 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 - 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 - 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 - 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 - list of completions, the bell is rung (subject to the setting of - bbeellll--ssttyyllee) and the original text is restored. An argument of _n - moves _n positions forward in the list of matches; a negative - argument may be used to move backward through the list. This - command is intended to be bound to TTAABB, but is unbound by - default. - mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd - Identical to mmeennuu--ccoommpplleettee, but moves backward through the list - of possible completions, as if mmeennuu--ccoommpplleettee had been given a - negative argument. This command is unbound by default. - ddeelleettee--cchhaarr--oorr--lliisstt - Deletes the character under the cursor if not at the beginning - or end of the line (like ddeelleettee--cchhaarr). If at the end of the - line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command - is unbound by default. - ccoommpplleettee--ffiilleennaammee ((MM--//)) - Attempt filename completion on the text before point. - ppoossssiibbllee--ffiilleennaammee--ccoommpplleettiioonnss ((CC--xx //)) - 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 - 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 - 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 - 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 - 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 - matches. - ddaabbbbrreevv--eexxppaanndd - 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 - shell (see BBrraaccee EExxppaannssiioonn above). - - KKeeyybbooaarrdd MMaaccrrooss - ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (()) - 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- - 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 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 - bindings or variable assignments found there. - aabboorrtt ((CC--gg)) - Abort the current editing command and ring the terminal's bell - (subject to the setting of bbeellll--ssttyyllee). - ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......)) - If the metafied character _x is lowercase, run the command that - is bound to the corresponding uppercase character. - pprreeffiixx--mmeettaa ((EESSCC)) - Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff. - uunnddoo ((CC--__,, CC--xx CC--uu)) - Incremental undo, separately remembered for each line. - rreevveerrtt--lliinnee ((MM--rr)) - Undo all changes made to this line. This is like executing the - uunnddoo command enough times to return the line to its initial - state. - ttiillddee--eexxppaanndd ((MM--&&)) - Perform tilde expansion on the current word. - sseett--mmaarrkk ((CC--@@,, MM--<>)) - Set the mark to the point. If a numeric argument is supplied, - the mark is set to that position. - eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. The current cursor position is - set to the saved position, and the old cursor position is saved - as the mark. - cchhaarraacctteerr--sseeaarrcchh ((CC--]])) - A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous occur- - rences. - cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - A character is read and point is moved to the previous occur- - rence of that character. A negative count searches for subse- - quent occurrences. - sskkiipp--ccssii--sseeqquueennccee - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin - with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. - This is unbound by default, but usually bound to ESC-[. - iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, the value of the readline ccoomm-- - mmeenntt--bbeeggiinn variable is inserted at the beginning of the current - line. If a numeric argument is supplied, this command acts as a - toggle: if the characters at the beginning of the line do not - match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other- - wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin- - ning of the line. In either case, the line is accepted as if a - newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn - causes this command to make the current line a shell comment. - If a numeric argument causes the comment character to be - removed, the line will be executed by the shell. - gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) - The word before point is treated as a pattern for pathname - expansion, with an asterisk implicitly appended. This pattern - is used to generate a list of matching filenames for possible - completions. - gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) - The word before point is treated as a pattern for pathname - expansion, and the list of matching filenames is inserted, - replacing the word. If a numeric argument is supplied, an - asterisk is appended before pathname expansion. - gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg)) - The list of expansions that would have been generated by - gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line is redrawn. If a - numeric argument is supplied, an asterisk is appended before - pathname expansion. - dduummpp--ffuunnccttiioonnss - Print all of the functions and their key bindings to the read- - line output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an - _i_n_p_u_t_r_c file. - dduummpp--vvaarriiaabblleess - Print all of the settable readline variables and their values to - the readline output stream. If a numeric argument is supplied, - the output is formatted in such a way that it can be made part - of an _i_n_p_u_t_r_c file. - dduummpp--mmaaccrrooss - Print all of the readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - _i_n_p_u_t_r_c file. - ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) - Display version information about the current instance of bbaasshh. - - PPrrooggrraammmmaabbllee CCoommpplleettiioonn - When word completion is attempted for an argument to a command for - which a completion specification (a _c_o_m_p_s_p_e_c) has been defined using - the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the pro- - grammable completion facilities are invoked. - - First, the command name is identified. If the command word is the - empty string (completion attempted at the beginning of an empty line), - any compspec defined with the --EE option to ccoommpplleettee is used. If a - compspec has been defined for that command, the compspec is used to - generate the list of possible completions for the word. If the command - word is a full pathname, a compspec for the full pathname is searched - for first. If no compspec is found for the full pathname, an attempt - is made to find a compspec for the portion following the final slash. - If those searches do not result in a compspec, any compspec defined - with the --DD option to ccoommpplleettee is used as the default. - - Once a compspec has been found, it is used to generate the list of - matching words. If a compspec is not found, the default bbaasshh comple- - tion as described above under CCoommpplleettiinngg is performed. - - First, the actions specified by the compspec are used. Only matches - which are prefixed by the word being completed are returned. When the - --ff or --dd option is used for filename or directory name completion, the - shell variable FFIIGGNNOORREE is used to filter the matches. - - Any completions specified by a pathname expansion pattern to the --GG - option are generated next. The words generated by the pattern need not - match the word being completed. The GGLLOOBBIIGGNNOORREE shell variable is not - used to filter the matches, but the FFIIGGNNOORREE variable is used. - - Next, the string specified as the argument to the --WW option is consid- - ered. The string is first split using the characters in the IIFFSS spe- - cial variable as delimiters. Shell quoting is honored. Each word is - then expanded using brace expansion, tilde expansion, parameter and - variable expansion, command substitution, and arithmetic expansion, as - described above under EEXXPPAANNSSIIOONN. The results are split using the rules - described above under WWoorrdd SSpplliittttiinngg. The results of the expansion are - prefix-matched against the word being completed, and the matching words - become the possible completions. - - After these matches have been generated, any shell function or command - specified with the --FF and --CC options is invoked. When the command or - function is invoked, the CCOOMMPP__LLIINNEE, CCOOMMPP__PPOOIINNTT, CCOOMMPP__KKEEYY, and CCOOMMPP__TTYYPPEE - variables are assigned values as described above under SShheellll VVaarriiaabblleess. - If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD - variables are also set. When the function or command is invoked, the - first argument ($$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 com- - pleted on the current command line. No filtering of the generated com- - pletions against the word being completed is performed; the function or - command has complete freedom in generating the matches. - - Any function specified with --FF is invoked first. The function may use - any of the shell facilities, including the ccoommppggeenn builtin described - below, to generate the matches. It must put the possible completions - in the CCOOMMPPRREEPPLLYY array variable, one per array element. - - Next, any command specified with the --CC option is invoked in an envi- - ronment equivalent to command substitution. It should print a list of - completions, one per line, to the standard output. Backslash may be - used to escape a newline, if necessary. - - After all of the possible completions are generated, any filter speci- - fied with the --XX option is applied to the list. The filter is a pat- - tern as used for pathname expansion; a && in the pattern is replaced - with the text of the word being completed. A literal && may be escaped - with a backslash; the backslash is removed before attempting a match. - Any completion that matches the pattern will be removed from the list. - A leading !! negates the pattern; in this case any completion not match- - ing the pattern will be removed. - - Finally, any prefix and suffix specified with the --PP and --SS options are - added to each member of the completion list, and the result is returned - to the readline completion code as the list of possible completions. - - If the previously-applied actions do not generate any matches, and the - --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was - defined, directory name completion is attempted. - - If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec - was defined, directory name completion is attempted and any matches are - added to the results of the other actions. - - By default, if a compspec is found, whatever it generates is returned - to the completion code as the full set of possible completions. The - default bbaasshh completions are not attempted, and the readline default of - filename completion is disabled. If the --oo bbaasshhddeeffaauulltt option was sup- - plied to ccoommpplleettee when the compspec was defined, the bbaasshh default com- - pletions are attempted if the compspec generates no matches. If the --oo - ddeeffaauulltt option was supplied to ccoommpplleettee when the compspec was defined, - readline's default completion will be performed if the compspec (and, - if attempted, the default bbaasshh completions) generate no matches. - - When a compspec indicates that directory name completion is desired, - the programmable completion functions force readline to append a slash - to completed names which are symbolic links to directories, subject to - the value of the mmaarrkk--ddiirreeccttoorriieess readline variable, regardless of the - setting of the mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess readline variable. - - There is some support for dynamically modifying completions. This is - most useful when used in combination with a default completion speci- - fied with ccoommpplleettee --DD. It's possible for shell functions executed as - completion handlers to indicate that completion should be retried by - returning an exit status of 124. If a shell function returns 124, and - changes the compspec associated with the command on which completion is - being attempted (supplied as the first argument when the function is - executed), programmable completion restarts from the beginning, with an - attempt to find a new compspec for that command. This allows a set of - completions to be built dynamically as completion is attempted, rather - than being loaded all at once. - - For instance, assuming that there is a library of compspecs, each kept - in a file corresponding to the name of the command, the following - default completion function would load completions dynamically: - - _completion_loader() - { - . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 - } - complete -D -F _completion_loader - - -HHIISSTTOORRYY - When the --oo hhiissttoorryy option to the sseett builtin is enabled, the shell - provides access to the _c_o_m_m_a_n_d _h_i_s_t_o_r_y, the list of commands previously - typed. The value of the HHIISSTTSSIIZZEE variable is used as the number of - commands to save in a history list. The text of the last HHIISSTTSSIIZZEE com- - mands (default 500) is saved. The shell stores each command in the - history list prior to parameter and variable expansion (see EEXXPPAANNSSIIOONN - above) but after history expansion is performed, subject to the values - of the shell variables HHIISSTTIIGGNNOORREE and HHIISSTTCCOONNTTRROOLL. - - On startup, the history is initialized from the file named by the vari- - able HHIISSTTFFIILLEE (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). The file named by the value - of HHIISSTTFFIILLEE is truncated, if necessary, to contain no more than the - number of lines specified by the value of HHIISSTTFFIILLEESSIIZZEE. If HHIISSTTFFIILLEE-- - 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- - 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 - (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the - lines are appended to the history file, otherwise the history file is - overwritten. If HHIISSTTFFIILLEE is unset, or if the history file is - unwritable, the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable - is set, time stamps are written to the history file, marked with the - history comment character, so they may be preserved across shell ses- - sions. This uses the history comment character to distinguish time- - stamps from other history lines. After saving the history, the history - file is truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTT-- - FFIILLEESSIIZZEE is unset, or set to null, a non-numeric value, or a numeric - value less than zero, the history file is not truncated. - - The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used - to list or edit and re-execute a portion of the history list. The hhiiss-- - ttoorryy builtin may be used to display or modify the history list and - manipulate the history file. When using command-line editing, search - commands are available in each editing mode that provide access to the - history list. - - The shell allows control over which commands are saved on the history - list. The HHIISSTTCCOONNTTRROOLL and HHIISSTTIIGGNNOORREE variables may be set to cause the - shell to save only a subset of the commands entered. The ccmmddhhiisstt shell - option, if enabled, causes the shell to attempt to save each line of a - multi-line command in the same history entry, adding semicolons where - necessary to preserve syntactic correctness. The lliitthhiisstt shell option - causes the shell to save the command with embedded newlines instead of - semicolons. See the description of the sshhoopptt builtin below under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting shell - options. - -HHIISSTTOORRYY EEXXPPAANNSSIIOONN - The shell supports a history expansion feature that is similar to the - history expansion in ccsshh.. This section describes what syntax features - are available. This feature is enabled by default for interactive - shells, and can be disabled using the ++HH option to the sseett builtin com- - mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive shells do not - perform history expansion by default. - - History expansions introduce words from the history list into the input - stream, making it easy to repeat commands, insert the arguments to a - previous command into the current input line, or fix errors in previous - commands quickly. - - History expansion is performed immediately after a complete line is - read, before the shell breaks it into words. It takes place in two - parts. The first is to determine which line from the history list to - 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. - - 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 - 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 - 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 - 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 - available for subsequent recall. - - 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- - 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 - the current position in the history list. - - !! Start a history substitution, except when followed by a bbllaannkk, - newline, carriage return, = or ( (when the eexxttgglloobb shell option - is enabled using the sshhoopptt builtin). - !!_n Refer to command line _n. - !!--_n Refer to the current command 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 - 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 - 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/'' - (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- - 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 argument. - %% The word matched by the most recent `?_s_t_r_i_n_g?' search. - _x--_y A range of words; `-_y' abbreviates `0-_y'. - ** All of the words but the zeroth. This is a synonym for `_1_-_$'. - It is not an error to use ** if there is just one word in the - 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 - previous command is used as the event. - - MMooddiiffiieerrss - 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. - tt Remove all leading filename components, leaving the tail. - rr Remove a trailing suffix of the form _._x_x_x, leaving the basename. - 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 - 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- - 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 - 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 - 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, bbrreeaakk, ccoonnttiinnuuee, lleett, - and sshhiifftt builtins accept and process arguments beginning with -- with- - out requiring ----. Other builtins that accept arguments but are not - specified as accepting options interpret arguments beginning with -- as - invalid options and require ---- to prevent this interpretation. - :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s - and performing any specified redirections. A zero exit code is - returned. - - .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- - 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. 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 - 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 - 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 - 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 - without job control. - - bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVVXX] - bbiinndd [--mm _k_e_y_m_a_p] [--qq _f_u_n_c_t_i_o_n] [--uu _f_u_n_c_t_i_o_n] [--rr _k_e_y_s_e_q] - bbiinndd [--mm _k_e_y_m_a_p] --ff _f_i_l_e_n_a_m_e - bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d - bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e - bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d - Display current rreeaaddlliinnee key and function bindings, bind a key - sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee - variable. Each non-option argument is a command as it would - appear in _._i_n_p_u_t_r_c, but each binding or command must be passed - as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. - Options, if supplied, have the following meanings: - --mm _k_e_y_m_a_p - Use _k_e_y_m_a_p as the keymap to be affected by the subsequent - bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is - 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 - 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- - read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the - strings they output. - --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 - Read key bindings from _f_i_l_e_n_a_m_e. - --qq _f_u_n_c_t_i_o_n - Query about which keys invoke the named _f_u_n_c_t_i_o_n. - --uu _f_u_n_c_t_i_o_n - Unbind all keys bound to the named _f_u_n_c_t_i_o_n. - --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 - 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 - editing state. - --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 - 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 - 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 - return its exit status. This is useful when defining a function - 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 - _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- - 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 - 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- - 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, - i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and - before processing instances of _._. in _d_i_r (see also the --PP option - to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances - of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. An argument of -- is converted to - $$OOLLDDPPWWDD before the directory change is attempted. If a non- - empty directory name from CCDDPPAATTHH is used, or if -- is the first - argument, and the directory change is successful, the absolute - pathname of the new working directory is written to the standard - output. The return value is true if the directory was success- - fully changed; false otherwise. - - ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function - lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv - 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 - 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 - 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- - 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 - facilities, while available, will not have useful values. - - The matches will be generated in the same way as if the pro- - grammable completion code had generated them directly from a - completion specification with the same flags. If _w_o_r_d is speci- - fied, only those completions matching _w_o_r_d will be displayed. - - The return value is true unless an invalid option is supplied, - 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_- - _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 - to be reused as input. The --rr option removes a completion spec- - ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- - pletion specifications. The --DD option indicates that the - remaining options and actions should apply to the ``default'' - command completion; that is, completion attempted on a command - for which no completion has previously been defined. The --EE - option indicates that the remaining options and actions should - apply to ``empty'' command completion; that is, completion - attempted on a blank line. - - The process of applying these completion specifications when - word completion is attempted is described above under PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn. - - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- - 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- - 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 - the compspec generates no matches. - ddiirrnnaammeess - 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 - shell functions. - nnooqquuoottee Tell readline not to quote the completed words - if they are filenames (quoting filenames is the - default). - 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 - 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 - 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 - specified as --bb. - ccoommmmaanndd Command names. May also be specified as --cc. - ddiirreeccttoorryy - Directory names. May also be specified as --dd. - ddiissaabblleedd - Names of disabled shell builtins. - eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be - specified as --ee. - ffiillee File names. May also be specified as --ff. - ffuunnccttiioonn - Names of shell functions. - ggrroouupp Group names. May also be specified as --gg. - hheellppttooppiicc - Help topics as accepted by the hheellpp builtin. - hhoossttnnaammee - Hostnames, as taken from the file specified by - the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also - be specified as --jj. - 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 - builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt - builtin. - ssiiggnnaall Signal names. - ssttooppppeedd Names of stopped jobs, if job control is active. - uusseerr User names. May also be specified as --uu. - vvaarriiaabbllee - Names of all shell variables. May also be spec- - ified as --vv. - --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its - output is used as the possible completions. - --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) - 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-- - 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 - 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- - 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. - --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- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this - case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e argu- - ment, an attempt is made to remove a completion specification - for a _n_a_m_e for which no specification exists, or an error occurs - adding a completion specification. - - ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEE] [++oo _o_p_t_i_o_n] [_n_a_m_e] - Modify completion options for each _n_a_m_e according to the - _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es - are supplied. If no _o_p_t_i_o_ns are given, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin - described above. The --DD option indicates that the remaining - options should apply to the ``default'' command completion; that - is, completion attempted on a command for which no completion - has previously been defined. The --EE option indicates that the - remaining options should apply to ``empty'' command completion; - that is, completion attempted on a blank line. - - The return value is true unless an invalid option is supplied, - 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'' - 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 - display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options are ignored. When --pp is - supplied without _n_a_m_e arguments, it will display the attributes - and values of all variables having the attributes specified by - the additional options. If no other options are supplied with - --pp, ddeeccllaarree will display the attributes and values of all shell - variables. The --ff option will restrict the display to shell - functions. The --FF option inhibits the display of function defi- - nitions; only the function name and attributes are printed. If - the eexxttddeebbuugg shell option is enabled using sshhoopptt, the source - file name and line number where the function is defined are dis- - played as well. The --FF option implies --ff. The --gg option forces - variables to be created or modified at the global scope, even - when ddeeccllaarree is executed in a shell function. It is ignored in - all other cases. The following options can be used to restrict - output to variables with the specified attribute or to give - variables attributes: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss - above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss - above). - --ff Use function names only. - --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when - the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case - 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 and assign- - ments to _n_a_m_e, except for changing the --nn attribute - itself, are performed on the variable referenced by - _n_a_m_e's value. The --nn 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 - variables. - --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 - environment. - - Using `+' instead of `-' turns off the attribute instead, with - the exceptions that ++aa may not be used to destroy an array vari- - able and ++rr will not remove the readonly attribute. When used - in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with - the llooccaall command, unless the --gg option is supplied. If a vari- - able name is followed by =_v_a_l_u_e, the value of the variable is - set to _v_a_l_u_e. 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 vari- - able 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 readonly status for a readonly vari- - able, an attempt is made to turn off array status for an array - variable, or an attempt is made to display a non-existent func- - tion 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. - --cc Clears the directory stack by deleting all of the - entries. - --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- - 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 - list shown by ddiirrss when invoked without options, starting - with zero. - - The return value is 0 unless an invalid option is supplied or _n - indexes beyond the end of the directory stack. - - ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...] - Without options, 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 --aa nor --rr is sup- - plied, the shell's notion of the _c_u_r_r_e_n_t _j_o_b is used. If the --hh - option is given, each _j_o_b_s_p_e_c is not removed from the 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 present, and neither the --aa - nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If no - _j_o_b_s_p_e_c is supplied, the --aa option means to remove or mark all - jobs; the --rr option without a _j_o_b_s_p_e_c argument restricts opera- - tion 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 - 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 - sequences: - \\aa alert (bell) - \\bb backspace - \\cc suppress further output - \\ee - \\EE an escape character - \\ff form feed - \\nn new line - \\rr carriage return - \\tt horizontal tab - \\vv vertical tab - \\\\ backslash - \\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 - value _H_H (one or two hex digits) - \\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 - 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 - 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 - 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 - shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. - If no _n_a_m_e arguments are given, or if the --pp option is supplied, - a list of shell builtins is printed. With no other option argu- - ments, the list consists of all enabled shell builtins. If --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an - error loading a new builtin from a shared object. - - 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 - 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 - the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what - _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e - 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. - - eexxiitt [_n] - 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 - 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- - 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- - 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- - 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 - ``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 - 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 - 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. - 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 - 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 - 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 - _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 - ggeettooppttss within the same shell invocation if a new set of parame- - ters is to be used. - - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of - the first non-option argument, and _n_a_m_e is set to ?. - - ggeettooppttss normally parses the positional parameters, but if more - arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - - 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 - 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 - character found. - - 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- - 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- - 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 - _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 - 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 - format - --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n - - The return status is 0 unless no command matches _p_a_t_t_e_r_n. - - hhiissttoorryy [[_n]] - hhiissttoorryy --cc - hhiissttoorryy --dd _o_f_f_s_e_t - 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 - following meanings: - --cc Clear the history list by deleting all the entries. - --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the - 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 - current bbaasshh session. - --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 - 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 - 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 - timestamps for the previous history line. The return value is 0 - unless an invalid option is encountered, an error occurs while - reading or writing the history file, an invalid _o_f_f_s_e_t is sup- - plied as an argument to --dd, or the history expansion supplied as - an argument to --pp fails. - - jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] - jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] - The first form lists the active jobs. The options have the fol- - lowing meanings: - --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. - --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 - 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 - executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. - - kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... - kkiillll --ll [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are - listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. kkiillll returns true - if at least one signal was successfully sent, or false if an - 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 - 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 - 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. With no operands, llooccaall writes a list of - local variables to the standard output. It is an error to use - llooccaall when not within a function. The return status is 0 unless - llooccaall is used outside a function, an invalid _n_a_m_e is supplied, - or _n_a_m_e is a readonly variable. - - llooggoouutt Exit a login shell. - - mmaappffiillee [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] - [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - rreeaaddaarrrraayy [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] - [--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 - supplied, have the following meanings: - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are - copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default - index is 0. - --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing newline from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- - 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 option specifies _q_u_a_n_t_u_m. - --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. - 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 - the line is read but before the array element is assigned. - - 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 - _a_r_r_a_y is not an indexed array. - - ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to - the new top directory. Arguments, if supplied, have the follow- - ing meanings: - --nn Suppresses the normal change of directory when removing - 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 - +0'' removes the first directory, ``popd +1'' the second. - --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to - last. - - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid - option is encountered, the directory stack is empty, a non-exis- - tent directory stack entry is specified, or the directory change - fails. - - 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 - 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 - addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff - interprets the following extensions: - %%bb causes pprriinnttff to expand backslash escape sequences in the - corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, - backslashes in \\'', \\"", and \\?? are not removed, and octal - escapes beginning with \\00 may contain up to four digits). - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a - 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). - 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 - behavior. - - 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 - 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_- - _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 - 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, 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 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 - 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 - zero) is at the top. - _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied - as the argument to the ccdd builtin. - - If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current - directory fails. - - ppwwdd [--LLPP] - 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 - invalid option is supplied. - - rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp - _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, and the - first word is assigned to the first _n_a_m_e, the second word to the - second _n_a_m_e, and so on, with leftover words and their interven- - ing separators assigned to the last _n_a_m_e. If there are fewer - words read from the input stream than names, the remaining names - are assigned empty values. The characters in IIFFSS are used to - split the line into words. The backslash character (\\) may be - used to remove any special meaning for the next character read - and for line continuation. Options, if supplied, have the fol- - lowing meanings: - --aa _a_n_a_m_e - The words are assigned to sequential indices of the array - variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any - new values are assigned. Other _n_a_m_e arguments are - 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. - --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. - --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. - --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than - waiting for a complete line of input, but honor a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the - 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. - --pp _p_r_o_m_p_t - Display _p_r_o_m_p_t on standard error, without a trailing new- - line, before attempting to read any input. The prompt is - displayed only if input is coming from a terminal. - --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line - 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. - 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- - 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 return code is zero, unless end-of-file is - encountered, rreeaadd times out (in which case the return code is - greater than 128), a variable assignment error (such as assign- - ing to a readonly variable) occurs, or an invalid file descrip- - tor is supplied as the argument to --uu. - - rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - 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 - _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 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 - displayed in a format that can be reused as input for setting or - resetting the currently-set variables. Read-only variables can- - not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. - The output is sorted according to the current locale. When - options are specified, they set or unset shell attributes. Any - arguments remaining after option processing are treated as val- - ues for the positional parameters and are assigned, in order, to - $$11, $$22, ...... $$_n. Options, if specified, have the following - meanings: - --aa Automatically mark variables and functions which are - modified or created for export to the environment of - subsequent commands. - --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 - (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero sta- - tus. 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 - applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - above), and may cause subshells to exit before executing - all the commands in the subshell. - - 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 - 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 - that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run - in a separate process group. When a background job com- - pletes, the shell prints a line containing its exit sta- - tus. - --nn Read commands but do not execute them. This may be used - 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: - aalllleexxppoorrtt - Same as --aa. - bbrraacceeeexxppaanndd - Same as --BB. - 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 - editing interface used for rreeaadd --ee. - eerrrreexxiitt Same as --ee. - eerrrrttrraaccee - Same as --EE. - ffuunnccttrraaccee - Same as --TT. - hhaasshhaallll Same as --hh. - hhiisstteexxppaanndd - Same as --HH. - hhiissttoorryy Enable command history, as described above under - HHIISSTTOORRYY. This option is on by default in inter- - active shells. - iiggnnoorreeeeooff - 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. - nnoocclloobbbbeerr - Same as --CC. - nnooeexxeecc Same as --nn. - nnoogglloobb Same as --ff. - nnoolloogg Currently ignored. - nnoottiiffyy Same as --bb. - nnoouunnsseett Same as --uu. - oonneeccmmdd Same as --tt. - 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 - 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). - pprriivviilleeggeedd - Same as --pp. - vveerrbboossee Same as --vv. - 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 - 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 - 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- - 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 - 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 - 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 - command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command - and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn - above). This is on by default. - --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- - 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 - working directory. It uses the physical directory - structure instead. By default, bbaasshh follows the logical - 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 - RREETTUURRNN traps are normally not inherited in such cases. - ---- 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 - with a --. - -- 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 - 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 - zero if _n is greater than $$## or less than zero; otherwise 0. - - sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - Toggle the values of variables controlling optional shell behav- - ior. With no options, or with the --pp option, a list of all set- - table options is displayed, with an indication of whether or not - each is set. The --pp option causes output to be displayed in a - form that may be reused as input. Other options have the fol- - lowing meanings: - --ss Enable (set) each _o_p_t_n_a_m_e. - --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status - 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- - wise. - --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) - 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 - valid shell option. - - The list of sshhoopptt options is: - - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- - 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 - 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 - 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 - 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- - formed. - cchheecckkjjoobbss - If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs - are running, this causes the exit to be deferred until a - second exit is attempted without an 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. - ccoommppaatt3311 - If set, bbaasshh changes its behavior to that of version 3.1 - 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 - 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). - 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 - in the list. - ccoommppaatt4411 - If set, bbaasshh, when in posix mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even 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 - removal. - ccoommpplleettee__ffuullllqquuoottee - 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 - 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 - buffer. 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- - tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. - eexxeeccffaaiill - If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not - exit if eexxeecc fails. - eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under - AALLIIAASSEESS. This option is enabled by default for interac- - tive shells. - eexxttddeebbuugg - If set, behavior intended for use by debuggers is - enabled: - 11.. The --FF option to the ddeeccllaarree builtin displays the - source file name and line number corresponding to - each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and - not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), a call to - rreettuurrnn is simulated. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described - in their descriptions above. - 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 (( - _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 - quotes. This option is enabled by default. - ffaaiillgglloobb - 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 - 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 - default. - gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching (see - PPaatttteerrnn MMaattcchhiinngg above) behave as if in the traditional - C locale when performing comparisons. That is, the cur- - rent locale's collating sequence is not taken into - account, so bb will not collate between AA and BB, and - upper-case and lower-case ASCII characters will collate - together. - 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 //, - 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 - exits, rather than overwriting the file. - hhiissttrreeeeddiitt - 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 - into the rreeaaddlliinnee editing buffer, allowing further modi- - fication. - hhoossttccoommpplleettee - If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE - above). This is enabled by default. - hhuuppoonneexxiitt - If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- - active login shell exits. - iinntteerraaccttiivvee__ccoommmmeennttss - If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This - option is enabled by default. - llaassttppiippee - 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 - commands are saved to the history with embedded newlines - rather than using semicolon separators where possible. - llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be - 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- - played. - nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - 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 - fashion when performing pathname expansion (see PPaatthhnnaammee - EExxppaannssiioonn above). - nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive - fashion when performing matching while executing ccaassee or - [[[[ conditional commands. - nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, - rather than themselves. - pprrooggccoommpp - If set, the programmable completion facilities (see PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is - 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 - above. This option is enabled by default. - rreessttrriicctteedd__sshheellll - 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- - cover whether or not a shell is restricted. - sshhiifftt__vveerrbboossee - 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 - argument. This option is enabled by default. - xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape - sequences by default. - - ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT - signal. A login shell cannot be suspended; the --ff option can be - used to override this and force the suspension. The return sta- - tus is 0 unless the shell is a login shell and --ff is not sup- - plied, or if job control is not enabled. - - 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 - an argument of ---- as signifying the end of options. - - Expressions may be combined using the following operators, - listed in decreasing order of precedence. The evaluation - 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 - 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. - _e_x_p_r_1 -oo _e_x_p_r_2 - True if either _e_x_p_r_1 or _e_x_p_r_2 is true. - - tteesstt and [[ evaluate conditional expressions using a set of rules - based on the number of arguments. - - 0 arguments - The expression is false. - 1 argument - The expression is true if and only if the argument is not - null. - 2 arguments - If the first argument is !!, the expression is true if and - only if the second argument is null. If the first 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 - operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the - result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo operators are considered binary operators when - there are three arguments. If the first argument is !!, - the value is the negation of the two-argument test using - the second and third arguments. If the first argument is - exactly (( and the third argument is exactly )), the result - is the one-argument test of the second argument. Other- - wise, the expression is false. - 4 arguments - If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining - arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed - above. - 5 or more arguments - The expression is parsed and evaluated according to - precedence using the rules listed above. - - 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 - 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 - case insensitive and the SSIIGG prefix is optional. - - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the - sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a - _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell - function or a script executed with the .. or ssoouurrccee builtins fin- - ishes executing. - - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a 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 - failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, - part of a command executed in a &&&& or |||| list 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) - option. - - 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 - 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 - 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 - 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, - 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 - 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 - function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true - if all of the arguments are found, false if any are not found. - - uulliimmiitt [--HHSSTTaabbccddeeffiillmmnnppqqrrssttuuvvxx [_l_i_m_i_t]] - Provides control over the resources available to the shell and - to processes started by it, on systems that allow such control. - 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- - 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 - 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: - --aa All current limits are reported - --bb The maximum socket buffer size - --cc The maximum size of core files created - --dd The maximum size of a process's data segment - --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its - children - --ii The maximum number of pending signals - --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor - this limit) - --nn The maximum number of open file descriptors (most systems - do not allow this value to be set) - --pp The pipe size in 512-byte blocks (this may not be set) - --qq The maximum number of bytes in POSIX message queues - --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 - user - --vv The maximum amount of virtual memory available to the - shell and, on some systems, to its children - --xx The maximum number of file locks - --TT The maximum number of threads - - If _l_i_m_i_t is given, 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; and --TT, --bb, --nn, and --uu, which are unscaled values. The - return status is 0 unless an invalid option or argument is sup- - plied, 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 - 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, - 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 - 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. - 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-- - 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 _._._.] - Wait for each specified process and return its termination sta- - tus. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- - cesses are waited for, and the return status is zero. If 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. - -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 - disallowed or not performed: - - +o changing directories with ccdd - - +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, EENNVV, or BBAASSHH__EENNVV - - +o specifying command names containing // - - +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 - --pp option to the hhaasshh builtin command - - +o importing function definitions from the shell environment at - startup - - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at - startup - - +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- - ion operators - - +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 - to the eennaabbllee builtin command - - +o using the eennaabbllee builtin command to enable disabled shell - builtins - - +o specifying the --pp option to the ccoommmmaanndd builtin command - - +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd. - - 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 - 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_- - _t_i_e_s, IEEE - _s_h(1), _k_s_h(1), _c_s_h(1) - _e_m_a_c_s(1), _v_i(1) - _r_e_a_d_l_i_n_e(3) - -FFIILLEESS - _/_b_i_n_/_b_a_s_h - The bbaasshh executable - _/_e_t_c_/_p_r_o_f_i_l_e - The systemwide initialization file, executed for login shells - _~_/_._b_a_s_h___p_r_o_f_i_l_e - The personal initialization file, executed for login shells - _~_/_._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 - shell exits - _~_/_._i_n_p_u_t_r_c - Individual _r_e_a_d_l_i_n_e initialization file - -AAUUTTHHOORRSS - Brian Fox, Free Software Foundation - bfox@gnu.org - - Chet Ramey, Case Western Reserve University - chet.ramey@case.edu - -BBUUGG RREEPPOORRTTSS - If you find a bug in bbaasshh,, you should report it. But first, you should - make sure that it really is a bug, and that it appears in the latest - version of bbaasshh. The latest version is always available from - _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. - - 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: - - The version number of bbaasshh - The hardware and operating system - The compiler used to compile - 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 - it provides for filing a bug report. - - Comments and bug reports concerning this manual page should be directed - to _c_h_e_t_._r_a_m_e_y_@_c_a_s_e_._e_d_u. - -BBUUGGSS - It's too big and too slow. - - There are some subtle differences between bbaasshh and traditional versions - of sshh, mostly because of the PPOOSSIIXX specification. - - Aliases are confusing in some uses. - - 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 - unit. - - Array variables may not (yet) be exported. - - There may be only one active coprocess at a time. - - - -GNU Bash 4.2 2013 January 8 BASH(1) diff --git a/doc/bash.html b/doc/bash.html deleted file mode 100644 index e27e00545..000000000 --- a/doc/bash.html +++ /dev/null @@ -1,13222 +0,0 @@ - -BASH(1) Manual Page - - - - -
BASH(1)2013 January 8BASH(1) -
-
Index -
- - - - - - - - - - - - - - - - - - - -  -

NAME

- -bash - GNU Bourne-Again SHell -  -

SYNOPSIS

- -bash - -[options] -[command_string | file] -  -

COPYRIGHT

- - -Bash is Copyright © 1989-2013 by the Free Software Foundation, Inc. -  -

DESCRIPTION

- -Bash - -is an sh-compatible command language interpreter that -executes commands read from the standard input or from a file. -Bash - -also incorporates useful features from the Korn and C -shells (ksh and csh). -

- -Bash - -is intended to be a conformant implementation of the -Shell and Utilities portion of the IEEE POSIX specification -(IEEE Standard 1003.1). -Bash - -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. -In addition, bash -interprets the following options when it is invoked: -

- - -

-
-c - -
-If the --c - -option is present, then commands are read from the first non-option argument -command_string. - -If there are arguments after the -command_string, - -they are assigned to the positional parameters, starting with -$0. - -
-i - -
-If the --i - -option is present, the shell is -interactive. - -
-l - -
-Make -bash - -act as if it had been invoked as a login shell (see -INVOCATION - - -below). -
-r - -
-If the --r - -option is present, the shell becomes -restricted - -(see -RESTRICTED SHELL - - -below). -
-s - -
-If the --s - -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. -
-D - -
-A list of all double-quoted strings preceded by $ -is printed on the standard output. -These are the strings that -are subject to language translation when the current locale -is not C or POSIX. -This implies the -n option; no commands will be executed. -
[-+]O [shopt_option] - -
-shopt_option is one of the shell options accepted by the -shopt builtin (see -SHELL BUILTIN COMMANDS - - -below). -If shopt_option is present, -O sets the value of that option; -+O unsets it. -If shopt_option is not supplied, the names and values of the shell -options accepted by shopt are printed on the standard output. -If the invocation option is +O, the output is displayed in a format -that may be reused as input. -
-- - -
-A --- - -signals the end of options and disables further option processing. -Any arguments after the --- - -are treated as filenames and arguments. An argument of -- - -is equivalent to --. - -
-

- -Bash - -also interprets a number of multi-character options. -These options must appear on the command line before the -single-character options to be recognized. -

- - -

-
--debugger - -
-Arrange for the debugger profile to be executed before the shell -starts. -Turns on extended debugging mode (see the description of the -extdebug - -option to the -shopt - -builtin below). -
--dump-po-strings - -
-Equivalent to -D, but the output is in the GNU gettext -po (portable object) file format. -
--dump-strings - -
-Equivalent to -D. -
--help - -
-Display a usage message on standard output and exit successfully. -
--init-file file
- -
--rcfile file
- -Execute commands from -file - -instead of the standard personal initialization file -~/.bashrc - -if the shell is interactive (see -INVOCATION - - -below). -
--login - -
-Equivalent to -l. -
--noediting - -
-Do not use the GNU -readline - -library to read command lines when the shell is interactive. -
--noprofile - -
-Do not read either the system-wide startup file - -/etc/profile - -or any of the personal initialization files -~/.bash_profile, - -~/.bash_login, - -or -~/.profile. - -By default, -bash - -reads these files when it is invoked as a login shell (see -INVOCATION - - -below). -
--norc - -
-Do not read and execute the personal initialization file -~/.bashrc - -if the shell is interactive. -This option is on by default if the shell is invoked as -sh. - -
--posix - -
-Change the behavior of bash where the default operation differs -from the POSIX standard to match the standard (posix mode). -
--restricted - -
-The shell becomes restricted (see -RESTRICTED SHELL - - -below). -
--verbose - -
-Equivalent to -v. -
--version - -
-Show version information for this instance of -bash - -on the standard output and exit successfully. - -
-  -

ARGUMENTS

- -If arguments remain after option processing, and neither the --c - -nor the --s - -option has been supplied, the first argument is assumed to -be the name of a file containing shell commands. -If -bash - -is invoked in this fashion, -$0 - -is set to the name of the file, and the positional parameters -are set to the remaining arguments. -Bash - -reads and executes commands from this file, then exits. -Bash's exit status is the exit status of the last command -executed in the script. -If no commands are executed, the exit status is 0. -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 -PATH - - -for the script. -  -

INVOCATION

- -A login shell is one whose first character of argument zero is a --, - -or one started with the ---login - -option. -

- -An interactive shell is one started without non-option arguments -and without the --c - -option -whose standard input and error are -both connected to terminals (as determined by -isatty(3)), - -or one started with the --i - -option. -PS1 - - -is set and -$- - -includes -i - -if -bash - -is interactive, -allowing a shell script or a startup file to test this state. -

- -The following paragraphs describe how -bash - -executes its startup files. -If any of the files exist but cannot be read, -bash - -reports an error. -Tildes are expanded in filenames as described below under -Tilde Expansion - -in the -EXPANSION - - -section. -

- -When -bash - -is invoked as an interactive login shell, or as a non-interactive shell -with the --login option, it first reads and -executes commands from the file /etc/profile, if that -file exists. -After reading that file, it looks for ~/.bash_profile, -~/.bash_login, and ~/.profile, in that order, and reads -and executes commands from the first one that exists and is readable. -The ---noprofile - -option may be used when the shell is started to inhibit this behavior. -

- -When a login shell exits, -bash - -reads and executes commands from the file ~/.bash_logout, if it -exists. -

- -When an interactive shell that is not a login shell is started, -bash - -reads and executes commands from ~/.bashrc, if that file exists. -This may be inhibited by using the ---norc - -option. -The --rcfile file option will force -bash - -to read and execute commands from file instead of ~/.bashrc. -

- -When -bash - -is started non-interactively, to run a shell script, for example, it -looks for the variable -BASH_ENV - - -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. -Bash - -behaves as if the following command were executed: -

-

-if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi - -
- -

-but the value of the -PATH - - -variable is not used to search for the filename. -

- -If -bash - -is invoked with the name -sh, - -it tries to mimic the startup behavior of historical versions of -sh - -as closely as possible, -while conforming to the POSIX standard as well. -When invoked as an interactive login shell, or a non-interactive -shell with the --login option, it first attempts to -read and execute commands from -/etc/profile - -and -~/.profile, - -in that order. -The ---noprofile - -option may be used to inhibit this behavior. -When invoked as an interactive shell with the name -sh, - -bash - -looks for the variable -ENV, - - -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 -sh - -does not attempt to read and execute commands from any other startup -files, the ---rcfile - -option has no effect. -A non-interactive shell invoked with the name -sh - -does not attempt to read any other startup files. -When invoked as -sh, - -bash - -enters -posix - -mode after the startup files are read. -

- -When -bash - -is started in -posix - -mode, as with the ---posix - -command line option, it follows the POSIX standard for startup files. -In this mode, interactive shells expand the -ENV - - -variable and commands are read and executed from the file -whose name is the expanded value. -No other startup files are read. -

- -Bash - -attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually rshd, or the secure shell daemon sshd. -If -bash - -determines it is being run in this fashion, it reads and executes -commands from ~/.bashrc, if that file exists and is readable. -It will not do this if invoked as sh. -The ---norc - -option may be used to inhibit this behavior, and the ---rcfile - -option may be used to force another file to be read, but -rshd does not generally invoke the shell with those options -or allow them to be specified. -

- -If the shell is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, no startup -files are read, shell functions are not inherited from the environment, the -SHELLOPTS, - - -BASHOPTS, - - -CDPATH, - - -and -GLOBIGNORE - - -variables, if they appear in the environment, are ignored, -and the effective user id is set to the real user id. -If the -p option is supplied at invocation, the startup behavior is -the same, but the effective user id is not reset. -  -

DEFINITIONS

- -

- -The following definitions are used throughout the rest of this -document. - -

-
blank - -
-A space or tab. -
word - -
-A sequence of characters considered as a single unit by the shell. -Also known as a -token. - -
name - -
-A -word - -consisting only of alphanumeric characters and underscores, and -beginning with an alphabetic character or an underscore. Also -referred to as an -identifier. - -
metacharacter - -
-A character that, when unquoted, separates words. One of the following: -
- -
-

- -| & ; ( ) < > space tab - -

- -
-

- -

-
control operator - -
-A token that performs a control function. It is one of the following -symbols: -
-

- -|| & && ; ;; ( ) | |& <newline> - -

- - -
-  -

RESERVED WORDS

- -Reserved words 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 -SHELL GRAMMAR - - -below) or the third word of a -case - -or -for - -command: -
- -

- - - - -! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] -

- - -  -

SHELL GRAMMAR

- -  -

Simple Commands

- -

- -A simple command is a sequence of optional variable assignments -followed by blank-separated words and redirections, and -terminated by a control operator. The first word -specifies the command to be executed, and is passed as argument zero. -The remaining words are passed as arguments to the invoked command. -

- -The return value of a simple command is its exit status, or -128+n if the command is terminated by signal -n. - -  -

Pipelines

- -

- -A pipeline is a sequence of one or more commands separated by -one of the control operators -| - -or |&. -The format for a pipeline is: -

-

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

- -

- -The standard output of -command - -is connected via a pipe to the standard input of -command2. - -This connection is performed before any redirections specified by the -command (see -REDIRECTION - - -below). -If |& is used, command's standard output and standard error -are connected to -command2's standard input through the pipe; -it is shorthand for 2>&1 |. -This implicit redirection of the standard error 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 pipefail option is enabled. -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 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 before returning a value. -

- -If the -time - -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 -p option changes the output format to that specified by POSIX. -When the shell is in posix mode, it does not recognize -time as a reserved word if the next token begins with a `-'. -The -TIMEFORMAT - - -variable may be set to a format string that specifies how the timing -information should be displayed; see the description of -TIMEFORMAT - - -under -Shell Variables - -below. -

- -When the shell is in posix mode, time -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 -TIMEFORMAT - - -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). -  -

Lists

- -

- -A list is a sequence of one or more pipelines separated by one -of the operators -;, - -&, - -&&, - -or -||, - -and optionally terminated by one of -;, - -&, - -or -<newline>. - -

- -Of these list operators, -&& - -and -|| - -have equal precedence, followed by -; - -and -&, - -which have equal precedence. -

- -A sequence of one or more newlines may appear in a list instead -of a semicolon to delimit commands. -

- -If a command is terminated by the control operator -&, - -the shell executes the command in the background -in a subshell. The shell does not wait for the command to -finish, and the return status is 0. Commands separated by a -; - -are executed sequentially; the shell waits for each -command to terminate in turn. The return status is the -exit status of the last command executed. -

- -AND and OR lists are sequences of one of more pipelines separated by the -&& and || control operators, respectively. -AND and OR lists are executed with left associativity. -An AND list has the form -

-

- -command1 && command2 -

- -

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

- -An OR list has the form -

-

- -command1 || command2 -

- -

- -

- -command2 - -is executed if and only if -command1 - -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. -  -

Compound Commands

- -

- -A compound command is one of the following. -In most cases a list in a command's description may be separated from -the rest of the command by one or more newlines, and may be followed by a -newline in place of a semicolon. -

-
(list)
-list is executed in a subshell environment (see -COMMAND EXECUTION ENVIRONMENT -below). -Variable assignments and builtin -commands that affect the shell's environment do not remain in effect -after the command completes. The return status is the exit status of -list. -
{ list; }
-list is simply executed in the current shell environment. -list must be terminated with a newline or semicolon. -This is known as a group command. -The return status is the exit status of -list. -Note that unlike the metacharacters ( and ), { and -} are reserved words and must occur where a reserved -word is permitted to be recognized. Since they do not cause a word -break, they must be separated from list by whitespace or another -shell metacharacter. -
((expression))
-The expression is evaluated according to the rules described -below under -ARITHMETIC EVALUATION. - - -If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -let "expression". -
[[ expression ]]
-Return a status of 0 or 1 depending on the evaluation of -the conditional expression expression. -Expressions are composed of the primaries described below under -CONDITIONAL EXPRESSIONS. - - -Word splitting and pathname expansion are not performed on the words -between the [[ and ]]; tilde expansion, -parameter and variable expansion, -arithmetic expansion, command substitution, process -substitution, and quote removal are performed. -Conditional operators such as -f must be unquoted to be recognized -as primaries. -

- - -When used with [[, the < and > operators sort -lexicographically using the current locale. -

- - -When the == and != operators are used, the string to the -right of the operator is considered a pattern and matched according -to the rules described below under Pattern Matching. -The = operator is equivalent to ==. -If the shell option -nocasematch - -is enabled, the match is performed without regard to the case -of alphabetic characters. -The return value is 0 if the string matches (==) or does not match -(!=) the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -

- - -An additional binary operator, =~, is available, with the same -precedence as == and !=. -When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex(3)). -The return value is 0 if the string matches -the pattern, and 1 otherwise. -If the regular expression is syntactically incorrect, the conditional -expression's return value is 2. -If the shell option -nocasematch - -is enabled, the match is performed without regard to the case -of alphabetic characters. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -Bracket expressions in regular expressions must be treated carefully, -since normal quoting characters lose their meanings between brackets. -If the pattern is stored in a shell variable, quoting the variable -expansion forces the entire pattern to be matched as a string. -Substrings matched by parenthesized subexpressions within the regular -expression are saved in the array variable -BASH_REMATCH. - - -The element of -BASH_REMATCH - - -with index 0 is the portion of the string -matching the entire regular expression. -The element of -BASH_REMATCH - - -with index n is the portion of the -string matching the nth parenthesized subexpression. -

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

- - -

- -
-
( expression ) - -
-Returns the value of expression. -This may be used to override the normal precedence of operators. -
! expression - -
-True if -expression - -is false. -
expression1 && expression2
-True if both -expression1 - -and -expression2 - -are true. -
expression1 || expression2
-True if either -expression1 - -or -expression2 - -is true. - -
-

- -The && and || -operators do not evaluate expression2 if the value of -expression1 is sufficient to determine the return value of -the entire conditional expression. -

- -
for name [ [ in [ word ... ] ] ; ] do list ; done
-The list of words following in is expanded, generating a list -of items. -The variable name is set to each element of this list -in turn, and list is executed each time. -If the in word is omitted, the for command executes -list once for each positional parameter that is set (see -PARAMETERS - - -below). -The return status is the exit status of the last command that executes. -If the expansion of the items following in results in an empty -list, no commands are executed, and the return status is 0. -
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
-First, the arithmetic expression expr1 is evaluated according -to the rules described below under -ARITHMETIC EVALUATION. - - -The arithmetic expression expr2 is then evaluated repeatedly -until it evaluates to zero. -Each time expr2 evaluates to a non-zero value, list is -executed and the arithmetic expression expr3 is evaluated. -If any expression is omitted, it behaves as if it evaluates to 1. -The return value is the exit status of the last command in list -that is executed, or false if any of the expressions is invalid. -
select name [ in word ] ; do list ; done
-The list of words following in is expanded, generating a list -of items. The set of expanded words is printed on the standard -error, each preceded by a number. If the in -word is omitted, the positional parameters are printed (see -PARAMETERS - - -below). The -PS3 - - -prompt is then displayed and a line read from the standard input. -If the line consists of a number corresponding to one of -the displayed words, then the value of -name - -is set to that word. If the line is empty, the words and prompt -are displayed again. If EOF is read, the command completes. Any -other value read causes -name - -to be set to null. The line read is saved in the variable -REPLY. - - -The -list - -is executed after each selection until a -break - -command is executed. -The exit status of -select - -is the exit status of the last command executed in -list, - -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 - -below). -The word is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, -command substitution, process substitution and quote removal. -Each pattern examined is expanded using tilde -expansion, parameter and variable expansion, arithmetic substitution, -command substitution, and process substitution. -If the shell option -nocasematch - -is enabled, the match is performed without regard to the case -of alphabetic characters. -When a match is found, the corresponding list 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 list 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 list -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 list. -
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
-The -if - -list - -is executed. If its exit status is zero, the -then list is executed. Otherwise, each elif -list is executed in turn, and if its exit status is zero, -the corresponding then list is executed and the -command completes. Otherwise, the else list is -executed, if present. The exit status is the exit status of the -last command executed, or zero if no condition tested true. -
while list-1; do list-2; done
- -
until list-1; do list-2; done
- -The while command continuously executes the list -list-2 as long as the last command in the list list-1 returns -an exit status of zero. The until command is identical -to the while command, except that the test is negated; -list-2 - -is executed as long as the last command in -list-1 - -returns a non-zero exit status. -The exit status of the while and until commands -is the exit status -of the last command executed in list-2, or zero if -none was executed. -
-  -

Coprocesses

- -

- -A coprocess is a shell command preceded by the coproc reserved -word. -A coprocess is executed asynchronously in a subshell, as if the command -had been terminated with the & control operator, with a two-way pipe -established between the executing shell and the coprocess. -

- -The format for a coprocess is: -

-

- -coproc [NAME] command [redirections] -

- -

- -This creates a coprocess named NAME. -If NAME is not supplied, the default name is COPROC. -NAME must not be supplied if command is a simple -command (see above); otherwise, it is interpreted as the first word -of the simple command. -When the coprocess is executed, the shell creates an array variable (see -Arrays - -below) named NAME in the context of the executing shell. -The standard output of -command - -is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[0]. -The standard input of -command - -is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[1]. -This pipe is established before any redirections specified by the -command (see -REDIRECTION - - -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 shell spawned to execute the coprocess is -available as the value of the variable NAME_PID. -The wait -builtin command may be used to wait for the coprocess to terminate. -

- -Since the coprocess is created as an asynchronous command, -the coproc command always returns success. -The return status of a coprocess is the exit status of command. -  -

Shell Function Definitions

- -

- -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: -

-
name () compound-command [redirection]
- -
function name [()] compound-command [redirection]
- -This defines a function named name. -The reserved word function is optional. -If the function reserved word is supplied, the parentheses are optional. -The body of the function is the compound command -compound-command - -(see Compound Commands above). -That command is usually a list of commands between { and }, but -may be any command listed under Compound Commands above. -compound-command is executed whenever name is specified as the -name of a simple command. -When in posix mode, name may not be the name of one of the -POSIX special builtins. -Any redirections (see -REDIRECTION - - -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 executed, the exit status of a function is the exit status of the -last command executed in the body. (See -FUNCTIONS - - -below.) -
-  -

COMMENTS

- -In a non-interactive shell, or an interactive shell in which the -interactive_comments - -option to the -shopt - -builtin is enabled (see -SHELL BUILTIN COMMANDS - - -below), a word beginning with -# - -causes that word and all remaining characters on that line to -be ignored. An interactive shell without the -interactive_comments - -option enabled does not allow comments. The -interactive_comments - -option is on by default in interactive shells. -  -

QUOTING

- -Quoting 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 metacharacters listed above under -DEFINITIONS - - -has special meaning to the shell and must be quoted if it is to -represent itself. -

- -When the command history expansion facilities are being used -(see -HISTORY EXPANSION - - -below), the -history expansion character, usually !, must be quoted -to prevent history expansion. -

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

- -A non-quoted backslash (\) is the -escape character. - -It preserves the literal value of the next character that follows, -with the exception of <newline>. If a \<newline> pair -appears, and the backslash is not itself quoted, the \<newline> -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 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, when history expansion is enabled, -!. - -The characters -$ - -and -` - -retain their special meaning within double quotes. The backslash -retains its special meaning only when followed by one of the following -characters: -$, - -`, - -", -\, - -or -<newline>. - -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 -quotes (see -PARAMETERS - - -below). -

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

- -
-
\a - -
-alert (bell) -
\b - -
-backspace -
\e - -
-
\E - -
-an escape character -
\f - -
-form feed -
\n - -
-new line -
\r - -
-carriage return -
\t - -
-horizontal tab -
\v - -
-vertical tab -
\\ - -
-backslash -
\aq - -
-single quote -
\dq - -
-double quote -
\nnn - -
-the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH - -
-the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
\uHHHH - -
-the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHH (one to four hex digits) -
\UHHHHHHHH - -
-the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHHHHHH (one to eight hex digits) -
\cx - -
-a control-x character - -
- -

- -The expanded result is single-quoted, as if the dollar sign had -not been present. -

- -A double-quoted string preceded by a dollar sign ($dqstringdq) -will cause the string to be translated according to the current locale. -If the current locale is C or POSIX, the dollar sign -is ignored. -If the string is translated and replaced, the replacement is -double-quoted. -  -

PARAMETERS

- -A -parameter - -is an entity that stores values. -It can be a -name, - -a number, or one of the special characters listed below under -Special Parameters. - -A -variable - -is a parameter denoted by a -name. - -A variable has a value and zero or more attributes. -Attributes are assigned using the -declare - -builtin command (see -declare - -below in -SHELL BUILTIN COMMANDS). - - -

- -A parameter is set if it has been assigned a value. The null string is -a valid value. Once a variable is set, it may be unset only by using -the -unset - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). -

- -A -variable - -may be assigned to by a statement of the form -

-

- -name=[value] -

- -

- -If -value - -is not given, the variable is assigned the null string. All -values - -undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote -removal (see -EXPANSION - - -below). If the variable has its -integer - -attribute set, then -value - -is evaluated as an arithmetic expression even if the $((...)) expansion is -not used (see -Arithmetic Expansion - -below). -Word splitting is not performed, with the exception -of "$@" as explained below under -Special Parameters. - -Pathname expansion is not performed. -Assignment statements may also appear as arguments to the -alias, - -declare, - -typeset, - -export, - -readonly, - -and -local - -builtin commands. -When in posix mode, these builtins may appear in a command after -one or more instances of the command builtin and retain these -assignment statement properties. -

- -In the context where an assignment statement is assigning a value -to a shell variable or array index, the += operator can be used to -append to or add to the variable's previous value. -When += is applied to a variable for which the integer attribute has been -set, value is evaluated as an arithmetic expression and added to the -variable's current value, which is also evaluated. -When += is applied to an array variable using compound assignment (see -Arrays - -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, value is expanded and -appended to the variable's value. -

- -A variable can be assigned the nameref attribute using the --n option to the declare or local builtin commands -(see the descriptions of declare and local below) -to create a nameref, or a reference to another variable. -This allows variables to be manipulated indirectly. -Whenever the nameref variable is referenced or assigned to, 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 argument to the function. -For instance, if a variable name is passed to a shell function as its first -argument, running -

-

-declare -n ref=$1 - -
- -

-inside the function creates a nameref variable ref whose value is -the variable name passed as the first argument. -References and assignments to ref are treated as references and -assignments to the variable whose name was passed as $1. -If the control variable in a for 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 -n attribute. -However, nameref variables can reference array variables and subscripted -array variables. -Namerefs can be unset using the -n option to the unset builtin. -Otherwise, if unset is executed with the name of a nameref variable -as an argument, the variable referenced by the nameref variable will be unset. -  -

Positional Parameters

- -

- -A -positional parameter - -is a parameter denoted by one or more -digits, other than the single digit 0. Positional parameters are -assigned from the shell's arguments when it is invoked, -and may be reassigned using the -set - -builtin command. Positional parameters may not be assigned to -with assignment statements. The positional parameters are -temporarily replaced when a shell function is executed (see -FUNCTIONS - - -below). -

- -When a positional parameter consisting of more than a single -digit is expanded, it must be enclosed in braces (see -EXPANSION - - -below). -  -

Special Parameters

- -

- -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 occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the -IFS - - -special variable. That is, "$*" is equivalent -to "$1c$2c...", where -c - -is the first character of the value of the -IFS - - -variable. If -IFS - - -is unset, the parameters are separated by spaces. -If -IFS - - -is null, the parameters are joined without intervening separators. -
@ - -
-Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, each parameter expands to a -separate word. That is, "$@" is equivalent to -"$1" "$2" ... -If the double-quoted expansion occurs within a word, the expansion of -the first parameter is joined with the beginning part of the original -word, and the expansion of the last parameter is joined with the last -part of the original word. -When there are no positional parameters, "$@" and -$@ - -expand to nothing (i.e., they are removed). -
# - -
-Expands to the number of positional parameters in decimal. -
? - -
-Expands to the exit status of the most recently executed foreground -pipeline. -
- - -
-Expands to the current option flags as specified upon invocation, -by the -set - -builtin command, or those set by the shell itself -(such as the --i - -option). -
$ - -
-Expands to the process ID of the shell. In a () subshell, it -expands to the process ID of the current shell, not the -subshell. -
! - -
-Expands to the process ID of the most recently executed background -(asynchronous) command. -
0 - -
-Expands to the name of the shell or shell script. This is set at -shell initialization. If -bash - -is invoked with a file of commands, -$0 - -is set to the name of that file. If -bash - -is started with the --c - -option, then -$0 - -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 -bash, - -as given by argument zero. -
_ - -
-At shell startup, set to the absolute pathname used to invoke the -shell or shell script being executed as passed in the environment -or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. -Also set to the full pathname used to invoke each command executed -and placed in the environment exported to that command. -When checking mail, this parameter holds the name of the mail file -currently being checked. - -
-  -

Shell Variables

- -

- -The following variables are set by the shell: -

- - -

-
BASH - -
-Expands to the full filename used to invoke this instance of -bash. - -
BASHOPTS - -
-A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the --s - -option to the -shopt - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). The options appearing in -BASHOPTS - - -are those reported as -on - -by shopt. -If this variable is in the environment when -bash - -starts up, each shell option in the list will be enabled before -reading any startup files. -This variable is read-only. -
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. -
BASH_ALIASES - -
-An associative array variable whose members correspond to the internal -list of aliases as maintained by the alias builtin. -Elements added to this array appear in the alias list; unsetting array -elements cause aliases to be removed from the alias list. -
BASH_ARGC - -
-An array variable whose values are the number of parameters in each -frame of the current bash execution call stack. -The number of -parameters to the current subroutine (shell function or script executed -with . or source) is at the top of the stack. -When a 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 the description of the -extdebug - -option to the -shopt - -builtin below) -
BASH_ARGV - -
-An array variable containing all of the parameters in the current bash -execution call stack. The final parameter of the last subroutine call -is at the top of the stack; the first parameter of the initial call is -at the bottom. When a subroutine is executed, the parameters supplied -are pushed onto -BASH_ARGV. - - -The shell sets -BASH_ARGV - - -only when in extended debugging mode -(see the description of the -extdebug - -option to the -shopt - -builtin below) -
BASH_CMDS - -
-An associative array variable whose members correspond to the internal -hash table of commands as maintained by the hash builtin. -Elements added to this array appear in the hash table; unsetting array -elements cause commands to be removed from the hash table. -
BASH_COMMAND - -
-The command currently being executed or about to be executed, unless the -shell is executing a command as the result of a trap, -in which case it is the command executing at the time of the trap. -
BASH_EXECUTION_STRING - -
-The command argument to the -c invocation option. -
BASH_LINENO - -
-An array variable whose members are the line numbers in source files -where each corresponding member of -FUNCNAME - - -was invoked. -${BASH_LINENO[$i]} is the line number in the source -file (${BASH_SOURCE[$i+1]}) where -${FUNCNAME[$i]} was called -(or ${BASH_LINENO[$i-1]} if referenced within another -shell function). -Use -LINENO - - -to obtain the current line number. -
BASH_REMATCH - -
-An array variable whose members are assigned by the =~ binary -operator to the [[ conditional command. -The element with index 0 is the portion of the string -matching the entire regular expression. -The element with index n is the portion of the -string matching the nth parenthesized subexpression. -This variable is read-only. -
BASH_SOURCE - -
-An array variable whose members are the source filenames -where the corresponding shell function names in the -FUNCNAME - - -array variable are defined. -The shell function -${FUNCNAME[$i]} is defined in the file -${BASH_SOURCE[$i]} and called from -${BASH_SOURCE[$i+1]}. -
BASH_SUBSHELL - -
-Incremented by one within each subshell or subshell environment when -the shell begins executing in that environment. -The initial value is 0. -
BASH_VERSINFO - -
-A readonly array variable whose members hold version information for -this instance of -bash. - -The values assigned to the array members are as follows: -

-

-
-
BASH_VERSINFO[0] - -
-The major version number (the release). -
BASH_VERSINFO[1] - -
-The minor version number (the version). -
BASH_VERSINFO[2] - -
-The patch level. -
BASH_VERSINFO[3] - -
-The build version. -
BASH_VERSINFO[4] - -
-The release status (e.g., beta1). -
BASH_VERSINFO[5] - -
-The value of -MACHTYPE. - - -
- -
BASH_VERSION - -
-Expands to a string describing the version of this instance of -bash. - -
COMP_CWORD - -
-An index into ${COMP_WORDS} of the word containing the current -cursor position. -This variable is available only in shell functions invoked by the -programmable completion facilities (see Programmable Completion -below). -
COMP_KEY - -
-The key (or final key of a key sequence) used to invoke the current -completion function. -
COMP_LINE - -
-The current command line. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion -below). -
COMP_POINT - -
-The index of the current cursor position relative to the beginning of -the current command. -If the current cursor position is at the end of the current command, -the value of this variable is equal to ${#COMP_LINE}. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion -below). -
COMP_TYPE - -
-Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -TAB, for normal completion, -?, for listing completions after successive tabs, -!, for listing alternatives on partial word completion, -@, to list completions if the word is not unmodified, -or -%, for menu completion. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion -below). -
COMP_WORDBREAKS - -
-The set of characters that the readline library treats as word -separators when performing word completion. -If -COMP_WORDBREAKS - - -is unset, it loses its special properties, even if it is -subsequently reset. -
COMP_WORDS - -
-An array variable (see Arrays below) consisting of the individual -words in the current command line. -The line is split into words as readline would split it, using -COMP_WORDBREAKS - - -as described above. -This variable is available only in shell functions invoked by the -programmable completion facilities (see Programmable Completion -below). -
COPROC - -
-An array variable (see Arrays below) created to hold the file descriptors -for output from and input to an unnamed coprocess (see Coprocesses -above). -
DIRSTACK - -
-An array variable (see -Arrays - -below) containing the current contents of the directory stack. -Directories appear in the stack in the order they are displayed by the -dirs - -builtin. -Assigning to members of this array variable may be used to modify -directories already in the stack, but the -pushd - -and -popd - -builtins must be used to add and remove directories. -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. -
EUID - -
-Expands to the effective user ID of the current user, initialized at -shell startup. This variable is readonly. -
FUNCNAME - -
-An array variable containing the names of all shell functions -currently in the execution call stack. -The element with index 0 is the name of any currently-executing -shell function. -The bottom-most element (the one with the highest index) is -"main". - -This variable exists only when a shell function is executing. -Assignments to -FUNCNAME - - -have no effect and return an error status. -If -FUNCNAME - - -is unset, it loses its special properties, even if it is -subsequently reset. -

- - -This variable can be used with BASH_LINENO and BASH_SOURCE. -Each element of FUNCNAME has corresponding elements in -BASH_LINENO and BASH_SOURCE to describe the call stack. -For instance, ${FUNCNAME[$i]} was called from the file -${BASH_SOURCE[$i+1]} at line number -${BASH_LINENO[$i]}. -The caller builtin displays the current call stack using this -information. -

GROUPS - -
-An array variable containing the list of groups of which the current -user is a member. -Assignments to -GROUPS - - -have no effect and return an error status. -If -GROUPS - - -is unset, it loses its special properties, even if it is -subsequently reset. -
HISTCMD - -
-The history number, or index in the history list, of the current -command. -If -HISTCMD - - -is unset, it loses its special properties, even if it is -subsequently reset. -
HOSTNAME - -
-Automatically set to the name of the current host. -
HOSTTYPE - -
-Automatically set to a string that uniquely -describes the type of machine on which -bash - -is executing. -The default is system-dependent. -
LINENO - -
-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 -LINENO - - -is unset, it loses its special properties, even if it is -subsequently reset. -
MACHTYPE - -
-Automatically set to a string that fully describes the system -type on which -bash - -is executing, in the standard GNU cpu-company-system format. -The default is system-dependent. -
MAPFILE - -
-An array variable (see Arrays below) created to hold the text -read by the mapfile builtin when no variable name is supplied. -
OLDPWD - -
-The previous working directory as set by the -cd - -command. -
OPTARG - -
-The value of the last option argument processed by the -getopts - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). -
OPTIND - -
-The index of the next argument to be processed by the -getopts - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). -
OSTYPE - -
-Automatically set to a string that -describes the operating system on which -bash - -is executing. -The default is system-dependent. -
PIPESTATUS - -
-An array variable (see -Arrays - -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). -
PPID - -
-The process ID of the shell's parent. This variable is readonly. -
PWD - -
-The current working directory as set by the -cd - -command. -
RANDOM - -
-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 -RANDOM. - - -If -RANDOM - - -is unset, it loses its special properties, even if it is -subsequently reset. -
READLINE_LINE - -
-The contents of the -readline - -line buffer, for use with -bind -x - -(see -SHELL BUILTIN COMMANDS - - -below). -
READLINE_POINT - -
-The position of the insertion point in the -readline - -line buffer, for use with -bind -x - -(see -SHELL BUILTIN COMMANDS - - -below). -
REPLY - -
-Set to the line of input read by the -read - -builtin command when no arguments are supplied. -
SECONDS - -
-Each time this parameter is -referenced, the number of seconds since shell invocation is returned. If a -value is assigned to -SECONDS, - - -the value returned upon subsequent -references is -the number of seconds since the assignment plus the value assigned. -If -SECONDS - - -is unset, it loses its special properties, even if it is -subsequently reset. -
SHELLOPTS - -
-A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the --o - -option to the -set - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). The options appearing in -SHELLOPTS - - -are those reported as -on - -by set -o. -If this variable is in the environment when -bash - -starts up, each shell option in the list will be enabled before -reading any startup files. -This variable is read-only. -
SHLVL - -
-Incremented by one each time an instance of -bash - -is started. -
UID - -
-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, -bash - -assigns a default value to a variable; these cases are noted -below. -

- - -

-
BASH_COMPAT - -
-The value is used to set the shell's compatibility level. -See the description of the shopt builtin below under -SHELL BUILTIN COMMANDS 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 compatibility level. -If BASH_COMPAT is unset or set to the empty string, the compatibility -level is set to the default for the current version. -If BASH_COMPAT 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 shopt builtin described below (for example, -compat42 means that 4.2 and 42 are valid values). -The current version is also a valid value. -
BASH_ENV - -
-If this parameter is set when bash is executing a shell script, -its value is interpreted as a filename containing commands to -initialize the shell, as in -~/.bashrc. - -The value of -BASH_ENV - - -is subjected to parameter expansion, command substitution, and arithmetic -expansion before being interpreted as a filename. -PATH - - -is not used to search for the resultant filename. -
BASH_XTRACEFD - -
-If set to an integer corresponding to a valid file descriptor, bash -will write the trace output generated when -set -x - -is enabled to that file descriptor. -The file descriptor is closed when -BASH_XTRACEFD - - -is unset or assigned a new value. -Unsetting -BASH_XTRACEFD - - -or assigning it the empty string causes the -trace output to be sent to the standard error. -Note that setting -BASH_XTRACEFD - - -to 2 (the standard error file -descriptor) and then unsetting it will result in the standard error -being closed. -
CDPATH - -
-The search path for the -cd - -command. -This is a colon-separated list of directories in which the shell looks -for destination directories specified by the -cd - -command. -A sample value is -".:~:/usr". - -
CHILD_MAX - -
-Set the number of exited child status values for the shell to remember. -Bash will not allow this value to be decreased below a Posix-mandated -minimum, and there is a maximum value (currently 8192) that this may -not exceed. -The minimum value is system-dependent. -
COLUMNS - -
-Used by the select compound command to determine the terminal width -when printing selection lists. -Automatically set if the -checkwinsize - -option is enabled or in an interactive shell upon receipt of a -SIGWINCH. - - -
COMPREPLY - -
-An array variable from which bash reads the possible completions -generated by a shell function invoked by the programmable completion -facility (see Programmable Completion below). -Each array element contains one possible completion. -
EMACS - -
-If bash finds this variable in the environment when the shell starts -with value -t, - -it assumes that the shell is running in an Emacs shell buffer and disables -line editing. -
ENV - -
-Similar to -BASH_ENV; - - -used when the shell is invoked in POSIX mode. -
FCEDIT - -
-The default editor for the -fc - -builtin command. -
FIGNORE - -
-A colon-separated list of suffixes to ignore when performing -filename completion (see -READLINE - - -below). -A filename whose suffix matches one of the entries in -FIGNORE - - -is excluded from the list of matched filenames. -A sample value is -".o:~". - -
FUNCNEST - -
-If set to a numeric value greater than 0, defines a maximum function -nesting level. Function invocations that exceed this nesting level -will cause the current command to abort. -
GLOBIGNORE - -
-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 -GLOBIGNORE, - - -it is removed from the list of matches. -
HISTCONTROL - -
-A colon-separated list of values controlling how commands are saved on -the history list. -If the list of values includes -ignorespace, - -lines which begin with a -space - -character are not saved in the history list. -A value of -ignoredups - -causes lines matching the previous history entry to not be saved. -A value of -ignoreboth - -is shorthand for ignorespace and ignoredups. -A value of -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. -If -HISTCONTROL - - -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 -HISTIGNORE. - - -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 -HISTCONTROL. - - -
HISTFILE - -
-The name of the file in which command history is saved (see -HISTORY - - -below). The default value is ~/.bash_history. If unset, the -command history is not saved when a shell exits. -
HISTFILESIZE - -
-The maximum number of lines contained in the history file. When this -variable is assigned a value, the history file is truncated, if -necessary, -to contain no more than that number of lines 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 HISTSIZE -after reading any startup files. -
HISTIGNORE - -
-A colon-separated list of patterns used to decide which command lines -should be saved on the history list. Each pattern is anchored at the -beginning of the line and must match the complete line (no implicit -`*' is appended). Each pattern is tested against the line -after the checks specified by -HISTCONTROL - - -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 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 -HISTIGNORE. - - -
HISTSIZE - -
-The number of commands to remember in the command history (see -HISTORY - - -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 startup files. -
HISTTIMEFORMAT - -
-If this variable is set and not null, its value is used as a format string -for strftime(3) to print the time stamp associated with each history -entry displayed by the history builtin. -If this variable is set, time stamps are written to the history file so -they may be preserved across shell sessions. -This uses the history comment character to distinguish timestamps from -other history lines. -
HOME - -
-The home directory of the current user; the default argument for the -cd builtin command. -The value of this variable is also used when performing tilde expansion. -
HOSTFILE - -
-Contains the name of a file in the same format as - -/etc/hosts - -that should be read when the shell needs to complete a -hostname. -The list of possible hostname completions may be changed while the -shell is running; -the next time hostname completion is attempted after the -value is changed, -bash - -adds the contents of the new file to the existing list. -If -HOSTFILE - - -is set, but has no value, or does not name a readable file, -bash attempts to read - -/etc/hosts - -to obtain the list of possible hostname completions. -When -HOSTFILE - - -is unset, the hostname list is cleared. -
IFS - -
-The -Internal Field Separator - -that is used -for word splitting after expansion and to -split lines into words with the -read - -builtin command. The default value is -``<space><tab><newline>''. -
IGNOREEOF - -
-Controls the -action of an interactive shell on receipt of an -EOF - - -character as the sole input. If set, the value is the number of -consecutive -EOF - - -characters which must be -typed as the first characters on an input line before -bash - -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, -EOF - - -signifies the end of input to the shell. -
INPUTRC - -
-The filename for the -readline - -startup file, overriding the default of - -~/.inputrc - -(see -READLINE - - -below). -
LANG - -
-Used to determine the locale category for any category not specifically -selected with a variable starting with LC_. -
LC_ALL - -
-This variable overrides the value of -LANG - - -and any other -LC_ variable specifying a locale category. -
LC_COLLATE - -
-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. -
LC_CTYPE - -
-This variable determines the interpretation of characters and the -behavior of character classes within pathname expansion and pattern -matching. -
LC_MESSAGES - -
-This variable determines the locale used to translate double-quoted -strings preceded by a $. -
LC_NUMERIC - -
-This variable determines the locale category used for number formatting. -
LINES - -
-Used by the select compound command to determine the column length -for printing selection lists. -Automatically set if the -checkwinsize - -option is enabled or in an interactive shell upon receipt of a -SIGWINCH. - - -
MAIL - -
-If this parameter is set to a file or directory name and the -MAILPATH - - -variable is not set, -bash - -informs the user of the arrival of mail in the specified file or -Maildir-format directory. -
MAILCHECK - -
-Specifies how -often (in seconds) -bash - -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. -
MAILPATH - -
-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 name of -the current mailfile. -Example: -
-

- -MAILPATH=aq/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"aq -

- -Bash - -supplies a default value for this variable, but the location of the user -mail files that it uses is system dependent (e.g., /var/mail/$USER). -

- -
OPTERR - -
-If set to the value 1, -bash - -displays error messages generated by the -getopts - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). -OPTERR - - -is initialized to 1 each time the shell is invoked or a shell -script is executed. -
PATH - -
-The search path for commands. It -is a colon-separated list of directories in which -the shell looks for commands (see -COMMAND EXECUTION - - -below). -A zero-length (null) directory name in the value of -PATH - - -indicates the current directory. -A null directory name may appear as two adjacent colons, or as an initial -or trailing colon. -The default path is system-dependent, -and is set by the administrator who installs -bash. - -A common value is -/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin. - -
POSIXLY_CORRECT - -
-If this variable is in the environment when bash starts, the shell -enters posix mode before reading the startup files, as if the ---posix - -invocation option had been supplied. If it is set while the shell is -running, bash enables posix mode, as if the command -set -o posix - -had been executed. -
PROMPT_COMMAND - -
-If set, the value is executed as a command prior to issuing each primary -prompt. -
PROMPT_DIRTRIM - -
-If set to a number greater than zero, the value is used as the number of -trailing directory components to retain when expanding the \w and -\W prompt string escapes (see -PROMPTING - - -below). Characters removed are replaced with an ellipsis. -
PS1 - -
-The value of this parameter is expanded (see -PROMPTING - - -below) and used as the primary prompt string. The default value is -``\s-\v\$ ''. -
PS2 - -
-The value of this parameter is expanded as with -PS1 - - -and used as the secondary prompt string. The default is -``> ''. -
PS3 - -
-The value of this parameter is used as the prompt for the -select - -command (see -SHELL GRAMMAR - - -above). -
PS4 - -
-The value of this parameter is expanded as with -PS1 - - -and the value is printed before each command -bash - -displays during an execution trace. The first character of -PS4 - - -is replicated multiple times, as necessary, to indicate multiple -levels of indirection. The default is ``+ ''. -
SHELL - -
-The full pathname to the shell is kept in this environment variable. -If it is not set when the shell starts, -bash - -assigns to it the full pathname of the current user's login shell. -
TIMEFORMAT - -
-The value of this parameter is used as a format string specifying -how the timing information for pipelines prefixed with the -time - -reserved word should be displayed. -The % character introduces 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][l]R - -
-The elapsed time in seconds. -
%[p][l]U - -
-The number of CPU seconds spent in user mode. -
%[p][l]S - -
-The number of CPU seconds spent in system mode. -
%P - -
-The CPU percentage, computed as (%U + %S) / %R. - -
- -
-The optional p is a digit specifying the precision, -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 used. -
-The optional l specifies a longer format, including -minutes, of the form MMmSS.FFs. -The value of p determines whether or not the fraction is -included. -
-If this variable is not set, bash acts as if it had the -value $aq\nreal\t%3lR\nuser\t%3lU\nsys\ %3lSaq. -If the value is null, no timing information is displayed. -A trailing newline is added when the format string is displayed. - -
TMOUT - -
-If set to a value greater than zero, -TMOUT - - -is treated as the -default timeout for the read builtin. -The select command terminates if input does not arrive -after -TMOUT - - -seconds when input 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. -Bash - -terminates after waiting for that number of seconds if a complete -line of input does not arrive. -
TMPDIR - -
-If set, bash uses its value as the name of a directory in which -bash creates temporary files for the shell's use. -
auto_resume - -
-This variable controls how the shell interacts with the user and -job control. If this variable is set, single word simple -commands without redirections are treated as candidates for resumption -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 -name - -of a stopped job, in this context, is the command line used to -start it. -If set to the value -exact, - -the string supplied must match the name of a stopped job exactly; -if set to -substring, - -the string supplied needs to match a substring of the name of a -stopped job. The -substring - -value provides functionality analogous to the -%? - -job identifier (see -JOB CONTROL - - -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 %string job identifier. -
histchars - -
-The two or three characters which control history expansion -and tokenization (see -HISTORY EXPANSION - - -below). The first character is the history expansion character, -the character which signals the start of a history -expansion, normally `!'. -The second character is the quick substitution -character, which is used as shorthand for re-running the previous -command entered, substituting one string for another in the command. -The default is `^'. -The optional third character is the character -which indicates that the remainder of the line is a comment when found -as the first character of a word, normally `#'. The history -comment character causes history substitution to be skipped for the -remaining words on the line. It does not necessarily cause the shell -parser to treat the rest of the line as a comment. - -
-  -

Arrays

- -Bash - -provides one-dimensional indexed and associative array variables. -Any variable may be used as an indexed array; the -declare - -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 contiguously. -Indexed arrays are referenced using integers (including arithmetic -expressions) and are zero-based; associative arrays are referenced -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 to -using the syntax name[subscript]=value. The -subscript - -is treated as an arithmetic expression that must evaluate to a number. -To explicitly declare an indexed array, use -declare -a name - -(see -SHELL BUILTIN COMMANDS - - -below). -declare -a name[subscript] - -is also accepted; the subscript is ignored. -

- -Associative arrays are created using -declare -A name. - -

- -Attributes may be -specified for an array variable using the -declare - -and -readonly - -builtins. Each attribute applies to all members of an array. -

- -Arrays are assigned to using compound assignments of the form -name=(value1 ... valuen), where each -value is of the form [subscript]=string. -Indexed array assignments do not require anything but string. -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 plus one. Indexing starts at zero. -

- -When assigning to an associative array, the subscript is required. -

- -This syntax is also accepted by the -declare - -builtin. Individual array elements may be assigned to using the -name[subscript]=value syntax introduced above. -When assigning to an indexed array, if -name - -is subscripted by a negative number, that number is -interpreted as relative to one greater than the maximum index of -name, so negative indices count back from the end of the -array, and an index of -1 references the last element. -

- -Any element of an array may be referenced using -${name[subscript]}. The braces are required to avoid -conflicts with pathname expansion. If -subscript is @ or *, the word expands to -all members of name. These subscripts differ only when the -word appears within double quotes. If the word is double-quoted, -${name[*]} expands to a single -word with the value of each array member separated by the first -character of the -IFS - - -special variable, and ${name[@]} expands each element of -name to a separate word. When there are no array members, -${name[@]} 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 -Special Parameters - -above). ${#name[subscript]} expands to the length of -${name[subscript]}. If subscript is * or -@, the expansion is the number of elements in the array. -Referencing an array variable without a subscript is equivalent to -referencing the array with a subscript of 0. -If the -subscript - -used to reference an element of an indexed array -evaluates to a number less than zero, it is -interpreted as relative to one greater than the maximum index of the array, -so negative indices count back from the end of the -array, and an index of -1 references the last element. -

- -An array variable is considered set if a subscript has been assigned a -value. The null string is a valid value. -

- -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 pathname -expansion. -unset name, where name is an array, or -unset name[subscript], where -subscript is * or @, removes the entire array. -

- -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. -If both options are supplied, --A - -takes precedence. -The -read - -builtin accepts a --a - -option to assign a list of words read from the standard input -to an array. The -set - -and -declare - -builtins display array values in a way that allows them to be -reused as assignments. -  -

EXPANSION

- -Expansion is performed on the command line after it has been split into -words. There are seven kinds of expansion performed: -brace expansion, - -tilde expansion, - -parameter and variable expansion, - -command substitution, - -arithmetic expansion, - -word splitting, - -and -pathname expansion. - -

- -The order of expansions is: brace expansion, tilde expansion, -parameter, variable and arithmetic expansion and -command substitution -(done in a left-to-right fashion), word splitting, and pathname -expansion. -

- -On systems that can support it, there is an additional expansion -available: process substitution. -

- -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 "${name[@]}" -as explained above (see -PARAMETERS). - - -  -

Brace Expansion

- -

- -Brace expansion - -is a mechanism by which arbitrary strings -may be generated. This mechanism is similar to -pathname expansion, but the filenames generated -need not exist. Patterns to be brace expanded take -the form of an optional -preamble, - -followed by either a series of comma-separated strings or -a sequence expression between a pair of braces, followed by -an optional -postscript. - -The preamble is prefixed to each string contained -within the braces, and the postscript is then appended -to each resulting string, expanding left to right. -

- -Brace expansions may be nested. The results of each expanded -string are not sorted; left to right order is preserved. -For example, a{d,c,b}e expands into `ade ace abe'. -

- -A sequence expression takes the form -{x..y[..incr]}, -where x and y are either integers or single characters, -and incr, an optional increment, is an integer. -When integers are supplied, the expression expands to each number between -x and y, inclusive. -Supplied integers may be prefixed with 0 to force each term to have the -same width. -When either x or y begins with a zero, the shell -attempts to force all generated terms to contain the same number of digits, -zero-padding where necessary. -When characters are supplied, the expression expands to each character -lexicographically between x and y, inclusive, -using the default C locale. -Note that both x and y must be of the same type. -When the increment is supplied, it is used as the difference between -each term. The default increment is 1 or -1 as appropriate. -

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

- -A correctly-formed brace expansion must contain unquoted opening -and closing braces, and at least one unquoted comma or a valid -sequence expression. -Any incorrectly formed brace expansion is left unchanged. -A { or , may be quoted with a backslash to prevent its -being considered part of a brace expression. -To avoid conflicts with parameter expansion, the string ${ -is not considered eligible for brace expansion. -

- -This construct is typically used as shorthand when the common -prefix of the strings to be generated is longer than in the -above example: -

-

- -mkdir /usr/local/src/bash/{old,new,dist,bugs} -

- -or -
-chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} -
- -

- -Brace expansion introduces a slight incompatibility with -historical versions of -sh. - -sh - -does not treat opening or closing braces specially when they -appear as part of a word, and preserves them in the output. -Bash - -removes braces from words as a consequence of brace -expansion. For example, a word entered to -sh - -as file{1,2} -appears identically in the output. The same word is -output as -file1 file2 - -after expansion by -bash. - -If strict compatibility with -sh - -is desired, start -bash - -with the -+B - -option or disable brace expansion with the -+B - -option to the -set - -command (see -SHELL BUILTIN COMMANDS - - -below). -  -

Tilde Expansion

- -

- -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 tilde-prefix. -If none of the characters in the tilde-prefix are quoted, the -characters in the tilde-prefix following the tilde are treated as a -possible login name. -If this login name is the null string, the tilde is replaced with the -value of the shell parameter -HOME. - - -If -HOME - - -is unset, the home directory of the user executing the shell is -substituted instead. -Otherwise, 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 -PWD - - -replaces the tilde-prefix. -If the tilde-prefix is a `~-', the value of the shell variable -OLDPWD, - - -if it is set, is substituted. -If the characters 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 -dirs - -builtin invoked with the tilde-prefix as an argument. -If the characters following the tilde in the tilde-prefix consist of a -number without a leading `+' or `-', `+' is assumed. -

- -If the login name is invalid, or the tilde expansion fails, the word -is unchanged. -

- -Each variable assignment is checked for unquoted tilde-prefixes immediately -following a -: - -or the first -=. - -In these cases, tilde expansion is also performed. -Consequently, one may use filenames with tildes in assignments to -PATH, - - -MAILPATH, - - -and -CDPATH, - - -and the shell assigns the expanded value. -  -

Parameter Expansion

- -

- -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 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 -embedded arithmetic expansion, command substitution, or parameter -expansion. -

- - -

-
${parameter}
-The value of parameter is substituted. The braces are required -when -parameter - -is a positional parameter with more than one digit, -or when -parameter - -is followed by a character which is not to be -interpreted as part of its name. -The parameter is a shell parameter as described above -PARAMETERS) or an array reference (Arrays). - -
-

- -If the first character of parameter is an exclamation point (!), -it introduces a level of variable indirection. -Bash uses the value of the variable formed from the rest of -parameter as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of parameter itself. -This is known as indirect expansion. -The 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. -

- -When not performing substring expansion, using the forms documented below -(e.g., :-), -bash tests for a parameter that is unset or null. Omitting the colon -results in a test only for a parameter that is unset. -

- - -

-
${parameter:-word}
-Use Default Values. If -parameter - -is unset or null, the expansion of -word - -is substituted. Otherwise, the value of -parameter - -is substituted. -
${parameter:=word}
-Assign Default Values. -If -parameter - -is unset or null, the expansion of -word - -is assigned to -parameter. - -The value of -parameter - -is then substituted. Positional parameters and special parameters may -not be assigned to in this way. -
${parameter:?word}
-Display Error if Null or Unset. -If -parameter - -is null or unset, the expansion of word (or a message to that effect -if -word - -is not present) is written to the standard error and the shell, if it -is not interactive, exits. Otherwise, the value of parameter is -substituted. -
${parameter:+word}
-Use Alternate Value. -If -parameter - -is null or unset, nothing is substituted, otherwise the expansion of -word - -is substituted. -
${parameter:offset}
- -
${parameter:offset:length}
- -Substring Expansion. -Expands to up to length characters of the value of parameter -starting at the character specified by offset. -If parameter is @, an indexed array subscripted by -@ or *, or an associative array name, the results differ as -described below. -If length is omitted, expands to the substring of the value of -parameter starting at the character specified by offset -and extending to the end of the value. -length and offset are arithmetic expressions (see -ARITHMETIC EVALUATION - - -below). -

-If offset evaluates to a number less than zero, the value -is used as an offset in characters -from the end of the value of parameter. -If length evaluates to a number less than zero, -it is interpreted as an offset in characters -from the end of the value of parameter rather than -a number of characters, and the expansion is the characters between -offset 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 :- expansion. -

-If parameter is @, the result is length positional -parameters beginning at offset. -A negative offset is taken relative to one greater than the greatest -positional parameter, so an offset of -1 evaluates to the last positional -parameter. -It is an expansion error if length evaluates to a number less than -zero. -

-If parameter is an indexed array name subscripted by @ or *, -the result is the length -members of the array beginning with ${parameter[offset]}. -A negative offset is taken relative to one greater than the maximum -index of the specified array. -It is an expansion error if length evaluates to a number less than -zero. -

-Substring expansion applied to an associative array produces undefined -results. -

-Substring indexing is zero-based unless the positional parameters -are used, in which case the indexing starts at 1 by default. -If offset is 0, and the positional parameters are used, $0 is -prefixed to the list. -

${!prefix*}
- -
${!prefix@}
- -Names matching prefix. -Expands to the names of variables whose names begin with prefix, -separated by the first character of the -IFS - - -special variable. -When @ is used and the expansion appears within double quotes, each -variable name expands to a separate word. -
${!name[@]}
- -
${!name[*]}
- -List of array keys. -If name is an array variable, expands to the list of array indices -(keys) assigned in name. -If name is not an array, expands to 0 if name is set and null -otherwise. -When @ is used and the expansion appears within double quotes, each -key expands to a separate word. -
${#parameter}
-Parameter length. -The length in characters of the value of parameter is substituted. -If -parameter - -is -* - -or -@, - -the value substituted is the number of positional parameters. -If -parameter - -is an array name subscripted by -* - -or -@, - -the value substituted is the number of elements in the array. -If -parameter - -is an indexed array name subscripted by a negative number, that number is -interpreted as relative to one greater than the maximum index of -parameter, so negative indices count back from the end of the -array, and an index of -1 references the last element. -
${parameter#word}
- -
${parameter##word}
- -Remove matching prefix pattern. -The -word - -is expanded to produce a pattern just as in pathname -expansion. If the pattern matches the beginning of -the 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}
- -Remove matching suffix pattern. -The word is expanded to produce a pattern just as in -pathname expansion. -If the pattern matches a trailing portion 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/pattern/string}
-Pattern substitution. -The pattern is expanded to produce a pattern just as in -pathname 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 -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}
-
${parameter,pattern}
-
${parameter,,pattern}
- -Case modification. -This expansion modifies the case of alphabetic characters in parameter. -The pattern is expanded to produce a pattern just as in -pathname expansion. -Each character in the expanded value of parameter is tested against -pattern, and, if it matches the pattern, its case is converted. -The pattern should not attempt to match more than one character. -The ^ operator converts lowercase letters matching pattern -to uppercase; the , operator converts matching uppercase letters -to lowercase. -The ^^ and ,, expansions convert each matched character in the -expanded value; the ^ and , expansions match and convert only -the first character in the expanded value. -If pattern is omitted, it is treated like a ?, which matches -every character. -If -parameter - -is -@ - -or -*, - -the case modification operation is applied to each positional -parameter in turn, and the expansion is the resultant list. -If -parameter - -is an array variable subscripted with -@ - -or -*, - -the case modification operation is applied to each member of the -array in turn, and the expansion is the resultant list. -
-  -

Command Substitution

- -

- -Command substitution allows the output of a command to replace -the command name. There are two forms: -

-

- -$(command) -

- -or -
-`command` -
- -

- -Bash - -performs the expansion by executing command and -replacing the command substitution with the standard output of the -command, with any trailing newlines deleted. -Embedded newlines are not deleted, but they may be removed during -word splitting. -The command substitution $(cat file) can be replaced by -the equivalent but faster $(< file). -

- -When the old-style backquote form of substitution is used, -backslash retains its literal meaning except when followed by -$, - -`, - -or -\. - -The first backquote not preceded by a backslash terminates the -command substitution. -When using the $(command) form, all characters between the -parentheses make up the command; none are treated specially. -

- -Command substitutions may be nested. To nest when using the backquoted form, -escape the inner backquotes with backslashes. -

- -If the substitution appears within double quotes, word splitting and -pathname expansion are not performed on the results. -  -

Arithmetic Expansion

- -

- -Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic expansion is: -

-

- -$((expression)) -

- -

- -The -expression - -is treated as if it were within double quotes, but a double quote -inside the parentheses is not treated specially. -All tokens in the expression undergo parameter expansion, string -expansion, command substitution, and quote removal. -Arithmetic expansions may be nested. -

- -The evaluation is performed according to the rules listed below under -ARITHMETIC EVALUATION. - - -If -expression - -is invalid, -bash - -prints a message indicating failure and no substitution occurs. -  -

Process Substitution

- -

- -Process substitution is supported on systems that support named -pipes (FIFOs) or the /dev/fd method of naming open files. -It takes the form of -<(list) -or ->(list). -The process list is run with its input or output connected to a -FIFO or some file in /dev/fd. The name of this file is -passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to -the file will provide input for list. If the -<(list) form is used, the file passed as an -argument should be read to obtain the output of list. -

- -When available, process substitution is performed -simultaneously with parameter and variable expansion, -command substitution, -and arithmetic expansion. -  -

Word Splitting

- -

- -The shell scans the results of -parameter expansion, -command substitution, -and -arithmetic expansion -that did not occur within double quotes for -word splitting. - -

- -The shell treats each character of -IFS - - -as a delimiter, and splits the results of the other -expansions into words on these characters. If -IFS - - -is unset, or its -value is exactly -<space><tab><newline>, - -the default, then -sequences of -<space>, - -<tab>, - -and -<newline> - -at the beginning and end of the results of the previous -expansions are ignored, and -any sequence of -IFS - - -characters not at the beginning or end serves to delimit words. -If -IFS - - -has a value other than the default, then sequences of -the whitespace characters -space - -and -tab - -are ignored at the beginning and end of the -word, as long as the whitespace character is in the -value of -IFS - - -(an -IFS - - -whitespace character). -Any character in -IFS - - -that is not -IFS - - -whitespace, along with any adjacent -IFS - - -whitespace characters, delimits a field. -A sequence of -IFS - - -whitespace characters is also treated as a delimiter. -If the value of -IFS - - -is null, no word splitting occurs. -

- -Explicit null arguments ("" or aqaq) are retained. -Unquoted implicit null arguments, resulting from the expansion of -parameters that have no values, are removed. -If a parameter with no value is expanded within double quotes, a -null argument results and is retained. -

- -Note that if no expansion occurs, no splitting -is performed. -  -

Pathname Expansion

- -

- -After word splitting, -unless the --f - -option has been set, -bash - -scans each word for the characters -*, - -?, - -and -[. - -If one of these characters appears, then the word is -regarded as a -pattern, - -and replaced with an alphabetically sorted list of -filenames matching the pattern -(see -Pattern Matching - - -below). -If no matching filenames are found, -and the shell option -nullglob - -is not enabled, the word is left unchanged. -If the -nullglob - -option is set, and no matches are found, -the word is removed. -If the -failglob - -shell option is set, and no matches are found, an error message -is printed and the command is not executed. -If the shell option -nocaseglob - -is enabled, the match is performed without regard to the case -of alphabetic characters. -When a pattern is used for pathname expansion, -the character -``.'' - -at the start of a name or immediately following a slash -must be matched explicitly, unless the shell option -dotglob - -is set. -When matching a pathname, the slash character must always be -matched explicitly. -In other cases, the -``.'' - -character is not treated specially. -See the description of -shopt - -below under -SHELL BUILTIN COMMANDS - - -for a description of the -nocaseglob, - -nullglob, - -failglob, - -and -dotglob - -shell 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 removed from the list of matches. -The filenames -``.'' - -and -``..'' - -are always ignored when -GLOBIGNORE - - -is set and not null. However, setting -GLOBIGNORE - - -to a non-null value has the effect of enabling the -dotglob - -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 -GLOBIGNORE. - - -The -dotglob - -option is disabled when -GLOBIGNORE - - -is unset. -

- -Pattern Matching -

- -Any character that appears in a pattern, other than the special pattern -characters described below, matches itself. The NUL character may not -occur in a pattern. A backslash escapes the following character; the -escaping backslash is discarded when matching. -The special pattern characters must be quoted if -they are to be matched literally. -

- -The special pattern characters have the following meanings: -

- - -

-
-
* - -
-Matches any string, including the null string. -When the globstar shell option is enabled, and * is used in -a pathname expansion context, two adjacent *s used as a single -pattern will match all files and zero or more directories and -subdirectories. -If followed by a /, two adjacent *s will match only directories -and subdirectories. -
? - -
-Matches any single character. -
[...] - -
-Matches any one of the enclosed characters. A pair of characters -separated by a hyphen denotes a -range expression; -any character that falls between those two characters, inclusive, -using the current locale's collating sequence and character set, -is matched. If the first character following the -[ - -is a -! - -or a -^ - -then any character not enclosed is matched. -The sorting order of characters in range expressions is determined by -the current locale and the values of the -LC_COLLATE - - -or -LC_ALL - - -shell variables, if set. -To obtain the traditional interpretation of range expressions, where -[a-d] - -is equivalent to -[abcd], - -set value of the -LC_ALL - -shell variable to -C, - -or enable the -globasciiranges - -shell option. -A -- - -may be matched by including it as the first or last character -in the set. -A -] - -may be matched by including it as the first character -in the set. -
- -

- - -Within -[ - -and -], - -character classes can be specified using the syntax -[:class:], where class is one of the -following classes defined in the POSIX standard: -

-

- -

- - - -alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit -
- -A character class matches any character belonging to that class. -The word character class matches letters, digits, and the character _. -
- -

- - -Within -[ - -and -], - -an equivalence class can be specified using the syntax -[=c=], which matches all characters with the -same collation weight (as defined by the current locale) as -the character c. -
- -

- - -Within -[ - -and -], - -the syntax [.symbol.] matches the collating symbol -symbol. -

- -
- - -

- -If the extglob shell option is enabled using the shopt -builtin, several extended pattern matching operators are recognized. -In the following description, a pattern-list is a list of one -or more patterns separated by a |. -Composite patterns may be formed using one or more of the following -sub-patterns: -

- -

-
-
?(pattern-list)
-Matches zero or one occurrence of the given patterns -
*(pattern-list)
-Matches zero or more occurrences of the given patterns -
+(pattern-list)
-Matches one or more occurrences of the given patterns -
@(pattern-list)
-Matches one of the given patterns -
!(pattern-list)
-Matches anything except one of the given patterns -
- - -  -

Quote Removal

- -

- -After the preceding expansions, all unquoted occurrences of the -characters -\, - -aq, - -and " that did not result from one of the above -expansions are removed. -  -

REDIRECTION

- -Before a command is executed, its input and output -may be -redirected - -using a special notation interpreted by the shell. -Redirection allows commands' file handles to be -duplicated, opened, closed, -made to refer to different files, -and can change the files the command reads from and writes to. -Redirection may also be used to modify file handles in the -current shell execution environment. -The following redirection -operators may precede or appear anywhere within a -simple command - -or may follow a -command. - -Redirections are processed in the order they appear, from -left to right. -

- -Each redirection that may be preceded by a file descriptor number -may 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 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. -

- -In the following descriptions, if the file descriptor number is -omitted, and the first character of the redirection operator is -<, - -the redirection refers to the standard input (file descriptor -0). If the first character of the redirection operator is ->, - -the redirection refers to the standard output (file descriptor -1). -

- -The word following the redirection operator in the following -descriptions, unless otherwise noted, is subjected to -brace expansion, tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, quote removal, -pathname expansion, and word splitting. -If it expands to more than one word, -bash - -reports an error. -

- -Note that the order of redirections is significant. For example, -the command -

-

- -ls > dirlist 2>&1 -

- -

- -directs both standard output and standard error to the file -dirlist, - -while the command -

-

- -ls 2>&1 > dirlist -

- -

- -directs only the standard output to file -dirlist, - -because the standard error was duplicated from the standard output -before the standard output was redirected to -dirlist. - -

- -Bash handles several filenames specially when they are used in -redirections, as described in the following table: -

-

- - -

-
/dev/fd/fd - -
-If fd is a valid integer, file descriptor fd is duplicated. -
/dev/stdin - -
-File descriptor 0 is duplicated. -
/dev/stdout - -
-File descriptor 1 is duplicated. -
/dev/stderr - -
-File descriptor 2 is duplicated. -
/dev/tcp/host/port - -
-If host is a valid hostname or Internet address, and port -is an integer port number or service name, bash attempts to open -the corresponding TCP socket. -
/dev/udp/host/port - -
-If host is a valid hostname or Internet address, and port -is an integer port number or service name, bash attempts to open -the corresponding UDP socket. - -
- -

- -A failure to open or create a file causes the redirection to fail. -

- -Redirections using file descriptors greater than 9 should be used with -care, as they may conflict with file descriptors the shell uses -internally. -  -

Redirecting Input

- -

- -Redirection of input causes the file whose name results from -the expansion of -word - -to be opened for reading on file descriptor -n, - -or the standard input (file descriptor 0) if -n - -is not specified. -

- -The general format for redirecting input is: -

-

- -[n]<word -

- -  -

Redirecting Output

- -

- -Redirection of output causes the file whose name results from -the expansion of -word - -to be opened for writing on file descriptor -n, - -or the standard output (file descriptor 1) if -n - -is not specified. If the file does not exist it is created; -if it does exist it is truncated to zero size. -

- -The general format for redirecting output is: -

-

- -[n]>word -

- -

- -If the redirection operator is ->, - -and the -noclobber - -option to the -set - -builtin has been enabled, the redirection will fail if the file -whose name results from the expansion of word exists and is -a regular file. -If the redirection operator is ->|, - -or the redirection operator is -> - -and the -noclobber - -option to the -set - -builtin command is not enabled, the redirection is attempted even -if the file named by word exists. -  -

Appending Redirected Output

- -

- -Redirection of output in this fashion -causes the file whose name results from -the expansion of -word - -to be opened for appending on file descriptor -n, - -or the standard output (file descriptor 1) if -n - -is not specified. If the file does not exist it is created. -

- -The general format for appending output is: -

-

- -[n]>>word -

- -

- -  -

Redirecting Standard Output and Standard Error

- -

- -This construct allows both the -standard output (file descriptor 1) and -the standard error output (file descriptor 2) -to be redirected to the file whose name is the -expansion of -word. - -

- -There are two formats for redirecting standard output and -standard error: -

-

- -&>word -

- -and -
->&word -
- -

- -Of the two forms, the first is preferred. -This is semantically equivalent to -

-

- ->word 2>&1 -

- -

- -When using the second form, word may not expand to a number or --. If it does, other redirection operators apply -(see Duplicating File Descriptors below) for compatibility -reasons. -  -

Appending Standard Output and Standard Error

- -

- -This construct allows both the -standard output (file descriptor 1) and -the standard error output (file descriptor 2) -to be appended to the file whose name is the -expansion of -word. - -

- -The format for appending standard output and standard error is: -

-

- -&>>word -

- -

- -This is semantically equivalent to -

-

- ->>word 2>&1 -

- -

- -(see Duplicating File Descriptors below). -  -

Here Documents

- -

- -This type of redirection instructs the shell to read input from the -current source until a line containing only -delimiter - -(with no trailing blanks) -is seen. All of -the lines read up to that point are then used as the standard -input for a command. -

- -The format of here-documents is: -

-

- -

-<<[-]word
-        here-document
-delimiter
-
- -
- -

- -No parameter and variable expansion, command substitution, -arithmetic expansion, or pathname expansion is performed on -word. - -If any characters in -word - -are quoted, the -delimiter - -is the result of quote removal on -word, - -and the lines in the here-document are not expanded. -If word is unquoted, -all lines of the here-document are subjected to -parameter expansion, command substitution, and arithmetic expansion, -the character sequence -\<newline> - -is ignored, and -\ - -must be used to quote the characters -\, - -$, - -and -`. - -

- -If the redirection operator is -<<-, - -then all leading tab characters are stripped from input lines and the -line containing -delimiter. - -This allows -here-documents within shell scripts to be indented in a -natural fashion. -  -

Here Strings

- -A variant of here documents, the format is: -
-

- -

-<<<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 to the command on its -standard input. -  -

Duplicating File Descriptors

- -

- -The redirection operator -

-

- -[n]<&word -

- -

- -is used to duplicate input file descriptors. -If -word - -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 -word - -do not specify a file descriptor open for input, a redirection error occurs. -If -word - -evaluates to --, - -file descriptor -n - -is closed. If -n - -is not specified, the standard input (file descriptor 0) is used. -

- -The operator -

-

- -[n]>&word -

- -

- -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 -word - -do not specify a file descriptor open for output, a redirection error occurs. -If -word - -evaluates to --, - -file descriptor -n - -is closed. -As a special case, if n is omitted, and word does not -expand to one or more digits or -, the standard output and standard -error are redirected as described previously. -  -

Moving File Descriptors

- -

- -The redirection operator -

-

- -[n]<&digit- -

- -

- -moves the file descriptor digit to file descriptor -n, - -or the standard input (file descriptor 0) if n is not specified. -digit is closed after being duplicated to n. -

- -Similarly, the redirection operator -

-

- -[n]>&digit- -

- -

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

Opening File Descriptors for Reading and Writing

- -

- -The redirection operator -

-

- -[n]<>word -

- -

- -causes the file whose name is the expansion of -word - -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. -  -

ALIASES

- -Aliases allow a string to be substituted for a word when it is used -as the first word of a simple command. -The shell maintains a list of aliases that may be set and unset with the -alias - -and -unalias - -builtin commands (see -SHELL BUILTIN COMMANDS - - -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 metacharacters 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 -ls - -to -ls -F, - -for instance, and -bash - -does not try to recursively expand the replacement text. -If the last character of the alias value is a -blank, - -then the next command -word following the alias is also checked for alias expansion. -

- -Aliases are created and listed with the -alias - -command, and removed with the -unalias - -command. -

- -There is no mechanism for using arguments in the replacement text. -If arguments are needed, a shell function should be used (see -FUNCTIONS - - -below). -

- -Aliases are not expanded when the shell is not interactive, unless -the -expand_aliases - -shell option is set using -shopt - -(see the description of -shopt - -under -SHELL BUILTIN COMMANDS -below). -

- -The rules concerning the definition and use of aliases are -somewhat confusing. -Bash - -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a -command is read, not when it is executed. Therefore, an -alias 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 compound command. As a consequence, aliases -defined in a function are not available until after that -function is executed. To be safe, always put -alias definitions on a separate line, and do not use -alias - -in compound commands. -

- -For almost every purpose, aliases are superseded by -shell functions. -  -

FUNCTIONS

- -A shell function, defined as described above under -SHELL GRAMMAR, - - -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 positional parameters -during its execution. -The special parameter -# - -is updated to reflect the change. Special parameter 0 -is unchanged. -The first element of the -FUNCNAME - - -variable is set to the name of the function 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 -DEBUG - - -and -RETURN - -traps (see the description of the -trap - -builtin under -SHELL BUILTIN COMMANDS - - -below) are not inherited unless the function has been given the -trace attribute (see the description of the -declare - - -builtin below) or the --o functrace shell option has been enabled with -the set builtin -(in which case all functions inherit the DEBUG and RETURN traps), -and the -ERR - - -trap is not inherited unless the -o errtrace shell option has -been enabled. -

- -Variables local to the function may be declared with the -local - -builtin command. Ordinarily, variables and their values -are shared between the function and its caller. -

- -The FUNCNEST variable, if set to a numeric value greater -than 0, defines a maximum function nesting level. Function -invocations that exceed the limit cause the entire command to -abort. -

- -If the builtin command -return - -is executed in a function, the function completes and -execution resumes with the next command after the function -call. -Any command associated with the RETURN trap is executed -before execution resumes. -When a function completes, the values of the -positional parameters and the special parameter -# - -are restored to the values they had prior to the function's -execution. -

- -Function names and definitions may be listed with the --f - -option to the -declare - -or -typeset - -builtin commands. The --F - -option to -declare - -or -typeset - -will list the function names only -(and optionally the source file and line number, if the extdebug -shell option is enabled). -Functions may be exported so that subshells -automatically have them defined with the --f - -option to the -export - -builtin. -A function definition may be deleted using the -f option to -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. -The FUNCNEST variable may be used to limit the depth of the -function call stack and restrict the number of function invocations. -By default, no limit is imposed on the number of recursive calls. -  -

ARITHMETIC EVALUATION

- -The shell allows arithmetic expressions to be evaluated, under -certain circumstances (see the let and declare builtin -commands and Arithmetic Expansion). -Evaluation is done in fixed-width integers with no check for overflow, -though division by 0 is trapped and flagged as an error. -The operators and their precedence, associativity, and values -are the same as in the C language. -The following list of operators is grouped into levels of -equal-precedence operators. -The levels are listed in order of decreasing precedence. -

- - -

-
id++ id-- - -
-variable post-increment and post-decrement -
++id --id - -
-variable pre-increment and pre-decrement -
- + - -
-unary minus and plus -
! ~ - -
-logical and bitwise negation -
** - -
-exponentiation -
* / % - -
-multiplication, division, remainder -
+ - - -
-addition, subtraction -
<< >> - -
-left and right bitwise shifts -
<= >= < > - -
-comparison -
== != - -
-equality and inequality -
& - -
-bitwise AND -
^ - -
-bitwise exclusive OR -
| - -
-bitwise OR -
&& - -
-logical AND -
|| - -
-logical OR -
expr?expr:expr - -
-conditional operator -
= *= /= %= += -= <<= >>= &= ^= |= - -
-assignment -
expr1 , expr2 - -
-comma - -
-

- -Shell variables are allowed as operands; parameter expansion is -performed 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 0 when referenced -by name without using the parameter expansion syntax. -The value of a variable is evaluated as an arithmetic expression -when it is referenced, or when a variable which has been given the -integer attribute using declare -i is assigned a value. -A null value evaluates to 0. -A shell variable need not have its integer 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 [base#]n, where the optional base -is a decimal number between 2 and 64 representing the arithmetic -base, and n is a number in that base. -If base# 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 base is less than or equal to 36, lowercase and uppercase -letters may be used interchangeably to represent numbers between 10 -and 35. -

- -Operators are evaluated in order of precedence. Sub-expressions in -parentheses are evaluated first and may override the precedence -rules above. -  -

CONDITIONAL EXPRESSIONS

- -Conditional expressions are used by the [[ compound command and -the test and [ builtin commands to test file attributes -and perform string and arithmetic comparisons. -Expressions are formed from the following unary or binary primaries. -If any file argument to one of the primaries is of the form -/dev/fd/n, then file descriptor n is checked. -If the file argument to one of the primaries is one of -/dev/stdin, /dev/stdout, or /dev/stderr, file -descriptor 0, 1, or 2, respectively, is checked. -

- -Unless otherwise specified, primaries that operate on files follow symbolic -links and operate on the target of the link, rather than the link itself. -

- - -When used with [[, the < and > operators sort -lexicographically using the current locale. -The test command sorts using ASCII ordering. -

- -

-
-a file - -
-True if file exists. -
-b file - -
-True if file exists and is a block special file. -
-c file - -
-True if file exists and is a character special file. -
-d file - -
-True if file exists and is a directory. -
-e file - -
-True if file exists. -
-f file - -
-True if file exists and is a regular file. -
-g file - -
-True if file exists and is set-group-id. -
-h file - -
-True if file exists and is a symbolic link. -
-k file - -
-True if file exists and its ``sticky'' bit is set. -
-p file - -
-True if file exists and is a named pipe (FIFO). -
-r file - -
-True if file exists and is readable. -
-s file - -
-True if file exists and has a size greater than zero. -
-t fd - -
-True if file descriptor -fd - -is open and refers to a terminal. -
-u file - -
-True if file exists and its set-user-id bit is set. -
-w file - -
-True if file exists and is writable. -
-x file - -
-True if file exists and is executable. -
-G file - -
-True if file exists and is owned by the effective group id. -
-L file - -
-True if file exists and is a symbolic link. -
-N file - -
-True if file exists and has been modified since it was last read. -
-O file - -
-True if file exists and is owned by the effective user id. -
-S file - -
-True if file exists and is a socket. -
file1 -ef file2
-True if file1 and file2 refer to the same device and -inode numbers. -
file1 -nt file2
-True if file1 is newer (according to modification date) than file2, -or if file1 exists and file2 does not. -
file1 -ot file2
-True if file1 is older than file2, or if file2 exists -and file1 does not. -
-o optname - -
-True if the shell option -optname - -is enabled. -See the list of options under the description of the --o - -option to the -set - -builtin below. -
-v varname - -
-True if the shell variable -varname - -is set (has been assigned a value). -
-R varname - -
-True if the shell variable -varname - -is set and is a name reference. -
-z string - -
-True if the length of string is zero. -
string
- -
-n string - -
- -True if the length of -string - -is non-zero. -
string1 == string2
- -
string1 = string2
- -True if the strings are equal. = should be used -with the test command for POSIX conformance. -When used with the [[ command, this performs pattern matching as -described above (Compound Commands). -
string1 != string2
-True if the strings are not equal. -
string1 < string2
-True if string1 sorts before string2 lexicographically. -
string1 > string2
-True if string1 sorts after string2 lexicographically. -
arg1 OP arg2 - -
-OP - - -is one of --eq, - --ne, - --lt, - --le, - --gt, - -or --ge. - -These 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. - -
-  -

SIMPLE COMMAND EXPANSION

- -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 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 are -the arguments. -
3.
-Redirections are performed as described above under -REDIRECTION. - - -
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 variable. -
-

- -If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment -of the executed command and do not affect the current shell environment. -If any of the assignments attempts to assign a value to a readonly variable, -an error occurs, and the command exits with a non-zero status. -

- -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 expansions -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. -  -

COMMAND EXECUTION

- -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 -FUNCTIONS. - - -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, -bash - -searches each element of the -PATH - - -for a directory containing an executable file by that name. -Bash - -uses a hash table to remember the full pathnames of executable -files (see -hash - -under -SHELL BUILTIN COMMANDS - - -below). -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 -the original command's arguments as its arguments, and the function's -exit status becomes the exit status of the shell. -If that function is not defined, the shell prints an error -message and returns an exit status of 127. -

- -If the search is successful, or if the command name contains -one or more slashes, the shell executes the named program in a -separate execution environment. -Argument 0 is set to the name given, and the remaining arguments -to the command are set to the arguments given, if any. -

- -If this execution fails because the file is not in executable -format, and the file is not a directory, it is assumed to be -a shell script, a file -containing shell commands. A subshell is spawned to execute -it. This subshell reinitializes itself, so -that the effect is as if a new shell had been invoked -to handle the script, with the exception that the locations of -commands remembered by the parent (see -hash - -below under -SHELL BUILTIN COMMANDS) -are retained by the child. -

- -If the program is a file beginning with -#!, - -the remainder of the first line specifies an interpreter -for the program. The shell executes the -specified interpreter on operating systems that do not -handle this executable format themselves. The arguments to the -interpreter consist of a single optional argument following the -interpreter name on the first line of the program, followed -by the name of the program, followed by the command -arguments, if any. -  -

COMMAND EXECUTION ENVIRONMENT

- -The shell has an execution environment, which consists of the -following: -
-
*
-open files inherited by the shell at invocation, as modified by -redirections supplied to the exec builtin -
*
-the current working directory as set by cd, pushd, or -popd, or inherited by the shell at invocation -
*
-the file creation mode mask as set by umask or inherited from -the shell's parent -
*
-current traps set by trap -
*
-shell parameters that are set by variable assignment or with set -or inherited from the shell's parent in the environment -
*
-shell functions defined during execution or inherited from the shell's -parent in the environment -
*
-options enabled at invocation (either by default or with command-line -arguments) or by set -
*
-options enabled by shopt -
*
-shell aliases defined with alias -
*
-various process IDs, including those of background jobs, the value -of $$, and the value of -PPID - - -
-

- -When a simple command other than a builtin or shell function -is to be executed, it -is invoked in a separate execution environment that consists of -the following. Unless otherwise noted, the values are inherited -from the shell. - -

-
*
-the shell's open files, plus any modifications and additions specified -by redirections to the command -
*
-the current working directory -
*
-the file creation mode mask -
*
-shell variables and functions marked for export, along with variables -exported for the command, passed in the environment -
*
-traps caught by the shell are reset to the values inherited from the -shell's parent, and traps ignored by the shell are ignored -
-

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

- -Command substitution, commands grouped with parentheses, -and asynchronous commands are invoked in a -subshell environment that is a duplicate of the shell environment, -except that traps caught by the shell are reset to the values -that the shell inherited from its parent at invocation. Builtin -commands that are invoked as part of a pipeline are also executed in a -subshell environment. Changes made to the subshell environment -cannot affect the shell's execution environment. -

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

- -If a command is followed by a & and job control is not active, the -default standard input for the command is the empty file /dev/null. -Otherwise, the invoked command inherits the file descriptors of the calling -shell as modified by redirections. -  -

ENVIRONMENT

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

- -The shell provides several ways to manipulate the environment. -On invocation, the shell scans its own environment and -creates a parameter for each name found, automatically marking -it for -export - -to child processes. Executed commands inherit the environment. -The -export - -and -declare -x - -commands allow parameters and functions to be added to and -deleted from the environment. If the value of a parameter -in the environment is modified, the new value becomes part -of the environment, replacing the old. The environment -inherited by any executed command consists of the shell's -initial environment, whose values may be modified in the shell, -less any pairs removed by the -unset - -command, plus any additions via the -export - -and -declare -x - -commands. -

- -The environment for any -simple command - -or function may be augmented temporarily by prefixing it with -parameter assignments, as described above in -PARAMETERS. - - -These assignment statements affect only the environment seen -by that command. -

- -If the --k - -option is set (see the -set - -builtin command below), then -all - -parameter assignments are placed in the environment for a command, -not just those that precede the command name. -

- -When -bash - -invokes an external command, the variable -_ - -is set to the full filename of the command and passed to that -command in its environment. -  -

EXIT STATUS

- -

- -The exit status of an executed command is the value returned by the -waitpid system call or equivalent function. Exit statuses -fall between 0 and 255, though, as explained below, the shell may -use values above 125 specially. Exit statuses from shell builtins and -compound commands are also limited to this range. Under certain -circumstances, the shell will use special values to indicate specific -failure modes. -

- -For the shell's purposes, a command which exits with a -zero exit status has succeeded. An exit status of zero -indicates success. A non-zero exit status indicates failure. -When a command terminates on a fatal signal N, bash uses -the value of 128+N as the exit status. -

- -If a command is not found, the child process created to -execute it returns a status of 127. If a command is found -but is not executable, the return status is 126. -

- -If a command fails because of an error during expansion or redirection, -the exit status is greater than zero. -

- -Shell builtin commands return a status of 0 (true) if -successful, and non-zero (false) if an error occurs -while they execute. -All builtins return an exit status of 2 to indicate incorrect usage. -

- -Bash itself returns the exit status of the last command -executed, unless a syntax error occurs, in which case it exits -with a non-zero value. See also the exit builtin -command below. -  -

SIGNALS

- -When bash is interactive, in the absence of any traps, it ignores -SIGTERM - - -(so that kill 0 does not kill an interactive shell), -and -SIGINT - - -is caught and handled (so that the wait builtin is interruptible). -In all cases, bash ignores -SIGQUIT. - - -If job control is in effect, -bash - -ignores -SIGTTIN, - - -SIGTTOU, - - -and -SIGTSTP. - - -

- -Non-builtin commands run by bash have signal handlers -set to the values inherited by the shell from its parent. -When job control is not in effect, asynchronous commands -ignore -SIGINT - - -and -SIGQUIT - - -in addition to these inherited handlers. -Commands run as a result of command substitution ignore the -keyboard-generated job control signals -SIGTTIN, - - -SIGTTOU, - - -and -SIGTSTP. - - -

- -The shell exits by default upon receipt of a -SIGHUP. - - -Before exiting, an interactive shell resends the -SIGHUP - - -to all jobs, running or stopped. -Stopped jobs are sent -SIGCONT - - -to ensure that they receive the -SIGHUP. - - -To prevent the shell from -sending the signal to a particular job, it should be removed from the -jobs table with the -disown - -builtin (see -SHELL BUILTIN COMMANDS - - -below) or marked -to not receive -SIGHUP - - -using -disown -h. - -

- -If the -huponexit - -shell option has been set with -shopt, - -bash - -sends a -SIGHUP - - -to all jobs when an interactive login shell exits. -

- -If bash is waiting for a command to complete and receives a signal -for which a trap has been set, the trap will not be executed until -the command completes. -When bash is waiting for an asynchronous command via the wait -builtin, the reception of a signal for which a trap has been set will -cause the wait builtin to return immediately with an exit status -greater than 128, immediately after which the trap is executed. -  -

JOB CONTROL

- -Job control - -refers to the ability to selectively stop (suspend) -the execution of processes and continue (resume) -their execution at a later point. A user typically employs -this facility via an interactive interface supplied jointly -by the operating system kernel's terminal driver and -bash. - -

- -The shell associates a -job - -with each pipeline. It keeps a table of currently executing -jobs, which may be listed with the -jobs - -command. When -bash - -starts a job asynchronously (in the -background), - -it prints a line that looks like: -

-

- -[1] 25647 -

- -

- -indicating that this job is job number 1 and that the process ID -of the last process in the pipeline associated with this job is 25647. -All of the processes in a single pipeline are members of the same job. -Bash - -uses the -job - -abstraction as the basis for job control. -

- -To facilitate the implementation of the user interface to job -control, the operating system maintains the notion of a current terminal -process group ID. Members of this process group (processes whose -process group ID is equal to the current terminal process group ID) -receive keyboard-generated signals such as -SIGINT. - - -These processes are said to be in the -foreground. - -Background - -processes are those whose process group ID differs from the terminal's; -such processes are immune to keyboard-generated signals. -Only foreground processes are allowed to read from or, if the -user so specifies with stty tostop, write to the -terminal. -Background processes which attempt to read from (write to when -stty tostop is in effect) the -terminal are sent a -SIGTTIN (SIGTTOU) - - -signal by the kernel's terminal driver, -which, unless caught, suspends the process. -

- -If the operating system on which -bash - -is running supports -job control, -bash - -contains facilities to use it. -Typing the -suspend - -character (typically -^Z, - -Control-Z) while a process is running -causes that process to be stopped and returns control to -bash. - -Typing the -delayed suspend - -character (typically -^Y, - -Control-Y) causes the process to be stopped when it -attempts to read input from the terminal, and control to -be returned to -bash. - -The user may then manipulate the state of this job, using the -bg - -command to continue it in the background, the -fg - -command to continue it in the foreground, or -the -kill - -command to kill it. A ^Z takes effect immediately, -and has the additional side effect of causing pending output -and typeahead to be discarded. -

- -There are a number of ways to refer to a job in the shell. -The character -% - -introduces a job specification (jobspec). Job number -n - -may be referred to as -%n. - -A job may also be referred to using a prefix of the name used to -start it, or using a substring that appears in its command line. -For example, -%ce - -refers to a stopped -ce - -job. If a prefix matches more than one job, -bash - -reports an error. Using -%?ce, - -on the other hand, refers to any job containing the string -ce - -in its command line. If the substring matches more than one job, -bash - -reports an error. The symbols -%% - -and -%+ - -refer to the shell's notion of the -current job, - -which is the last job stopped while it was in -the foreground or started in the background. -The -previous job - -may be referenced using -%-. - -If there is only a single job, %+ and %- can both be used -to refer to that job. -In output pertaining to jobs (e.g., the output of the -jobs - -command), the current job is always flagged with a -+, - -and the previous job with a --. - -A single % (with no accompanying job specification) also refers to the -current job. -

- -Simply naming a job can be used to bring it into the -foreground: -%1 - -is a synonym for -``fg %1'', -bringing job 1 from the background into the foreground. -Similarly, -``%1 &'' - -resumes job 1 in the background, equivalent to -``bg %1''. -

- -The shell learns immediately whenever a job changes state. -Normally, -bash - -waits until it is about to print a prompt before reporting -changes in a job's status so as to not interrupt -any other output. If the --b - -option to the -set - -builtin command -is enabled, -bash - -reports such changes immediately. -Any trap on -SIGCHLD - - -is executed for each child that exits. -

- -If an attempt to exit -bash - -is made while jobs are stopped (or, if the checkjobs shell option has -been enabled using the shopt builtin, running), the shell prints a -warning message, and, if the checkjobs option is enabled, lists the -jobs and their statuses. -The -jobs - -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. -  -

PROMPTING

- -When executing interactively, -bash - -displays the primary prompt -PS1 - - -when it is ready to read a command, and the secondary prompt -PS2 - - -when it needs more input to complete a command. -Bash - -allows these prompt strings to be customized by inserting a number of -backslash-escaped special characters that are decoded as follows: -
- -
-
\a - -
-an ASCII bell character (07) -
\d - -
-the date in "Weekday Month Date" format (e.g., "Tue May 26") -
\D{format} - -
-the format is passed to strftime(3) and the result is inserted -into the prompt string; an empty format results in a locale-specific -time representation. The braces are required -
\e - -
-an ASCII escape character (033) -
\h - -
-the hostname up to the first `.' -
\H - -
-the hostname -
\j - -
-the number of jobs currently managed by the shell -
\l - -
-the basename of the shell's terminal device name -
\n - -
-newline -
\r - -
-carriage return -
\s - -
-the name of the shell, the basename of -$0 - -(the portion following the final slash) -
\t - -
-the current time in 24-hour HH:MM:SS format -
\T - -
-the current time in 12-hour HH:MM:SS format -
\@ - -
-the current time in 12-hour am/pm format -
\A - -
-the current time in 24-hour HH:MM format -
\u - -
-the username of the current user -
\v - -
-the version of bash (e.g., 2.00) -
\V - -
-the release of bash, version + patch level (e.g., 2.00.0) -
\w - -
-the current working directory, with -$HOME - - -abbreviated with a tilde -(uses the value of the -PROMPT_DIRTRIM - - -variable) -
\W - -
-the basename of the current working directory, with -$HOME - - -abbreviated with a tilde -
\! - -
-the history number of this command -
\# - -
-the command number of this command -
\$ - -
-if the effective UID is 0, a -#, - -otherwise a -$ - -
\nnn - -
-the character corresponding to the octal number nnn -
\\ - -
-a backslash -
\[ - -
-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 -HISTORY - - -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 substitution, arithmetic -expansion, and quote removal, subject to the value of the -promptvars - -shell option (see the description of the -shopt - -command under -SHELL BUILTIN COMMANDS - - -below). -  -

READLINE

- -This is the library that handles reading input when using an interactive -shell, unless the ---noediting - -option is given at shell invocation. -Line editing is also used when using the -e option to the -read 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 --o emacs - -or --o vi - -options to the -set - -builtin (see -SHELL BUILTIN COMMANDS - - -below). -To turn off line editing after the shell is running, use the -+o emacs - -or -+o vi - -options to the -set - -builtin. -  -

Readline Notation

- -

- -In this section, the Emacs-style notation is used to denote -keystrokes. Control keys are denoted by C-key, e.g., C-n -means Control-N. Similarly, -meta - -keys are denoted by M-key, so M-x means Meta-X. (On keyboards -without a -meta - -key, M-x means ESC x, i.e., press the Escape key -then the -x - -key. This makes ESC the meta prefix. -The combination M-C-x 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 -arguments, - -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., kill-line) 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 killing text, the text -deleted is saved for possible future retrieval -(yanking). The killed text is saved in a -kill ring. 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. -  -

Readline Initialization

- -

- -Readline is customized by putting commands in an initialization -file (the inputrc file). -The name of this file is taken from the value of the -INPUTRC - - -variable. If that variable is unset, the default is -~/.inputrc. - -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 constructs. -Other lines denote key bindings and variable settings. -

- -The default key-bindings may be changed with an -inputrc - -file. -Other programs that use this library may add their own commands -and bindings. -

- -For example, placing -

-

- -M-Control-u: universal-argument -

- -or -
-C-Meta-u: universal-argument -
- -into the -inputrc - -would make M-C-u execute the readline command -universal-argument. - -

- -The following symbolic character names are recognized: -RUBOUT, - -DEL, - -ESC, - -LFD, - -NEWLINE, - -RET, - -RETURN, - -SPC, - -SPACE, - -and -TAB. - -

- -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). -  -

Readline Key Bindings

- -

- -The syntax for controlling key bindings in the -inputrc - -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 specified in one of two ways: -as a symbolic key name, possibly with Meta- or Control- -prefixes, or as a key sequence. -

- -When using the form keyname:function-name or macro, -keyname - -is the name of a key spelled out in English. For example: -

-

-Control-u: universal-argument -
- -Meta-Rubout: backward-kill-word -
- -Control-o: "> output" -
- -

- -In the above example, -C-u - -is bound to the function -universal-argument, - -M-DEL - -is bound to the function -backward-kill-word, - -and -C-o - -is bound to run the macro -expressed on the right hand side (that is, to insert the text -> output - -into the line). -

- -In the second form, "keyseq":function-name or macro, -keyseq - -differs from -keyname - -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 -
- -"\C-x\C-r": re-read-init-file -
- -"\e[11~": "Function Key 1" -
- -

- -In this example, -C-u - -is again bound to the function -universal-argument. - -C-x C-r - -is bound to the function -re-read-init-file, - -and -ESC [ 1 1 ~ - -is bound to insert the text -Function Key 1. - -

- -The full set of GNU Emacs style escape sequences is -

- -
-
\C- - -
-control prefix -
\M- - -
-meta prefix -
\e - -
-an escape character -
\\ - -
-backslash -
\ - -
-literal " -
\aq - -
-literal aq -
- - -

- -In addition to the GNU Emacs style escape sequences, a second -set of backslash escapes is available: -

- -
-
\a - -
-alert (bell) -
\b - -
-backspace -
\d - -
-delete -
\f - -
-form feed -
\n - -
-newline -
\r - -
-carriage return -
\t - -
-horizontal tab -
\v - -
-vertical tab -
\nnn - -
-the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH - -
-the eight-bit character whose value is the hexadecimal value HH -(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 function name. -In the macro body, the backslash escapes described above are expanded. -Backslash will quote any other character in the macro text, -including " and aq. -

- -Bash - -allows the current readline key bindings to be displayed or modified -with the -bind - -builtin command. The editing mode may be switched during interactive -use by using the --o - -option to the -set - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). -  -

Readline Variables

- -

- -Readline has variables that can be used to further customize its -behavior. A variable may be set in the -inputrc - -file with a statement of the form -

-

- -set variable-name value -

- -

- -Except where noted, readline variables can take the values -On - -or -Off - -(without regard to case). -Unrecognized variable names are ignored. -When a variable value is read, empty or null values, "on" (case-insensitive), -and "1" are equivalent to On. All other values are equivalent to -Off. -The variables and their default values are: -

- - -

-
bell-style (audible) - -
-Controls what happens when readline wants to ring the terminal bell. -If set to none, readline never rings the bell. If set to -visible, readline uses a visible bell if one is available. -If set to audible, readline attempts to ring the terminal's bell. -
bind-tty-special-chars (On) - -
-If set to On, readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their readline -equivalents. -
colored-stats (Off) - -
-If set to On, readline displays possible completions using different -colors to indicate their file type. -The color definitions are taken from the value of the LS_COLORS -environment variable. -
comment-begin (``#'') - -
-The string that is inserted when the readline -insert-comment - -command is executed. -This command is bound to -M-# - -in emacs mode and to -# - -in vi command mode. -
completion-ignore-case (Off) - -
-If set to On, readline performs filename matching and completion -in a case-insensitive fashion. -
completion-prefix-display-length (0) - -
-The length in characters of the common prefix of a list of possible -completions that is displayed without modification. When set to a -value greater than zero, common prefixes longer than this value are -replaced with an ellipsis when displaying possible completions. -
completion-query-items (100) - -
-This determines when the user is queried about viewing -the number of possible completions -generated by the possible-completions 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 simply listed -on the terminal. -
convert-meta (On) - -
-If set to On, readline will convert characters with the -eighth bit set to an ASCII key sequence -by stripping the eighth bit and prefixing an -escape character (in effect, using escape as the meta prefix). -
disable-completion (Off) - -
-If set to On, readline will inhibit word completion. Completion -characters will be inserted into the line as if they had been -mapped to self-insert. -
editing-mode (emacs) - -
-Controls whether readline begins with a set of key bindings similar -to Emacs or vi. -editing-mode - -can be set to either -emacs - -or -vi. - -
echo-control-characters (On) - -
-When set to On, on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. -
enable-keypad (Off) - -
-When set to On, readline will try to enable the application -keypad when it is called. Some systems need this to enable the -arrow keys. -
enable-meta-key (On) - -
-When set to On, readline will try to enable any meta modifier -key the terminal claims to support when it is called. On many terminals, -the meta key is used to send eight-bit characters. -
expand-tilde (Off) - -
-If set to On, tilde expansion is performed when readline -attempts word completion. -
history-preserve-point (Off) - -
-If set to On, the history code attempts to place point at the -same location on each history line retrieved with previous-history -or next-history. -
history-size (0) - -
-Set the maximum number of history entries saved in the history list. -If set to zero, any existing history entries are deleted and no new entries -are saved. -If set to a value less than zero, the number of history entries is not -limited. -By default, the number of history entries is not limited. -
horizontal-scroll-mode (Off) - -
-When set to On, makes readline use a single line for display, -scrolling the input horizontally on a single screen line when it -becomes longer than the screen width rather than wrapping to a new line. -
input-meta (Off) - -
-If set to On, readline will enable eight-bit input (that is, -it will not strip the high bit from the characters it reads), -regardless of what the terminal claims it can support. The name -meta-flag - -is a synonym for this variable. -
isearch-terminators (``C-[C-J'') - -
-The string of characters that should terminate an incremental -search without subsequently executing the character as a command. -If this variable has not been given a value, the characters -ESC and C-J will terminate an incremental search. -
keymap (emacs) - -
-Set the current readline keymap. The set of valid keymap names is -emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, -vi-command, and -vi-insert. - -vi is equivalent to vi-command; emacs is -equivalent to emacs-standard. The default value is -emacs; - -the value of -editing-mode - -also affects the default keymap. -
keyseq-timeout (500) - -
-Specifies the duration readline will wait for a character when reading an -ambiguous key sequence (one that can form a complete key sequence using -the input read so far, or can take additional input to complete a longer -key sequence). -If no input is received within the timeout, readline will use the shorter -but complete key sequence. -The value is specified in milliseconds, so a value of 1000 means that -readline will wait one second for additional input. -If this variable is set to a value less than or equal to zero, or to a -non-numeric value, readline will wait until another key is pressed to -decide which key sequence to complete. -
mark-directories (On) - -
-If set to On, completed directory names have a slash -appended. -
mark-modified-lines (Off) - -
-If set to On, history lines that have been modified are displayed -with a preceding asterisk (*). -
mark-symlinked-directories (Off) - -
-If set to On, completed names which are symbolic links to directories -have a slash appended (subject to the value of -mark-directories). -
match-hidden-files (On) - -
-This variable, when set to On, causes readline to match files whose -names begin with a `.' (hidden files) when performing filename -completion. -If set to Off, the leading `.' must be -supplied by the user in the filename to be completed. -
menu-complete-display-prefix (Off) - -
-If set to On, menu completion displays the common prefix of the -list of possible completions (which may be empty) before cycling through -the list. -
output-meta (Off) - -
-If set to On, readline will display characters with the -eighth bit set directly rather than as a meta-prefixed escape -sequence. -
page-completions (On) - -
-If set to On, readline uses an internal more-like pager -to display a screenful of possible completions at a time. -
print-completions-horizontally (Off) - -
-If set to On, readline will display completions with matches -sorted horizontally in alphabetical order, rather than down the screen. -
revert-all-at-newline (Off) - -
-If set to On, readline will undo all changes to history lines -before returning when accept-line is executed. By default, -history lines may be modified and retain individual undo lists across -calls to readline. -
show-all-if-ambiguous (Off) - -
-This alters the default behavior of the completion functions. If -set to -On, - -words which have more than one possible completion cause the -matches to be listed immediately instead of ringing the bell. -
show-all-if-unmodified (Off) - -
-This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to -On, - -words which have more than one possible completion without any -possible partial completion (the possible completions don't share -a common prefix) cause the matches to be listed immediately instead -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 (+). -
skip-completed-text (Off) - -
-If set to On, this alters the default completion behavior when -inserting a single match into the line. It's only active when -performing completion in the middle of a word. If enabled, readline -does not insert characters from the completion that match characters -after point in the word being completed, so portions of the word -following the cursor are not duplicated. -
visible-stats (Off) - -
-If set to On, a character denoting a file's type as reported -by stat(2) is appended to the filename when listing possible -completions. - -
-  -

Readline Conditional Constructs

- -

- -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key -bindings and variable settings to be performed as the result -of tests. There are four parser directives used. -

-
$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. -
-
-
mode
-The mode= form of the $if directive is used to test -whether readline is in emacs or vi mode. -This may be used in conjunction -with the set keymap command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -readline is starting out in emacs mode. -
term
-The term= form may be used to include terminal-specific -key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -= - -is tested against the both full name of the terminal and the portion -of the terminal name before the first -. This allows -sun - -to match both -sun - -and -sun-cmd, - -for instance. -
application
-The application construct is used to include -application-specific settings. Each program using the readline -library sets the application name, and an initialization -file can test for a particular value. -This could be used to bind key sequences to functions useful for -a specific program. For instance, the following command adds a -key sequence that quotes the current or previous word in bash: -

-

-
-$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-
- -
- -
- -
$endif
-This command, as seen in the previous example, terminates an -$if command. -
$else
-Commands in this branch of the $if directive are executed if -the test fails. -
$include
-This directive takes a single filename as an argument and reads commands -and bindings from that file. For example, the following directive -would read /etc/inputrc: -

-

-
-$include  /etc/inputrc
-
- -
- -
-  -

Searching

- -

- -Readline provides commands for searching through the command history -(see -HISTORY - - -below) for lines containing a specified string. -There are two search modes: -incremental - -and -non-incremental. - -

- -Incremental searches begin before the user has finished typing the -search string. -As each character of the search string is typed, readline displays -the next entry from the history matching the string typed so far. -An incremental search requires only as many characters as needed to -find the desired history entry. -The characters present in the value of the isearch-terminators -variable are used to terminate an incremental search. -If that variable has not been assigned a value the Escape and -Control-J characters will terminate an incremental search. -Control-G will abort an incremental search and restore the original -line. -When the search is terminated, the history entry containing the -search string becomes the current line. -

- -To find other matching entries in the history list, type Control-S or -Control-R as appropriate. -This will search backward or forward in the history for the next -entry matching the search string typed so far. -Any other key sequence bound to a readline command will terminate -the search and execute that command. -For instance, a newline will terminate the search and accept -the line, thereby executing the command from the history list. -

- -Readline remembers the last incremental search string. If two -Control-Rs are typed without any intervening characters defining a -new search string, any remembered search string is used. -

- -Non-incremental searches read the entire search string before starting -to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. -  -

Readline Command Names

- -

- -The following is a list of the names of the commands and the default -key sequences to which they are bound. -Command names without an accompanying key sequence are unbound by default. -In the following descriptions, point refers to the current cursor -position, and mark refers to a cursor position saved by the -set-mark command. -The text between the point and mark is referred to as the region. -  -

Commands for Moving

- -

- - -

-
beginning-of-line (C-a) - -
-Move to the start of the current line. -
end-of-line (C-e) - -
-Move to the end of the line. -
forward-char (C-f) - -
-Move forward a character. -
backward-char (C-b) - -
-Move back a character. -
forward-word (M-f) - -
-Move forward to the end of the next word. Words are composed of -alphanumeric characters (letters and digits). -
backward-word (M-b) - -
-Move back to the start of the current or previous word. -Words are composed of alphanumeric characters (letters and digits). -
shell-forward-word - -
-Move forward to the end of the next word. -Words are delimited by non-quoted shell metacharacters. -
shell-backward-word - -
-Move back to the start of the current or previous word. -Words are delimited by non-quoted shell metacharacters. -
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 -screen. -
redraw-current-line - -
-Refresh the current line. - -
-  -

Commands for Manipulating the History

- -

- - -

-
accept-line (Newline, Return) - -
-Accept the line regardless of where the cursor is. If this line is -non-empty, add it to the history list according to the state of the -HISTCONTROL - - -variable. If the line is a modified history -line, then restore the history line to its original state. -
previous-history (C-p) - -
-Fetch the previous command from the history list, moving back in -the list. -
next-history (C-n) - -
-Fetch the next command from the history list, moving forward in the -list. -
beginning-of-history (M-<) - -
-Move to the first line in the history. -
end-of-history (M->) - -
-Move to the end of the input history, i.e., the line currently being -entered. -
reverse-search-history (C-r) - -
-Search backward starting at the current line and moving `up' through -the history as necessary. This is an incremental search. -
forward-search-history (C-s) - -
-Search forward starting at the current line and moving `down' through -the history as necessary. This is an incremental search. -
non-incremental-reverse-search-history (M-p) - -
-Search backward through the history starting at the current line -using a non-incremental search for a string supplied by the user. -
non-incremental-forward-search-history (M-n) - -
-Search forward through the history using a non-incremental search for -a string supplied by the user. -
history-search-forward - -
-Search forward through the history for the string of characters -between the start of the current line and the point. -This is a non-incremental search. -
history-search-backward - -
-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. -
yank-nth-arg (M-C-y) - -
-Insert the first argument to the previous command (usually -the second word on the previous line) at point. -With an argument -n, - -insert the nth word from the previous command (the words -in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the "!n" history expansion had been specified. -
yank-last-arg (M-., M-_) - -
-Insert the last argument to the previous command (the last word of -the previous history entry). -With a numeric argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg move back through the history -list, inserting the last word (or the word specified by the argument to -the first call) of each line in turn. -Any numeric argument supplied to these successive calls determines -the direction to move through the history. A negative argument switches -the direction through the history (back or forward). -The history expansion facilities are used to extract the last argument, -as if the "!$" history expansion had been specified. -
shell-expand-line (M-C-e) - -
-Expand the line as the shell does. This -performs alias and history expansion as well as all of the shell -word expansions. See -HISTORY EXPANSION - - -below for a description of history expansion. -
history-expand-line (M-^) - -
-Perform history expansion on the current line. -See -HISTORY EXPANSION - - -below for a description of history expansion. -
magic-space - -
-Perform history expansion on the current line and insert a space. -See -HISTORY EXPANSION - - -below for a description of history expansion. -
alias-expand-line - -
-Perform alias expansion on the current line. -See -ALIASES - - -above for a description of alias expansion. -
history-and-alias-expand-line - -
-Perform history and alias expansion on the current line. -
insert-last-argument (M-., M-_) - -
-A synonym for yank-last-arg. -
operate-and-get-next (C-o) - -
-Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. -
edit-and-execute-command (C-xC-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. - -
-  -

Commands for Changing Text

- -

- - -

-
delete-char (C-d) - -
-Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to delete-char, -then return -EOF. - - -
backward-delete-char (Rubout) - -
-Delete the character behind the cursor. When given a numeric argument, -save the deleted text on the kill ring. -
forward-backward-delete-char - -
-Delete the character under the cursor, unless the cursor is at the -end of the line, in which case the character behind the cursor is -deleted. -
quoted-insert (C-q, C-v) - -
-Add the next character typed to the line verbatim. This is -how to insert characters like C-q, for example. -
tab-insert (C-v TAB) - -
-Insert a tab character. -
self-insert (a, b, A, 1, !, ...) - -
-Insert the character typed. -
transpose-chars (C-t) - -
-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. -
transpose-words (M-t) - -
-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. -
upcase-word (M-u) - -
-Uppercase the current (or following) word. With a negative argument, -uppercase the previous word, but do not move point. -
downcase-word (M-l) - -
-Lowercase the current (or following) word. With a negative argument, -lowercase the previous word, but do not move point. -
capitalize-word (M-c) - -
-Capitalize the current (or following) word. With a negative argument, -capitalize the previous word, but do not move point. -
overwrite-mode - -
-Toggle overwrite mode. With an explicit positive numeric argument, -switches to overwrite mode. With an explicit non-positive numeric -argument, switches to insert mode. This command affects only -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. -In overwrite mode, characters bound to self-insert replace -the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character -before point with a space. By default, this command is unbound. - -
-  -

Killing and Yanking

- -

- - -

-
kill-line (C-k) - -
-Kill the text from point to the end of the line. -
backward-kill-line (C-x Rubout) - -
-Kill backward to the beginning of the line. -
unix-line-discard (C-u) - -
-Kill backward from point to the beginning of the line. -The killed text is saved on the kill-ring. - -
kill-whole-line - -
-Kill all characters on the current line, no matter where point is. -
kill-word (M-d) - -
-Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as those used by forward-word. -
backward-kill-word (M-Rubout) - -
-Kill the word behind point. -Word boundaries are the same as those used by backward-word. -
shell-kill-word (M-d) - -
-Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as those used by shell-forward-word. -
shell-backward-kill-word (M-Rubout) - -
-Kill the word behind point. -Word boundaries are the same as those used by shell-backward-word. -
unix-word-rubout (C-w) - -
-Kill the word behind point, using white space as a word boundary. -The killed text is saved on the kill-ring. -
unix-filename-rubout - -
-Kill the word behind point, using white space and the slash character -as the word boundaries. -The killed text is saved on the kill-ring. -
delete-horizontal-space (M-\) - -
-Delete all spaces and tabs around point. -
kill-region - -
-Kill the text in the current region. -
copy-region-as-kill - -
-Copy the text in the region to the kill buffer. -
copy-backward-word - -
-Copy the word before point to the kill buffer. -The word boundaries are the same as backward-word. -
copy-forward-word - -
-Copy the word following point to the kill buffer. -The word boundaries are the same as forward-word. -
yank (C-y) - -
-Yank the top of the kill ring into the buffer at point. -
yank-pop (M-y) - -
-Rotate the kill ring, and yank the new top. Only works following -yank - -or -yank-pop. - - -
-  -

Numeric Arguments

- -

- - -

-
digit-argument (M-0, M-1, ..., M--) - -
-Add this digit to the argument already accumulating, or start a new -argument. M-- starts a negative argument. -
universal-argument - -
-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 followed by digits, executing -universal-argument - -again ends the numeric argument, but is otherwise ignored. -As a special case, if this command is immediately followed by a -character that is neither a digit or minus sign, the argument count -for the next command is multiplied by four. -The argument count is initially one, so executing this function the -first time makes the argument count four, a second time makes the -argument count sixteen, and so on. - -
-  -

Completing

- -

- - -

-
complete (TAB) - -
-Attempt to perform completion on the text before point. -Bash - -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 functions) in turn. If none -of these produces a match, filename completion is attempted. -
possible-completions (M-?) - -
-List the possible completions of the text before point. -
insert-completions (M-*) - -
-Insert all completions of the text before point -that would have been generated by -possible-completions. -
menu-complete - -
-Similar to complete, but replaces the word to be completed -with a single match from the list of possible completions. -Repeated execution of menu-complete steps through the list -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 bell-style) -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 TAB, but is unbound -by default. -
menu-complete-backward - -
-Identical to menu-complete, but moves backward through the list -of possible completions, as if menu-complete had been given a -negative argument. This command is unbound by default. -
delete-char-or-list - -
-Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). -If at the end of the line, behaves identically to -possible-completions. -This command is unbound by default. -
complete-filename (M-/) - -
-Attempt filename completion on the text before point. -
possible-filename-completions (C-x /) - -
-List the possible completions of the text before point, -treating it as a filename. -
complete-username (M-~) - -
-Attempt completion on the text before point, treating -it as a username. -
possible-username-completions (C-x ~) - -
-List the possible completions of the text before point, -treating it as a username. -
complete-variable (M-$) - -
-Attempt completion on the text before point, treating -it as a shell variable. -
possible-variable-completions (C-x $) - -
-List the possible completions of the text before point, -treating it as a shell variable. -
complete-hostname (M-@) - -
-Attempt completion on the text before point, treating -it as a hostname. -
possible-hostname-completions (C-x @) - -
-List the possible completions of the text before point, -treating it as a hostname. -
complete-command (M-!) - -
-Attempt completion on the text before point, treating -it as a command name. Command completion attempts to -match the text against aliases, reserved words, shell -functions, shell builtins, and finally executable filenames, -in that order. -
possible-command-completions (C-x !) - -
-List the possible completions of the text before point, -treating it as a command name. -
dynamic-complete-history (M-TAB) - -
-Attempt completion on the text before point, comparing -the text against lines from the history list for possible -completion matches. -
dabbrev-expand - -
-Attempt menu completion on the text before point, comparing -the text against lines from the history list for possible -completion matches. -
complete-into-braces (M-{) - -
-Perform filename completion and insert the list of possible completions -enclosed within braces so the list is available to the shell (see -Brace Expansion - -above). - -
-  -

Keyboard Macros

- -

- - -

-
start-kbd-macro (C-x () - -
-Begin saving the characters typed into the current keyboard macro. -
end-kbd-macro (C-x )) - -
-Stop saving the characters typed into the current keyboard macro -and store the definition. -
call-last-kbd-macro (C-x e) - -
-Re-execute the last keyboard macro defined, by making the characters -in the macro appear as if typed at the keyboard. -print-last-kbd-macro () - -Print the last keyboard macro defined in a format suitable for the -inputrc file. - -
-  -

Miscellaneous

- -

- - -

-
re-read-init-file (C-x C-r) - -
-Read in the contents of the inputrc file, and incorporate -any bindings or variable assignments found there. -
abort (C-g) - -
-Abort 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. -
prefix-meta (ESC) - -
-Metafy the next character typed. -ESC - - -f - -is equivalent to -Meta-f. - -
undo (C-_, C-x C-u) - -
-Incremental undo, separately remembered for each line. -
revert-line (M-r) - -
-Undo all changes made to this line. This is like executing the -undo - -command enough times to return the line to its initial state. -
tilde-expand (M-&) - -
-Perform tilde expansion on the current word. -
set-mark (C-@, M-<space>) - -
-Set the mark to the point. If a -numeric argument is supplied, the mark is set to that position. -
exchange-point-and-mark (C-x C-x) - -
-Swap the point with the mark. The current cursor position is set to -the saved position, and the old cursor position is saved as the mark. -
character-search (C-]) - -
-A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. -
character-search-backward (M-C-]) - -
-A character is read and point is moved to the previous occurrence of that -character. A negative count searches for subsequent occurrences. -
skip-csi-sequence - -
-Read enough characters to consume a multi-key sequence such as those -defined for keys like Home and End. Such sequences begin with a -Control Sequence Indicator (CSI), usually ESC-[. If this sequence is -bound to "\[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting -stray characters into the editing buffer. This is unbound by default, -but usually bound to ESC-[. -
insert-comment (M-#) - -
-Without a numeric argument, the value of the readline -comment-begin - -variable is inserted at the beginning of the current line. -If a numeric argument is supplied, this command acts as a toggle: if -the characters at the beginning of the line do not match the value -of comment-begin, the value is inserted, otherwise -the characters in comment-begin are deleted from the beginning of -the line. -In either case, the line is accepted as if a newline had been typed. -The default value of -comment-begin causes this command to make the current line -a shell comment. -If a numeric argument causes the comment character to be removed, the line -will be executed by the shell. -
glob-complete-word (M-g) - -
-The word before point is treated as a pattern for pathname expansion, -with an asterisk implicitly appended. This pattern is used to -generate a list of matching filenames for possible completions. -
glob-expand-word (C-x *) - -
-The word before point is treated as a pattern for pathname expansion, -and the list of matching filenames is inserted, replacing the word. -If a numeric argument is supplied, an asterisk is appended before -pathname expansion. -
glob-list-expansions (C-x g) - -
-The list of expansions that would have been generated by -glob-expand-word - -is displayed, and the line is redrawn. -If a numeric argument is supplied, an asterisk is appended before -pathname expansion. -
dump-functions - -
-Print all of the functions and their key bindings to the -readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. -
dump-variables - -
-Print all of the settable readline variables and their values to the -readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. -
dump-macros - -
-Print all of the readline key sequences bound to macros and the -strings they output. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. -
display-shell-version (C-x C-v) - -
-Display version information about the current instance of -bash. - - -
-  -

Programmable Completion

- -

- -When word completion is attempted for an argument to a command for -which a completion specification (a compspec) has been defined -using the complete builtin (see -SHELL BUILTIN COMMANDS - - -below), the programmable completion facilities are invoked. -

- -First, the command name is identified. -If the command word is the empty string (completion attempted at the -beginning of an empty line), any compspec defined with -the -E option to complete is used. -If a compspec has been defined for that command, the -compspec is used to generate the list of possible completions for the word. -If the command word is a full pathname, a compspec for the full -pathname is searched for first. -If no compspec is found for the full pathname, an attempt is made to -find a compspec for the portion following the final slash. -If those searches do not result in a compspec, any compspec defined with -the -D option to complete is used as the default. -

- -Once a compspec has been found, it is used to generate the list of -matching words. -If a compspec is not found, the default bash completion as -described above under Completing is performed. -

- -First, the actions specified by the compspec are used. -Only matches which are prefixed by the word being completed are -returned. -When the --f - -or --d - -option is used for filename or directory name completion, the shell -variable -FIGNORE - - -is used to filter the matches. -

- -Any completions specified by a pathname expansion pattern to the --G option are generated next. -The words generated by the pattern need not match the word -being completed. -The -GLOBIGNORE - - -shell variable is not used to filter the matches, but the -FIGNORE - - -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 under -EXPANSION. - - -The results are split using the rules described above under -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 command or function is invoked, the -COMP_LINE, - - -COMP_POINT, - - -COMP_KEY, - - -and -COMP_TYPE - - -variables are assigned values as described above under -Shell Variables. -If a shell function is being invoked, the -COMP_WORDS - - -and -COMP_CWORD - - -variables are also set. -When the function or command is invoked, -the first argument ($1) is the name of the command whose arguments are -being completed, -the second argument ($2) is the word being completed, -and the third argument ($3) is the word preceding the word being -completed on the current command line. -No filtering of the generated completions against the word being completed -is performed; the function or command has complete freedom in generating -the matches. -

- -Any function specified with -F is invoked first. -The function may use any of the shell facilities, including the -compgen builtin described below, to generate the matches. -It must put the possible completions in the -COMPREPLY - - -array variable, one per array element. -

- -Next, any command specified with the -C option is invoked -in an environment equivalent to command substitution. -It should print a list of completions, one per line, to the -standard output. -Backslash may be used to escape a newline, if necessary. -

- -After all of the possible completions are generated, any filter -specified with the -X option is applied to the list. -The filter is a pattern as used for pathname expansion; a & -in the pattern is replaced with the text of the word being completed. -A literal & may be escaped with a backslash; the backslash -is removed before attempting a match. -Any completion that matches the pattern will be removed from the list. -A leading ! negates the pattern; in this case any completion -not matching the pattern will be removed. -

- -Finally, any prefix and suffix specified with the -P and -S -options are added to each member of the completion list, and the result is -returned to the readline completion code as the list of possible -completions. -

- -If the previously-applied actions do not generate any matches, and the --o dirnames option was supplied to complete when the -compspec was defined, directory name completion is attempted. -

- -If the -o plusdirs option was supplied to complete when the -compspec was defined, directory name completion is attempted and any -matches are added to the results of the other actions. -

- -By default, if a compspec is found, whatever it generates is returned -to the completion code as the full set of possible completions. -The default bash completions are not attempted, and the readline -default of filename completion is disabled. -If the -o bashdefault option was supplied to complete when -the compspec was defined, the bash default completions are attempted -if the compspec generates no matches. -If the -o default option was supplied to complete when the -compspec was defined, readline's default completion will be performed -if the compspec (and, if attempted, the default bash completions) -generate no matches. -

- -When a compspec indicates that directory name completion is desired, -the programmable completion functions force readline to append a slash -to completed names which are symbolic links to directories, subject to -the value of the mark-directories readline variable, regardless -of the setting of the mark-symlinked-directories readline variable. -

- -There is some support for dynamically modifying completions. This is -most useful when used in combination with a default completion specified -with complete -D. -It's possible for shell functions executed as completion -handlers to indicate that completion should be retried by returning an -exit status of 124. If a shell function returns 124, and changes -the compspec associated with the command on which completion is being -attempted (supplied as the first argument when the function is executed), -programmable completion restarts from the beginning, with an -attempt to find a new compspec for that command. This allows a set of -completions to be built dynamically as completion is attempted, rather than -being loaded all at once. -

- -For instance, assuming that there is a library of compspecs, each kept in a -file corresponding to the name of the command, the following default -completion function would load completions dynamically: -

- -_completion_loader() -
- -{ -
- -       . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
-
- -} -
- -complete -D -F _completion_loader -
- -
-  -

HISTORY

- -When the --o history - -option to the -set - -builtin is enabled, the shell provides access to the -command history, -the list of commands previously typed. -The value of the -HISTSIZE - - -variable is used as the -number of commands to save in a history list. -The text of the last -HISTSIZE - - -commands (default 500) is saved. The shell -stores each command in the history list prior to parameter and -variable expansion (see -EXPANSION - - -above) but after history expansion is performed, subject to the -values of the shell variables -HISTIGNORE - - -and -HISTCONTROL. - - -

- -On startup, the history is initialized from the file named by -the variable -HISTFILE - - -(default ~/.bash_history). -The file named by the value of -HISTFILE - - -is truncated, if necessary, to contain no more than -the number of lines specified by the value of -HISTFILESIZE. - - -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. -These timestamps are optionally displayed depending on the value of the -HISTTIMEFORMAT - - -variable. -When a shell with history enabled exits, the last -$HISTSIZE - - -lines are copied from the history list to -$HISTFILE. - - -If the -histappend - -shell option is enabled -(see the description of -shopt - -under -SHELL BUILTIN COMMANDS - - -below), the lines are appended to the history file, -otherwise the history file is overwritten. -If -HISTFILE - - -is unset, or if the history file is unwritable, the history is -not saved. -If the -HISTTIMEFORMAT - - -variable is set, time stamps are written to the history file, marked -with the history comment character, so -they may be preserved across shell sessions. -This uses the history comment character to distinguish timestamps from -other history lines. -After saving the history, the history file is truncated -to contain no more than -HISTFILESIZE - - -lines. 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. -

- -The builtin command -fc - -(see -SHELL BUILTIN COMMANDS - - -below) may be used to list or edit and re-execute a portion of -the history list. -The -history - -builtin may be used to display or modify the history list and -manipulate the history file. -When using command-line editing, search commands -are available in each editing mode that provide access to the -history list. -

- -The shell allows control over which commands are saved on the history -list. The -HISTCONTROL - - -and -HISTIGNORE - - -variables may be set to cause the shell to save only a subset of the -commands entered. -The -cmdhist - -shell option, if enabled, causes the shell to attempt to save each -line of a multi-line command in the same history entry, adding -semicolons where necessary to preserve syntactic correctness. -The -lithist - -shell option causes the shell to save the command with embedded newlines -instead of semicolons. See the description of the -shopt - -builtin below under -SHELL BUILTIN COMMANDS - - -for information on setting and unsetting shell options. -  -

HISTORY EXPANSION

- -

- -The shell supports a history expansion feature that -is similar to the history expansion in -csh. - -This section describes what syntax features are available. This -feature is enabled by default for interactive shells, and can be -disabled using the -+H - -option to the -set - -builtin command (see -SHELL BUILTIN COMMANDS - - -below). Non-interactive shells do not perform history expansion -by default. -

- -History expansions introduce words from the history list into -the input stream, making it easy to repeat commands, insert the -arguments to a previous command into the current input line, or -fix errors in previous commands quickly. -

- -History expansion is performed immediately after a complete line -is read, before the shell breaks it into words. -It takes place in two parts. -The first is to determine which line from the history list -to 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 event, -and the portions of that line that are acted upon are words. -Various modifiers are available to manipulate the selected words. -The line is broken into words in the same fashion as when reading input, -so that several metacharacter-separated words surrounded by -quotes are considered one word. -History expansions are introduced by the appearance of the -history expansion character, which is ! by default. -Only backslash (\) and single quotes can quote -the history expansion character. -

- -Several characters inhibit history expansion if found immediately -following the history expansion character, even if it is unquoted: -space, tab, newline, carriage return, and =. -If the extglob shell option is enabled, ( will also -inhibit expansion. -

- -Several shell options settable with the -shopt - -builtin may be used to tailor the behavior of history expansion. -If the -histverify - -shell option is enabled (see the description of the -shopt - -builtin below), 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 substitution 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 -subsequent recall. -

- -The shell allows control of the various characters used by the -history expansion mechanism (see the description of -histchars - -above under -Shell Variables). - -The shell uses -the history comment character to mark history timestamps when -writing the history file. -  -

Event Designators

- -

- -An event designator is a reference to a command line entry in the -history list. -Unless the reference is absolute, events are relative to the current -position in the history list. -

- - -

-
! - -
-Start a history substitution, except when followed by a -blank, - -newline, carriage return, = -or ( (when the extglob shell option is enabled using -the shopt 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'. -
!string - -
-Refer to the most recent command preceding the current position in the -history list starting with -string. - -
!?string[?] - -
-Refer to the most recent command preceding the current position in the -history list containing -string. - -The trailing ? may be omitted if -string - -is followed immediately by a newline. -
^string1^string2^ - -
-Quick substitution. Repeat the previous command, replacing -string1 - -with -string2. - -Equivalent to -``!!:s/string1/string2/'' -(see Modifiers below). -
!# - -
-The entire command line typed so far. - -
-  -

Word Designators

- -

- -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 separated by single spaces. -

- - -

-
0 (zero) - -
-The zeroth word. For the shell, this is the command -word. -
n - -
-The nth word. -
^ - -
-The first argument. That is, word 1. -
$ - -
-The last argument. -
% - -
-The word matched by the most recent `?string?' 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 event; the empty string is returned in that case. -
x* - -
-Abbreviates x-$. -
x- - -
-Abbreviates x-$ like x*, but omits the last word. - -
-

- -If a word designator is supplied without an event specification, the -previous command is used as the event. -  -

Modifiers

- -

- -After the optional word designator, there may appear a sequence of -one or more of the following modifiers, each preceded by a `:'. -

- - -

- -

-
h - -
-Remove a trailing filename component, leaving only the head. -
t - -
-Remove all leading filename components, leaving the tail. -
r - -
-Remove a trailing suffix of the form .xxx, leaving the -basename. -
e - -
-Remove all but the trailing suffix. -
p - -
-Print the new command but do not execute it. -
q - -
-Quote the substituted words, escaping further substitutions. -
x - -
-Quote the substituted words as with -q, - -but break into words at -blanks - -and newlines. -
s/old/new/ - -
-Substitute -new - -for the first occurrence of -old - -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 -old - -and -new - -with a single backslash. If & appears in -new, - -it is replaced by -old. - -A single backslash will quote the &. If -old - -is null, it is set to the last -old - -substituted, or, if no previous history substitutions took place, -the last -string - -in a -!?string[?] - -search. -
& - -
-Repeat the previous substitution. -
g - -
-Cause changes to be applied over the entire event line. This is -used in conjunction with `:s' (e.g., `:gs/old/new/') -or `:&'. If used with -`:s', 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 a may be used as a synonym for g. -
G - -
-Apply the following `s' modifier once to each word in the event line. - -
-  -

SHELL BUILTIN COMMANDS

- - - -

- -Unless otherwise noted, each builtin command documented in this -section 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, 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. -

- -

-
: [arguments]
- -No effect; the command does nothing beyond expanding -arguments - -and performing any specified -redirections. A zero exit code is returned. -
. filename [arguments]
- -
source filename [arguments]
- -Read and execute commands from -filename - -in the current -shell environment and return the exit status of the last command -executed from -filename. - -If -filename - -does not contain a slash, filenames in -PATH - - -are used to find the directory containing -filename. - -The file searched for in -PATH - - -need not be executable. -When bash is not in posix mode, the current directory is -searched if no file is found in -PATH. - - -If the -sourcepath - -option to the -shopt - -builtin command is turned off, the -PATH - - -is not searched. -If any arguments are supplied, they become the positional -parameters when filename is executed. Otherwise the positional -parameters are unchanged. -The return status is the status of the last command exited within -the script (0 if no commands are executed), and false if -filename - -is not found or cannot be read. -
alias [-p] [name[=value] ...]
-Alias with no arguments or with the --p - -option prints the list of aliases in the form -alias name=value on standard output. -When arguments are supplied, an alias is defined for -each name whose value is given. -A trailing space in value causes the next word to be -checked for alias substitution when the alias is expanded. -For each name in the argument list for which no value -is supplied, the name and value of the alias is printed. -Alias returns true unless a name is given for which -no alias has been defined. -
bg [jobspec ...]
-Resume each suspended job jobspec in the background, as if it -had been started with -&. - -If -jobspec - -is not present, the shell's notion of the current job is used. -bg - -jobspec - -returns 0 unless run when job control is disabled or, when run with -job control enabled, any specified jobspec was not found -or was started without job control. -
bind [-m keymap] [-lpsvPSVX]
- -
bind [-m keymap] [-q function] [-u function] [-r keyseq]
-
bind [-m keymap] -f filename
-
bind [-m keymap] -x keyseq:shell-command
-
bind [-m keymap] keyseq:function-name
-
bind readline-command
- -Display current -readline - -key and function bindings, bind a key sequence to a -readline - -function or macro, or set a -readline - -variable. -Each non-option argument is a command as it would appear in -.inputrc, - -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: -
- -
-
-m keymap - -
-Use -keymap - -as the keymap to be affected by the subsequent bindings. -Acceptable -keymap - -names are -emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, -vi-move, vi-command, and -vi-insert. - -vi is equivalent to vi-command; emacs is -equivalent to emacs-standard. -
-l - -
-List the names of all readline functions. -
-p - -
-Display readline function names and bindings in such a way -that they can be re-read. -
-P - -
-List current readline function names and bindings. -
-s - -
-Display readline key sequences bound to macros and the strings -they output in such a way that they can be re-read. -
-S - -
-Display readline key sequences bound to macros and the strings -they output. -
-v - -
-Display readline variable names and values in such a way that they -can be re-read. -
-V - -
-List current readline variable names and values. -
-f filename - -
-Read key bindings from filename. -
-q function - -
-Query about which keys invoke the named function. -
-u function - -
-Unbind all keys bound to the named function. -
-r keyseq - -
-Remove any current binding for keyseq. -
-x keyseq:shell-command - -
-Cause shell-command to be executed whenever keyseq is -entered. -When shell-command is executed, the shell sets the -READLINE_LINE - - -variable to the contents of the readline line buffer and the -READLINE_POINT - - -variable to the current location of the insertion point. -If the executed command changes the value of -READLINE_LINE - - -or -READLINE_POINT, - - -those new values will be reflected in the editing state. -
-X - -
-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 an -error occurred. -

- -
break [n]
-Exit from within a -for, - -while, - -until, - -or -select - -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. -
builtin shell-builtin [arguments]
-Execute the specified shell builtin, passing it -arguments, - -and return its exit status. -This is useful when defining a -function whose name is the same as a shell builtin, -retaining the functionality of the builtin within the function. -The cd builtin is commonly redefined this way. -The return status is false if -shell-builtin - -is not a shell builtin command. -
caller [expr]
-Returns the context of any active subroutine call (a shell function or -a script executed with the . or source builtins). -Without expr, caller displays the line number and source -filename of the current subroutine call. -If a non-negative integer is supplied as expr, caller -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 subroutine -call or expr does not correspond to a valid position in the -call stack. -
cd [-L|[-P [-e]]] [dir]
-Change the current directory to dir. -if dir is not supplied, the value of the -HOME - - -shell variable is the default. -Any additional arguments following dir are ignored. -The variable -CDPATH - - -defines the search path for the directory containing -dir: - -each directory name in -CDPATH - - -is searched for dir. -Alternative directory names in -CDPATH - - -are separated by a colon (:). A null directory name in -CDPATH - - -is the same as the current directory, i.e., ``.''. If -dir - -begins with a slash (/), -then -CDPATH - - -is not used. The --P - -option causes cd to use the physical directory structure -by resolving symbolic links while traversing dir and -before processing instances of .. in dir (see also the --P - -option to the -set - -builtin command); the --L - -option forces symbolic links to be followed by resolving the link -after processing instances of .. in dir. -If .. appears in dir, it is processed by removing the -immediately previous pathname component from dir, back to a slash -or the beginning of dir. -If the --e - -option is supplied with --P, - -and the current working directory cannot be successfully determined -after a successful directory change, cd will return an unsuccessful -status. -An argument of -- - -is converted to -$OLDPWD - - -before the directory change is attempted. -If a non-empty directory name from -CDPATH - - -is used, or if -- is the first argument, and the directory change is -successful, the absolute pathname of the new working directory is -written to the standard output. -The return value is true if the directory was successfully changed; -false otherwise. -
command [-pVv] command [arg ...]
-Run -command - -with -args - -suppressing the normal shell function lookup. Only builtin -commands or commands found in the -PATH - - -are executed. If the --p - -option is given, the search for -command - -is performed using a default value for -PATH - - -that is guaranteed to find all of the standard utilities. -If either the --V - -or --v - -option is supplied, a description of -command - -is printed. The --v - -option causes a single word indicating the command or filename -used to invoke -command - -to be displayed; the --V - -option produces a more verbose description. -If the --V - -or --v - -option is supplied, the exit status is 0 if -command - -was found, and 1 if not. If neither option is supplied and -an error occurred or -command - -cannot be found, the exit status is 127. Otherwise, the exit status of the -command - -builtin is the exit status of -command. - -
compgen [option] [word]
-Generate possible completion matches for word according to -the options, which may be any option accepted by the -complete - -builtin with the exception of -p and -r, and write -the matches to the standard output. -When using the -F or -C 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 programmable -completion code had generated them directly from a completion specification -with the same flags. -If word is specified, only those completions matching word -will be displayed. -

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

complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command]
-
- -[-X filterpat] [-P prefix] [-S suffix] name [name ...] - -
complete -pr [-DE] [name ...]
- -Specify how arguments to each name should be completed. -If the -p option is supplied, or if no options are supplied, -existing completion specifications are printed in a way that allows -them to be reused as input. -The -r option removes a completion specification for -each name, or, if no names are supplied, all -completion specifications. -The -D option indicates that the remaining options and actions should -apply to the ``default'' command completion; that is, completion attempted -on a command for which no completion has previously been defined. -The -E option indicates that the remaining options and actions should -apply to ``empty'' 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 Programmable Completion. -

-Other options, if specified, have the following meanings. -The arguments to the -G, -W, and -X options -(and, if necessary, the -P and -S options) -should be quoted to protect them from expansion before the -complete - -builtin is invoked. -

- -
-
-o comp-option
-The comp-option controls several aspects of the compspec's behavior -beyond the simple generation of completions. -comp-option may be one of: -
-
-
bashdefault - -
-Perform the rest of the default bash completions if the compspec -generates no matches. -
default - -
-Use readline's default filename completion if the compspec generates -no matches. -
dirnames - -
-Perform directory name completion if the compspec generates no matches. -
filenames - -
-Tell readline that the compspec generates filenames, so it can perform any -filename-specific processing (like adding a slash to directory names, -quoting special characters, or suppressing trailing spaces). -Intended to be used with shell functions. -
noquote - -
-Tell readline not to quote the completed words if they are filenames -(quoting filenames is the default). -
nospace - -
-Tell readline not to append a space (the default) to words completed at -the end of the line. -
plusdirs - -
-After any matches defined by the compspec are generated, -directory name completion is attempted and any -matches are added to the results of the other actions. -
- -
-A action
-The action may be one of the following to generate a list of possible -completions: -
-
-
alias - -
-Alias names. May also be specified as -a. -
arrayvar - -
-Array variable names. -
binding - -
-Readline key binding names. -
builtin - -
-Names of shell builtin commands. May also be specified as -b. -
command - -
-Command names. May also be specified as -c. -
directory - -
-Directory names. May also be specified as -d. -
disabled - -
-Names of disabled shell builtins. -
enabled - -
-Names of enabled shell builtins. -
export - -
-Names of exported shell variables. May also be specified as -e. -
file - -
-File names. May also be specified as -f. -
function - -
-Names of shell functions. -
group - -
-Group names. May also be specified as -g. -
helptopic - -
-Help topics as accepted by the help builtin. -
hostname - -
-Hostnames, as taken from the file specified by the -HOSTFILE - - -shell variable. -
job - -
-Job names, if job control is active. May also be specified as -j. -
keyword - -
-Shell reserved words. May also be specified as -k. -
running - -
-Names of running jobs, if job control is active. -
service - -
-Service names. May also be specified as -s. -
setopt - -
-Valid arguments for the -o option to the set builtin. -
shopt - -
-Shell option names as accepted by the shopt builtin. -
signal - -
-Signal names. -
stopped - -
-Names of stopped jobs, if job control is active. -
user - -
-User names. May also be specified as -u. -
variable - -
-Names of all shell variables. May also be specified as -v. -
- -
-C command
-command is executed in a subshell environment, and its output is -used as the possible completions. -
-F function
-The shell function function is executed in the current shell -environment. -When the function is executed, -the first argument ($1) is the name of the command whose arguments are -being completed, -the second argument ($2) is the word being completed, -and the third argument ($3) 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 -COMPREPLY - - -array variable. -
-G globpat
-The pathname expansion pattern globpat is expanded to generate -the possible completions. -
-P prefix
-prefix is added at the beginning of each possible completion -after all other options have been applied. -
-S suffix
-suffix is appended to each possible completion -after all other options have been applied. -
-W wordlist
-The wordlist is split using the characters in the -IFS - - -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 completed. -
-X filterpat
-filterpat is a pattern as used for pathname expansion. -It is applied to the list of possible completions generated by the -preceding options and arguments, and each completion matching -filterpat is removed from the list. -A leading ! in filterpat negates the pattern; in this -case, any completion not matching filterpat is removed. - -
-

- -The return value is true unless an invalid option is supplied, an option -other than -p or -r is supplied without a name -argument, an attempt is made to remove a completion specification for -a name for which no specification exists, or -an error occurs adding a completion specification. -

- -
compopt [-o option] [-DE] [+o option] [name]
-Modify completion options for each name according to the -options, or for the -currently-executing completion if no names are supplied. -If no options are given, display the completion options for each -name or the current completion. -The possible values of option are those valid for the complete -builtin described above. -The -D option indicates that the remaining options should -apply to the ``default'' command completion; that is, completion attempted -on a command for which no completion has previously been defined. -The -E option indicates that the remaining options should -apply to ``empty'' command completion; that is, completion attempted on a -blank line. -

-The return value is true unless an invalid option is supplied, an attempt -is made to modify the options for a name for which no completion -specification exists, or an output error occurs. -

continue [n]
-Resume the next iteration of the enclosing -for, - -while, - -until, - -or -select - -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. -
declare [-aAfFgilnrtux] [-p] [name[=value] ...]
- -
typeset [-aAfFgilnrtux] [-p] [name[=value] ...]
- -Declare variables and/or give them attributes. -If no names are given then display the values of variables. -The --p - -option will display the attributes and values of each -name. - -When --p - -is used with name arguments, additional options are ignored. -When --p - -is supplied without name 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 -p, declare will display -the attributes and values of all shell variables. The -f option -will restrict the display to shell functions. -The --F - -option inhibits the display of function definitions; only the -function name and attributes are printed. -If the extdebug shell option is enabled using shopt, -the source file name and line number where the function is defined -are displayed as well. The --F - -option implies --f. - -The --g - -option forces variables to be created or modified at the global scope, -even when declare is executed in a shell function. -It is ignored in all other cases. -The following options can -be used to restrict output to variables with the specified attribute or -to give variables attributes: -
- -
-
-a - -
-Each name is an indexed array variable (see -Arrays - -above). -
-A - -
-Each name is an associative array variable (see -Arrays - -above). -
-f - -
-Use function names only. -
-i - -
-The variable is treated as an integer; arithmetic evaluation (see -ARITHMETIC EVALUATION - - -above) is performed when the variable is assigned a value. -
-l - -
-When the variable is assigned a value, all upper-case characters are -converted to lower-case. -The upper-case attribute is disabled. -
-n - -
-Give each name the nameref attribute, making -it a name reference to another variable. -That other variable is defined by the value of name. -All references and assignments to name, except for changing the --n attribute itself, are performed on the variable referenced by -name's value. -The -n attribute cannot be applied to array variables. -
-r - -
-Make names readonly. These names cannot then be assigned values -by subsequent assignment statements or unset. -
-t - -
-Give each name the trace attribute. -Traced functions inherit the DEBUG and RETURN traps from -the calling shell. -The trace attribute has no special meaning for variables. -
-u - -
-When the variable is assigned a value, all lower-case characters are -converted to upper-case. -The lower-case attribute is disabled. -
-x - -
-Mark names for export to subsequent commands via the environment. - -
-

- -Using `+' instead of `-' -turns off the attribute instead, -with the exceptions that +a -may not be used to destroy an array variable and +r will not -remove the readonly attribute. -When used in a function, -declare - -and -typeset - -make each -name local, as with the -local - -command, -unless the -g option is supplied. -If a variable name is followed by =value, the value of -the variable is set to value. -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 -Arrays - -above), one of the names is not a valid shell variable name, -an attempt is made to turn off readonly status for a readonly variable, -an attempt is made to turn off array status for an array variable, -or an attempt is made to display a non-existent function with -f. -

- -
dirs [-clpv] [+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 -pushd - -command; the -popd - -command removes entries from the list. -
- -
-
-c - -
-Clears the directory stack by deleting all of the entries. -
-l - -
-Produces a listing using full pathnames; -the default listing format uses a tilde to denote the home directory. -
-p - -
-Print the directory stack with one entry per line. -
-v - -
-Print the directory stack with one entry per line, -prefixing each entry with its index in the stack. -
+n
-Displays the nth entry counting from the left of the list -shown by -dirs - -when invoked without options, starting with zero. -
-n
-Displays the nth entry counting from the right of the list -shown by -dirs - -when invoked without options, starting with zero. - -
-

- -The return value is 0 unless an -invalid option is supplied or n indexes beyond the end -of the directory stack. -

- -
disown [-ar] [-h] [jobspec ...]
-Without options, remove each -jobspec - -from the table of active jobs. -If -jobspec - -is not present, and neither -a nor -r is supplied, -the shell's notion of the current job is used. -If the -h option is given, each -jobspec - -is not removed from the table, but is marked so that -SIGHUP - - -is not sent to the job if the shell receives a -SIGHUP. - - -If no -jobspec - -is present, and neither the --a - -nor the --r - -option is supplied, the current job is used. -If no -jobspec - -is supplied, the --a - -option means to remove or mark all jobs; the --r - -option without a -jobspec - -argument restricts operation to running jobs. -The return value is 0 unless a -jobspec - -does not specify a valid job. -
echo [-neE] [arg ...]
-Output the args, separated by spaces, followed by a newline. -The return status is 0 unless a write error occurs. -If -n is specified, the trailing newline is -suppressed. If the -e option is given, interpretation of -the following backslash-escaped characters is enabled. The --E - -option disables the interpretation of these escape characters, -even on systems where they are interpreted by default. -The xpg_echo shell option may be used to -dynamically determine whether or not echo expands these -escape characters by default. -echo - -does not interpret -- to mean the end of options. -echo - -interprets the following escape sequences: -
- -
-
\a - -
-alert (bell) -
\b - -
-backspace -
\c - -
-suppress further output -
\e - -
-
\E - -
-an escape character -
\f - -
-form feed -
\n - -
-new line -
\r - -
-carriage return -
\t - -
-horizontal tab -
\v - -
-vertical tab -
\\ - -
-backslash -
\0nnn - -
-the eight-bit character whose value is the octal value nnn -(zero to three octal digits) -
\xHH - -
-the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
\uHHHH - -
-the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHH (one to four hex digits) -
\UHHHHHHHH - -
-the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHHHHHH (one to eight hex digits) - -
- -
enable [-a] [-dnps] [-f filename] [name ...]
-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 -n is used, each name -is disabled; otherwise, -names are enabled. For example, to use the -test - -binary found via the -PATH - - -instead of the shell builtin version, run -enable -n test. - -The --f - -option means to load the new builtin command -name - -from shared object -filename, - -on systems that support dynamic loading. The --d - -option will delete a builtin previously loaded with --f. - -If no name arguments are given, or if the --p - -option is supplied, a list of shell builtins is printed. -With no other option arguments, the list consists of all enabled -shell builtins. -If -n is supplied, only disabled builtins are printed. -If -a is supplied, the list printed includes all builtins, with an -indication of whether or not each is enabled. -If -s is supplied, the output is restricted to the POSIX -special builtins. -The return value is 0 unless a -name - -is not a shell builtin or there is an error loading a new builtin -from a shared object. -
eval [arg ...]
-The args are read and concatenated together into a single -command. This command is then read and executed by the shell, and -its exit status is returned as the value of -eval. - -If there are no -args, - -or only null arguments, -eval - -returns 0. -
exec [-cl] [-a name] [command [arguments]]
-If -command - -is specified, it replaces the shell. -No new process is created. The -arguments - -become the arguments to command. -If the --l - -option is supplied, -the shell places a dash at the beginning of the zeroth argument passed to -command. - -This is what -login(1) - -does. The --c - -option causes -command - -to be executed with an empty environment. If --a - -is supplied, the shell passes -name - -as the zeroth argument to the executed command. -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 -command - -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. -
exit [n]
-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 -EXIT - - -is executed before the shell terminates. -
export [-fn] [name[=word]] ...
- -
export -p - -
- -The supplied -names - -are marked for automatic export to the environment of -subsequently executed commands. If the --f - -option is given, -the -names - -refer to functions. -If no -names - -are given, or if the --p - -option is supplied, a list -of names of all exported variables is printed. -The --n - -option causes the export property to be removed from each -name. -If a variable name is followed by =word, the value of -the variable is set to word. -export - -returns an exit status of 0 unless an invalid option is -encountered, -one of the names is not a valid shell variable name, or --f - -is supplied with a -name - -that is not a function. -
fc [-e ename] [-lnr] [first] [last]
- -
fc -s [pat=rep] [cmd]
- -The first form selects a range of commands from -first - -to -last - -from the history list and displays or edits and re-executes them. -First - -and -last - -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 -last - -is not specified it is set to -the current command for listing (so that - -fc -l -10 -prints the last 10 commands) and to -first - -otherwise. -If -first - -is not specified it is set to the previous -command for editing and -16 for listing. -

-The --n - -option suppresses -the command numbers when listing. The --r - -option reverses the order of -the commands. If the --l - -option is given, -the commands are listed on -standard output. Otherwise, the editor given by -ename - -is invoked -on a file containing those commands. If -ename - -is not given, the -value of the -FCEDIT - - -variable is used, and -the value of -EDITOR - - -if -FCEDIT - - -is not set. If neither variable is set, - -vi - -is used. When editing is complete, the edited commands are -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. -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 -first - -or -last - -specify history lines out of range. -If the --e - -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-executed, unless -cmd - -does not specify a valid history line, in which case -fc - -returns failure. -

fg [jobspec]
-Resume -jobspec - -in the foreground, and make it the current job. -If -jobspec - -is not present, the shell's notion of the current job 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 -jobspec - -does not specify a valid job or -jobspec - -specifies a job that was started without job control. -
getopts optstring name [args]
-getopts - -is used by shell procedures to parse positional parameters. -optstring - -contains the option characters to be recognized; 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, -getopts - -places the next option in the shell variable -name, - -initializing -name - -if it does not exist, -and the index of the next argument to be processed into the -variable -OPTIND. - - -OPTIND - - -is initialized to 1 each time the shell or a shell script -is invoked. When an option requires an argument, -getopts - -places that argument into the variable -OPTARG. - - -The shell does not reset -OPTIND - - -automatically; it must be manually reset between multiple -calls to -getopts - -within the same shell invocation if a new set of parameters -is to be used. -

-When the end of options is encountered, getopts exits with a -return value greater than zero. -OPTIND - - -is set to the index of the first non-option argument, -and name is set to ?. -

-getopts - -normally parses the positional parameters, but if more arguments are -given in -args, - -getopts - -parses those instead. -

-getopts - -can report errors in two ways. If the first character of -optstring - -is a colon, -silent - -error reporting is used. In normal operation, diagnostic messages -are printed when invalid options or missing option arguments are -encountered. -If the variable -OPTERR - - -is set to 0, no error messages will be displayed, even if the first -character of -optstring - -is not a colon. -

-If an invalid option is seen, -getopts - -places ? into -name - -and, if not silent, -prints an error message and unsets -OPTARG. - - -If -getopts - -is silent, -the option character found is placed in -OPTARG - - -and no diagnostic message is printed. -

-If a required argument is not found, and -getopts - -is not silent, -a question mark (?) is placed in -name, - -OPTARG - - -is unset, and a diagnostic message is printed. -If -getopts - -is silent, then a colon (:) is placed in -name - -and -OPTARG - - -is set to the option character found. -

-getopts - -returns true if an option, specified or unspecified, is found. -It returns false if the end of options is encountered or an -error occurs. -

hash [-lr] [-p filename] [-dt] [name]
-Each time hash is invoked, -the full pathname of the command -name - -is determined by searching -the directories in -$PATH - -and remembered. Any previously-remembered pathname is discarded. -If the --p - -option is supplied, no path search is performed, and -filename - -is used as the full filename of the command. -The --r - -option causes the shell to forget all -remembered 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 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 remembered commands is printed. -The return status is true unless a -name - -is not found or an invalid option is supplied. -
help [-dms] [pattern]
-Display helpful information about builtin commands. If -pattern - -is specified, -help - -gives detailed help on all commands matching -pattern; - -otherwise help for all the builtins and shell control structures -is printed. -
- -
-
-d - -
-Display a short description of each pattern -
-m - -
-Display the description of each pattern in a manpage-like format -
-s - -
-Display only a short usage synopsis for each pattern - -
-

- -The return status is 0 unless no command matches -pattern. - -

- -
history [n]
- -
history -c
-
history -d offset
-
history -anrw [filename]
-
history -p arg [arg ...]
-
history -s arg [arg ...]
- -With no options, display the command -history list with line numbers. Lines listed -with a -* - -have been modified. An argument of -n - -lists only the last -n - -lines. -If the shell variable -HISTTIMEFORMAT - - -is set and not null, -it is used as a format string for strftime(3) to display -the time stamp associated with each displayed history entry. -No intervening blank is printed between the formatted time stamp -and the history line. -If filename is supplied, it is used as the -name of the history file; if not, the value of -HISTFILE - - -is used. Options, if supplied, have the following meanings: -
- -
-
-c - -
-Clear the history list by deleting all the entries. -
-d offset
-Delete the history entry at position offset. -
-a - -
-Append the ``new'' history lines (history lines entered since the -beginning of the current bash session) to the history file. -
-n - -
-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 bash session. -
-r - -
-Read the contents of the history file -and append them to the current history list. -
-w - -
-Write the current history list to the history file, overwriting the -history file's contents. -
-p - -
-Perform history substitution on the following args and display -the result on the standard output. -Does not store the results in the history list. -Each arg must be quoted to disable normal history expansion. -
-s - -
-Store the -args - -in the history list as a single entry. The last command in the -history list is removed before the -args - -are added. - -
-

- -If the -HISTTIMEFORMAT - - -variable is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. -When the history file is read, lines beginning with the history -comment character followed immediately by a digit are interpreted -as timestamps for the previous history line. -The return value is 0 unless an invalid option is encountered, an -error occurs while reading or writing the history file, an invalid -offset is supplied as an argument to -d, or the -history expansion supplied as an argument to -p fails. -

- -
jobs [-lnprs] [ jobspec ... ]
- -
jobs -x command [ args ... ]
- -The first form lists the active jobs. The options have the following -meanings: -
- -
-
-l - -
-List process IDs -in addition to the normal information. -
-n - -
-Display information only about jobs that have changed status since -the user was last notified of their status. -
-p - -
-List only the process ID of the job's process group -leader. -
-r - -
-Display only running jobs. -
-s - -
-Display only stopped jobs. - -
-

- -If -jobspec - -is given, output is restricted to information about that job. -The return status is 0 unless an invalid option is encountered -or an invalid -jobspec - -is supplied. -

- -If the --x - -option is supplied, -jobs - -replaces any -jobspec - -found in -command - -or -args - -with the corresponding process group ID, and executes -command - -passing it -args, - -returning its exit status. -

- -
kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
- -
kill -l [sigspec | exit_status]
- -Send the signal named by -sigspec - -or -signum - -to the processes named by -pid - -or -jobspec. - -sigspec - -is either a case-insensitive signal name such as -SIGKILL - - -(with or without the -SIG - - -prefix) or a signal number; -signum - -is a signal number. -If -sigspec - -is not present, then -SIGTERM - - -is assumed. -An argument of --l - -lists the signal names. -If any arguments are supplied when --l - -is given, the names of the signals corresponding to the arguments are -listed, and the return status is 0. -The exit_status argument to --l - -is a number specifying either a signal number or the exit status of -a process terminated by a signal. -kill - -returns true if at least one signal was successfully sent, or false -if an error occurs or an invalid option is encountered. -
let arg [arg ...]
-Each -arg - -is an arithmetic expression to be evaluated (see -ARITHMETIC EVALUATION - - -above). -If the last -arg - -evaluates to 0, -let - -returns 1; 0 is returned otherwise. -
local [option] [name[=value] ...]
-For each argument, a local variable named -name - -is created, and assigned -value. - -The option can be any of the options accepted by declare. -When -local - -is used within a function, it causes the variable -name - -to have a visible scope restricted to that function and its children. -With no operands, -local - -writes a list of local variables to the standard output. It is -an error to use -local - -when not within a function. The return status is 0 unless -local - -is used outside a function, an invalid -name - -is supplied, or -name is a readonly variable. -
logout - -
-Exit a login shell. -
mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
- -
readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
- -Read lines from the standard input into the indexed array variable -array, - -or from file descriptor -fd - -if the --u - -option is supplied. -The variable -MAPFILE - - -is the default array. -Options, if supplied, have the following meanings: -
- -
-
-n - -
-Copy at most -count - -lines. If count is 0, all lines are copied. -
-O - -
-Begin assigning to -array - -at index -origin. - -The default index is 0. -
-s - -
-Discard the first count lines read. -
-t - -
-Remove a trailing newline from each line read. -
-u - -
-Read lines from file descriptor fd instead of the standard input. -
-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 -callback. - - -
-

- -If --C - -is specified without --c, - -the default quantum is 5000. -When callback 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. -callback is evaluated after the line is read but before the -array element is assigned. -

- -If not supplied with an explicit origin, mapfile will clear array -before assigning to it. -

- -mapfile returns successfully unless an invalid option or option -argument is supplied, array is invalid or unassignable, or if -array is not an indexed array. -

- -
popd [-n] [+n] [-n]
-Removes entries from the directory stack. With no arguments, -removes the top directory from the stack, and performs a -cd - -to the new top directory. -Arguments, if supplied, have the following meanings: -
- -
-
-n - -
-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 -dirs, - -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 -dirs, - -starting with zero. For example: - -popd -0 -removes the last directory, - -popd -1 -the next to last. - -
-

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

- -
printf [-v var] format [arguments]
-Write the formatted arguments to the standard output under the -control of the format. -The -v option causes the output to be assigned to the variable -var rather than being printed to the standard output. -

-The format 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 -argument. -In addition to the standard printf(1) format specifications, -printf interprets the following extensions: -

- -
-
%b - -
-causes -printf to expand backslash escape sequences in the corresponding -argument (except that \c terminates output, backslashes in -\aq, \", and \? are not removed, and octal escapes -beginning with \0 may contain up to four digits). -
%q - -
-causes printf to output the corresponding -argument in a format that can be reused as shell input. -
%(datefmt)T - -
-causes printf to output the date-time string resulting from using -datefmt as a format string for strftime(3). -The corresponding argument is an integer representing the number of -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 printf behavior. - -
-

- -Arguments to non-string format specifiers are treated as C constants, -except that a leading plus or minus sign is allowed, and if the leading -character is a single or double quote, the value is the ASCII value of -the following character. -

- -The format is reused as necessary to consume all of the arguments. -If the format requires more arguments than are supplied, 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. -

- -
pushd [-n] [+n] [-n]
- -
pushd [-n] [dir]
- -Adds a directory to the top of the directory stack, or rotates -the stack, making the new top of the stack the current working -directory. With no arguments, exchanges the top two directories -and returns 0, unless the directory stack is empty. -Arguments, if supplied, have the following meanings: -
- -
-
-n - -
-Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. -
+n
-Rotates the stack so that the nth directory -(counting from the left of the list shown by -dirs, - -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 -dirs, - -starting with zero) is at the top. -
dir - -
-Adds -dir - -to the directory stack at the top, making it the -new current working directory as if it had been supplied as the argument -to the cd builtin. - -
-

- -If the -pushd - -command is successful, a -dirs - -is performed as well. -If the first form is used, -pushd - -returns 0 unless the cd to -dir - -fails. With the second form, -pushd - -returns 0 unless the directory stack is empty, -a non-existent directory stack element is specified, -or the directory change to the specified new current directory -fails. -

- -
pwd [-LP]
-Print the absolute pathname of the current working directory. -The pathname printed contains no symbolic links if the --P - -option is supplied or the --o physical - -option to the -set - -builtin command is enabled. -If the --L - -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. -
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-One line is read from the standard input, or from the file descriptor -fd supplied as an argument to the -u option, and the first word -is assigned to the first -name, - -the second word to the second -name, - -and so on, with leftover words and their intervening separators assigned -to the last -name. - -If there are fewer words read from the input stream than names, -the remaining names are assigned empty values. -The characters in -IFS - - -are used to split the line into words. -The backslash character (\) may be used to remove any special -meaning for the next character read and for line continuation. -Options, if supplied, have the following meanings: -
- -
-
-a aname - -
-The words are assigned to sequential indices -of the array variable -aname, - -starting at 0. -aname - -is unset before any new values are assigned. -Other name arguments are ignored. -
-d delim - -
-The first character of delim is used to terminate the input line, -rather than newline. -
-e - -
-If the standard input -is coming from a terminal, -readline - -(see -READLINE - - -above) is used to obtain the line. -Readline uses the current (or default, if line editing was not previously -active) editing settings. -
-i text - -
-If -readline - -is being used to read the line, text is placed into the editing -buffer before editing begins. -
-n nchars - -
-read returns after reading nchars characters rather than -waiting for a complete line of input, but honor a delimiter if fewer -than nchars characters are read before the delimiter. -
-N nchars - -
-read returns after reading exactly nchars characters rather -than waiting for a complete line of input, unless EOF is encountered or -read times out. -Delimiter characters encountered in the input are -not treated specially and do not cause read to return until -nchars characters are read. -
-p prompt - -
-Display prompt on standard error, without a -trailing newline, before attempting to read any input. The prompt -is displayed only if input is coming from a terminal. -
-r - -
-Backslash does not act as an escape character. -The backslash is considered to be part of the line. -In particular, a backslash-newline pair may not be used as a line -continuation. -
-s - -
-Silent mode. If input is coming from a terminal, characters are -not echoed. -
-t timeout - -
-Cause read to time out and return failure if a complete line of -input (or a specified number of characters) -is not read within timeout seconds. -timeout may be a decimal number with a fractional portion following -the decimal point. -This option is only effective if read is reading input from a -terminal, pipe, or other special file; it has no effect when reading -from regular files. -If read times out, read saves any partial input read into -the specified variable name. -If timeout is 0, read returns immediately, without trying to -read any data. The exit status is 0 if input is available on -the specified file descriptor, non-zero otherwise. -The exit status is greater than 128 if the timeout is exceeded. -
-u fd - -
-Read input from file descriptor fd. - -
-

- -If no -names - -are supplied, the line read is assigned to the variable -REPLY. - - -The return code is zero, unless end-of-file is encountered, read -times out (in which case the return code is greater than 128), -a variable assignment error (such as assigning to a readonly variable) occurs, -or an invalid file descriptor is supplied as the argument to -u. -

- -
readonly [-aAf] [-p] [name[=word] ...]
- -The given -names are marked readonly; the values of these -names - -may not be changed by subsequent assignment. -If the --f - -option is supplied, the functions corresponding to the -names are so -marked. -The --a - -option restricts the variables to indexed arrays; the --A - -option restricts the variables to associative arrays. -If both options are supplied, --A - -takes precedence. -If no -name - -arguments are given, or if the --p - -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 --p - -option causes output to be displayed in a format that -may be reused as input. -If a variable name is followed by =word, the value of -the variable is set to word. -The return status is 0 unless an invalid option is encountered, -one of the -names - -is not a valid shell variable name, or --f - -is supplied with a -name - -that is not a function. -
return [n]
-Causes a function to stop executing and return the value specified by -n - -to its caller. -If -n - -is omitted, the return status is that of the last command -executed in the function body. If -return - -is used outside a function, -but during execution of a script by the -. - -(source) 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 -return - -is supplied a non-numeric argument, or -is used outside a -function and not during execution of a script by . or source. -Any command associated with the RETURN trap is executed -before execution resumes after the function or script. -
set [--abefhkmnptuvxBCEHPT] [-o option-name] [arg ...]
- -
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]
- -Without options, the name and value of each shell variable are displayed -in a format that can be reused as input -for setting or resetting the currently-set variables. -Read-only variables cannot be reset. -In posix mode, only shell variables are listed. -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 values for the positional parameters and are assigned, in order, to -$1, - -$2, - -... - -$n. - -Options, if specified, have the following meanings: -
- -
-
-a - -
-Automatically mark variables and functions which are modified or -created for export to the environment of subsequent commands. -
-b - -
-Report the status of terminated background jobs -immediately, rather than before the next primary prompt. This is -effective only when job control is enabled. -
-e - -
-Exit immediately if a -pipeline (which may consist of a single simple command), -a list, -or a compound command -(see -SHELL GRAMMAR - - -above), exits with a non-zero status. -The shell does not exit if the -command that fails is part of the command list immediately following a -while - -or -until - -keyword, -part of the test following the -if - -or -elif - -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 -e was being ignored, the shell does not exit. -A trap on ERR, if set, is executed before the shell exits. -This option applies to the shell environment and each subshell environment -separately (see -COMMAND EXECUTION ENVIRONMENT - - -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 -e is being ignored, -none of the commands executed within the compound command or function body -will be affected by the -e setting, even if -e is set -and a command returns a failure status. -If a compound command or shell function sets -e while executing in -a context where -e is ignored, that setting will not have any -effect until the compound command or the command containing the function -call completes. -

-f - -
-Disable pathname expansion. -
-h - -
-Remember the location of commands as they are looked up for execution. -This is enabled by default. -
-k - -
-All arguments in the form of assignment statements -are placed in the environment for a command, not just -those that precede the command name. -
-m - -
-Monitor mode. Job control is enabled. This option is on -by default for interactive shells on systems that support -it (see -JOB CONTROL - - -above). -All processes run in a separate process group. -When a background job completes, the shell prints a line -containing its exit status. -
-n - -
-Read commands but do not execute them. This may be used to -check a shell script for syntax errors. This is ignored by -interactive shells. -
-o option-name - -
-The option-name can be one of the following: -
-
-
allexport - -
-Same as --a. - -
braceexpand - -
-Same as --B. - -
emacs - -
-Use an emacs-style command line editing interface. This is enabled -by default when the shell is interactive, unless the shell is started -with the ---noediting - -option. -This also affects the editing interface used for read -e. -
errexit - -
-Same as --e. - -
errtrace - -
-Same as --E. - -
functrace - -
-Same as --T. - -
hashall - -
-Same as --h. - -
histexpand - -
-Same as --H. - -
history - -
-Enable command history, as described above under -HISTORY. - - -This option is on by default in interactive shells. -
ignoreeof - -
-The effect is as if the shell command -IGNOREEOF=10 - -had been executed -(see -Shell Variables - -above). -
keyword - -
-Same as --k. - -
monitor - -
-Same as --m. - -
noclobber - -
-Same as --C. - -
noexec - -
-Same as --n. - -
noglob - -
-Same as --f. - -
nolog - -
-Currently ignored. -
notify - -
-Same as --b. - -
nounset - -
-Same as --u. - -
onecmd - -
-Same as --t. - -
physical - -
-Same as --P. - -
pipefail - -
-If set, the return value of a pipeline is the value of the last -(rightmost) command to exit with a non-zero status, or zero if all -commands in the pipeline exit successfully. -This option is disabled by default. -
posix - -
-Change the behavior of -bash - -where the default operation differs -from the POSIX standard to match the standard (posix mode). -
privileged - -
-Same as --p. - -
verbose - -
-Same as --v. - -
vi - -
-Use a vi-style command line editing interface. -This also affects the editing interface used for read -e. -
xtrace - -
-Same as --x. - -

-

-

- -If --o - -is supplied with no option-name, the values of the current options are -printed. -If -+o - -is supplied with no option-name, a series of -set - -commands to recreate the current option settings is displayed on -the standard output. -

- -
-p - -
-Turn on -privileged - -mode. In this mode, the -$ENV - - -and -$BASH_ENV - - -files are not processed, shell functions are not inherited from the -environment, and the -SHELLOPTS, - - -BASHOPTS, - - -CDPATH, - - -and -GLOBIGNORE - - -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 -p option is not supplied, these actions -are taken and the effective user id is set to the real user id. -If the -p option is supplied at startup, the effective user id is -not reset. -Turning this option off causes the effective user -and group ids to be set to the real user and group ids. -
-t - -
-Exit after reading and executing one command. -
-u - -
-Treat unset variables and parameters other than the special -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. -
-v - -
-Print shell input lines as they are read. -
-x - -
-After expanding each simple command, -for command, case command, select command, or -arithmetic for command, display the expanded value of -PS4, - - -followed by the command and its expanded arguments -or associated word list. -
-B - -
-The shell performs brace expansion (see -Brace Expansion - -above). This is on by default. -
-C - -
-If set, -bash - -does not overwrite an existing file with the ->, - ->&, - -and -<> - -redirection operators. This may be overridden when -creating output files by using the redirection operator ->| - -instead of ->. - -
-E - -
-If set, any trap on ERR is inherited by shell functions, command -substitutions, and commands executed in a subshell environment. -The ERR trap is normally not inherited in such cases. -
-H - -
-Enable -! - -style history substitution. This option is on by -default when the shell is interactive. -
-P - -
-If set, the shell does not resolve symbolic links when executing -commands such as -cd - -that change the current working directory. It uses the -physical directory structure instead. By default, -bash - -follows the logical chain of directories when performing commands -which change the current directory. -
-T - -
-If set, any traps on DEBUG and RETURN are inherited by shell -functions, command substitutions, and commands executed in a -subshell environment. -The DEBUG and RETURN traps are normally not inherited -in such cases. -
-- - -
-If no arguments follow this option, then the positional parameters are -unset. Otherwise, the positional parameters are set to the -args, even if some of them begin with a --. - -
- - -
-Signal the end of options, cause all remaining args to be -assigned to the positional parameters. The --x - -and --v - -options are turned off. -If there are no args, -the positional 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 return status is always true unless an invalid option is encountered. -

- -
shift [n]
-The positional parameters from n+1 ... are renamed to -$1 - -.... - -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. -
shopt [-pqsu] [-o] [optname ...]
-Toggle the values of variables controlling optional shell behavior. -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: -
- -
-
-s - -
-Enable (set) each optname. -
-u - -
-Disable (unset) each optname. -
-q - -
-Suppresses normal output (quiet mode); the return status indicates -whether the optname is set or unset. -If multiple optname arguments are given with --q, - -the return status is zero if all optnames are enabled; non-zero -otherwise. -
-o - -
-Restricts the values of optname to be those defined for the --o - -option to the -set - -builtin. - -
-

- -If either --s - -or --u - -is used with no optname arguments, -shopt - -shows only those options which are set or unset, respectively. -Unless otherwise noted, the shopt options are disabled (unset) -by default. -

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

- -The list of shopt options is: -

- - - -

-
autocd - -
-If set, a command name that is the name of a directory is executed as if -it were the argument to the cd command. -This option is only used by interactive shells. -
cdable_vars - -
-If set, an argument to the -cd - -builtin command that -is not a directory is assumed to be the name of a variable whose -value is the directory to change to. -
cdspell - -
-If set, minor errors in the spelling of a directory component in a -cd - -command will be corrected. -The errors checked for are transposed characters, -a missing character, and one character too many. -If a correction is found, the corrected filename is printed, -and the command proceeds. -This option is only used by interactive shells. -
checkhash - -
-If set, bash checks that a command found in the hash -table exists before trying to execute it. If a hashed command no -longer exists, a normal path search is performed. -
checkjobs - -
-If set, bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (see -JOB CONTROL - - -above). 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 -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. -
compat31 - -
-If set, -bash - -changes its behavior to that of version 3.1 with respect to quoted -arguments to the [[ conditional command's =~ operator -and locale-specific string comparison when using the [[ -conditional command's < and > operators. -Bash versions prior to bash-4.1 use ASCII collation and -strcmp(3); - -bash-4.1 and later use the current locale's collation sequence and -strcoll(3). - -
compat32 - -
-If set, -bash - -changes its behavior to that of version 3.2 with respect to -locale-specific string comparison when using the [[ -conditional command's < and > operators (see previous item). -
compat40 - -
-If set, -bash - -changes its behavior to that of version 4.0 with respect to locale-specific -string comparison when using the [[ -conditional command's < and > operators (see description of -compat31) -and the effect of interrupting a command list. -Bash versions 4.0 and later interrupt the list as if the shell received the -interrupt; previous versions continue with the next command in the list. -
compat41 - -
-If set, -bash, - -when in posix mode, treats a single quote in a double-quoted -parameter expansion as a special character. The single quotes must match -(an even number) and the characters between the single quotes are considered -quoted. This is the behavior of posix mode through version 4.1. -The default bash behavior remains as in previous versions. -
compat42 - -
-If set, -bash - -does not process the replacement string in the pattern substitution word -expansion using quote removal. -
complete_fullquote - -
-If set, -bash - -quotes all shell metacharacters in filenames and directory names when -performing completion. -If not set, -bash - -removes metacharacters such as the dollar 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 backslashes to quote completed -filenames. -This variable is set by default, which is the default bash behavior in -versions through 4.2. -
direxpand - -
-If set, -bash - -replaces directory names with the results of word expansion when performing -filename completion. This changes the contents of the readline editing -buffer. -If not set, -bash - -attempts to preserve what the user typed. -
dirspell - -
-If set, -bash - -attempts spelling correction on directory names during word completion -if the directory name initially supplied does not exist. -
dotglob - -
-If set, -bash - -includes filenames beginning with a `.' in the results of pathname -expansion. -
execfail - -
-If set, a non-interactive shell will not exit if -it cannot execute the file specified as an argument to the -exec - -builtin command. An interactive shell does not exit if -exec - -fails. -
expand_aliases - -
-If set, aliases are expanded as described above under -ALIASES. - - -This option is enabled by default for interactive shells. -
extdebug - -
-If set, behavior intended for use by debuggers is enabled: -
-
-
1. - -
-The -F option to the declare builtin displays the source -file name and line number corresponding to each function name supplied -as an argument. -
2. - -
-If the command run by the DEBUG trap returns a non-zero value, the -next command is skipped and not executed. -
3. - -
-If the command run by the DEBUG trap returns a value of 2, and the -shell is executing in a subroutine (a shell function or a shell script -executed by the . or source builtins), a call to -return is simulated. -
4. - -
-BASH_ARGC - - -and -BASH_ARGV - - -are updated as described in their descriptions above. -
5. - -
-Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. -
6. - -
-Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERR trap. -
- -
extglob - -
-If set, the extended pattern matching features described above under -Pathname Expansion are enabled. -
extquote - -
-If set, $aqstringaq and $"string" quoting is -performed within ${parameter} expansions -enclosed in double quotes. This option is enabled by default. -
failglob - -
-If set, patterns which fail to match filenames during pathname expansion -result in an expansion error. -
force_fignore - -
-If set, the suffixes specified by the -FIGNORE - - -shell variable -cause words to be ignored when performing word completion even if -the ignored words are the only possible completions. -See -SHELL VARIABLES -above for a description of -FIGNORE. - - -This option is enabled by default. -
globasciiranges - -
-If set, range expressions used in pattern matching (see -Pattern Matching - - -above) behave as if in the traditional C locale when performing -comparisons. That is, the current locale's collating sequence -is not taken into account, so -b - -will not collate between -A - -and -B, - -and upper-case and lower-case ASCII characters will collate together. -
globstar - -
-If set, the pattern ** used in a pathname expansion context will -match all files and zero or more directories and subdirectories. -If the pattern is followed by a /, only directories and -subdirectories match. -
gnu_errfmt - -
-If set, shell error messages are written in the standard GNU error -message format. -
histappend - -
-If set, the history list is appended to the file named by the value -of the -HISTFILE - - -variable when the shell exits, rather than overwriting the file. -
histreedit - -
-If set, and -readline - -is being used, a user is given the opportunity to re-edit a -failed history substitution. -
histverify - -
-If set, and -readline - -is being used, the results of history substitution are not immediately -passed to the shell parser. Instead, the resulting line is loaded into -the readline editing buffer, allowing further modification. -
hostcomplete - -
-If set, and -readline - -is being used, bash will attempt to perform hostname completion when a -word containing a @ is being completed (see -Completing - -under -READLINE - - -above). -This is enabled by default. -
huponexit - -
-If set, bash will send -SIGHUP - - -to all jobs when an interactive login shell exits. -
interactive_comments - -
-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 -COMMENTS - - -above). This option is enabled by default. -
lastpipe - -
-If set, and job control is not active, the shell runs the last command of -a pipeline not executed in the background in the current shell environment. -
lithist - -
-If set, and the -cmdhist - -option is enabled, multi-line commands are saved to the history with -embedded newlines rather than using semicolon separators where possible. -
login_shell - -
-The shell sets this option if it is started as a login shell (see -INVOCATION - - -above). -The value may not be changed. -
mailwarn - -
-If set, and a file that bash is checking for mail has been -accessed since the last time it was checked, the message ``The mail in -mailfile has been read'' is displayed. -
no_empty_cmd_completion - -
-If set, and -readline - -is being used, -bash - -will not attempt to search the -PATH - - -for possible completions when -completion is attempted on an empty line. -
nocaseglob - -
-If set, -bash - -matches filenames in a case-insensitive fashion when performing pathname -expansion (see -Pathname Expansion - -above). -
nocasematch - -
-If set, -bash - -matches patterns in a case-insensitive fashion when performing matching -while executing case or [[ conditional commands. -
nullglob - -
-If set, -bash - -allows patterns which match no -files (see -Pathname Expansion - -above) -to expand to a null string, rather than themselves. -
progcomp - -
-If set, the programmable completion facilities (see -Programmable Completion above) are enabled. -This option is enabled by default. -
promptvars - -
-If set, prompt strings undergo -parameter expansion, command substitution, arithmetic -expansion, and quote removal after being expanded as described in -PROMPTING - - -above. This option is enabled by default. -
restricted_shell - -
-The shell sets this option if it is started in restricted mode (see -RESTRICTED SHELL - - -below). -The value may not be changed. -This is not reset when the startup files are executed, allowing -the startup files to discover whether or not a shell is restricted. -
shift_verbose - -
-If set, the -shift - -builtin prints an error message when the shift count exceeds the -number of positional parameters. -
sourcepath - -
-If set, the -source (.) builtin uses the value of -PATH - - -to find the directory containing the file supplied as an argument. -This option is enabled by default. -
xpg_echo - -
-If set, the echo builtin expands backslash-escape sequences -by default. -
- - -
suspend [-f]
-Suspend the execution of this shell until it receives a -SIGCONT - - -signal. A login shell cannot be suspended; the --f - -option can be used to override this and force the suspension. -The return status is 0 unless the shell is a login shell and --f - -is not supplied, or if job control is not enabled. -
test expr
- -
[ expr ]
-Return a status of 0 (true) or 1 (false) depending on -the evaluation of the conditional expression -expr. - -Each operator and operand must be a separate argument. -Expressions are composed of the primaries described above under -CONDITIONAL EXPRESSIONS. - - -test does not accept any options, nor does it accept and ignore -an argument of -- as signifying the end of options. -

- - -Expressions may be combined using the following operators, listed -in decreasing order of precedence. -The evaluation depends on the number of arguments; see below. -Operator precedence is used when there are five or more arguments. -

- -
-
! expr - -
-True if -expr - -is false. -
( expr ) - -
-Returns the value of expr. -This may be used to override the normal precedence of operators. -
expr1 -a expr2
-True if both -expr1 - -and -expr2 - -are true. -
expr1 -o expr2
-True if either -expr1 - -or -expr2 - -is true. - -
-

- -test and [ evaluate conditional -expressions using a set of rules based on the number of arguments. -

- - - -

-
0 arguments
-The expression is false. -
1 argument
-The expression is true if and only if the argument is not null. -
2 arguments
-If the first argument is !, the expression is true if and -only if the second argument is null. -If the first argument is one of the unary conditional operators listed above -under -CONDITIONAL EXPRESSIONS, - - -the expression is true if the unary test is true. -If the first argument is not a valid unary conditional operator, the expression -is false. -
3 arguments
-The following conditions are applied in the order listed. -If the second argument is one of the binary conditional operators listed above -under -CONDITIONAL EXPRESSIONS, - - -the result of the expression is the result of the binary test using -the first and third arguments as operands. -The -a and -o operators are considered binary operators -when there are three arguments. -If the first argument is !, the value is the negation of -the two-argument test using the second and third arguments. -If the first argument is exactly ( and the third argument is -exactly ), the result is the one-argument test of the second -argument. -Otherwise, the expression is false. -
4 arguments
-If the first argument is !, the result is the negation of -the three-argument expression composed of the remaining arguments. -Otherwise, the expression is parsed and evaluated according to -precedence using the rules listed above. -
5 or more arguments
-The expression is parsed and evaluated according to precedence -using the rules listed above. -

- - -

-

- -When used with test or [, the < and > operators -sort lexicographically using ASCII ordering. -

- - -
times - -
-Print the accumulated user and system times for the shell and -for processes run from the shell. The return status is 0. -
trap [-lp] [[arg] sigspec ...]
-The command -arg - -is to be read and executed when the shell receives -signal(s) -sigspec. - -If -arg - -is absent (and there is a single sigspec) or --, - -each specified signal is -reset to its original disposition (the value it had -upon entrance to the shell). -If -arg - -is the null string the signal specified by each -sigspec - -is ignored by the shell and by the commands it invokes. -If -arg - -is not present and --p - -has been supplied, then the trap commands associated with each -sigspec - -are displayed. -If no arguments are supplied or if only --p - -is given, -trap - -prints the list of commands associated with each signal. -The --l - -option causes the shell to print a list of signal names and -their corresponding numbers. -Each -sigspec - -is either -a signal name defined in <signal.h>, or a signal number. -Signal names are case insensitive and the -SIG - - -prefix is optional. -

- - -If a -sigspec - -is -EXIT - - -(0) the command -arg - -is executed on exit from the shell. -If a -sigspec - -is -DEBUG, - - -the command -arg - -is executed before every simple command, for command, -case command, select command, every arithmetic for -command, and before the first command executes in a shell function (see -SHELL GRAMMAR - - -above). -Refer to the description of the extdebug option to the -shopt builtin for details of its effect on the DEBUG trap. -If a -sigspec - -is -RETURN, - - -the command -arg - -is executed each time a shell function or a script executed with -the . or source builtins finishes executing. -

- - -If a -sigspec - -is -ERR, - - -the command -arg - -is executed whenever a -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 -ERR - - -trap is not executed if the failed -command is part of the command list immediately following a -while - -or -until - -keyword, -part of the test in an -if - -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 errexit (-e) option. -

- - -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 -sigspec - -is invalid; otherwise -trap - -returns true. -

type [-aftpP] name [name ...]
-With no options, -indicate how each -name - -would be interpreted if used as a command name. -If the --t - -option is used, -type - -prints a string which is one of -alias, - -keyword, - -function, - -builtin, - -or -file - -if -name - -is an alias, shell reserved word, function, builtin, or disk file, -respectively. -If the -name - -is not found, then nothing is printed, and an exit status of false -is returned. -If the --p - -option is used, -type - -either returns the name of the disk file -that would be executed if -name - -were specified as a command name, -or nothing if -type -t name - -would not return -file. - -The --P - -option forces a -PATH - - -search for each name, even if -type -t name - -would not return -file. - -If a command is hashed, --p - -and --P - -print the hashed value, which is not necessarily the file that appears -first in -PATH. - - -If the --a - -option is used, -type - -prints all of the places that contain -an executable named -name. - -This includes aliases and functions, -if and only if the --p - -option is not also used. -The table of hashed commands is not consulted -when using --a. - -The --f - -option suppresses shell function lookup, as with the command builtin. -type - -returns true if all of the arguments are found, false if -any are not found. -
ulimit [-HSTabcdefilmnpqrstuvx [limit]]
-Provides control over the resources available to the shell and to -processes started by it, on systems that allow such control. -The -H and -S 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 -H nor -S is specified, both the soft and hard -limits are set. -The value of -limit - -can be a number in the unit specified for the resource -or one of the special values -hard, - -soft, - -or -unlimited, - -which stand for the current hard limit, the current soft limit, and -no limit, respectively. -If -limit - -is omitted, the current value of the soft limit of the resource is -printed, unless the -H option is given. When more than one -resource is specified, the limit name and unit are printed before the value. -Other options are interpreted as follows: -
- -
-
-a - -
-All current limits are reported -
-b - -
-The maximum socket buffer size -
-c - -
-The maximum size of core files created -
-d - -
-The maximum size of a process's data segment -
-e - -
-The maximum scheduling priority ("nice") -
-f - -
-The maximum size of files written by the shell and its children -
-i - -
-The maximum number of pending signals -
-l - -
-The maximum size that may be locked into memory -
-m - -
-The maximum resident set size (many systems do not honor this limit) -
-n - -
-The maximum number of open file descriptors (most systems do not -allow this value to be set) -
-p - -
-The pipe size in 512-byte blocks (this may not be set) -
-q - -
-The maximum number of bytes in POSIX message queues -
-r - -
-The maximum real-time scheduling priority -
-s - -
-The maximum stack size -
-t - -
-The maximum amount of cpu time in seconds -
-u - -
-The maximum number of processes available to a single user -
-v - -
-The maximum amount of virtual memory available to the shell and, on -some systems, to its children -
-x - -
-The maximum number of file locks -
-T - -
-The maximum number of threads - -
-

- -If -limit - -is given, and the --a - -option is not used, -limit is the new value of the specified resource. -If no option is given, then --f - -is assumed. Values are in 1024-byte increments, except for --t, - -which is in seconds; --p, - -which is in units of 512-byte blocks; -and --T, - --b, - --n, - -and --u, - -which are unscaled values. -The return status is 0 unless an invalid option or argument is supplied, -or an error occurs while setting a new limit. -

- -
umask [-p] [-S] [mode]
-The user file-creation mask is set to -mode. - -If -mode - -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 -chmod(1). - -If -mode - -is omitted, the current value of the mask is printed. -The --S - -option causes the mask to be printed in symbolic form; the -default output is an octal number. -If the --p - -option is supplied, and -mode - -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 mode argument was supplied, and false otherwise. -
unalias [-a] [name ...]
-Remove each name from the list of defined aliases. If --a - -is supplied, all alias definitions are removed. The return -value is true unless a supplied -name - -is not a defined alias. -
unset [-fv] [-n] [name ...]
-For each -name, - -remove the corresponding variable or function. -If the --v - -option is given, each -name - -refers to a shell variable, and that variable is removed. -Read-only variables may not be unset. -If --f - -is specified, each -name - -refers to a shell function, and the function definition -is removed. -If the --n - -option is supplied, and name is a variable with the nameref -attribute, name will be unset rather than the variable it -references. --n has no effect if the -f option is supplied. -If no options are supplied, each name refers to a variable; if -there is no variable 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 -COMP_WORDBREAKS, - - -RANDOM, - - -SECONDS, - - -LINENO, - - -HISTCMD, - - -FUNCNAME, - - -GROUPS, - - -or -DIRSTACK - - -are unset, they lose their special properties, even if they are -subsequently reset. The exit status is true unless a -name - -is readonly. -
wait [--n] [n ...]
-Wait for each specified 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 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 -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. - - -
-  -

RESTRICTED SHELL

- - - -

- -If -bash - -is started with the name -rbash, - -or the --r - -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 -bash - -with the exception that the following are disallowed or not performed: -

-
*
-changing directories with cd -
*
-setting or unsetting the values of -SHELL, - - -PATH, - - -ENV, - - -or -BASH_ENV - - -
*
-specifying command names containing -/ - -
*
-specifying a filename containing a -/ - -as an argument to the -. - -builtin command -
*
-specifying a filename containing a slash as an argument to the --p - -option to the -hash - -builtin command -
*
-importing function definitions from the shell environment at startup -
*
-parsing the value of -SHELLOPTS - - -from the shell environment at startup -
*
-redirecting output using the >, >|, <>, >&, &>, and >> redirection operators -
*
-using the -exec - -builtin command to replace the shell with another command -
*
-adding or deleting builtin commands with the --f - -and --d - -options to the -enable - -builtin command -
*
-using the enable builtin command to enable disabled shell builtins -
*
-specifying the --p - -option to the -command - -builtin command -
*
-turning off restricted mode with -set +r or set +o restricted. -
-

- -These restrictions are enforced after any startup files are read. -

- - - When a command that is found to be a shell script is executed -(see -COMMAND EXECUTION - - - -above), - -rbash - -turns off any restrictions in the shell spawned to execute the -script. - - -  -

SEE ALSO

- - -
-
Bash Reference Manual, Brian Fox and Chet Ramey
-
The Gnu Readline Library, Brian Fox and Chet Ramey
-
The Gnu History Library, Brian Fox and Chet Ramey
-
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE
-
sh(1), ksh(1), csh(1)
-
emacs(1), vi(1)
-
readline(3)
- -
-  -

FILES

- - -
-
-/bin/bash - -
-The bash executable -
-/etc/profile - -
-The systemwide initialization file, executed for login shells -
-~/.bash_profile - -
-The personal initialization file, executed for login shells -
-~/.bashrc - -
-The individual per-interactive-shell startup file -
-~/.bash_logout - -
-The individual login shell cleanup file, executed when a login shell exits -
-~/.inputrc - -
-Individual readline initialization file - -
-  -

AUTHORS

- -Brian Fox, Free Software Foundation -
- -bfox@gnu.org -

- -Chet Ramey, Case Western Reserve University -
- -chet.ramey@case.edu -  -

BUG REPORTS

- -If you find a bug in -bash, - -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 -bash. - -The latest version is always available from -ftp://ftp.gnu.org/pub/gnu/bash/. -

- -Once you have determined that a bug actually exists, use the -bashbug - -command to submit a bug report. -If you have a fix, you are encouraged to mail that as well! -Suggestions and `philosophical' bug reports may be mailed -to bug-bash@gnu.org or posted to the Usenet -newsgroup -gnu.bash.bug. - -

- -ALL bug reports should include: -

- - -

-
The version number of bash
-
The hardware and operating system
-
The compiler used to compile
-
A description of the bug behaviour
-
A short script or `recipe' which exercises the bug
- -
-

- -bashbug - -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 to -chet.ramey@case.edu. - -  -

BUGS

- -

- -It's too big and too slow. -

- -There are some subtle differences between -bash - -and traditional versions of -sh, - -mostly because of the -POSIX - - -specification. -

- -Aliases are confusing in some uses. -

- -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 unit. -

- -Array variables may not (yet) be exported. -

- -There may be only one active coprocess at a time. - - - -


- - - -
GNU Bash 4.22013 January 8BASH(1) -
-
- 

Index

-
-
NAME
-
SYNOPSIS
-
COPYRIGHT
-
DESCRIPTION
-
OPTIONS
-
ARGUMENTS
-
INVOCATION
-
DEFINITIONS
-
RESERVED WORDS
-
SHELL GRAMMAR
-
-
Simple Commands
-
Pipelines
-
Lists
-
Compound Commands
-
Coprocesses
-
Shell Function Definitions
-
-
COMMENTS
-
QUOTING
-
PARAMETERS
-
-
Positional Parameters
-
Special Parameters
-
Shell Variables
-
Arrays
-
-
EXPANSION
-
-
Brace Expansion
-
Tilde Expansion
-
Parameter Expansion
-
Command Substitution
-
Arithmetic Expansion
-
Process Substitution
-
Word Splitting
-
Pathname Expansion
-
Quote Removal
-
-
REDIRECTION
-
-
Redirecting Input
-
Redirecting Output
-
Appending Redirected Output
-
Redirecting Standard Output and Standard Error
-
Appending Standard Output and Standard Error
-
Here Documents
-
Here Strings
-
Duplicating File Descriptors
-
Moving File Descriptors
-
Opening File Descriptors for Reading and Writing
-
-
ALIASES
-
FUNCTIONS
-
ARITHMETIC EVALUATION
-
CONDITIONAL EXPRESSIONS
-
SIMPLE COMMAND EXPANSION
-
COMMAND EXECUTION
-
COMMAND EXECUTION ENVIRONMENT
-
ENVIRONMENT
-
EXIT STATUS
-
SIGNALS
-
JOB CONTROL
-
PROMPTING
-
READLINE
-
-
Readline Notation
-
Readline Initialization
-
Readline Key Bindings
-
Readline Variables
-
Readline Conditional Constructs
-
Searching
-
Readline Command Names
-
Commands for Moving
-
Commands for Manipulating the History
-
Commands for Changing Text
-
Killing and Yanking
-
Numeric Arguments
-
Completing
-
Keyboard Macros
-
Miscellaneous
-
Programmable Completion
-
-
HISTORY
-
HISTORY EXPANSION
-
-
Event Designators
-
Word Designators
-
Modifiers
-
-
SHELL BUILTIN COMMANDS
-
RESTRICTED SHELL
-
SEE ALSO
-
FILES
-
AUTHORS
-
BUG REPORTS
-
BUGS
-
-
-This document was created by man2html from bash.1.
-Time: 11 January 2013 16:34:33 EST - - diff --git a/doc/bash.info b/doc/bash.info deleted file mode 100644 index 593f787c1..000000000 --- a/doc/bash.info +++ /dev/null @@ -1,10318 +0,0 @@ -This is bash.info, produced by makeinfo version 4.13 from -/Users/chet/src/bash/src/doc/bashref.texi. - -This text is a brief description of the features that are present in -the Bash shell (version 4.1, 16 September 2009). - - This is Edition 4.1, last updated 16 September 2009, of `The GNU -Bash Reference Manual', for `Bash', Version 4.1. - - Copyright (C) 1988-2009 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.3 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being "A GNU Manual", and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - "GNU Free Documentation License". - - (a) The FSF's Back-Cover Text is: You are free to copy and modify - this GNU manual. Buying copies from GNU Press supports the FSF in - developing GNU and promoting software freedom." - - -INFO-DIR-SECTION Basics -START-INFO-DIR-ENTRY -* Bash: (bash). The GNU Bourne-Again SHell. -END-INFO-DIR-ENTRY - - -File: bash.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) - -Bash Features -************* - -This text is a brief description of the features that are present in -the Bash shell (version 4.1, 16 September 2009). - - This is Edition 4.1, last updated 16 September 2009, of `The GNU -Bash Reference Manual', for `Bash', Version 4.1. - - Bash contains features that appear in other popular shells, and some -features that only appear in Bash. Some of the shells that Bash has -borrowed concepts from are the Bourne Shell (`sh'), the Korn Shell -(`ksh'), and the C-shell (`csh' and its successor, `tcsh'). The -following menu breaks the features up into categories based upon which -one of these other shells inspired the feature. - - This manual is meant as a brief introduction to features found in -Bash. The Bash manual page should be used as the definitive reference -on shell behavior. - -* Menu: - -* Introduction:: An introduction to the shell. -* Definitions:: Some definitions used in the rest of this - manual. -* Basic Shell Features:: The shell "building blocks". -* Shell Builtin Commands:: Commands that are a part of the shell. -* Shell Variables:: Variables used or set by Bash. -* Bash Features:: Features found only in Bash. -* Job Control:: What job control is and how Bash allows you - to use it. -* Command Line Editing:: Chapter describing the command line - editing features. -* Using History Interactively:: Command History Expansion -* Installing Bash:: How to build and install Bash on your system. -* Reporting Bugs:: How to report bugs in Bash. -* Major Differences From The Bourne Shell:: A terse list of the differences - between Bash and historical - versions of /bin/sh. -* GNU Free Documentation License:: Copying and sharing this documentation. -* Indexes:: Various indexes for this manual. - - -File: bash.info, Node: Introduction, Next: Definitions, Prev: Top, Up: Top - -1 Introduction -************** - -* Menu: - -* What is Bash?:: A short description of Bash. -* What is a shell?:: A brief introduction to shells. - - -File: bash.info, Node: What is Bash?, Next: What is a shell?, Up: Introduction - -1.1 What is Bash? -================= - -Bash is the shell, or command language interpreter, for the GNU -operating system. The name is an acronym for the `Bourne-Again SHell', -a pun on Stephen Bourne, the author of the direct ancestor of the -current Unix shell `sh', which appeared in the Seventh Edition Bell -Labs Research version of Unix. - - Bash is largely compatible with `sh' and incorporates useful -features from the Korn shell `ksh' and the C shell `csh'. It is -intended to be a conformant implementation of the IEEE POSIX Shell and -Tools portion of the IEEE POSIX specification (IEEE Standard 1003.1). -It offers functional improvements over `sh' for both interactive and -programming use. - - While the GNU operating system provides other shells, including a -version of `csh', Bash is the default shell. Like other GNU software, -Bash is quite portable. It currently runs on nearly every version of -Unix and a few other operating systems - independently-supported ports -exist for MS-DOS, OS/2, and Windows platforms. - - -File: bash.info, Node: What is a shell?, Prev: What is Bash?, Up: Introduction - -1.2 What is a shell? -==================== - -At its base, a shell is simply a macro processor that executes -commands. The term macro processor means functionality where text and -symbols are expanded to create larger expressions. - - A Unix shell is both a command interpreter and a programming -language. As a command interpreter, the shell provides the user -interface to the rich set of GNU utilities. The programming language -features allow these utilities to be combined. Files containing -commands can be created, and become commands themselves. These new -commands have the same status as system commands in directories such as -`/bin', allowing users or groups to establish custom environments to -automate their common tasks. - - Shells may be used interactively or non-interactively. In -interactive mode, they accept input typed from the keyboard. When -executing non-interactively, shells execute commands read from a file. - - A shell allows execution of GNU commands, both synchronously and -asynchronously. The shell waits for synchronous commands to complete -before accepting more input; asynchronous commands continue to execute -in parallel with the shell while it reads and executes additional -commands. The "redirection" constructs permit fine-grained control of -the input and output of those commands. Moreover, the shell allows -control over the contents of commands' environments. - - Shells also provide a small set of built-in commands ("builtins") -implementing functionality impossible or inconvenient to obtain via -separate utilities. For example, `cd', `break', `continue', and -`exec') cannot be implemented outside of the shell because they -directly manipulate the shell itself. The `history', `getopts', -`kill', or `pwd' builtins, among others, could be implemented in -separate utilities, but they are more convenient to use as builtin -commands. All of the shell builtins are described in subsequent -sections. - - While executing commands is essential, most of the power (and -complexity) of shells is due to their embedded programming languages. -Like any high-level language, the shell provides variables, flow -control constructs, quoting, and functions. - - Shells offer features geared specifically for interactive use rather -than to augment the programming language. These interactive features -include job control, command line editing, command history and aliases. -Each of these features is described in this manual. - - -File: bash.info, Node: Definitions, Next: Basic Shell Features, Prev: Introduction, Up: Top - -2 Definitions -************* - -These definitions are used throughout the remainder of this manual. - -`POSIX' - A family of open system standards based on Unix. Bash is - primarily concerned with the Shell and Utilities portion of the - POSIX 1003.1 standard. - -`blank' - A space or tab character. - -`builtin' - A command that is implemented internally by the shell itself, - rather than by an executable program somewhere in the file system. - -`control operator' - A `token' that performs a control function. It is a `newline' or - one of the following: `||', `&&', `&', `;', `;;', `|', `|&', `(', - or `)'. - -`exit status' - The value returned by a command to its caller. The value is - restricted to eight bits, so the maximum value is 255. - -`field' - A unit of text that is the result of one of the shell expansions. - After expansion, when executing a command, the resulting fields - are used as the command name and arguments. - -`filename' - A string of characters used to identify a file. - -`job' - A set of processes comprising a pipeline, and any processes - descended from it, that are all in the same process group. - -`job control' - A mechanism by which users can selectively stop (suspend) and - restart (resume) execution of processes. - -`metacharacter' - A character that, when unquoted, separates words. A metacharacter - is a `blank' or one of the following characters: `|', `&', `;', - `(', `)', `<', or `>'. - -`name' - A `word' consisting solely of letters, numbers, and underscores, - and beginning with a letter or underscore. `Name's are used as - shell variable and function names. Also referred to as an - `identifier'. - -`operator' - A `control operator' or a `redirection operator'. *Note - Redirections::, for a list of redirection operators. Operators - contain at least one unquoted `metacharacter'. - -`process group' - A collection of related processes each having the same process - group ID. - -`process group ID' - A unique identifier that represents a `process group' during its - lifetime. - -`reserved word' - A `word' that has a special meaning to the shell. Most reserved - words introduce shell flow control constructs, such as `for' and - `while'. - -`return status' - A synonym for `exit status'. - -`signal' - A mechanism by which a process may be notified by the kernel of an - event occurring in the system. - -`special builtin' - A shell builtin command that has been classified as special by the - POSIX standard. - -`token' - A sequence of characters considered a single unit by the shell. - It is either a `word' or an `operator'. - -`word' - A sequence of characters treated as a unit by the shell. Words - may not include unquoted `metacharacters'. - - -File: bash.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Prev: Definitions, Up: Top - -3 Basic Shell Features -********************** - -Bash is an acronym for `Bourne-Again SHell'. The Bourne shell is the -traditional Unix shell originally written by Stephen Bourne. All of -the Bourne shell builtin commands are available in Bash, The rules for -evaluation and quoting are taken from the POSIX specification for the -`standard' Unix shell. - - This chapter briefly summarizes the shell's `building blocks': -commands, control structures, shell functions, shell parameters, shell -expansions, redirections, which are a way to direct input and output -from and to named files, and how the shell executes commands. - -* Menu: - -* Shell Syntax:: What your input means to the shell. -* Shell Commands:: The types of commands you can use. -* Shell Functions:: Grouping commands by name. -* Shell Parameters:: How the shell stores values. -* Shell Expansions:: How Bash expands parameters and the various - expansions available. -* Redirections:: A way to control where input and output go. -* Executing Commands:: What happens when you run a command. -* Shell Scripts:: Executing files of shell commands. - - -File: bash.info, Node: Shell Syntax, Next: Shell Commands, Up: Basic Shell Features - -3.1 Shell Syntax -================ - -* Menu: - -* Shell Operation:: The basic operation of the shell. -* Quoting:: How to remove the special meaning from characters. -* Comments:: How to specify comments. - - When the shell reads input, it proceeds through a sequence of -operations. If the input indicates the beginning of a comment, the -shell ignores the comment symbol (`#'), and the rest of that line. - - Otherwise, roughly speaking, the shell reads its input and divides -the input into words and operators, employing the quoting rules to -select which meanings to assign various words and characters. - - The shell then parses these tokens into commands and other -constructs, removes the special meaning of certain words or characters, -expands others, redirects input and output as needed, executes the -specified command, waits for the command's exit status, and makes that -exit status available for further inspection or processing. - - -File: bash.info, Node: Shell Operation, Next: Quoting, Up: Shell Syntax - -3.1.1 Shell Operation ---------------------- - -The following is a brief description of the shell's operation when it -reads and executes a command. Basically, the shell does the following: - - 1. Reads its input from a file (*note Shell Scripts::), from a string - supplied as an argument to the `-c' invocation option (*note - Invoking Bash::), or from the user's terminal. - - 2. Breaks the input into words and operators, obeying the quoting - rules described in *note Quoting::. These tokens are separated by - `metacharacters'. Alias expansion is performed by this step - (*note Aliases::). - - 3. Parses the tokens into simple and compound commands (*note Shell - Commands::). - - 4. Performs the various shell expansions (*note Shell Expansions::), - breaking the expanded tokens into lists of filenames (*note - Filename Expansion::) and commands and arguments. - - 5. Performs any necessary redirections (*note Redirections::) and - removes the redirection operators and their operands from the - argument list. - - 6. Executes the command (*note Executing Commands::). - - 7. Optionally waits for the command to complete and collects its exit - status (*note Exit Status::). - - - -File: bash.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up: Shell Syntax - -3.1.2 Quoting -------------- - -* Menu: - -* Escape Character:: How to remove the special meaning from a single - character. -* Single Quotes:: How to inhibit all interpretation of a sequence - of characters. -* Double Quotes:: How to suppress most of the interpretation of a - sequence of characters. -* ANSI-C Quoting:: How to expand ANSI-C sequences in quoted strings. -* Locale Translation:: How to translate strings into different languages. - - Quoting 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 shell metacharacters (*note Definitions::) has special -meaning to the shell and must be quoted if it is to represent itself. -When the command history expansion facilities are being used (*note -History Interaction::), the HISTORY EXPANSION character, usually `!', -must be quoted to prevent history expansion. *Note Bash History -Facilities::, for more details concerning history expansion. - - There are three quoting mechanisms: the ESCAPE CHARACTER, single -quotes, and double quotes. - - -File: bash.info, Node: Escape Character, Next: Single Quotes, Up: Quoting - -3.1.2.1 Escape Character -........................ - -A non-quoted backslash `\' is the Bash escape character. It preserves -the literal value of the next character that follows, with the -exception of `newline'. If a `\newline' pair appears, and the -backslash itself is not quoted, the `\newline' is treated as a line -continuation (that is, it is removed from the input stream and -effectively ignored). - - -File: bash.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Character, Up: Quoting - -3.1.2.2 Single Quotes -..................... - -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. - - -File: bash.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Quotes, Up: Quoting - -3.1.2.3 Double Quotes -..................... - -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, `!'. The characters `$' -and ``' retain their special meaning within double quotes (*note Shell -Expansions::). The backslash retains its special meaning only when -followed by one of the following characters: `$', ``', `"', `\', or -`newline'. Within double quotes, backslashes that are followed by one -of these characters are removed. Backslashes preceding characters -without a special meaning are left unmodified. 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 quotes (*note Shell Parameter Expansion::). - - -File: bash.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Double Quotes, Up: Quoting - -3.1.2.4 ANSI-C Quoting -...................... - -Words of the form `$'STRING'' are treated specially. The word expands -to STRING, with backslash-escaped characters replaced as specified by -the ANSI C standard. Backslash escape sequences, if present, are -decoded as follows: - -`\a' - alert (bell) - -`\b' - backspace - -`\e' - an escape character (not ANSI C) - -`\f' - form feed - -`\n' - newline - -`\r' - carriage return - -`\t' - horizontal tab - -`\v' - vertical tab - -`\\' - backslash - -`\'' - single quote - -`\NNN' - the eight-bit character whose value is the octal value NNN (one to - three digits) - -`\xHH' - the eight-bit character whose value is the hexadecimal value HH - (one or two hex digits) - -`\cX' - a control-X character - -The expanded result is single-quoted, as if the dollar sign had not -been present. - - -File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting - -3.1.2.5 Locale-Specific Translation -................................... - -A double-quoted string preceded by a dollar sign (`$') will cause the -string to be translated according to the current locale. If the -current locale is `C' or `POSIX', the dollar sign is ignored. If the -string is translated and replaced, the replacement is double-quoted. - - Some systems use the message catalog selected by the `LC_MESSAGES' -shell variable. Others create the name of the message catalog from the -value of the `TEXTDOMAIN' shell variable, possibly adding a suffix of -`.mo'. If you use the `TEXTDOMAIN' variable, you may need to set the -`TEXTDOMAINDIR' variable to the location of the message catalog files. -Still others use both variables in this fashion: -`TEXTDOMAINDIR'/`LC_MESSAGES'/LC_MESSAGES/`TEXTDOMAIN'.mo. - - -File: bash.info, Node: Comments, Prev: Quoting, Up: Shell Syntax - -3.1.3 Comments --------------- - -In a non-interactive shell, or an interactive shell in which the -`interactive_comments' option to the `shopt' builtin is enabled (*note -The Shopt Builtin::), a word beginning with `#' causes that word and -all remaining characters on that line to be ignored. An interactive -shell without the `interactive_comments' option enabled does not allow -comments. The `interactive_comments' option is on by default in -interactive shells. *Note Interactive Shells::, for a description of -what makes a shell interactive. - - -File: bash.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell Syntax, Up: Basic Shell Features - -3.2 Shell Commands -================== - -A simple shell command such as `echo a b c' consists of the command -itself followed by arguments, separated by spaces. - - More complex shell commands are composed of simple commands arranged -together in a variety of ways: in a pipeline in which the output of one -command becomes the input of a second, in a loop or conditional -construct, or in some other grouping. - -* Menu: - -* Simple Commands:: The most common type of command. -* Pipelines:: Connecting the input and output of several - commands. -* Lists:: How to execute commands sequentially. -* Compound Commands:: Shell commands for control flow. -* Coprocesses:: Two-way communication between commands. - - -File: bash.info, Node: Simple Commands, Next: Pipelines, Up: Shell Commands - -3.2.1 Simple Commands ---------------------- - -A simple command is the kind of command encountered most often. It's -just a sequence of words separated by `blank's, terminated by one of -the shell's control operators (*note Definitions::). The first word -generally specifies a command to be executed, with the rest of the -words being that command's arguments. - - The return status (*note Exit Status::) of a simple command is its -exit status as provided by the POSIX 1003.1 `waitpid' function, or -128+N if the command was terminated by signal N. - - -File: bash.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands - -3.2.2 Pipelines ---------------- - -A `pipeline' is a sequence of simple commands separated by one of the -control operators `|' or `|&'. - - The format for a pipeline is - [`time' [`-p']] [`!'] COMMAND1 [ [`|' or `|&'] COMMAND2 ...] - -The output of each command in the pipeline is connected via a pipe to -the input of the next command. That is, each command reads the -previous command's output. This connection is performed before any -redirections specified by the command. - - If `|&' is used, the standard error of COMMAND1 is connected to -COMMAND2's standard input through the pipe; it is shorthand for `2>&1 -|'. This implicit redirection of the standard error is performed after -any redirections specified by the command. - - The reserved word `time' causes timing statistics to be printed for -the pipeline once it finishes. The statistics currently consist of -elapsed (wall-clock) time and user and system time consumed by the -command's execution. The `-p' option changes the output format to that -specified by POSIX. The `TIMEFORMAT' variable may be set to a format -string that specifies how the timing information should be displayed. -*Note Bash Variables::, for a description of the available formats. -The use of `time' as a reserved word permits the timing of shell -builtins, shell functions, and pipelines. An external `time' command -cannot time these easily. - - 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. - - -File: bash.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands - -3.2.3 Lists of Commands ------------------------ - -A `list' is a sequence of one or more pipelines separated by one of the -operators `;', `&', `&&', or `||', and optionally terminated by one of -`;', `&', or a `newline'. - - Of these list operators, `&&' and `||' have equal precedence, -followed by `;' and `&', which have equal precedence. - - A sequence of one or more newlines may appear in a `list' to delimit -commands, equivalent to a semicolon. - - If a command is terminated by the control operator `&', the shell -executes the command asynchronously in a subshell. This is known as -executing the command in the BACKGROUND. The shell does not wait for -the command to finish, and the return status is 0 (true). When job -control is not active (*note Job Control::), the standard input for -asynchronous commands, in the absence of any explicit redirections, is -redirected from `/dev/null'. - - Commands separated by a `;' are executed sequentially; the shell -waits for each command to terminate in turn. The return status is the -exit status of the last command executed. - - AND and OR lists are sequences of one or more pipelines separated by -the control operators `&&' and `||', respectively. AND and OR lists -are executed with left associativity. - - An AND list has the form - COMMAND1 && COMMAND2 - -COMMAND2 is executed if, and only if, COMMAND1 returns an exit status -of zero. - - An OR list has the form - COMMAND1 || COMMAND2 - -COMMAND2 is executed if, and only if, COMMAND1 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. - - -File: bash.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up: Shell Commands - -3.2.4 Compound Commands ------------------------ - -* Menu: - -* Looping Constructs:: Shell commands for iterative action. -* 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. - - Bash provides looping constructs, conditional commands, and -mechanisms to group commands and execute them as a unit. - - -File: bash.info, Node: Looping Constructs, Next: Conditional Constructs, Up: Compound Commands - -3.2.4.1 Looping Constructs -.......................... - -Bash supports the following looping constructs. - - Note that wherever a `;' appears in the description of a command's -syntax, it may be replaced with one or more newlines. - -`until' - The syntax of the `until' command is: - until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done - Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit - status which is not zero. The return status is the exit status of - the last command executed in CONSEQUENT-COMMANDS, or zero if none - was executed. - -`while' - The syntax of the `while' command is: - while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done - - Execute CONSEQUENT-COMMANDS as long as TEST-COMMANDS has an exit - status of zero. The return status is the exit status of the last - command executed in CONSEQUENT-COMMANDS, or zero if none was - executed. - -`for' - The syntax of the `for' command is: - - for 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. - - An alternate form of the `for' command is also supported: - - for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done - First, the arithmetic expression EXPR1 is evaluated according to - the rules described below (*note Shell Arithmetic::). The - arithmetic expression EXPR2 is then evaluated repeatedly until it - evaluates to zero. Each time EXPR2 evaluates to a non-zero value, - COMMANDS are executed and the arithmetic expression EXPR3 is - evaluated. If any expression is omitted, it behaves as if it - evaluates to 1. The return value is the exit status of the last - command in LIST that is executed, or false if any of the - expressions is invalid. - - - The `break' and `continue' builtins (*note Bourne Shell Builtins::) -may be used to control loop execution. - - -File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: Looping Constructs, Up: Compound Commands - -3.2.4.2 Conditional Constructs -.............................. - -`if' - The syntax of the `if' command is: - - if TEST-COMMANDS; then - CONSEQUENT-COMMANDS; - [elif MORE-TEST-COMMANDS; then - MORE-CONSEQUENTS;] - [else ALTERNATE-CONSEQUENTS;] - fi - - The TEST-COMMANDS list is executed, and if its return status is - zero, the CONSEQUENT-COMMANDS list is executed. If TEST-COMMANDS - returns a non-zero status, each `elif' list is executed in turn, - and if its exit status is zero, the corresponding MORE-CONSEQUENTS - is executed and the command completes. If `else - ALTERNATE-CONSEQUENTS' is present, and the final command in the - final `if' or `elif' clause has a non-zero exit status, then - ALTERNATE-CONSEQUENTS is executed. The return status is the exit - status of the last command executed, or zero if no condition - tested true. - -`case' - The syntax of the `case' command is: - - `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 shell option - `nocasematch' (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. - - There may be an arbitrary number of `case' clauses, each terminated - by a `;;', `;&', or `;;&'. The first pattern that matches - determines the command-list that is executed. - - Here is an example using `case' in a script that could be used to - describe one interesting feature of an animal: - - echo -n "Enter the name of an animal: " - read ANIMAL - echo -n "The $ANIMAL has " - case $ANIMAL in - horse | dog | cat) echo -n "four";; - man | kangaroo ) echo -n "two";; - *) echo -n "an unknown number of";; - esac - echo " legs." - - 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 COMMAND-LIST associated with - the next clause, if any. Using `;;&' in place of `;;' causes the - shell to test the patterns in the next clause, if any, and execute - any associated COMMAND-LIST on a successful match. - - The return status is zero if no PATTERN is matched. Otherwise, the - return status is the exit status of the COMMAND-LIST executed. - -`select' - The `select' construct allows the easy generation of menus. It - has almost the same syntax as the `for' command: - - select NAME [in WORDS ...]; do COMMANDS; done - - The list of words following `in' is expanded, generating a list of - items. The set of expanded words is printed on the standard error - output stream, each preceded by a number. If the `in WORDS' is - omitted, the positional parameters are printed, as if `in "$@"' - had been specified. The `PS3' prompt is then displayed and a line - is read from the standard input. If the line consists of a number - corresponding to one of the displayed words, then the value of - NAME is set to that word. If the line is empty, the words and - prompt are displayed again. If `EOF' is read, the `select' - command completes. Any other value read causes NAME to be set to - null. The line read is saved in the variable `REPLY'. - - The COMMANDS are executed after each selection until a `break' - command is executed, at which point the `select' command completes. - - Here is an example that allows the user to pick a filename from the - current directory, and displays the name and index of the file - selected. - - select fname in *; - do - echo you picked $fname \($REPLY\) - break; - done - -`((...))' - (( EXPRESSION )) - - The arithmetic EXPRESSION is evaluated according to the rules - described below (*note Shell Arithmetic::). If the value of the - expression is non-zero, the return status is 0; otherwise the - return status is 1. This is exactly equivalent to - let "EXPRESSION" - *Note Bash Builtins::, for a full description of the `let' builtin. - -`[[...]]' - [[ EXPRESSION ]] - - Return a status of 0 or 1 depending on the evaluation of the - conditional expression EXPRESSION. Expressions are composed of - the primaries described below in *note Bash Conditional - Expressions::. Word splitting and filename expansion are not - performed on the words between the `[[' and `]]'; tilde expansion, - parameter and variable expansion, arithmetic expansion, command - substitution, process substitution, and quote removal are - performed. Conditional operators such as `-f' must be unquoted to - be recognized as primaries. - - When the `==' and `!=' operators are used, the string to the right - of the operator is considered a pattern and matched according to - the rules described below in *note Pattern Matching::. If the - shell option `nocasematch' (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 return - value is 0 if the string matches (`==') or does not match - (`!=')the pattern, and 1 otherwise. Any part of the pattern may - be quoted to force it to be matched as a string. - - An additional binary operator, `=~', is available, with the same - precedence as `==' and `!='. When it is used, the string to the - right of the operator is considered an extended regular expression - and matched accordingly (as in regex3)). The return value is 0 if - the string matches the pattern, and 1 otherwise. If the regular - expression is syntactically incorrect, the conditional - expression's return value is 2. If the shell option `nocasematch' - (see the description of `shopt' in *note The Shopt Builtin::) is - enabled, the match is performed without regard to the case of - alphabetic characters. Any part of the pattern may be quoted to - force it to be matched as a string. Substrings matched by - parenthesized subexpressions within the regular expression are - saved in the array variable `BASH_REMATCH'. The element of - `BASH_REMATCH' with index 0 is the portion of the string matching - the entire regular expression. The element of `BASH_REMATCH' with - index N is the portion of the string matching the Nth - parenthesized subexpression. - - Expressions may be combined using the following operators, listed - in decreasing order of precedence: - - `( EXPRESSION )' - Returns the value of EXPRESSION. This may be used to - override the normal precedence of operators. - - `! EXPRESSION' - True if EXPRESSION is false. - - `EXPRESSION1 && EXPRESSION2' - True if both EXPRESSION1 and EXPRESSION2 are true. - - `EXPRESSION1 || EXPRESSION2' - True if either EXPRESSION1 or EXPRESSION2 is true. - The `&&' and `||' operators do not evaluate EXPRESSION2 if the - value of EXPRESSION1 is sufficient to determine the return value - of the entire conditional expression. - - - -File: bash.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands - -3.2.4.3 Grouping Commands -......................... - -Bash provides two ways to group a list of commands to be executed as a -unit. When commands are grouped, redirections may be applied to the -entire command list. For example, the output of all the commands in -the list may be redirected to a single stream. - -`()' - ( LIST ) - - Placing a list of commands between parentheses causes a subshell - environment to be created (*note Command Execution Environment::), - and each of the commands in LIST to be executed in that subshell. - Since the LIST is executed in a subshell, variable assignments do - not remain in effect after the subshell completes. - -`{}' - { LIST; } - - Placing a list of commands between curly braces causes the list to - be executed in the current shell context. No subshell is created. - The semicolon (or newline) following LIST is required. - - In addition to the creation of a subshell, there is a subtle -difference between these two constructs due to historical reasons. The -braces are `reserved words', so they must be separated from the LIST by -`blank's or other shell metacharacters. The parentheses are -`operators', and are recognized as separate tokens by the shell even if -they are not separated from the LIST by whitespace. - - The exit status of both of these constructs is the exit status of -LIST. - - -File: bash.info, Node: Coprocesses, Prev: Compound Commands, Up: Shell Commands - -3.2.5 Coprocesses ------------------ - -A `coprocess' is a shell command preceded by the `coproc' reserved word. -A coprocess is executed asynchronously in a subshell, as if the command -had been terminated with the `&' control operator, with a two-way pipe -established between the executing shell and the coprocess. - - The format for a coprocess is: - `coproc' [NAME] COMMAND [REDIRECTIONS] - -This creates a coprocess named NAME. If NAME is not supplied, the -default name is COPROC. NAME must not be supplied if COMMAND is a -simple command (*note Simple Commands::); otherwise, it is interpreted -as the first word of the simple command. - - When the coproc is executed, the shell creates an array variable -(*note Arrays::) named NAME in the context of the executing shell. The -standard output of COMMAND is connected via a pipe to a file descriptor -in the executing shell, and that file descriptor is assigned to NAME[0]. -The standard input of COMMAND is connected via a pipe to a file -descriptor in the executing shell, and that file descriptor is assigned -to NAME[1]. This pipe is established before any redirections specified -by the command (*note Redirections::). The file descriptors can be -utilized as arguments to shell commands and redirections using standard -word expansions. - - The process id of the shell spawned to execute the coprocess is -available as the value of the variable NAME_PID. The `wait' builtin -command may be used to wait for the coprocess to terminate. - - The return status of a coprocess is the exit status of COMMAND. - - -File: bash.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features - -3.3 Shell Functions -=================== - -Shell functions are a way to group commands for later execution using a -single name for the group. They are executed just like a "regular" -command. 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. Shell functions are executed in the current shell context; -no new process is created to interpret them. - - Functions are declared using this syntax: - [ `function' ] NAME () COMPOUND-COMMAND [ REDIRECTIONS ] - - This defines a shell function named NAME. The reserved word -`function' is optional. If the `function' reserved word is supplied, -the parentheses are optional. The BODY of the function is the compound -command COMPOUND-COMMAND (*note Compound Commands::). That command is -usually a LIST enclosed between { and }, but may be any compound -command listed above. COMPOUND-COMMAND is executed whenever NAME is -specified as the name of a command. Any redirections (*note -Redirections::) associated with the shell function are performed when -the function is executed. - - A function definition may be deleted using the `-f' option to the -`unset' builtin (*note Bourne Shell Builtins::). - - The exit status of a function definition is zero unless a syntax -error occurs or a readonly function with the same name already exists. -When executed, the exit status of a function is the exit status of the -last command executed in the body. - - Note that for historical reasons, in the most common usage the curly -braces that surround the body of the function must be separated from -the body by `blank's or newlines. This is because the braces are -reserved words and are only recognized as such when they are separated -from the command list by whitespace or another shell metacharacter. -Also, when using the braces, the LIST must be terminated by a semicolon, -a `&', or a newline. - - When a function is executed, the arguments to the function become -the positional parameters during its execution (*note Positional -Parameters::). The special parameter `#' that expands to the number of -positional parameters is updated to reflect the change. Special -parameter `0' is unchanged. The first element of the `FUNCNAME' -variable is set to the name of the function 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 `DEBUG' -and `RETURN' traps are not inherited unless the function has been given -the `trace' attribute using the `declare' builtin or the `-o functrace' -option has been enabled with the `set' builtin, (in which case all -functions inherit the `DEBUG' and `RETURN' traps), and the `ERR' trap -is not inherited unless the `-o errtrace' shell option has been enabled. -*Note Bourne Shell Builtins::, for the description of the `trap' -builtin. - - If the builtin command `return' is executed in a function, the -function completes and execution resumes with the next command after -the function call. Any command associated with the `RETURN' trap is -executed before execution resumes. When a function completes, the -values of the positional parameters and the special parameter `#' are -restored to the values they had prior to the function's execution. If -a numeric argument is given to `return', that is the function's return -status; otherwise the function's return status is the exit status of -the last command executed before the `return'. - - Variables local to the function may be declared with the `local' -builtin. These variables are visible only to the function and the -commands it invokes. - - Function names and definitions may be listed with the `-f' option to -the `declare' or `typeset' builtin commands (*note Bash Builtins::). -The `-F' option to `declare' or `typeset' will list the function names -only (and optionally the source file and line number, if the `extdebug' -shell option is enabled). Functions may be exported so that subshells -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. - - Functions may be recursive. No limit is placed on the number of -recursive calls. - - -File: bash.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell Functions, Up: Basic Shell Features - -3.4 Shell Parameters -==================== - -* Menu: - -* Positional Parameters:: The shell's command-line arguments. -* Special Parameters:: Parameters denoted by special characters. - - A PARAMETER is an entity that stores values. It can be a `name', a -number, or one of the special characters listed below. A VARIABLE is a -parameter denoted by a `name'. A variable has a VALUE and zero or more -ATTRIBUTES. Attributes are assigned using the `declare' builtin command -(see the description of the `declare' builtin in *note Bash Builtins::). - - A parameter is 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 -the `unset' builtin command. - - A variable may be assigned to by a statement of the form - NAME=[VALUE] - If VALUE is not given, the variable is assigned the null string. All -VALUEs undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote removal (detailed -below). If the variable has its `integer' attribute set, then VALUE is -evaluated as an arithmetic expression even if the `$((...))' expansion -is not used (*note Arithmetic Expansion::). Word splitting is not -performed, with the exception of `"$@"' as explained below. Filename -expansion is not performed. Assignment statements may also appear as -arguments to the `alias', `declare', `typeset', `export', `readonly', -and `local' builtin commands. - - In the context where an assignment statement is assigning a value to -a shell variable or array index (*note Arrays::), the `+=' operator can -be used to append to or add to the variable's previous value. When -`+=' is applied to a variable for which the integer attribute has been -set, VALUE is evaluated as an arithmetic expression and added to the -variable's current value, which is also evaluated. When `+=' is -applied to an array variable using compound assignment (*note -Arrays::), the 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, VALUE is expanded and appended to the -variable's value. - - -File: bash.info, Node: Positional Parameters, Next: Special Parameters, Up: Shell Parameters - -3.4.1 Positional Parameters ---------------------------- - -A POSITIONAL PARAMETER is a parameter denoted by one or more digits, -other than the single digit `0'. Positional parameters are assigned -from the shell's arguments when it is invoked, and may be reassigned -using the `set' builtin command. Positional parameter `N' may be -referenced as `${N}', or as `$N' when `N' consists of a single digit. -Positional parameters may not be assigned to with assignment statements. -The `set' and `shift' builtins are used to set and unset them (*note -Shell Builtin Commands::). The positional parameters are temporarily -replaced when a shell function is executed (*note Shell Functions::). - - When a positional parameter consisting of more than a single digit -is expanded, it must be enclosed in braces. - - -File: bash.info, Node: Special Parameters, Prev: Positional Parameters, Up: Shell Parameters - -3.4.2 Special Parameters ------------------------- - -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 occurs within double quotes, it expands to a single word - with the value of each parameter separated by the first character - of the `IFS' special variable. That is, `"$*"' is equivalent to - `"$1C$2C..."', where C is the first character of the value of the - `IFS' variable. If `IFS' is unset, the parameters are separated - by spaces. If `IFS' is null, the parameters are joined without - intervening separators. - -`@' - Expands to the positional parameters, starting from one. When the - expansion occurs within double quotes, each parameter expands to a - separate word. That is, `"$@"' is equivalent to `"$1" "$2" ...'. - If the double-quoted expansion occurs within a word, the expansion - of the first parameter is joined with the beginning part of the - original word, and the expansion of the last parameter is joined - with the last part of the original word. When there are no - positional parameters, `"$@"' and `$@' expand to nothing (i.e., - they are removed). - -`#' - Expands to the number of positional parameters in decimal. - -`?' - Expands to the exit status of the most recently executed foreground - pipeline. - -`-' - (A hyphen.) Expands to the current option flags as specified upon - invocation, by the `set' builtin command, or those set by the - shell itself (such as the `-i' option). - -`$' - Expands to the process ID of the shell. In a `()' subshell, it - expands to the process ID of the invoking shell, not the subshell. - -`!' - Expands to the process ID of the most recently executed background - (asynchronous) command. - -`0' - Expands to the name of the shell or shell script. This is set at - shell initialization. If Bash is invoked with a file of commands - (*note Shell Scripts::), `$0' is set to the name of that file. If - Bash is started with the `-c' option (*note Invoking Bash::), then - `$0' 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 Bash, as given by argument zero. - -`_' - (An underscore.) At shell startup, set to the absolute pathname - used to invoke the shell or shell script being executed as passed - in the environment or argument list. Subsequently, expands to the - last argument to the previous command, after expansion. Also set - to the full pathname used to invoke each command executed and - placed in the environment exported to that command. When checking - mail, this parameter holds the name of the mail file. - - -File: bash.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features - -3.5 Shell Expansions -==================== - -Expansion is performed on the command line after it has been split into -`token's. There are seven kinds of expansion performed: - * brace expansion - - * tilde expansion - - * parameter and variable expansion - - * command substitution - - * arithmetic expansion - - * word splitting - - * filename expansion - -* Menu: - -* Brace Expansion:: Expansion of expressions within braces. -* Tilde Expansion:: Expansion of the ~ character. -* Shell Parameter Expansion:: How Bash expands variables to their values. -* Command Substitution:: Using the output of a command as an argument. -* Arithmetic Expansion:: How to use arithmetic in shell expansions. -* Process Substitution:: A way to write and read to and from a - command. -* Word Splitting:: How the results of expansion are split into separate - arguments. -* Filename Expansion:: A shorthand for specifying filenames matching patterns. -* Quote Removal:: How and when quote characters are removed from - words. - - The order of expansions is: brace expansion, tilde expansion, -parameter, variable, and arithmetic expansion and command substitution -(done in a left-to-right fashion), word splitting, and filename -expansion. - - On systems that can support it, there is an additional expansion -available: PROCESS SUBSTITUTION. This is performed at the same time as -parameter, variable, and arithmetic expansion and command substitution. - - Only brace expansion, word splitting, and filename 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 `"$@"' (*note Special Parameters::) and `"${NAME[@]}"' -(*note Arrays::). - - After all expansions, `quote removal' (*note Quote Removal::) is -performed. - - -File: bash.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell Expansions - -3.5.1 Brace Expansion ---------------------- - -Brace expansion is a mechanism by which arbitrary strings may be -generated. This mechanism is similar to FILENAME EXPANSION (*note -Filename Expansion::), but the file names generated need not exist. -Patterns to be brace expanded take the form of an optional PREAMBLE, -followed by either a series of comma-separated strings or a seqeunce -expression between a pair of braces, followed by an optional POSTSCRIPT. -The preamble is prefixed to each string contained within the braces, and -the postscript is then appended to each resulting string, expanding left -to right. - - Brace expansions may be nested. The results of each expanded string -are not sorted; left to right order is preserved. For example, - bash$ echo a{d,c,b}e - ade ace abe - - A sequence expression takes the form `{X..Y[..INCR]}', where X and Y -are either integers or single characters, and INCR, an optional -increment, is an integer. When integers are supplied, the expression -expands to each number between X and Y, inclusive. Supplied integers -may be prefixed with `0' to force each term to have the same width. -When either X or Y begins with a zero, the shell attempts to force all -generated terms to contain the same number of digits, zero-padding -where necessary. When characters are supplied, the expression expands -to each character lexicographically between X and Y, inclusive. Note -that both X and Y must be of the same type. When the increment is -supplied, it is used as the difference between each term. The default -increment is 1 or -1 as appropriate. - - Brace expansion is performed before any other expansions, and any -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 sequence -expression. Any incorrectly formed brace expansion is left unchanged. - - A { or `,' may be quoted with a backslash to prevent its being -considered part of a brace expression. To avoid conflicts with -parameter expansion, the string `${' is not considered eligible for -brace expansion. - - This construct is typically used as shorthand when the common prefix -of the strings to be generated is longer than in the above example: - mkdir /usr/local/src/bash/{old,new,dist,bugs} - or - chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} - - -File: bash.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, Prev: Brace Expansion, Up: Shell Expansions - -3.5.2 Tilde Expansion ---------------------- - -If a word begins with an unquoted tilde character (`~'), all of the -characters up to the first unquoted slash (or all characters, if there -is no unquoted slash) are considered a TILDE-PREFIX. If none of the -characters in the tilde-prefix are quoted, the characters in the -tilde-prefix following the tilde are treated as a possible LOGIN NAME. -If this login name is the null string, the tilde is replaced with the -value of the `HOME' shell variable. If `HOME' is unset, the home -directory of the user executing the shell is substituted instead. -Otherwise, the tilde-prefix is replaced with the home directory -associated with the specified login name. - - If the tilde-prefix is `~+', the value of the shell variable `PWD' -replaces the tilde-prefix. If the tilde-prefix is `~-', the value of -the shell variable `OLDPWD', if it is set, is substituted. - - If the characters 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 `dirs' builtin invoked with the characters -following tilde in the tilde-prefix as an argument (*note The Directory -Stack::). If the tilde-prefix, sans the tilde, consists of a number -without a leading `+' or `-', `+' is assumed. - - If the login name is invalid, or the tilde expansion fails, the word -is left unchanged. - - Each variable assignment is checked for unquoted tilde-prefixes -immediately following a `:' or the first `='. In these cases, tilde -expansion is also performed. Consequently, one may use file names with -tildes in assignments to `PATH', `MAILPATH', and `CDPATH', and the -shell assigns the expanded value. - - The following table shows how Bash treats unquoted tilde-prefixes: - -`~' - The value of `$HOME' - -`~/foo' - `$HOME/foo' - -`~fred/foo' - The subdirectory `foo' of the home directory of the user `fred' - -`~+/foo' - `$PWD/foo' - -`~-/foo' - `${OLDPWD-'~-'}/foo' - -`~N' - The string that would be displayed by `dirs +N' - -`~+N' - The string that would be displayed by `dirs +N' - -`~-N' - The string that would be displayed by `dirs -N' - - - -File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions - -3.5.3 Shell Parameter Expansion -------------------------------- - -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 -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 -embedded arithmetic expansion, command substitution, or parameter -expansion. - - The basic form of parameter expansion is ${PARAMETER}. The value of -PARAMETER is substituted. The braces are required when PARAMETER is a -positional parameter with more than one digit, or when PARAMETER is -followed by a character that is not to be interpreted as part of its -name. - - If the first character of PARAMETER is an exclamation point, a level -of variable indirection is introduced. Bash uses the value of the -variable formed from the rest of PARAMETER as the name of the variable; -this variable is then expanded and that value is used in the rest of -the substitution, rather than the value of PARAMETER itself. This is -known as `indirect expansion'. The 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. - - When not performing substring expansion, using the form described -below, Bash tests for a parameter that is unset or null. Omitting the -colon results in a test only for a parameter that is unset. Put -another way, if the colon is included, the operator tests for both -PARAMETER's existence and that its value is not null; if the colon is -omitted, the operator tests only for existence. - -`${PARAMETER:-WORD}' - If PARAMETER is unset or null, the expansion of WORD is - substituted. Otherwise, the value of PARAMETER is substituted. - -`${PARAMETER:=WORD}' - If PARAMETER is unset or null, the expansion of WORD is assigned - to PARAMETER. The value of PARAMETER is then substituted. - Positional parameters and special parameters may not be assigned to - in this way. - -`${PARAMETER:?WORD}' - If PARAMETER is null or unset, the expansion of WORD (or a message - to that effect if WORD is not present) is written to the standard - error and the shell, if it is not interactive, exits. Otherwise, - the value of PARAMETER is substituted. - -`${PARAMETER:+WORD}' - If PARAMETER is null or unset, nothing is substituted, otherwise - the expansion of WORD is substituted. - -`${PARAMETER:OFFSET}' -`${PARAMETER:OFFSET:LENGTH}' - Expands to up to LENGTH characters of PARAMETER starting at the - character specified by OFFSET. If LENGTH is omitted, expands to - the substring of PARAMETER starting at the character specified by - OFFSET. LENGTH and OFFSET are arithmetic expressions (*note Shell - Arithmetic::). This is referred to as Substring Expansion. - - LENGTH must evaluate to a number greater than or equal to zero. - If OFFSET evaluates to a number less than zero, the value is used - as an offset from the end of the value of PARAMETER. If PARAMETER - is `@', the result is LENGTH positional parameters beginning at - OFFSET. If PARAMETER is an indexed array name subscripted by `@' - or `*', the result is the LENGTH members of the array beginning - with `${PARAMETER[OFFSET]}'. A negative OFFSET is taken relative - to one greater than the maximum index of the specified array. - Substring expansion applied to an associative array produces - undefined results. - - Note that a negative offset must be separated from the colon by at - least one space to avoid being confused with the `:-' expansion. - Substring indexing is zero-based unless the positional parameters - are used, in which case the indexing starts at 1 by default. If - OFFSET is 0, and the positional parameters are used, `$@' is - prefixed to the list. - -`${!PREFIX*}' -`${!PREFIX@}' - Expands to the names of variables whose names begin with PREFIX, - separated by the first character of the `IFS' special variable. - When `@' is used and the expansion appears within double quotes, - each variable name expands to a separate word. - -`${!NAME[@]}' -`${!NAME[*]}' - If NAME is an array variable, expands to the list of array indices - (keys) assigned in NAME. If NAME is not an array, expands to 0 if - NAME is set and null otherwise. When `@' is used and the - expansion appears within double quotes, each key expands to a - separate word. - -`${#PARAMETER}' - The length in characters of the expanded value of PARAMETER is - substituted. If PARAMETER is `*' or `@', the value substituted is - the number of positional parameters. If PARAMETER is an array - name subscripted by `*' or `@', the value substituted is the - number of elements in the array. - -`${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. - -`${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 - 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 - 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/PATTERN/STRING}' - The PATTERN is expanded to produce a pattern just as in filename - expansion. PARAMETER is expanded and the longest match of PATTERN - against its value is replaced with STRING. 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 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}' -`${PARAMETER,PATTERN}' -`${PARAMETER,,PATTERN}' - This expansion modifies the case of alphabetic characters in - PARAMETER. The PATTERN is expanded to produce a pattern just as in - filename expansion. The `^' operator converts lowercase letters - matching PATTERN to uppercase; the `,' operator converts matching - uppercase letters to lowercase. The `^^' and `,,' expansions - convert each matched character in the expanded value; the `^' and - `,' expansions match and convert only the first character in the - expanded value. If PATTERN is omitted, it is treated like a `?', - which matches every character. If PARAMETER is `@' or `*', the - case modification operation is applied to each positional - parameter in turn, and the expansion is the resultant list. If - PARAMETER is an array variable subscripted with `@' or `*', the - case modification operation is applied to each member of the array - in turn, and the expansion is the resultant list. - - - -File: bash.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions - -3.5.4 Command Substitution --------------------------- - -Command substitution allows the output of a command to replace the -command itself. Command substitution occurs when a command is enclosed -as follows: - $(COMMAND) - or - `COMMAND` - -Bash performs the expansion by executing COMMAND and replacing the -command substitution with the standard output of the command, with any -trailing newlines deleted. Embedded newlines are not deleted, but they -may be removed during word splitting. The command substitution `$(cat -FILE)' can be replaced by the equivalent but faster `$(< FILE)'. - - When the old-style backquote form of substitution is used, backslash -retains its literal meaning except when followed by `$', ``', or `\'. -The first backquote not preceded by a backslash terminates the command -substitution. When using the `$(COMMAND)' form, all characters between -the parentheses make up the command; none are treated specially. - - Command substitutions may be nested. To nest when using the -backquoted form, escape the inner backquotes with backslashes. - - If the substitution appears within double quotes, word splitting and -filename expansion are not performed on the results. - - -File: bash.info, Node: Arithmetic Expansion, Next: Process Substitution, Prev: Command Substitution, Up: Shell Expansions - -3.5.5 Arithmetic Expansion --------------------------- - -Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic -expansion is: - - $(( EXPRESSION )) - - The expression is treated as if it were within double quotes, but a -double quote inside the parentheses is not treated specially. All -tokens in the expression undergo parameter expansion, command -substitution, and quote removal. Arithmetic expansions may be nested. - - The evaluation is performed according to the rules listed below -(*note Shell Arithmetic::). If the expression is invalid, Bash prints -a message indicating failure to the standard error and no substitution -occurs. - - -File: bash.info, Node: Process Substitution, Next: Word Splitting, Prev: Arithmetic Expansion, Up: Shell Expansions - -3.5.6 Process Substitution --------------------------- - -Process substitution is supported on systems that support named pipes -(FIFOs) or the `/dev/fd' method of naming open files. It takes the -form of - <(LIST) - or - >(LIST) - The process LIST is run with its input or output connected to a FIFO -or some file in `/dev/fd'. The name of this file is passed as an -argument to the current command as the result of the expansion. If the -`>(LIST)' form is used, writing to the file will provide input for -LIST. If the `<(LIST)' form is used, the file passed as an argument -should be read to obtain the output of LIST. Note that no space may -appear between the `<' or `>' and the left parenthesis, otherwise the -construct would be interpreted as a redirection. - - When available, process substitution is performed simultaneously with -parameter and variable expansion, command substitution, and arithmetic -expansion. - - -File: bash.info, Node: Word Splitting, Next: Filename Expansion, Prev: Process Substitution, Up: Shell Expansions - -3.5.7 Word Splitting --------------------- - -The shell scans the results of parameter expansion, command -substitution, and arithmetic expansion that did not occur within double -quotes for word splitting. - - The shell treats each character of `$IFS' as a delimiter, and splits -the results of the other expansions into words on these characters. If -`IFS' is unset, or its value is exactly `', the -default, then sequences of ` ', `', and `' at the -beginning and end of the results of the previous expansions are -ignored, and any sequence of `IFS' characters not at the beginning or -end serves to delimit words. If `IFS' has a value other than the -default, then sequences of the whitespace characters `space' and `tab' -are ignored at the beginning and end of the word, as long as the -whitespace character is in the value of `IFS' (an `IFS' whitespace -character). Any character in `IFS' that is not `IFS' whitespace, along -with any adjacent `IFS' whitespace characters, delimits a field. A -sequence of `IFS' whitespace characters is also treated as a delimiter. -If the value of `IFS' is null, no word splitting occurs. - - Explicit null arguments (`""' or `''') are retained. Unquoted -implicit null arguments, resulting from the expansion of parameters -that have no values, are removed. If a parameter with no value is -expanded within double quotes, a null argument results and is retained. - - Note that if no expansion occurs, no splitting is performed. - - -File: bash.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word Splitting, Up: Shell Expansions - -3.5.8 Filename Expansion ------------------------- - -* Menu: - -* Pattern Matching:: How the shell matches patterns. - - After word splitting, unless the `-f' option has been set (*note The -Set Builtin::), Bash scans each word for the characters `*', `?', and -`['. If one of these characters appears, then the word is regarded as -a PATTERN, and replaced with an alphabetically sorted list of file -names matching the pattern. If no matching file names are found, and -the shell option `nullglob' is disabled, the word is left unchanged. -If the `nullglob' option is set, and no matches are found, the word is -removed. If the `failglob' shell option is set, and no matches are -found, an error message is printed and the command is not executed. If -the shell option `nocaseglob' is enabled, the match is 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 file name, the slash character must always be matched -explicitly. In other cases, the `.' character is not treated specially. - - 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 -removed from the list of matches. The filenames `.' and `..' are -always ignored when `GLOBIGNORE' is set and not null. However, setting -`GLOBIGNORE' to a non-null value has the effect of enabling the -`dotglob' 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 `GLOBIGNORE'. The -`dotglob' option is disabled when `GLOBIGNORE' is unset. - - -File: bash.info, Node: Pattern Matching, Up: Filename Expansion - -3.5.8.1 Pattern Matching -........................ - -Any character that appears in a pattern, other than the special pattern -characters described below, matches itself. The NUL character may not -occur in a pattern. A backslash escapes the following character; the -escaping backslash is discarded when matching. The special pattern -characters must be quoted if they are to be matched literally. - - The special pattern characters have the following meanings: -`*' - Matches any string, including the null string. When the - `globstar' shell option is enabled, and `*' is used in a filename - expansion context, two adjacent `*'s used as a single pattern will - match all files and zero or more directories and subdirectories. - If followed by a `/', two adjacent `*'s will match only - directories and subdirectories. - -`?' - Matches any single character. - -`[...]' - Matches any one of the enclosed characters. A pair of characters - separated by a hyphen denotes a RANGE EXPRESSION; any character - that sorts between those two characters, inclusive, using the - current locale's collating sequence and character set, is matched. - If the first character following the `[' is a `!' or a `^' then - any character not enclosed is matched. A `-' may be matched by - including it as the first or last character in the set. A `]' may - be matched by including it as the first character in the set. The - sorting order of characters in range expressions is determined by - the current locale and the value of the `LC_COLLATE' shell - variable, if set. - - For example, in the default C locale, `[a-dx-z]' is equivalent to - `[abcdxyz]'. Many locales sort characters in dictionary order, - and in these locales `[a-dx-z]' is typically not equivalent to - `[abcdxyz]'; it might be equivalent to `[aBbCcDdxXyYz]', for - example. To obtain the traditional interpretation of ranges in - bracket expressions, you can force the use of the C locale by - setting the `LC_COLLATE' or `LC_ALL' environment variable to the - value `C'. - - Within `[' and `]', CHARACTER CLASSES can be specified using the - syntax `[:'CLASS`:]', where CLASS is one of the following classes - defined in the POSIX standard: - alnum alpha ascii blank cntrl digit graph lower - print punct space upper word xdigit - A character class matches any character belonging to that class. - The `word' character class matches letters, digits, and the - character `_'. - - Within `[' and `]', an EQUIVALENCE CLASS can be specified using - the syntax `[='C`=]', which matches all characters with the same - collation weight (as defined by the current locale) as the - character C. - - Within `[' and `]', the syntax `[.'SYMBOL`.]' matches the - collating symbol SYMBOL. - - If the `extglob' shell option is enabled using the `shopt' builtin, -several extended pattern matching operators are recognized. In the -following description, a PATTERN-LIST is a list of one or more patterns -separated by a `|'. Composite patterns may be formed using one or more -of the following sub-patterns: - -`?(PATTERN-LIST)' - Matches zero or one occurrence of the given patterns. - -`*(PATTERN-LIST)' - Matches zero or more occurrences of the given patterns. - -`+(PATTERN-LIST)' - Matches one or more occurrences of the given patterns. - -`@(PATTERN-LIST)' - Matches one of the given patterns. - -`!(PATTERN-LIST)' - Matches anything except one of the given patterns. - - -File: bash.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Expansions - -3.5.9 Quote Removal -------------------- - -After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not result from one of the above -expansions are removed. - - -File: bash.info, Node: Redirections, Next: Executing Commands, Prev: Shell Expansions, Up: Basic Shell Features - -3.6 Redirections -================ - -Before a command is executed, its input and output may be REDIRECTED -using a special notation interpreted by the shell. Redirection may -also be used to open and close files for the current shell execution -environment. The following redirection operators may precede or appear -anywhere within a simple command or may follow a command. Redirections -are processed in the order they appear, from left to right. - - Each redirection that may be preceded by a file descriptor number -may 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 -\fIvarname\fP. If >&- or <&- is preceded by {VARNAME}, the value of -{VARNAME} defines the file descriptor to close. - - In the following descriptions, if the file descriptor number is -omitted, and the first character of the redirection operator is `<', -the redirection refers to the standard input (file descriptor 0). If -the first character of the redirection operator is `>', the redirection -refers to the standard output (file descriptor 1). - - The word following the redirection operator in the following -descriptions, unless otherwise noted, is subjected to brace expansion, -tilde expansion, parameter expansion, command substitution, arithmetic -expansion, quote removal, filename expansion, and word splitting. If -it expands to more than one word, Bash reports an error. - - Note that the order of redirections is significant. For example, -the command - ls > DIRLIST 2>&1 - directs both standard output (file descriptor 1) and standard error -(file descriptor 2) to the file DIRLIST, while the command - ls 2>&1 > DIRLIST - directs only the standard output to file DIRLIST, because the -standard error was made a copy of the standard output before the -standard output was redirected to DIRLIST. - - Bash handles several filenames specially when they are used in -redirections, as described in the following table: - -`/dev/fd/FD' - If FD is a valid integer, file descriptor FD is duplicated. - -`/dev/stdin' - File descriptor 0 is duplicated. - -`/dev/stdout' - File descriptor 1 is duplicated. - -`/dev/stderr' - File descriptor 2 is duplicated. - -`/dev/tcp/HOST/PORT' - If HOST is a valid hostname or Internet address, and PORT is an - integer port number or service name, Bash attempts to open a TCP - connection to the corresponding socket. - -`/dev/udp/HOST/PORT' - If HOST is a valid hostname or Internet address, and PORT is an - integer port number or service name, Bash attempts to open a UDP - connection to the corresponding socket. - - - A failure to open or create a file causes the redirection to fail. - - Redirections using file descriptors greater than 9 should be used -with care, as they may conflict with file descriptors the shell uses -internally. - -3.6.1 Redirecting Input ------------------------ - -Redirection of input causes the file whose name results from the -expansion of WORD to be opened for reading on file descriptor `n', or -the standard input (file descriptor 0) if `n' is not specified. - - The general format for redirecting input is: - [N][|]WORD - - If the redirection operator is `>', and the `noclobber' option to -the `set' builtin has been enabled, the redirection will fail if the -file whose name results from the expansion of WORD exists and is a -regular file. If the redirection operator is `>|', or the redirection -operator is `>' and the `noclobber' option is not enabled, the -redirection is attempted even if the file named by WORD exists. - -3.6.3 Appending Redirected Output ---------------------------------- - -Redirection of output in this fashion causes the file whose name -results from the expansion of WORD to be opened for appending on file -descriptor N, or the standard output (file descriptor 1) if N is not -specified. If the file does not exist it is created. - - The general format for appending output is: - [N]>>WORD - -3.6.4 Redirecting Standard Output and Standard Error ----------------------------------------------------- - -This construct allows both the standard output (file descriptor 1) and -the standard error output (file descriptor 2) to be redirected to the -file whose name is the expansion of WORD. - - There are two formats for redirecting standard output and standard -error: - &>WORD - and - >&WORD - Of the two forms, the first is preferred. This is semantically -equivalent to - >WORD 2>&1 - -3.6.5 Appending Standard Output and Standard Error --------------------------------------------------- - -This construct allows both the standard output (file descriptor 1) and -the standard error output (file descriptor 2) to be appended to the -file whose name is the expansion of WORD. - - The format for appending standard output and standard error is: - &>>WORD - This is semantically equivalent to - >>WORD 2>&1 - -3.6.6 Here Documents --------------------- - -This type of redirection instructs the shell to read input from the -current source until a line containing only WORD (with no trailing -blanks) is seen. All of the lines read up to that point are then used -as the standard input for a command. - - The format of here-documents is: - <<[-]WORD - HERE-DOCUMENT - DELIMITER - - No parameter expansion, command substitution, arithmetic expansion, -or filename expansion is performed on WORD. If any characters in WORD -are quoted, the DELIMITER is the result of quote removal on WORD, and -the lines in the here-document are not expanded. If WORD is unquoted, -all lines of the here-document are subjected to parameter expansion, -command substitution, and arithmetic expansion. In the latter case, -the character sequence `\newline' is ignored, and `\' must be used to -quote the characters `\', `$', and ``'. - - If the redirection operator is `<<-', then all leading tab -characters are stripped from input lines and the line containing -DELIMITER. This allows here-documents within shell scripts to be -indented in a natural fashion. - -3.6.7 Here Strings ------------------- - -A variant of here documents, the format is: - <<< WORD - - The WORD is expanded and supplied to the command on its standard -input. - -3.6.8 Duplicating File Descriptors ----------------------------------- - -The redirection operator - [N]<&WORD - is used to duplicate input file descriptors. If WORD 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 WORD do not specify a file -descriptor open for input, a redirection error occurs. If WORD -evaluates to `-', file descriptor N is closed. If N is not specified, -the standard input (file descriptor 0) is used. - - The operator - [N]>&WORD - 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 WORD do not specify a file descriptor open for output, a -redirection error occurs. As a special case, if N is omitted, and WORD -does not expand to one or more digits, the standard output and standard -error are redirected as described previously. - -3.6.9 Moving File Descriptors ------------------------------ - -The redirection operator - [N]<&DIGIT- - moves the file descriptor DIGIT to file descriptor N, or the -standard input (file descriptor 0) if N is not specified. DIGIT is -closed after being duplicated to N. - - Similarly, the redirection operator - [N]>&DIGIT- - moves the file descriptor DIGIT to file descriptor N, or the -standard output (file descriptor 1) if N is not specified. - -3.6.10 Opening File Descriptors for Reading and Writing -------------------------------------------------------- - -The redirection operator - [N]<>WORD - causes the file whose name is the expansion of WORD 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. - - -File: bash.info, Node: Executing Commands, Next: Shell Scripts, Prev: Redirections, Up: Basic Shell Features - -3.7 Executing Commands -====================== - -* Menu: - -* Simple Command Expansion:: How Bash expands simple commands before - executing them. -* Command Search and Execution:: How Bash finds commands and runs them. -* Command Execution Environment:: The environment in which Bash - executes commands that are not - shell builtins. -* Environment:: The environment given to a command. -* Exit Status:: The status returned by commands and how Bash - interprets it. -* Signals:: What happens when Bash or a command it runs - receives a signal. - - -File: bash.info, Node: Simple Command Expansion, Next: Command Search and Execution, Up: Executing Commands - -3.7.1 Simple Command Expansion ------------------------------- - -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 for later - processing. - - 2. The words that are not variable assignments or redirections are - expanded (*note Shell Expansions::). 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 (*note - Redirections::). - - 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 variable. - - If no command name results, the variable assignments affect the -current shell environment. Otherwise, the variables are added to the -environment of the executed command and do not affect the current shell -environment. If any of the assignments attempts to assign a value to a -readonly variable, an error occurs, and the command exits with a -non-zero status. - - 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 -expansions 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. - - -File: bash.info, Node: Command Search and Execution, Next: Command Execution Environment, Prev: Simple Command Expansion, Up: Executing Commands - -3.7.2 Command Search and Execution ----------------------------------- - -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. - - 1. 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 in *note Shell Functions::. - - 2. 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. - - 3. If the name is neither a shell function nor a builtin, and - contains no slashes, Bash searches each element of `$PATH' for a - directory containing an executable file by that name. Bash uses a - hash table to remember the full pathnames of executable files to - avoid multiple `PATH' searches (see the description of `hash' in - *note Bourne Shell Builtins::). 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 - 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. - - 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 execution environment. Argument 0 is set to the name - given, and the remaining arguments to the command are set to the - arguments supplied, if any. - - 5. If this execution fails because the file is not in executable - format, and the file is not a directory, it is assumed to be a - SHELL SCRIPT and the shell executes it as described in *note Shell - Scripts::. - - 6. If the command was not begun asynchronously, the shell waits for - the command to complete and collects its exit status. - - - -File: bash.info, Node: Command Execution Environment, Next: Environment, Prev: Command Search and Execution, Up: Executing Commands - -3.7.3 Command Execution Environment ------------------------------------ - -The shell has an EXECUTION ENVIRONMENT, which consists of the following: - - * open files inherited by the shell at invocation, as modified by - redirections supplied to the `exec' builtin - - * the current working directory as set by `cd', `pushd', or `popd', - or inherited by the shell at invocation - - * the file creation mode mask as set by `umask' or inherited from - the shell's parent - - * current traps set by `trap' - - * shell parameters that are set by variable assignment or with `set' - or inherited from the shell's parent in the environment - - * shell functions defined during execution or inherited from the - shell's parent in the environment - - * options enabled at invocation (either by default or with - command-line arguments) or by `set' - - * options enabled by `shopt' (*note The Shopt Builtin::) - - * shell aliases defined with `alias' (*note Aliases::) - - * various process IDs, including those of background jobs (*note - Lists::), the value of `$$', and the value of `$PPID' - - - When a simple command other than a builtin or shell function is to -be executed, it is invoked in a separate execution environment that -consists of the following. Unless otherwise noted, the values are -inherited from the shell. - - * the shell's open files, plus any modifications and additions - specified by redirections to the command - - * the current working directory - - * the file creation mode mask - - * shell variables and functions marked for export, along with - variables exported for the command, passed in the environment - (*note Environment::) - - * traps caught by the shell are reset to the values inherited from - the shell's parent, and traps ignored by the shell are ignored - - - A command invoked in this separate environment cannot affect the -shell's execution environment. - - Command substitution, commands grouped with parentheses, and -asynchronous commands are invoked in a subshell environment that is a -duplicate of the shell environment, except that traps caught by the -shell are reset to the values that the shell inherited from its parent -at invocation. Builtin commands that are invoked as part of a pipeline -are also executed in a subshell environment. Changes made to the -subshell environment cannot affect the shell's execution environment. - - Subshells spawned to execute command substitutions inherit the value -of the `-e' option from the parent shell. When not in POSIX mode, Bash -clears the `-e' option in such subshells. - - If a command is followed by a `&' and job control is not active, the -default standard input for the command is the empty file `/dev/null'. -Otherwise, the invoked command inherits the file descriptors of the -calling shell as modified by redirections. - - -File: bash.info, Node: Environment, Next: Exit Status, Prev: Command Execution Environment, Up: Executing Commands - -3.7.4 Environment ------------------ - -When a program is invoked it is given an array of strings called the -ENVIRONMENT. This is a list of name-value pairs, of the form -`name=value'. - - Bash provides several ways to manipulate the environment. On -invocation, the shell scans its own environment and creates a parameter -for each name found, automatically marking it for EXPORT to child -processes. Executed commands inherit the environment. The `export' -and `declare -x' commands allow parameters and functions to be added to -and deleted from the environment. If the value of a parameter in the -environment is modified, the new value becomes part of the environment, -replacing the old. The environment inherited by any executed command -consists of the shell's initial environment, whose values may be -modified in the shell, less any pairs removed by the `unset' and -`export -n' commands, plus any additions via the `export' and `declare --x' commands. - - The environment for any simple command or function may be augmented -temporarily by prefixing it with parameter assignments, as described in -*note Shell Parameters::. These assignment statements affect only the -environment seen by that command. - - If the `-k' option is set (*note The Set Builtin::), then all -parameter assignments are placed in the environment for a command, not -just those that precede the command name. - - When Bash invokes an external command, the variable `$_' is set to -the full path name of the command and passed to that command in its -environment. - - -File: bash.info, Node: Exit Status, Next: Signals, Prev: Environment, Up: Executing Commands - -3.7.5 Exit Status ------------------ - -The exit status of an executed command is the value returned by the -WAITPID system call or equivalent function. Exit statuses fall between -0 and 255, though, as explained below, the shell may use values above -125 specially. Exit statuses from shell builtins and compound commands -are also limited to this range. Under certain circumstances, the shell -will use special values to indicate specific failure modes. - - For the shell's purposes, a command which exits with a zero exit -status has succeeded. A non-zero exit status indicates failure. This -seemingly counter-intuitive scheme is used so there is one well-defined -way to indicate success and a variety of ways to indicate various -failure modes. When a command terminates on a fatal signal whose -number is N, Bash uses the value 128+N as the exit status. - - If a command is not found, the child process created to execute it -returns a status of 127. If a command is found but is not executable, -the return status is 126. - - If a command fails because of an error during expansion or -redirection, the exit status is greater than zero. - - The exit status is used by the Bash conditional commands (*note -Conditional Constructs::) and some of the list constructs (*note -Lists::). - - All of the Bash builtins return an exit status of zero if they -succeed and a non-zero status on failure, so they may be used by the -conditional and list constructs. All builtins return an exit status of -2 to indicate incorrect usage. - - -File: bash.info, Node: Signals, Prev: Exit Status, Up: Executing Commands - -3.7.6 Signals -------------- - -When Bash is interactive, in the absence of any traps, it ignores -`SIGTERM' (so that `kill 0' does not kill an interactive shell), and -`SIGINT' is caught and handled (so that the `wait' builtin is -interruptible). When Bash receives a `SIGINT', it breaks out of any -executing loops. In all cases, Bash ignores `SIGQUIT'. If job control -is in effect (*note Job Control::), Bash ignores `SIGTTIN', `SIGTTOU', -and `SIGTSTP'. - - Non-builtin commands started by Bash have signal handlers set to the -values inherited by the shell from its parent. When job control is not -in effect, asynchronous commands ignore `SIGINT' and `SIGQUIT' in -addition to these inherited handlers. Commands run as a result of -command substitution ignore the keyboard-generated job control signals -`SIGTTIN', `SIGTTOU', and `SIGTSTP'. - - The shell exits by default upon receipt of a `SIGHUP'. Before -exiting, an interactive shell resends the `SIGHUP' to all jobs, running -or stopped. Stopped jobs are sent `SIGCONT' to ensure that they receive -the `SIGHUP'. To prevent the shell from sending the `SIGHUP' signal to -a particular job, it should be removed from the jobs table with the -`disown' builtin (*note Job Control Builtins::) or marked to not -receive `SIGHUP' using `disown -h'. - - If the `huponexit' shell option has been set with `shopt' (*note -The Shopt Builtin::), Bash sends a `SIGHUP' to all jobs when an -interactive login shell exits. - - If Bash is waiting for a command to complete and receives a signal -for which a trap has been set, the trap will not be executed until the -command completes. When Bash is waiting for an asynchronous command -via the `wait' builtin, the reception of a signal for which a trap has -been set will cause the `wait' builtin to return immediately with an -exit status greater than 128, immediately after which the trap is -executed. - - -File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features - -3.8 Shell Scripts -================= - -A shell script is a text file containing shell commands. When such a -file is used as the first non-option argument when invoking Bash, and -neither the `-c' nor `-s' option is supplied (*note Invoking Bash::), -Bash reads and executes commands from the file, then exits. This mode -of operation creates a non-interactive shell. The shell first searches -for the file in the current directory, and looks in the directories in -`$PATH' if not found there. - - When Bash runs a shell script, it sets the special parameter `0' to -the name of the file, rather than the name of the shell, and the -positional parameters are set to the remaining arguments, if any are -given. If no additional arguments are supplied, the positional -parameters are unset. - - A shell script may be made executable by using the `chmod' command -to turn on the execute bit. When Bash finds such a file while -searching the `$PATH' for a command, it spawns a subshell to execute -it. In other words, executing - filename ARGUMENTS - is equivalent to executing - bash filename ARGUMENTS - -if `filename' is an executable shell script. This subshell -reinitializes itself, so that the effect is as if a new shell had been -invoked to interpret the script, with the exception that the locations -of commands remembered by the parent (see the description of `hash' in -*note Bourne Shell Builtins::) are retained by the child. - - Most versions of Unix make this a part of the operating system's -command execution mechanism. If the first line of a script begins with -the two characters `#!', the remainder of the line specifies an -interpreter for the program. Thus, you can specify Bash, `awk', Perl, -or some other interpreter and write the rest of the script file in that -language. - - The arguments to the interpreter consist of a single optional -argument following the interpreter name on the first line of the script -file, followed by the name of the script file, followed by the rest of -the arguments. Bash will perform this action on operating systems that -do not handle it themselves. Note that some older versions of Unix -limit the interpreter name and argument to a maximum of 32 characters. - - Bash scripts often begin with `#! /bin/bash' (assuming that Bash has -been installed in `/bin'), since this ensures that Bash will be used to -interpret the script, even if it is executed under another shell. - - -File: bash.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: Basic Shell Features, Up: Top - -4 Shell Builtin Commands -************************ - -* Menu: - -* Bourne Shell Builtins:: Builtin commands inherited from the Bourne - Shell. -* Bash Builtins:: Table of builtins specific to Bash. -* Modifying Shell Behavior:: Builtins to modify shell attributes and - optional behavior. -* Special Builtins:: Builtin commands classified specially by - POSIX. - - Builtin commands are contained within the shell itself. When the -name of a builtin command is used as the first word of a simple command -(*note Simple Commands::), the shell executes the command directly, -without invoking another program. Builtin commands are necessary to -implement functionality impossible or inconvenient to obtain with -separate utilities. - - This section briefly describes the builtins which Bash inherits from -the Bourne Shell, as well as the builtin commands which are unique to -or have been extended in Bash. - - Several builtin commands are described in other chapters: builtin -commands which provide the Bash interface to the job control facilities -(*note Job Control Builtins::), the directory stack (*note Directory -Stack Builtins::), the command history (*note Bash History Builtins::), -and the programmable completion facilities (*note Programmable -Completion Builtins::). - - Many of the builtins have been extended by POSIX or Bash. - - 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', `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 - -4.1 Bourne Shell Builtins -========================= - -The following shell builtin commands are inherited from the Bourne -Shell. These commands are implemented as specified by the POSIX -standard. - -`: (a colon)' - : [ARGUMENTS] - Do nothing beyond expanding ARGUMENTS and performing redirections. - The return status is zero. - -`. (a period)' - . FILENAME [ARGUMENTS] - Read and execute commands from the FILENAME argument in the - current shell context. If FILENAME does not contain a slash, the - `PATH' variable is used to find FILENAME. When Bash is not in - POSIX mode, the current directory is searched if FILENAME is not - found in `$PATH'. If any ARGUMENTS are supplied, they become the - positional parameters when FILENAME is executed. Otherwise the - positional parameters are unchanged. The return status is the - exit status of the last command executed, or zero if no commands - are executed. If FILENAME is not found, or cannot be read, the - return status is non-zero. This builtin is equivalent to `source'. - -`break' - break [N] - Exit from a `for', `while', `until', or `select' loop. If N is - supplied, the Nth enclosing loop is exited. N must be greater - than or equal to 1. The return status is zero unless N is not - greater than or equal to 1. - -`cd' - cd [-L|-P] [DIRECTORY] - Change the current working directory to DIRECTORY. If DIRECTORY - is not given, the value of the `HOME' shell variable is used. If - the shell variable `CDPATH' exists, it is used as a search path. - If DIRECTORY begins with a slash, `CDPATH' is not used. - - The `-P' option means to not follow symbolic links; symbolic links - are followed by default or with the `-L' option. If DIRECTORY is - `-', it is equivalent to `$OLDPWD'. - - If a non-empty directory name from `CDPATH' 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 status is zero if the directory is successfully changed, - non-zero otherwise. - -`continue' - continue [N] - Resume the next iteration of an enclosing `for', `while', `until', - or `select' loop. If N is supplied, the execution of the Nth - enclosing loop is resumed. N must be greater than or equal to 1. - The return status is zero unless N is not greater than or equal to - 1. - -`eval' - eval [ARGUMENTS] - The arguments are concatenated together into a single command, - which is then read and executed, and its exit status returned as - the exit status of `eval'. If there are no arguments or only - empty arguments, the return status is zero. - -`exec' - exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]] - If COMMAND is supplied, it replaces the shell without creating a - new process. If the `-l' option is supplied, the shell places a - dash at the beginning of the zeroth argument passed to COMMAND. - This is what the `login' program does. The `-c' option causes - COMMAND to be executed with an empty environment. If `-a' is - supplied, the shell passes NAME as the zeroth argument to COMMAND. - 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] - Exit the shell, returning a status of N to the shell's parent. If - N is omitted, the exit status is that of the last command executed. - Any trap on `EXIT' is executed before the shell terminates. - -`export' - export [-fn] [-p] [NAME[=VALUE]] - Mark each NAME to be passed to child processes in the environment. - If the `-f' option is supplied, the NAMEs refer to shell - functions; otherwise the names refer to shell variables. The `-n' - option means to no longer mark each NAME for export. If no NAMES - are supplied, or if the `-p' option is given, a list of exported - names is displayed. The `-p' option displays output in a form - that may be reused as input. If a variable name is followed by - =VALUE, the value of the variable is set to VALUE. - - The return status is zero unless an invalid option is supplied, - one of the names is not a valid shell variable name, or `-f' is - supplied with a name that is not a shell function. - -`getopts' - getopts OPTSTRING NAME [ARGS] - `getopts' is used by shell scripts to parse positional parameters. - OPTSTRING contains the option characters to be recognized; 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 (`?') may not be used as option - characters. Each time it is invoked, `getopts' places the next - option in the shell variable NAME, initializing NAME if it does - not exist, and the index of the next argument to be processed into - the variable `OPTIND'. `OPTIND' is initialized to 1 each time the - shell or a shell script is invoked. When an option requires an - argument, `getopts' places that argument into the variable - `OPTARG'. The shell does not reset `OPTIND' automatically; it - must be manually reset between multiple calls to `getopts' within - the same shell invocation if a new set of parameters is to be used. - - When the end of options is encountered, `getopts' exits with a - return value greater than zero. `OPTIND' is set to the index of - the first non-option argument, and `name' is set to `?'. - - `getopts' normally parses the positional parameters, but if more - arguments are given in ARGS, `getopts' parses those instead. - - `getopts' can report errors in two ways. If the first character of - OPTSTRING is a colon, SILENT error reporting is used. In normal - operation diagnostic messages are printed when invalid options or - missing option arguments are encountered. If the variable `OPTERR' - is set to 0, no error messages will be displayed, even if the first - character of `optstring' is not a colon. - - If an invalid option is seen, `getopts' places `?' into NAME and, - if not silent, prints an error message and unsets `OPTARG'. If - `getopts' is silent, the option character found is placed in - `OPTARG' and no diagnostic message is printed. - - If a required argument is not found, and `getopts' is not silent, - a question mark (`?') is placed in NAME, `OPTARG' is unset, and a - diagnostic message is printed. If `getopts' is silent, then a - colon (`:') is placed in NAME and `OPTARG' is set to the option - character found. - -`hash' - hash [-r] [-p FILENAME] [-dt] [NAME] - Remember the full pathnames of commands specified as NAME - arguments, so they need not be searched for on subsequent - invocations. The commands are found by searching through the - directories listed in `$PATH'. The `-p' option inhibits the path - search, and FILENAME is used as the location of NAME. The `-r' - option causes the shell to forget all remembered 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 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 remembered commands is printed. The return status is zero - unless a NAME is not found or an invalid option is supplied. - -`pwd' - pwd [-LP] - Print the absolute pathname of the current working directory. If - the `-P' option is supplied, the pathname printed will not contain - symbolic links. If the `-L' option is supplied, the pathname - printed may contain symbolic links. The return status is zero - unless an error is encountered while determining the name of the - current directory or an invalid option is supplied. - -`readonly' - readonly [-aApf] [NAME[=VALUE]] ... - Mark each NAME as readonly. The values of these names may not be - changed by subsequent assignment. If the `-f' option is supplied, - each NAME refers to a shell function. The `-a' option means each - NAME refers to an indexed array variable; the `-A' option means - each NAME refers to an associative array variable. If no NAME - arguments are given, or if the `-p' option is supplied, a list of - all readonly names is printed. The `-p' option causes output to - be displayed in a format that may be reused as input. If a - variable name is followed by =VALUE, the value of the variable is - set to VALUE. The return status is zero unless an invalid option - is supplied, one of the NAME arguments is not a valid shell - variable or function name, or the `-f' option is supplied with a - name that is not a shell function. - -`return' - return [N] - Cause a shell function to exit with the return value N. If N is - not supplied, the return value is the exit status of the last - command executed in the function. This may also be used to - terminate execution of a script being executed with the `.' (or - `source') builtin, returning either N or the exit status of the - last command executed within the script as the exit status of the - script. Any command associated with the `RETURN' trap is executed - before execution resumes after the function or script. The return - status is non-zero if `return' is used outside a function and not - during the execution of a script by `.' or `source'. - -`shift' - shift [N] - Shift the positional parameters to the left by N. The positional - parameters from N+1 ... `$#' are renamed to `$1' ... `$#'-N. - Parameters represented by the numbers `$#' to `$#'-N+1 are unset. - N must be a non-negative number less than or equal to `$#'. If N - is zero or greater than `$#', the positional parameters are not - changed. If N is not supplied, it is assumed to be 1. The return - status is zero unless N is greater than `$#' or less than zero, - non-zero otherwise. - -`test' -`[' - Evaluate a conditional expression EXPR. Each operator and operand - must be a separate argument. Expressions are composed of the - primaries described below in *note Bash Conditional Expressions::. - `test' does not accept any options, nor does it accept and ignore - an argument of `--' as signifying the end of options. - - When the `[' form is used, the last argument to the command must - be a `]'. - - Expressions may be combined using the following operators, listed - in decreasing order of precedence. The evaluation depends on the - number of arguments; see below. - - `! EXPR' - True if EXPR is false. - - `( EXPR )' - Returns the value of EXPR. This may be used to override the - normal precedence of operators. - - `EXPR1 -a EXPR2' - True if both EXPR1 and EXPR2 are true. - - `EXPR1 -o EXPR2' - True if either EXPR1 or EXPR2 is true. - - The `test' and `[' builtins evaluate conditional expressions using - a set of rules based on the number of arguments. - - 0 arguments - The expression is false. - - 1 argument - The expression is true if and only if the argument is not - null. - - 2 arguments - If the first argument is `!', the expression is true if and - only if the second argument is null. If the first argument - is one of the unary conditional operators (*note Bash - Conditional Expressions::), the expression is true if the - unary test is true. If the first argument is not a valid - unary operator, the expression is false. - - 3 arguments - If the second argument is one of the binary conditional - operators (*note Bash Conditional Expressions::), the result - of the expression is the result of the binary test using the - first and third arguments as operands. The `-a' and `-o' - operators are considered binary operators when there are - three arguments. If the first argument is `!', the value is - the negation of the two-argument test using the second and - third arguments. If the first argument is exactly `(' and - the third argument is exactly `)', the result is the - one-argument test of the second argument. Otherwise, the - expression is false. - - 4 arguments - If the first argument is `!', the result is the negation of - the three-argument expression composed of the remaining - arguments. Otherwise, the expression is parsed and evaluated - according to precedence using the rules listed above. - - 5 or more arguments - The expression is parsed and evaluated according to precedence - using the rules listed above. - -`times' - times - Print out the user and system times used by the shell and its - children. The return status is zero. - -`trap' - trap [-lp] [ARG] [SIGSPEC ...] - The commands in ARG are to be read and executed when the shell - receives signal SIGSPEC. If ARG is absent (and there is a single - SIGSPEC) or equal to `-', each specified signal's disposition is - reset to the value it had when the shell was started. If ARG is - the null string, then the signal specified by each SIGSPEC is - ignored by the shell and commands it invokes. If ARG is not - present and `-p' has been supplied, the shell displays the trap - commands associated with each SIGSPEC. If no arguments are - supplied, or only `-p' is given, `trap' prints the list of commands - associated with each signal number in a form that may be reused as - shell input. The `-l' option causes the shell to print a list of - signal names and their corresponding numbers. Each SIGSPEC is - either a signal name or a signal number. Signal names are case - insensitive and the `SIG' prefix is optional. - - If a SIGSPEC is `0' or `EXIT', ARG is executed when the shell - exits. If a SIGSPEC is `DEBUG', the command ARG is executed - before every simple command, `for' command, `case' command, - `select' command, every arithmetic `for' command, and before the - first command executes in a shell function. Refer to the - description of the `extdebug' option to the `shopt' builtin (*note - The Shopt Builtin::) for details of its effect on the `DEBUG' trap. - If a SIGSPEC is `RETURN', the command ARG is executed each time a - shell function or a script executed with the `.' or `source' - builtins finishes executing. - - If a SIGSPEC is `ERR', the command ARG is executed whenever a - simple command has a non-zero exit status, subject to the - following conditions. The `ERR' trap is not executed if the - failed command is part of the command list immediately following - an `until' or `while' keyword, part of the test following the `if' - or `elif' reserved words, part of a command executed in a `&&' or - `||' list, or if the command's return status is being inverted - using `!'. These are the same conditions obeyed by the `errexit' - option. - - 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 zero unless a SIGSPEC does not specify a - valid signal. - -`umask' - umask [-p] [-S] [MODE] - Set the shell process's file creation mask to MODE. If MODE - begins with a digit, it is interpreted as an octal number; if not, - it is interpreted as a symbolic mode mask similar to that accepted - by the `chmod' command. If MODE is omitted, the current value of - the mask is printed. If the `-S' option is supplied without a - MODE argument, the mask is printed in a symbolic format. If the - `-p' option is supplied, and MODE is omitted, the output is in a - form that may be reused as input. The return status is zero if - the mode is successfully changed or if no MODE argument is - supplied, and non-zero otherwise. - - Note that when the mode is interpreted as an octal number, each - number of the umask is subtracted from `7'. Thus, a umask of `022' - results in permissions of `755'. - -`unset' - unset [-fv] [NAME] - Each variable or function NAME is removed. If no options are - supplied, or the `-v' option is given, each NAME refers to a shell - variable. If the `-f' option is given, the NAMEs refer to shell - functions, and the function definition is removed. Readonly - variables and functions may not be unset. The return status is - zero unless a NAME is readonly. - - -File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands - -4.2 Bash Builtin Commands -========================= - -This section describes builtin commands which are unique to or have -been extended in Bash. Some of these commands are specified in the -POSIX standard. - -`alias' - alias [`-p'] [NAME[=VALUE] ...] - - Without arguments or with the `-p' option, `alias' prints the list - of aliases on the standard output in a form that allows them to be - reused as input. If arguments are supplied, an alias is defined - for each NAME whose VALUE is given. If no VALUE is given, the name - and value of the alias is printed. Aliases are described in *note - Aliases::. - -`bind' - bind [-m KEYMAP] [-lpsvPSV] - bind [-m KEYMAP] [-q FUNCTION] [-u FUNCTION] [-r KEYSEQ] - bind [-m KEYMAP] -f FILENAME - bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND - bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME - bind READLINE-COMMAND - - Display current Readline (*note Command Line Editing::) key and - function bindings, bind a key sequence to a Readline function or - macro, or set a Readline variable. Each non-option argument is a - command as it would appear in a Readline initialization file - (*note Readline Init File::), 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: - - `-m KEYMAP' - Use KEYMAP as the keymap to be affected by the subsequent - bindings. Acceptable KEYMAP names are `emacs', - `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move', - `vi-command', and `vi-insert'. `vi' is equivalent to - `vi-command'; `emacs' is equivalent to `emacs-standard'. - - `-l' - List the names of all Readline functions. - - `-p' - Display Readline function names and bindings in such a way - that they can be used as input or in a Readline - initialization file. - - `-P' - List current Readline function names and bindings. - - `-v' - Display Readline variable names and values in such a way that - they can be used as input or in a Readline initialization - file. - - `-V' - List current Readline variable names and values. - - `-s' - Display Readline key sequences bound to macros and the - strings they output in such a way that they can be used as - input or in a Readline initialization file. - - `-S' - Display Readline key sequences bound to macros and the - strings they output. - - `-f FILENAME' - Read key bindings from FILENAME. - - `-q FUNCTION' - Query about which keys invoke the named FUNCTION. - - `-u FUNCTION' - Unbind all keys bound to the named FUNCTION. - - `-r KEYSEQ' - Remove any current binding for KEYSEQ. - - `-x KEYSEQ:SHELL-COMMAND' - Cause SHELL-COMMAND to be executed whenever KEYSEQ is entered. - When SHELL-COMMAND is executed, the shell sets the - `READLINE_LINE' variable to the contents of the Readline line - buffer and the `READLINE_POINT' variable to the current - location of the insertion point. If the executed command - changes the value of `READLINE_LINE' or `READLINE_POINT', - those new values will be reflected in the editing state. - - The return status is zero unless an invalid option is supplied or - an error occurs. - -`builtin' - builtin [SHELL-BUILTIN [ARGS]] - Run a shell builtin, passing it ARGS, and return its exit status. - This is useful when defining a shell function with the same name - as a shell builtin, retaining the functionality of the builtin - within the function. The return status is non-zero if - SHELL-BUILTIN is not a shell builtin command. - -`caller' - caller [EXPR] - Returns the context of any active subroutine call (a shell - function or a script executed with the `.' or `source' builtins). - - Without EXPR, `caller' displays the line number and source - filename of the current subroutine call. If a non-negative - integer is supplied as EXPR, `caller' 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 - subroutine call or EXPR does not correspond to a valid position in - the call stack. - -`command' - command [-pVv] COMMAND [ARGUMENTS ...] - Runs COMMAND with ARGUMENTS ignoring any shell function named - COMMAND. Only shell builtin commands or commands found by - searching the `PATH' are executed. If there is a shell function - named `ls', running `command ls' within the function will execute - the external command `ls' instead of calling the function - recursively. The `-p' option means to use a default value for - `PATH' that is guaranteed to find all of the standard utilities. - The return status in this case is 127 if COMMAND cannot be found - or an error occurred, and the exit status of COMMAND otherwise. - - If either the `-V' or `-v' option is supplied, a description of - COMMAND is printed. The `-v' option causes a single word - indicating the command or file name used to invoke COMMAND to be - displayed; the `-V' option produces a more verbose description. - In this case, the return status is zero if COMMAND is found, and - non-zero if not. - -`declare' - declare [-aAfFilrtux] [-p] [NAME[=VALUE] ...] - - Declare variables and give them attributes. If no NAMEs are - given, then display the values of variables instead. - - The `-p' option will display the attributes and values of each - NAME. When `-p' is used with NAME arguments, additional options - are ignored. - - When `-p' is supplied without NAME arguments, `declare' will - display the attributes and values of all variables having the - attributes specified by the additional options. If no other - options are supplied with `-p', `declare' will display the - attributes and values of all shell variables. The `-f' option - will restrict the display to shell functions. - - The `-F' option inhibits the display of function definitions; only - the function name and attributes are printed. If the `extdebug' - shell option is enabled using `shopt' (*note The Shopt Builtin::), - the source file name and line number where the function is defined - are displayed as well. `-F' implies `-f'. The following options - can be used to restrict output to variables with the specified - attributes or to give variables attributes: - - `-a' - Each NAME is an indexed array variable (*note Arrays::). - - `-A' - Each NAME is an associative array variable (*note Arrays::). - - `-f' - Use function names only. - - `-i' - The variable is to be treated as an integer; arithmetic - evaluation (*note Shell Arithmetic::) is performed when the - variable is assigned a value. - - `-l' - When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case - attribute is disabled. - - `-r' - Make NAMEs readonly. These names cannot then be assigned - values by subsequent assignment statements or unset. - - `-t' - Give each NAME the `trace' attribute. Traced functions - inherit the `DEBUG' and `RETURN' traps from the calling shell. - The trace attribute has no special meaning for variables. - - `-u' - When the variable is assigned a value, all lower-case - characters are converted to upper-case. The lower-case - attribute is disabled. - - `-x' - Mark each NAME for export to subsequent commands via the - environment. - - Using `+' instead of `-' turns off the attribute instead, with the - exceptions that `+a' may not be used to destroy an array variable - and `+r' will not remove the readonly attribute. When used in a - function, `declare' makes each NAME local, as with the `local' - command. If a variable name is followed by =VALUE, the value of - the variable is set to VALUE. - - The return status is zero 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 (*note Arrays::), one of the - NAMES is not a valid shell variable name, an attempt is made to - turn off readonly status for a readonly variable, an attempt is - made to turn off array status for an array variable, or an attempt - is made to display a non-existent function with `-f'. - -`echo' - echo [-neE] [ARG ...] - Output the ARGs, separated by spaces, terminated with a newline. - The return status is always 0. If `-n' is specified, the trailing - newline is suppressed. If the `-e' option is given, - interpretation of the following backslash-escaped characters is - enabled. The `-E' option disables the interpretation of these - escape characters, even on systems where they are interpreted by - default. The `xpg_echo' shell option may be used to dynamically - determine whether or not `echo' expands these escape characters by - default. `echo' does not interpret `--' to mean the end of - options. - - `echo' interprets the following escape sequences: - `\a' - alert (bell) - - `\b' - backspace - - `\c' - suppress further output - - `\e' - escape - - `\f' - form feed - - `\n' - new line - - `\r' - carriage return - - `\t' - horizontal tab - - `\v' - vertical tab - - `\\' - backslash - - `\0NNN' - the eight-bit character whose value is the octal value NNN - (zero to three octal digits) - - `\xHH' - the eight-bit character whose value is the hexadecimal value - HH (one or two hex digits) - -`enable' - enable [-a] [-dnps] [-f FILENAME] [NAME ...] - 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 - `-n' is used, the NAMEs become disabled. Otherwise NAMEs are - enabled. For example, to use the `test' binary found via `$PATH' - instead of the shell builtin version, type `enable -n test'. - - If the `-p' option is supplied, or no NAME arguments appear, a - list of shell builtins is printed. With no other arguments, the - list consists of all enabled shell builtins. The `-a' option - means to list each builtin with an indication of whether or not it - is enabled. - - The `-f' option means to load the new builtin command NAME from - shared object FILENAME, on systems that support dynamic loading. - The `-d' option will delete a builtin loaded with `-f'. - - If there are no options, a list of the shell builtins is displayed. - The `-s' option restricts `enable' to the POSIX special builtins. - If `-s' is used with `-f', the new builtin becomes a special - builtin (*note Special Builtins::). - - The return status is zero unless a NAME is not a shell builtin or - there is an error loading a new builtin from a shared object. - -`help' - help [-dms] [PATTERN] - Display helpful information about builtin commands. If PATTERN is - specified, `help' gives detailed help on all commands matching - PATTERN, otherwise a list of the builtins is printed. - - Options, if supplied, have the following meanings: - - `-d' - Display a short description of each PATTERN - - `-m' - Display the description of each PATTERN in a manpage-like - format - - `-s' - Display only a short usage synopsis for each PATTERN - - The return status is zero unless no command matches PATTERN. - -`let' - let EXPRESSION [EXPRESSION] - The `let' builtin allows arithmetic to be performed on shell - variables. Each EXPRESSION is evaluated according to the rules - given below in *note Shell Arithmetic::. If the last EXPRESSION - evaluates to 0, `let' returns 1; otherwise 0 is returned. - -`local' - local [OPTION] NAME[=VALUE] ... - For each argument, a local variable named NAME is created, and - assigned VALUE. The OPTION can be any of the options accepted by - `declare'. `local' can only be used within a function; it makes - the variable NAME have a visible scope restricted to that function - and its children. The return status is zero unless `local' is - used outside a function, an invalid NAME is supplied, or NAME is a - readonly variable. - -`logout' - logout [N] - Exit a login shell, returning a status of N to the shell's parent. - -`mapfile' - mapfile [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] [ - -C CALLBACK] [-c QUANTUM] [ARRAY] - Read lines from the standard input into array variable ARRAY, or - from file descriptor FD if the `-u' option is supplied. The - variable `MAPFILE' is the default ARRAY. Options, if supplied, - have the following meanings: - `-n' - Copy at most COUNT lines. If COUNT is 0, all lines are - copied. - - `-O' - Begin assigning to ARRAY at index ORIGIN. The default index - is 0. - - `-s' - Discard the first COUNT lines read. - - `-t' - Remove a trailing line from each line read. - - `-u' - Read lines from file descriptor FD instead of the standard - input. - - `-C' - Evaluate CALLBACK each time QUANTUMP lines are read. The - `-c' option specifies QUANTUM. - - `-c' - Specify the number of lines read between each call to - CALLBACK. - - If `-C' is specified without `-c', the default quantum is 5000. - When CALLBACK is evaluated, it is supplied the index of the next - array element to be assigned as an additional argument. CALLBACK - is evaluated after the line is read but before the array element - is assigned. - - If not supplied with an explicit origin, `mapfile' will clear ARRAY - before assigning to it. - - `mapfile' returns successfully unless an invalid option or option - argument is supplied, or ARRAY is invalid or unassignable. - -`printf' - printf [-v VAR] FORMAT [ARGUMENTS] - Write the formatted ARGUMENTS to the standard output under the - control of the FORMAT. The FORMAT 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 ARGUMENT. In addition to the standard `printf(1)' - formats, `%b' causes `printf' to expand backslash escape sequences - in the corresponding ARGUMENT, (except that `\c' terminates - output, backslashes in `\'', `\"', and `\?' are not removed, and - octal escapes beginning with `\0' may contain up to four digits), - and `%q' causes `printf' to output the corresponding ARGUMENT in a - format that can be reused as shell input. - - The `-v' option causes the output to be assigned to the variable - VAR rather than being printed to the standard output. - - The FORMAT is reused as necessary to consume all of the ARGUMENTS. - If the FORMAT requires more ARGUMENTS than are supplied, 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. - -`read' - read [-ers] [-a ANAME] [-d DELIM] [-i TEXT] [-n NCHARS] [-p PROMPT] [-t TIMEOUT] [-u FD] [NAME ...] - One line is read from the standard input, or from the file - descriptor FD supplied as an argument to the `-u' option, and the - first word is assigned to the first NAME, the second word to the - second NAME, and so on, with leftover words and their intervening - separators assigned to the last NAME. If there are fewer words - read from the input stream than names, the remaining names are - assigned empty values. The characters in the value of the `IFS' - variable are used to split the line into words. The backslash - character `\' may be used to remove any special meaning for the - next character read and for line continuation. If no names are - supplied, the line read is assigned to the variable `REPLY'. The - return code is zero, unless end-of-file is encountered, `read' - times out (in which case the return code is greater than 128), or - an invalid file descriptor is supplied as the argument to `-u'. - - Options, if supplied, have the following meanings: - - `-a ANAME' - The words are assigned to sequential indices of the array - variable ANAME, starting at 0. All elements are removed from - ANAME before the assignment. Other NAME arguments are - ignored. - - `-d DELIM' - The first character of DELIM is used to terminate the input - line, rather than newline. - - `-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. - - `-i TEXT' - If Readline is being used to read the line, TEXT is placed - into the editing buffer before editing begins. - - `-n NCHARS' - `read' returns after reading NCHARS characters rather than - waiting for a complete line of input. - - `-p PROMPT' - Display PROMPT, without a trailing newline, before attempting - to read any input. The prompt is displayed only if input is - coming from a terminal. - - `-r' - If this option is given, backslash does not act as an escape - character. The backslash is considered to be part of the - line. In particular, a backslash-newline pair may not be - used as a line continuation. - - `-s' - Silent mode. If input is coming from a terminal, characters - are not echoed. - - `-t TIMEOUT' - Cause `read' to time out and return failure if a complete - line of input is not read within TIMEOUT seconds. TIMEOUT - may be a decimal number with a fractional portion following - the decimal point. This option is only effective if `read' - is reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. If - TIMEOUT is 0, `read' returns success if input is available on - the specified file descriptor, failure otherwise. The exit - status is greater than 128 if the timeout is exceeded. - - `-u FD' - Read input from file descriptor FD. - - -`readarray' - readarray [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] [ - -C CALLBACK] [-c QUANTUM] [ARRAY] - Read lines from the standard input into array variable ARRAY, or - from file descriptor FD if the `-u' option is supplied. - - A synonym for `mapfile'. - -`source' - source FILENAME - A synonym for `.' (*note Bourne Shell Builtins::). - -`type' - type [-afptP] [NAME ...] - For each NAME, indicate how it would be interpreted if used as a - command name. - - If the `-t' option is used, `type' prints a single word which is - one of `alias', `function', `builtin', `file' or `keyword', if - NAME is an alias, shell function, shell builtin, disk file, or - shell reserved word, respectively. If the NAME is not found, then - nothing is printed, and `type' returns a failure status. - - If the `-p' option is used, `type' either returns the name of the - disk file that would be executed, or nothing if `-t' would not - return `file'. - - The `-P' option forces a path search for each NAME, even if `-t' - would not return `file'. - - If a command is hashed, `-p' and `-P' print the hashed value, not - necessarily the file that appears first in `$PATH'. - - If the `-a' option is used, `type' returns all of the places that - contain an executable named FILE. This includes aliases and - functions, if and only if the `-p' option is not also used. - - If the `-f' option is used, `type' does not attempt to find shell - functions, as with the `command' builtin. - - The return status is zero if all of the NAMES are found, non-zero - if any are not found. - -`typeset' - typeset [-afFrxi] [-p] [NAME[=VALUE] ...] - The `typeset' command is supplied for compatibility with the Korn - shell; however, it has been deprecated in favor of the `declare' - builtin command. - -`ulimit' - ulimit [-abcdefilmnpqrstuvxHST] [LIMIT] - `ulimit' provides control over the resources available to processes - started by the shell, on systems that allow such control. If an - option is given, it is interpreted as follows: - `-S' - Change and report the soft limit associated with a resource. - - `-H' - Change and report the hard limit associated with a resource. - - `-a' - All current limits are reported. - - `-b' - The maximum socket buffer size. - - `-c' - The maximum size of core files created. - - `-d' - The maximum size of a process's data segment. - - `-e' - The maximum scheduling priority ("nice"). - - `-f' - The maximum size of files written by the shell and its - children. - - `-i' - The maximum number of pending signals. - - `-l' - The maximum size that may be locked into memory. - - `-m' - The maximum resident set size (many systems do not honor this - limit). - - `-n' - The maximum number of open file descriptors (most systems do - not allow this value to be set). - - `-p' - The pipe buffer size. - - `-q' - The maximum number of bytes in POSIX message queues. - - `-r' - The maximum real-time scheduling priority. - - `-s' - The maximum stack size. - - `-t' - The maximum amount of cpu time in seconds. - - `-u' - The maximum number of processes available to a single user. - - `-v' - The maximum amount of virtual memory available to the process. - - `-x' - The maximum number of file locks. - - `-T' - The maximum number of threads. - - - If LIMIT is given, it is the new value of the specified resource; - the special LIMIT values `hard', `soft', and `unlimited' stand for - the current hard limit, the current soft limit, and no limit, - respectively. 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. Otherwise, the current value of the soft limit - for the specified resource is printed, unless the `-H' option is - supplied. When setting new limits, if neither `-H' nor `-S' is - supplied, both the hard and soft limits are set. If no option is - given, then `-f' is assumed. Values are in 1024-byte increments, - except for `-t', which is in seconds, `-p', which is in units of - 512-byte blocks, and `-n' and `-u', which are unscaled values. - - The return status is zero unless an invalid option or argument is - supplied, or an error occurs while setting a new limit. - -`unalias' - unalias [-a] [NAME ... ] - - Remove each NAME from the list of aliases. If `-a' is supplied, - all aliases are removed. Aliases are described in *note Aliases::. - - - -File: bash.info, Node: Modifying Shell Behavior, Next: Special Builtins, Prev: Bash Builtins, Up: Shell Builtin Commands - -4.3 Modifying Shell Behavior -============================ - -* Menu: - -* The Set Builtin:: Change the values of shell attributes and - positional parameters. -* The Shopt Builtin:: Modify shell optional behavior. - - -File: bash.info, Node: The Set Builtin, Next: The Shopt Builtin, Up: Modifying Shell Behavior - -4.3.1 The Set Builtin ---------------------- - -This builtin is so complicated that it deserves its own section. `set' -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. - -`set' - set [--abefhkmnptuvxBCEHPT] [-o OPTION] [ARGUMENT ...] - set [+abefhkmnptuvxBCEHPT] [+o OPTION] [ARGUMENT ...] - - If no options or arguments are supplied, `set' displays the names - and values of all shell variables and functions, sorted according - to the current locale, in a format that may be reused as input for - setting or resetting the currently-set variables. Read-only - variables cannot be reset. In POSIX mode, only shell variables - are listed. - - When options are supplied, they set or unset shell attributes. - Options, if specified, have the following meanings: - - `-a' - Mark variables and function which are modified or created for - export to the environment of subsequent commands. - - `-b' - Cause the status of terminated background jobs to be reported - immediately, rather than before printing the next primary - prompt. - - `-e' - Exit immediately if a pipeline (*note Pipelines::), which may - consist of a single simple command (*note Simple Commands::), - a subshell command enclosed in parentheses (*note Command - Grouping::), or one of the commands executed as part of a - command list enclosed by braces (*note Command Grouping::) - returns a non-zero status. The shell does not exit if the - command that fails is part of the command list immediately - following a `while' or `until' keyword, part of the test in - an `if' statement, 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 status is being inverted with `!'. A trap on `ERR', - if set, is executed before the shell exits. - - This option applies to the shell environment and each - subshell environment separately (*note Command Execution - Environment::), and may cause subshells to exit before - executing all the commands in the subshell. - - `-f' - Disable filename expansion (globbing). - - `-h' - Locate and remember (hash) commands as they are looked up for - execution. This option is enabled by default. - - `-k' - All arguments in the form of assignment statements are placed - in the environment for a command, not just those that precede - the command name. - - `-m' - Job control is enabled (*note Job Control::). - - `-n' - Read commands but do not execute them; this may be used to - check a script for syntax errors. This option is ignored by - interactive shells. - - `-o OPTION-NAME' - Set the option corresponding to OPTION-NAME: - - `allexport' - Same as `-a'. - - `braceexpand' - Same as `-B'. - - `emacs' - Use an `emacs'-style line editing interface (*note - Command Line Editing::). This also affects the editing - interface used for `read -e'. - - `errexit' - Same as `-e'. - - `errtrace' - Same as `-E'. - - `functrace' - Same as `-T'. - - `hashall' - Same as `-h'. - - `histexpand' - Same as `-H'. - - `history' - Enable command history, as described in *note Bash - History Facilities::. This option is on by default in - interactive shells. - - `ignoreeof' - An interactive shell will not exit upon reading EOF. - - `keyword' - Same as `-k'. - - `monitor' - Same as `-m'. - - `noclobber' - Same as `-C'. - - `noexec' - Same as `-n'. - - `noglob' - Same as `-f'. - - `nolog' - Currently ignored. - - `notify' - Same as `-b'. - - `nounset' - Same as `-u'. - - `onecmd' - Same as `-t'. - - `physical' - Same as `-P'. - - `pipefail' - If set, the return value of a pipeline is the value of - the last (rightmost) command to exit with a non-zero - status, or zero if all commands in the pipeline exit - successfully. This option is disabled by default. - - `posix' - Change the behavior of Bash where the default operation - differs from the POSIX standard to match the standard - (*note Bash POSIX Mode::). This is intended to make - Bash behave as a strict superset of that standard. - - `privileged' - Same as `-p'. - - `verbose' - Same as `-v'. - - `vi' - Use a `vi'-style line editing interface. This also - affects the editing interface used for `read -e'. - - `xtrace' - Same as `-x'. - - `-p' - Turn on privileged mode. In this mode, the `$BASH_ENV' and - `$ENV' files are not processed, shell functions are not - inherited from the environment, and the `SHELLOPTS', - `BASHOPTS', `CDPATH' and `GLOBIGNORE' 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 `-p' option is not supplied, - these actions are taken and the effective user id is set to - the real user id. If the `-p' option is supplied at startup, - the effective user id is not reset. Turning this option off - causes the effective user and group ids to be set to the real - user and group ids. - - `-t' - Exit after reading and executing one command. - - `-u' - Treat unset variables and parameters other than the special - parameters `@' or `*' as an error when performing parameter - expansion. An error message will be written to the standard - error, and a non-interactive shell will exit. - - `-v' - Print shell input lines as they are read. - - `-x' - Print a trace of simple commands, `for' commands, `case' - commands, `select' commands, and arithmetic `for' commands - and their arguments or associated word lists after they are - expanded and before they are executed. The value of the `PS4' - variable is expanded and the resultant value is printed before - the command and its expanded arguments. - - `-B' - The shell will perform brace expansion (*note Brace - Expansion::). This option is on by default. - - `-C' - Prevent output redirection using `>', `>&', and `<>' from - overwriting existing files. - - `-E' - If set, any trap on `ERR' is inherited by shell functions, - command substitutions, and commands executed in a subshell - environment. The `ERR' trap is normally not inherited in - such cases. - - `-H' - Enable `!' style history substitution (*note History - Interaction::). This option is on by default for interactive - shells. - - `-P' - If set, do not follow symbolic links when performing commands - such as `cd' which change the current directory. The - physical directory is used instead. By default, Bash follows - the logical chain of directories when performing commands - which change the current directory. - - For example, if `/usr/sys' is a symbolic link to - `/usr/local/sys' then: - $ cd /usr/sys; echo $PWD - /usr/sys - $ cd ..; pwd - /usr - - If `set -P' is on, then: - $ cd /usr/sys; echo $PWD - /usr/local/sys - $ cd ..; pwd - /usr/local - - `-T' - If set, any trap on `DEBUG' and `RETURN' are inherited by - shell functions, command substitutions, and commands executed - in a subshell environment. The `DEBUG' and `RETURN' traps - are normally not inherited in such cases. - - `--' - If no arguments follow this option, then the positional - parameters are unset. Otherwise, the positional parameters - are set to the ARGUMENTS, even if some of them begin with a - `-'. - - `-' - Signal the end of options, cause all remaining ARGUMENTS to - be assigned to the positional parameters. The `-x' and `-v' - options are turned off. If there are no arguments, the - positional parameters remain unchanged. - - Using `+' rather than `-' causes these options to be turned off. - The options can also be used upon invocation of the shell. The - current set of options may be found in `$-'. - - The remaining N ARGUMENTS are positional parameters and are - assigned, in order, to `$1', `$2', ... `$N'. The special - parameter `#' is set to N. - - The return status is always zero unless an invalid option is - supplied. - - -File: bash.info, Node: The Shopt Builtin, Prev: The Set Builtin, Up: Modifying Shell Behavior - -4.3.2 The Shopt Builtin ------------------------ - -This builtin allows you to change additional shell optional behavior. - -`shopt' - shopt [-pqsu] [-o] [OPTNAME ...] - Toggle the values of variables controlling optional shell behavior. - 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: - - `-s' - Enable (set) each OPTNAME. - - `-u' - Disable (unset) each OPTNAME. - - `-q' - Suppresses normal output; the return status indicates whether - the OPTNAME is set or unset. If multiple OPTNAME arguments - are given with `-q', the return status is zero if all - OPTNAMES are enabled; non-zero otherwise. - - `-o' - Restricts the values of OPTNAME to be those defined for the - `-o' option to the `set' builtin (*note The Set Builtin::). - - If either `-s' or `-u' is used with no OPTNAME arguments, the - display is limited to those options which are set or unset, - respectively. - - Unless otherwise noted, the `shopt' options are disabled (off) by - default. - - The return status when listing options is zero if all OPTNAMES are - enabled, non-zero otherwise. When setting or unsetting options, - the return status is zero unless an OPTNAME is not a valid shell - option. - - The list of `shopt' options is: - `autocd' - If set, a command name that is the name of a directory is - executed as if it were the argument to the `cd' command. - This option is only used by interactive shells. - - `cdable_vars' - If this is set, an argument to the `cd' builtin command that - is not a directory is assumed to be the name of a variable - whose value is the directory to change to. - - `cdspell' - If set, minor errors in the spelling of a directory component - in a `cd' command will be corrected. The errors checked for - are transposed characters, a missing character, and a - character too many. If a correction is found, the corrected - path is printed, and the command proceeds. This option is - only used by interactive shells. - - `checkhash' - If this is set, Bash checks that a command found in the hash - table exists before trying to execute it. If a hashed - command no longer exists, a normal path search is performed. - - `checkjobs' - If set, Bash lists the status of any stopped and running jobs - before exiting an interactive shell. If any jobs are - running, this causes the exit to be deferred until a second - exit is attempted without an intervening command (*note Job - Control::). 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 `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. - - `compat31' - If set, Bash changes its behavior to that of version 3.1 with - respect to quoted arguments to the conditional command's =~ - operator. - - `dirspell' - If set, Bash attempts spelling correction on directory names - during word completion if the directory name initially - supplied does not exist. - - `dotglob' - If set, Bash includes filenames beginning with a `.' in the - results of filename expansion. - - `execfail' - If this is set, a non-interactive shell will not exit if it - cannot execute the file specified as an argument to the `exec' - builtin command. An interactive shell does not exit if `exec' - fails. - - `expand_aliases' - If set, aliases are expanded as described below under Aliases, - *note Aliases::. This option is enabled by default for - interactive shells. - - `extdebug' - If set, behavior intended for use by debuggers is enabled: - - 1. The `-F' option to the `declare' builtin (*note Bash - Builtins::) displays the source file name and line - number corresponding to each function name supplied as - an argument. - - 2. If the command run by the `DEBUG' trap returns a - non-zero value, the next command is skipped and not - executed. - - 3. If the command run by the `DEBUG' trap returns a value - of 2, and the shell is executing in a subroutine (a - shell function or a shell script executed by the `.' or - `source' builtins), a call to `return' is simulated. - - 4. `BASH_ARGC' and `BASH_ARGV' are updated as described in - their descriptions (*note Bash Variables::). - - 5. Function tracing is enabled: command substitution, - shell functions, and subshells invoked with `( COMMAND - )' inherit the `DEBUG' and `RETURN' traps. - - 6. Error tracing is enabled: command substitution, shell - functions, and subshells invoked with `( COMMAND )' - inherit the `ERROR' trap. - - `extglob' - If set, the extended pattern matching features described above - (*note Pattern Matching::) are enabled. - - `extquote' - If set, `$'STRING'' and `$"STRING"' quoting is performed - within `${PARAMETER}' expansions enclosed in double quotes. - This option is enabled by default. - - `failglob' - If set, patterns which fail to match filenames during - filename expansion result in an expansion error. - - `force_fignore' - If set, the suffixes specified by the `FIGNORE' shell variable - cause words to be ignored when performing word completion - even if the ignored words are the only possible completions. - *Note Bash Variables::, for a description of `FIGNORE'. This - option is enabled by default. - - `globstar' - If set, the pattern `**' used in a filename expansion context - will match a files and zero or more directories and - subdirectories. If the pattern is followed by a `/', only - directories and subdirectories match. - - `gnu_errfmt' - If set, shell error messages are written in the standard GNU - error message format. - - `histappend' - If set, the history list is appended to the file named by the - value of the `HISTFILE' variable when the shell exits, rather - than overwriting the file. - - `histreedit' - If set, and Readline is being used, a user is given the - opportunity to re-edit a failed history substitution. - - `histverify' - If set, and Readline is being used, the results of history - substitution are not immediately passed to the shell parser. - Instead, the resulting line is loaded into the Readline - editing buffer, allowing further modification. - - `hostcomplete' - If set, and Readline is being used, Bash will attempt to - perform hostname completion when a word containing a `@' is - being completed (*note Commands For Completion::). This - option is enabled by default. - - `huponexit' - If set, Bash will send `SIGHUP' to all jobs when an - interactive login shell exits (*note Signals::). - - `interactive_comments' - Allow a word beginning with `#' to cause that word and all - remaining characters on that line to be ignored in an - interactive shell. This option is enabled by default. - - `lithist' - If enabled, and the `cmdhist' option is enabled, multi-line - commands are saved to the history with embedded newlines - rather than using semicolon separators where possible. - - `login_shell' - The shell sets this option if it is started as a login shell - (*note Invoking Bash::). The value may not be changed. - - `mailwarn' - If set, and a file that Bash is checking for mail has been - accessed since the last time it was checked, the message - `"The mail in MAILFILE has been read"' is displayed. - - `no_empty_cmd_completion' - If set, and Readline is being used, Bash will not attempt to - search the `PATH' for possible completions when completion is - attempted on an empty line. - - `nocaseglob' - If set, Bash matches filenames in a case-insensitive fashion - when performing filename expansion. - - `nocasematch' - If set, Bash matches patterns in a case-insensitive fashion - when performing matching while executing `case' or `[[' - conditional commands. - - `nullglob' - If set, Bash allows filename patterns which match no files to - expand to a null string, rather than themselves. - - `progcomp' - If set, the programmable completion facilities (*note - Programmable Completion::) are enabled. This option is - enabled by default. - - `promptvars' - If set, prompt strings undergo parameter expansion, command - substitution, arithmetic expansion, and quote removal after - being expanded as described below (*note Printing a Prompt::). - This option is enabled by default. - - `restricted_shell' - The shell sets this option if it is started in restricted mode - (*note The Restricted Shell::). The value may not be changed. - This is not reset when the startup files are executed, - allowing the startup files to discover whether or not a shell - is restricted. - - `shift_verbose' - If this is set, the `shift' builtin prints an error message - when the shift count exceeds the number of positional - parameters. - - `sourcepath' - If set, the `source' builtin uses the value of `PATH' to find - the directory containing the file supplied as an argument. - This option is enabled by default. - - `xpg_echo' - If set, the `echo' builtin expands backslash-escape sequences - by default. - - - The return status when listing options is zero if all OPTNAMES are - enabled, non-zero otherwise. When setting or unsetting options, - the return status is zero unless an OPTNAME is not a valid shell - option. - - - -File: bash.info, Node: Special Builtins, Prev: Modifying Shell Behavior, Up: Shell Builtin Commands - -4.4 Special Builtins -==================== - -For historical reasons, the POSIX standard has classified several -builtin commands as _special_. When Bash is executing in POSIX mode, -the special builtins differ from other builtin commands in three -respects: - - 1. Special builtins are found before shell functions during command - lookup. - - 2. If a special builtin returns an error status, a non-interactive - shell exits. - - 3. Assignment statements preceding the command stay in effect in the - shell environment after the command completes. - - When Bash is not executing in POSIX mode, these builtins behave no -differently than the rest of the Bash builtin commands. The Bash POSIX -mode is described in *note Bash POSIX Mode::. - - These are the POSIX special builtins: - break : . continue eval exec exit export readonly return set - shift trap unset - - -File: bash.info, Node: Shell Variables, Next: Bash Features, Prev: Shell Builtin Commands, Up: Top - -5 Shell Variables -***************** - -* Menu: - -* Bourne Shell Variables:: Variables which Bash uses in the same way - as the Bourne Shell. -* Bash Variables:: List of variables that exist in Bash. - - This chapter describes the shell variables that Bash uses. Bash -automatically assigns default values to a number of variables. - - -File: bash.info, Node: Bourne Shell Variables, Next: Bash Variables, Up: Shell Variables - -5.1 Bourne Shell Variables -========================== - -Bash uses certain shell variables in the same way as the Bourne shell. -In some cases, Bash assigns a default value to the variable. - -`CDPATH' - A colon-separated list of directories used as a search path for - the `cd' builtin command. - -`HOME' - The current user's home directory; the default for the `cd' builtin - command. The value of this variable is also used by tilde - expansion (*note Tilde Expansion::). - -`IFS' - A list of characters that separate fields; used when the shell - splits words as part of expansion. - -`MAIL' - If this parameter is set to a filename and the `MAILPATH' variable - is not set, Bash informs the user of the arrival of mail in the - specified file. - -`MAILPATH' - A colon-separated list of filenames which the shell periodically - checks for new mail. Each list entry can specify the message that - is printed when new mail arrives in the mail file by separating - the file name from the message with a `?'. When used in the text - of the message, `$_' expands to the name of the current mail file. - -`OPTARG' - The value of the last option argument processed by the `getopts' - builtin. - -`OPTIND' - The index of the last option argument processed by the `getopts' - builtin. - -`PATH' - A colon-separated list of directories in which the shell looks for - commands. A zero-length (null) directory name in the value of - `PATH' indicates the current directory. A null directory name may - appear as two adjacent colons, or as an initial or trailing colon. - -`PS1' - The primary prompt string. The default value is `\s-\v\$ '. - *Note Printing a Prompt::, for the complete list of escape - sequences that are expanded before `PS1' is displayed. - -`PS2' - The secondary prompt string. The default value is `> '. - - - -File: bash.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables - -5.2 Bash Variables -================== - -These variables are set or used by Bash, but other shells do not -normally treat them specially. - - A few variables used by Bash are described in different chapters: -variables for controlling the job control facilities (*note Job Control -Variables::). - -`BASH' - The full pathname used to execute the current instance of Bash. - -`BASHOPTS' - A colon-separated list of enabled shell options. Each word in the - list is a valid argument for the `-s' option to the `shopt' - builtin command (*note The Shopt Builtin::). The options - appearing in `BASHOPTS' are those reported as `on' by `shopt'. If - this variable is in the environment when Bash starts up, each - shell option in the list will be enabled before reading any - startup files. This variable is readonly. - -`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. - -`BASH_ALIASES' - An associative array variable whose members correspond to the - internal list of aliases as maintained by the `alias' builtin - (*note Bourne Shell Builtins::). Elements added to this array - appear in the alias list; unsetting array elements cause aliases - to be removed from the alias list. - -`BASH_ARGC' - An array variable whose values are the number of parameters in each - frame of the current bash execution call stack. The number of - parameters to the current subroutine (shell function or script - executed with `.' or `source') is at the top of the stack. When a - 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). - -`BASH_ARGV' - An array variable containing all of the parameters in the current - bash execution call stack. The final parameter of the last - subroutine call is at the top of the stack; the first parameter of - the initial call is at the bottom. When a subroutine is executed, - 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). - -`BASH_CMDS' - An associative array variable whose members correspond to the - internal hash table of commands as maintained by the `hash' builtin - (*note Bourne Shell Builtins::). Elements added to this array - appear in the hash table; unsetting array elements cause commands - to be removed from the hash table. - -`BASH_COMMAND' - The command currently being executed or about to be executed, - unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the trap. - -`BASH_ENV' - If this variable is set when Bash is invoked to execute a shell - script, its value is expanded and used as the name of a startup - file to read before executing the script. *Note Bash Startup - Files::. - -`BASH_EXECUTION_STRING' - The command argument to the `-c' invocation option. - -`BASH_LINENO' - An array variable whose members are the line numbers in source - files corresponding to each member of FUNCNAME. - `${BASH_LINENO[$i]}' is the line number in the source file where - `${FUNCNAME[$i]}' was called (or `${BASH_LINENO[$i-1]}' if - referenced within another shell function). The corresponding - source file name is `${BASH_SOURCE[$i]}'. Use `LINENO' to obtain - the current line number. - -`BASH_REMATCH' - An array variable whose members are assigned by the `=~' binary - operator to the `[[' conditional command (*note Conditional - Constructs::). The element with index 0 is the portion of the - string matching the entire regular expression. The element with - index N is the portion of the string matching the Nth - parenthesized subexpression. This variable is read-only. - -`BASH_SOURCE' - An array variable whose members are the source filenames - corresponding to the elements in the `FUNCNAME' array variable. - -`BASH_SUBSHELL' - Incremented by one each time a subshell or subshell environment is - spawned. The initial value is 0. - -`BASH_VERSINFO' - A readonly array variable (*note Arrays::) whose members hold - version information for this instance of Bash. The values - assigned to the array members are as follows: - - `BASH_VERSINFO[0]' - The major version number (the RELEASE). - - `BASH_VERSINFO[1]' - The minor version number (the VERSION). - - `BASH_VERSINFO[2]' - The patch level. - - `BASH_VERSINFO[3]' - The build version. - - `BASH_VERSINFO[4]' - The release status (e.g., BETA1). - - `BASH_VERSINFO[5]' - The value of `MACHTYPE'. - - -`BASH_VERSION' - The version number of the current instance of Bash. - -`BASH_XTRACEFD' - If set to an integer corresponding to a valid file descriptor, Bash - will write the trace output generated when `set -x' is enabled to - that file descriptor. This allows tracing output to be separated - from diagnostic and error messages. The file descriptor is closed - when `BASH_XTRACEFD' is unset or assigned a new value. Unsetting - `BASH_XTRACEFD' or assigning it the empty string causes the trace - output to be sent to the standard error. Note that setting - `BASH_XTRACEFD' to 2 (the standard error file descriptor) and then - unsetting it will result in the standard error being closed. - -`COLUMNS' - Used by the `select' builtin command to determine the terminal - width when printing selection lists. Automatically set upon - receipt of a `SIGWINCH'. - -`COMP_CWORD' - An index into `${COMP_WORDS}' of the word containing the current - cursor position. This variable is available only in shell - functions invoked by the programmable completion facilities (*note - Programmable Completion::). - -`COMP_LINE' - The current command line. This variable is available only in - shell functions and external commands invoked by the programmable - completion facilities (*note Programmable Completion::). - -`COMP_POINT' - The index of the current cursor position relative to the beginning - of the current command. If the current cursor position is at the - end of the current command, the value of this variable is equal to - `${#COMP_LINE}'. This variable is available only in shell - functions and external commands invoked by the programmable - completion facilities (*note Programmable Completion::). - -`COMP_TYPE' - Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: TAB, for - normal completion, `?', for listing completions after successive - tabs, `!', for listing alternatives on partial word completion, - `@', to list completions if the word is not unmodified, or `%', - for menu completion. This variable is available only in shell - functions and external commands invoked by the programmable - completion facilities (*note Programmable Completion::). - -`COMP_KEY' - The key (or final key of a key sequence) used to invoke the current - completion function. - -`COMP_WORDBREAKS' - The set of characters that the Readline library treats as word - separators when performing word completion. If `COMP_WORDBREAKS' - is unset, it loses its special properties, even if it is - subsequently reset. - -`COMP_WORDS' - An array variable consisting of the individual words in the - current command line. The line is split into words as Readline - would split it, using `COMP_WORDBREAKS' as described above. This - variable is available only in shell functions invoked by the - programmable completion facilities (*note Programmable - Completion::). - -`COMPREPLY' - An array variable from which Bash reads the possible completions - generated by a shell function invoked by the programmable - completion facility (*note Programmable Completion::). - -`DIRSTACK' - An array variable containing the current contents of the directory - stack. Directories appear in the stack in the order they are - displayed by the `dirs' builtin. Assigning to members of this - array variable may be used to modify directories already in the - stack, but the `pushd' and `popd' builtins must be used to add and - remove directories. 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. - -`EMACS' - If Bash finds this variable in the environment when the shell - starts with value `t', it assumes that the shell is running in an - emacs shell buffer and disables line editing. - -`EUID' - The numeric effective user id of the current user. This variable - is readonly. - -`FCEDIT' - The editor used as a default by the `-e' option to the `fc' - builtin command. - -`FIGNORE' - A colon-separated list of suffixes to ignore when performing - filename completion. A file name whose suffix matches one of the - entries in `FIGNORE' is excluded from the list of matched file - names. A sample value is `.o:~' - -`FUNCNAME' - An array variable containing the names of all shell functions - currently in the execution call stack. The element with index 0 - is the name of any currently-executing shell function. The - bottom-most element is `"main"'. This variable exists only when a - shell function is executing. Assignments to `FUNCNAME' have no - effect and return an error status. If `FUNCNAME' is unset, it - loses its special properties, even if it is subsequently reset. - -`GLOBIGNORE' - A colon-separated list of patterns defining the set of filenames to - be ignored by filename expansion. If a filename matched by a - filename expansion pattern also matches one of the patterns in - `GLOBIGNORE', it is removed from the list of matches. - -`GROUPS' - An array variable containing the list of groups of which the - current user is a member. Assignments to `GROUPS' have no effect - and return an error status. If `GROUPS' is unset, it loses its - special properties, even if it is subsequently reset. - -`histchars' - Up to three characters which control history expansion, quick - substitution, and tokenization (*note History Interaction::). The - first character is the HISTORY EXPANSION character, that is, the - character which signifies the start of a history expansion, - normally `!'. The second character is the character which - signifies `quick substitution' when seen as the first character on - a line, normally `^'. The optional third character is the - character which indicates that the remainder of the line is a - comment when found as the first character of a word, usually `#'. - The history comment character causes history substitution to be - skipped for the remaining words on the line. It does not - necessarily cause the shell parser to treat the rest of the line - as a comment. - -`HISTCMD' - The history number, or index in the history list, of the current - command. If `HISTCMD' is unset, it loses its special properties, - even if it is subsequently reset. - -`HISTCONTROL' - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - `ignorespace', lines which begin with a space character are not - saved in the history list. A value of `ignoredups' causes lines - which match the previous history entry to not be saved. A value - of `ignoreboth' is shorthand for `ignorespace' and `ignoredups'. - A value of `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. If - `HISTCONTROL' 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 `HISTIGNORE'. 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 `HISTCONTROL'. - -`HISTFILE' - The name of the file to which the command history is saved. The - default value is `~/.bash_history'. - -`HISTFILESIZE' - The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is truncated, - if necessary, by removing the oldest entries, to contain no more - than that number of lines. The history file is also truncated to - this size after writing it when an interactive shell exits. The - default value is 500. - -`HISTIGNORE' - A colon-separated list of patterns used to decide which command - lines should be saved on the history list. Each pattern is - anchored at the beginning of the line and must match the complete - line (no implicit `*' is appended). Each pattern is tested - against the line after the checks specified by `HISTCONTROL' 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 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 `HISTIGNORE'. - - `HISTIGNORE' subsumes the function of `HISTCONTROL'. A pattern of - `&' is identical to `ignoredups', and a pattern of `[ ]*' is - identical to `ignorespace'. Combining these two patterns, - separating them with a colon, provides the functionality of - `ignoreboth'. - -`HISTSIZE' - The maximum number of commands to remember on the history list. - The default value is 500. - -`HISTTIMEFORMAT' - If this variable is set and not null, its value is used as a - format string for STRFTIME to print the time stamp associated with - each history entry displayed by the `history' builtin. If this - variable is set, time stamps are written to the history file so - they may be preserved across shell sessions. This uses the - history comment character to distinguish timestamps from other - history lines. - -`HOSTFILE' - Contains the name of a file in the same format as `/etc/hosts' that - should be read when the shell needs to complete a hostname. The - list of possible hostname completions may be changed while the - shell is running; the next time hostname completion is attempted - after the value is changed, Bash adds the contents of the new file - to the existing list. If `HOSTFILE' is set, but has no value, or - does not name a readable file, Bash attempts to read `/etc/hosts' - to obtain the list of possible hostname completions. When - `HOSTFILE' is unset, the hostname list is cleared. - -`HOSTNAME' - The name of the current host. - -`HOSTTYPE' - A string describing the machine Bash is running on. - -`IGNOREEOF' - Controls the action of the shell on receipt of an `EOF' character - as the sole input. If set, the value denotes the number of - consecutive `EOF' characters that can be read as the 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. If the variable does not exist, - then `EOF' signifies the end of input to the shell. This is only - in effect for interactive shells. - -`INPUTRC' - The name of the Readline initialization file, overriding the - default of `~/.inputrc'. - -`LANG' - Used to determine the locale category for any category not - specifically selected with a variable starting with `LC_'. - -`LC_ALL' - This variable overrides the value of `LANG' and any other `LC_' - variable specifying a locale category. - -`LC_COLLATE' - This variable determines the collation order used when sorting the - results of filename expansion, and determines the behavior of - range expressions, equivalence classes, and collating sequences - within filename expansion and pattern matching (*note Filename - Expansion::). - -`LC_CTYPE' - This variable determines the interpretation of characters and the - behavior of character classes within filename expansion and pattern - matching (*note Filename Expansion::). - -`LC_MESSAGES' - This variable determines the locale used to translate double-quoted - strings preceded by a `$' (*note Locale Translation::). - -`LC_NUMERIC' - This variable determines the locale category used for number - formatting. - -`LINENO' - The line number in the script or shell function currently - executing. - -`LINES' - Used by the `select' builtin command to determine the column length - for printing selection lists. Automatically set upon receipt of a - `SIGWINCH'. - -`MACHTYPE' - A string that fully describes the system type on which Bash is - executing, in the standard GNU CPU-COMPANY-SYSTEM format. - -`MAILCHECK' - How often (in seconds) that the shell should check for mail in the - files specified in the `MAILPATH' or `MAIL' variables. The - default is 60 seconds. When it is time to check 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. - -`OLDPWD' - The previous working directory as set by the `cd' builtin. - -`OPTERR' - If set to the value 1, Bash displays error messages generated by - the `getopts' builtin command. - -`OSTYPE' - A string describing the operating system Bash is running on. - -`PIPESTATUS' - An array variable (*note Arrays::) containing a list of exit - status values from the processes in the most-recently-executed - foreground pipeline (which may contain only a single command). - -`POSIXLY_CORRECT' - If this variable is in the environment when `bash' starts, the - shell enters POSIX mode (*note Bash POSIX Mode::) before reading - the startup files, as if the `--posix' invocation option had been - supplied. If it is set while the shell is running, `bash' enables - POSIX mode, as if the command - `set -o posix' - had been executed. - -`PPID' - The process ID of the shell's parent process. This variable is - readonly. - -`PROMPT_COMMAND' - If set, the value is interpreted as a command to execute before - the printing of each primary prompt (`$PS1'). - -`PROMPT_DIRTRIM' - If set to a number greater than zero, the value is used as the - number of trailing directory components to retain when expanding - the `\w' and `\W' prompt string escapes (*note Printing a - Prompt::). Characters removed are replaced with an ellipsis. - -`PS3' - The value of this variable is used as the prompt for the `select' - command. If this variable is not set, the `select' command - prompts with `#? ' - -`PS4' - The value 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 `+ '. - -`PWD' - The current working directory as set by the `cd' builtin. - -`RANDOM' - Each time this parameter is referenced, a random integer between 0 - and 32767 is generated. Assigning a value to this variable seeds - the random number generator. - -`REPLY' - The default variable for the `read' builtin. - -`SECONDS' - This variable expands to the number of seconds since the shell was - started. Assignment to this variable resets the count to the - value assigned, and the expanded value becomes the value assigned - plus the number of seconds since the assignment. - -`SHELL' - The full pathname to the shell is kept in this environment - variable. If it is not set when the shell starts, Bash assigns to - it the full pathname of the current user's login shell. - -`SHELLOPTS' - A colon-separated list of enabled shell options. Each word in the - list is a valid argument for the `-o' option to the `set' builtin - command (*note The Set Builtin::). The options appearing in - `SHELLOPTS' are those reported as `on' by `set -o'. If this - variable is in the environment when Bash starts up, each shell - option in the list will be enabled before reading any startup - files. This variable is readonly. - -`SHLVL' - Incremented by one each time a new instance of Bash is started. - This is intended to be a count of how deeply your Bash shells are - nested. - -`TIMEFORMAT' - The value of this parameter is used as a format string specifying - how the timing information for pipelines prefixed with the `time' - reserved word should be displayed. The `%' character introduces 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][l]R' - The elapsed time in seconds. - - `%[P][l]U' - The number of CPU seconds spent in user mode. - - `%[P][l]S' - The number of CPU seconds spent in system mode. - - `%P' - The CPU percentage, computed as (%U + %S) / %R. - - The optional P is a digit specifying the precision, 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 used. - - The optional `l' specifies a longer format, including minutes, of - the form MMmSS.FFs. The value of P determines whether or not the - fraction is included. - - If this variable is not set, Bash acts as if it had the value - `$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'' - If the value is null, no timing information is displayed. A - trailing newline is added when the format string is displayed. - -`TMOUT' - If set to a value greater than zero, `TMOUT' is treated as the - default timeout for the `read' builtin (*note Bash Builtins::). - The `select' command (*note Conditional Constructs::) terminates - if input does not arrive after `TMOUT' seconds when input is coming - from a terminal. - - In an interactive shell, the value is interpreted as the number of - seconds to wait for input after issuing the primary prompt when - the shell is interactive. Bash terminates after that number of - seconds if input does not arrive. - -`TMPDIR' - If set, Bash uses its value as the name of a directory in which - Bash creates temporary files for the shell's use. - -`UID' - The numeric real user id of the current user. This variable is - readonly. - - - -File: bash.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top - -6 Bash Features -*************** - -This section describes features unique to Bash. - -* Menu: - -* Invoking Bash:: Command line options that you can give - to Bash. -* Bash Startup Files:: When and how Bash executes scripts. -* Interactive Shells:: What an interactive shell is. -* Bash Conditional Expressions:: Primitives used in composing expressions for - the `test' builtin. -* Shell Arithmetic:: Arithmetic on shell variables. -* Aliases:: Substituting one command for another. -* Arrays:: Array Variables. -* The Directory Stack:: History of visited directories. -* Printing a Prompt:: Controlling the PS1 string. -* The Restricted Shell:: A more controlled mode of shell execution. -* Bash POSIX Mode:: Making Bash behave more closely to what - the POSIX standard specifies. - - -File: bash.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features - -6.1 Invoking Bash -================= - - bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] - bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] - bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] - - In addition to the single-character shell command-line options -(*note The Set Builtin::), there are several multi-character options -that you can use. These options must appear on the command line before -the single-character options to be recognized. - -`--debugger' - Arrange for the debugger profile to be executed before the shell - starts. Turns on extended debugging mode (see *note The Shopt - Builtin:: for a description of the `extdebug' option to the `shopt' - builtin) and shell function tracing (see *note The Set Builtin:: - for a description of the `-o functrace' option). - -`--dump-po-strings' - A list of all double-quoted strings preceded by `$' is printed on - the standard output in the GNU `gettext' PO (portable object) file - format. Equivalent to `-D' except for the output format. - -`--dump-strings' - Equivalent to `-D'. - -`--help' - Display a usage message on standard output and exit successfully. - -`--init-file FILENAME' -`--rcfile FILENAME' - Execute commands from FILENAME (instead of `~/.bashrc') in an - interactive shell. - -`--login' - Equivalent to `-l'. - -`--noediting' - Do not use the GNU Readline library (*note Command Line Editing::) - to read command lines when the shell is interactive. - -`--noprofile' - Don't load the system-wide startup file `/etc/profile' or any of - the personal initialization files `~/.bash_profile', - `~/.bash_login', or `~/.profile' when Bash is invoked as a login - shell. - -`--norc' - Don't read the `~/.bashrc' initialization file in an interactive - shell. This is on by default if the shell is invoked as `sh'. - -`--posix' - Change the behavior of Bash where the default operation differs - from the POSIX standard to match the standard. This is intended - to make Bash behave as a strict superset of that standard. *Note - Bash POSIX Mode::, for a description of the Bash POSIX mode. - -`--restricted' - Make the shell a restricted shell (*note The Restricted Shell::). - -`--verbose' - Equivalent to `-v'. Print shell input lines as they're read. - -`--version' - Show version information for this instance of Bash on the standard - output and exit successfully. - - - There are several single-character options that may be supplied at -invocation which are not available with the `set' builtin. - -`-c STRING' - Read and execute commands from STRING after processing the - options, then exit. Any remaining arguments are assigned to the - positional parameters, starting with `$0'. - -`-i' - Force the shell to run interactively. Interactive shells are - described in *note Interactive Shells::. - -`-l' - Make this shell act as if it had been directly invoked by login. - When the shell is interactive, this is equivalent to starting a - login shell with `exec -l bash'. When the shell is not - interactive, the login shell startup files will be executed. - `exec bash -l' or `exec bash --login' will replace the current - shell with a Bash login shell. *Note Bash Startup Files::, for a - description of the special behavior of a login shell. - -`-r' - Make the shell a restricted shell (*note The Restricted Shell::). - -`-s' - If this option is present, or if no arguments remain after option - processing, then commands are read from the standard input. This - option allows the positional parameters to be set when invoking an - interactive shell. - -`-D' - A list of all double-quoted strings preceded by `$' is printed on - the standard output. These are the strings that are subject to - language translation when the current locale is not `C' or `POSIX' - (*note Locale Translation::). This implies the `-n' option; no - commands will be executed. - -`[-+]O [SHOPT_OPTION]' - SHOPT_OPTION is one of the shell options accepted by the `shopt' - builtin (*note The Shopt Builtin::). If SHOPT_OPTION is present, - `-O' sets the value of that option; `+O' unsets it. If - SHOPT_OPTION is not supplied, the names and values of the shell - options accepted by `shopt' are printed on the standard output. - If the invocation option is `+O', the output is displayed in a - format that may be reused as input. - -`--' - A `--' signals the end of options and disables further option - processing. Any arguments after the `--' are treated as filenames - and arguments. - - - A _login_ shell is one whose first character of argument zero is -`-', or one invoked with the `--login' option. - - An _interactive_ shell is one started without non-option arguments, -unless `-s' is specified, without specifying the `-c' option, and whose -input and output are both connected to terminals (as determined by -`isatty(3)'), or one started with the `-i' option. *Note Interactive -Shells::, for more information. - - If arguments remain after option processing, and neither the `-c' -nor the `-s' option has been supplied, the first argument is assumed to -be the name of a file containing shell commands (*note Shell Scripts::). -When Bash is invoked in this fashion, `$0' is set to the name of the -file, and the positional parameters are set to the remaining arguments. -Bash reads and executes commands from this file, then exits. Bash's -exit status is the exit status of the last command executed in the -script. If no commands are executed, the exit status is 0. - - -File: bash.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: Invoking Bash, Up: Bash Features - -6.2 Bash Startup Files -====================== - -This section describes how Bash executes its startup files. If any of -the files exist but cannot be read, Bash reports an error. Tildes are -expanded in file names as described above under Tilde Expansion (*note -Tilde Expansion::). - - Interactive shells are described in *note Interactive Shells::. - -Invoked as an interactive login shell, or with `--login' -........................................................ - -When Bash is invoked as an interactive login shell, or as a -non-interactive shell with the `--login' option, it first reads and -executes commands from the file `/etc/profile', if that file exists. -After reading that file, it looks for `~/.bash_profile', -`~/.bash_login', and `~/.profile', in that order, and reads and -executes commands from the first one that exists and is readable. The -`--noprofile' option may be used when the shell is started to inhibit -this behavior. - - When a login shell exits, Bash reads and executes commands from the -file `~/.bash_logout', if it exists. - -Invoked as an interactive non-login shell -......................................... - -When an interactive shell that is not a login shell is started, Bash -reads and executes commands from `~/.bashrc', if that file exists. -This may be inhibited by using the `--norc' option. The `--rcfile -FILE' option will force Bash to read and execute commands from FILE -instead of `~/.bashrc'. - - So, typically, your `~/.bash_profile' contains the line - `if [ -f ~/.bashrc ]; then . ~/.bashrc; fi' - after (or before) any login-specific initializations. - -Invoked non-interactively -......................... - -When Bash is started non-interactively, to run a shell script, for -example, it looks for the variable `BASH_ENV' 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. Bash behaves as if the -following command were executed: - `if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi' - but the value of the `PATH' variable is not used to search for the -file name. - - As noted above, if a non-interactive shell is invoked with the -`--login' option, Bash attempts to read and execute commands from the -login shell startup files. - -Invoked with name `sh' -...................... - -If Bash is invoked with the name `sh', it tries to mimic the startup -behavior of historical versions of `sh' as closely as possible, while -conforming to the POSIX standard as well. - - When invoked as an interactive login shell, or as a non-interactive -shell with the `--login' option, it first attempts to read and execute -commands from `/etc/profile' and `~/.profile', in that order. The -`--noprofile' option may be used to inhibit this behavior. When -invoked as an interactive shell with the name `sh', Bash looks for the -variable `ENV', 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 `sh' does not attempt to read and execute commands -from any other startup files, the `--rcfile' option has no effect. A -non-interactive shell invoked with the name `sh' does not attempt to -read any other startup files. - - When invoked as `sh', Bash enters POSIX mode after the startup files -are read. - -Invoked in POSIX mode -..................... - -When Bash is started in POSIX mode, as with the `--posix' command line -option, it follows the POSIX standard for startup files. In this mode, -interactive shells expand the `ENV' variable and commands are read and -executed from the file whose name is the expanded value. No other -startup files are read. - -Invoked by remote shell daemon -.............................. - -Bash attempts to determine when it is being run with its standard input -connected to a a network connection, as if by the remote shell daemon, -usually `rshd', or the secure shell daemon `sshd'. If Bash determines -it is being run in this fashion, it reads and executes commands from -`~/.bashrc', if that file exists and is readable. It will not do this -if invoked as `sh'. The `--norc' option may be used to inhibit this -behavior, and the `--rcfile' option may be used to force another file -to be read, but `rshd' does not generally invoke the shell with those -options or allow them to be specified. - -Invoked with unequal effective and real UID/GIDs -................................................ - -If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the `-p' option is not supplied, no startup -files are read, shell functions are not inherited from the environment, -the `SHELLOPTS', `BASHOPTS', `CDPATH', and `GLOBIGNORE' variables, if -they appear in the environment, are ignored, and the effective user id -is set to the real user id. If the `-p' option is supplied at -invocation, the startup behavior is the same, but the effective user id -is not reset. - - -File: bash.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features - -6.3 Interactive Shells -====================== - -* Menu: - -* What is an Interactive Shell?:: What determines whether a shell is Interactive. -* Is this Shell Interactive?:: How to tell if a shell is interactive. -* Interactive Shell Behavior:: What changes in a interactive shell? - - -File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells - -6.3.1 What is an Interactive Shell? ------------------------------------ - -An interactive shell is one started without non-option arguments, -unless `-s' is specified, without specifying the `-c' option, and whose -input and error output are both connected to terminals (as determined -by `isatty(3)'), or one started with the `-i' option. - - An interactive shell generally reads from and writes to a user's -terminal. - - The `-s' invocation option may be used to set the positional -parameters when an interactive shell is started. - - -File: bash.info, Node: Is this Shell Interactive?, Next: Interactive Shell Behavior, Prev: What is an Interactive Shell?, Up: Interactive Shells - -6.3.2 Is this Shell Interactive? --------------------------------- - -To determine within a startup script whether or not Bash is running -interactively, test the value of the `-' special parameter. It -contains `i' when the shell is interactive. For example: - - case "$-" in - *i*) echo This shell is interactive ;; - *) echo This shell is not interactive ;; - esac - - Alternatively, startup scripts may examine the variable `PS1'; it is -unset in non-interactive shells, and set in interactive shells. Thus: - - if [ -z "$PS1" ]; then - echo This shell is not interactive - else - echo This shell is interactive - fi - - -File: bash.info, Node: Interactive Shell Behavior, Prev: Is this Shell Interactive?, Up: Interactive Shells - -6.3.3 Interactive Shell Behavior --------------------------------- - -When the shell is running interactively, it changes its behavior in -several ways. - - 1. Startup files are read and executed as described in *note Bash - Startup Files::. - - 2. Job Control (*note Job Control::) is enabled by default. When job - control is in effect, Bash ignores the keyboard-generated job - control signals `SIGTTIN', `SIGTTOU', and `SIGTSTP'. - - 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. - - 4. Bash executes the value of the `PROMPT_COMMAND' variable as a - command before printing the primary prompt, `$PS1' (*note Bash - Variables::). - - 5. Readline (*note Command Line Editing::) is used to read commands - from the user's terminal. - - 6. Bash inspects the value of the `ignoreeof' option to `set -o' - instead of exiting immediately when it receives an `EOF' on its - standard input when reading a command (*note The Set Builtin::). - - 7. Command history (*note Bash History Facilities::) and history - expansion (*note History Interaction::) are enabled by default. - Bash will save the command history to the file named by `$HISTFILE' - when an interactive shell exits. - - 8. Alias expansion (*note Aliases::) is performed by default. - - 9. In the absence of any traps, Bash ignores `SIGTERM' (*note - Signals::). - - 10. In the absence of any traps, `SIGINT' is caught and handled - ((*note Signals::). `SIGINT' will interrupt some shell builtins. - - 11. An interactive login shell sends a `SIGHUP' to all jobs on exit if - the `huponexit' shell option has been enabled (*note Signals::). - - 12. The `-n' invocation option is ignored, and `set -n' has no effect - (*note The Set Builtin::). - - 13. Bash will check for mail periodically, depending on the values of - the `MAIL', `MAILPATH', and `MAILCHECK' shell variables (*note - Bash Variables::). - - 14. Expansion errors due to references to unbound shell variables after - `set -u' has been enabled will not cause the shell to exit (*note - The Set Builtin::). - - 15. The shell will not exit on expansion errors caused by VAR being - unset or null in `${VAR:?WORD}' expansions (*note Shell Parameter - Expansion::). - - 16. Redirection errors encountered by shell builtins will not cause the - shell to exit. - - 17. When running in POSIX mode, a special builtin returning an error - status will not cause the shell to exit (*note Bash POSIX Mode::). - - 18. A failed `exec' will not cause the shell to exit (*note Bourne - Shell Builtins::). - - 19. Parser syntax errors will not cause the shell to exit. - - 20. Simple spelling correction for directory arguments to the `cd' - builtin is enabled by default (see the description of the `cdspell' - option to the `shopt' builtin in *note The Shopt Builtin::). - - 21. The shell will check the value of the `TMOUT' variable and exit if - a command is not read within the specified number of seconds after - printing `$PS1' (*note Bash Variables::). - - - -File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, Prev: Interactive Shells, Up: Bash Features - -6.4 Bash Conditional Expressions -================================ - -Conditional expressions are used by the `[[' compound command and the -`test' and `[' builtin commands. - - Expressions may be unary or binary. Unary expressions are often -used to examine the status of a file. There are string operators and -numeric comparison operators as well. If the FILE argument to one of -the primaries is of the form `/dev/fd/N', then file descriptor N is -checked. If the FILE argument to one of the primaries is one of -`/dev/stdin', `/dev/stdout', or `/dev/stderr', file descriptor 0, 1, or -2, respectively, is checked. - - Unless otherwise specified, primaries that operate on files follow -symbolic links and operate on the target of the link, rather than the -link itself. - -`-a FILE' - True if FILE exists. - -`-b FILE' - True if FILE exists and is a block special file. - -`-c FILE' - True if FILE exists and is a character special file. - -`-d FILE' - True if FILE exists and is a directory. - -`-e FILE' - True if FILE exists. - -`-f FILE' - True if FILE exists and is a regular file. - -`-g FILE' - True if FILE exists and its set-group-id bit is set. - -`-h FILE' - True if FILE exists and is a symbolic link. - -`-k FILE' - True if FILE exists and its "sticky" bit is set. - -`-p FILE' - True if FILE exists and is a named pipe (FIFO). - -`-r FILE' - True if FILE exists and is readable. - -`-s FILE' - True if FILE exists and has a size greater than zero. - -`-t FD' - True if file descriptor FD is open and refers to a terminal. - -`-u FILE' - True if FILE exists and its set-user-id bit is set. - -`-w FILE' - True if FILE exists and is writable. - -`-x FILE' - True if FILE exists and is executable. - -`-O FILE' - True if FILE exists and is owned by the effective user id. - -`-G FILE' - True if FILE exists and is owned by the effective group id. - -`-L FILE' - True if FILE exists and is a symbolic link. - -`-S FILE' - True if FILE exists and is a socket. - -`-N FILE' - True if FILE exists and has been modified since it was last read. - -`FILE1 -nt FILE2' - True if FILE1 is newer (according to modification date) than - FILE2, or if FILE1 exists and FILE2 does not. - -`FILE1 -ot FILE2' - True if FILE1 is older than FILE2, or if FILE2 exists and FILE1 - does not. - -`FILE1 -ef FILE2' - True if FILE1 and FILE2 refer to the same device and inode numbers. - -`-o OPTNAME' - True if shell option OPTNAME is enabled. The list of options - appears in the description of the `-o' option to the `set' builtin - (*note The Set Builtin::). - -`-z STRING' - True if the length of STRING is zero. - -`-n STRING' -`STRING' - True if the length of STRING is non-zero. - -`STRING1 == STRING2' - True if the strings are equal. `=' may be used in place of `==' - for strict POSIX compliance. - -`STRING1 != STRING2' - True if the strings are not equal. - -`STRING1 < STRING2' - True if STRING1 sorts before STRING2 lexicographically. - -`STRING1 > STRING2' - True if STRING1 sorts after STRING2 lexicographically. - -`ARG1 OP ARG2' - `OP' is one of `-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. These - 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. - - - -File: bash.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features - -6.5 Shell Arithmetic -==================== - -The shell allows arithmetic expressions to be evaluated, as one of the -shell expansions or by the `let' and the `-i' option to the `declare' -builtins. - - Evaluation is done in fixed-width integers with no check for -overflow, though division by 0 is trapped and flagged as an error. The -operators and their precedence, associativity, and values are the same -as in the C language. The following list of operators is grouped into -levels of equal-precedence operators. The levels are listed in order -of decreasing precedence. - -`ID++ ID--' - variable post-increment and post-decrement - -`++ID --ID' - variable pre-increment and pre-decrement - -`- +' - unary minus and plus - -`! ~' - logical and bitwise negation - -`**' - exponentiation - -`* / %' - multiplication, division, remainder - -`+ -' - addition, subtraction - -`<< >>' - left and right bitwise shifts - -`<= >= < >' - comparison - -`== !=' - equality and inequality - -`&' - bitwise AND - -`^' - bitwise exclusive OR - -`|' - bitwise OR - -`&&' - logical AND - -`||' - logical OR - -`expr ? expr : expr' - conditional operator - -`= *= /= %= += -= <<= >>= &= ^= |=' - assignment - -`expr1 , expr2' - comma - - Shell variables are allowed as operands; parameter expansion is -performed 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 0 when referenced by name without using the parameter -expansion syntax. The value of a variable is evaluated as an -arithmetic expression when it is referenced, or when a variable which -has been given the INTEGER attribute using `declare -i' is assigned a -value. A null value evaluates to 0. A shell variable need not have -its integer 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 [BASE`#']N, where BASE is a decimal number between 2 and 64 -representing the arithmetic base, and N is a number in that base. If -BASE`#' is omitted, then base 10 is used. The digits greater than 9 -are represented by the lowercase letters, the uppercase letters, `@', -and `_', in that order. If BASE is less than or equal to 36, lowercase -and uppercase letters may be used interchangeably to represent numbers -between 10 and 35. - - Operators are evaluated in order of precedence. Sub-expressions in -parentheses are evaluated first and may override the precedence rules -above. - - -File: bash.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: Bash Features - -6.6 Aliases -=========== - -ALIASES allow a string to be substituted for a word when it is used as -the first word of a simple command. The shell maintains a list of -aliases that may be set and unset with the `alias' and `unalias' -builtin commands. - - 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 any of the shell -metacharacters 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 -`ls' to `"ls -F"', for instance, and Bash does not try to recursively -expand the replacement text. If the last character of the alias value -is a space or tab character, then the next command word following the -alias is also checked for alias expansion. - - Aliases are created and listed with the `alias' command, and removed -with the `unalias' command. - - There is no mechanism for using arguments in the replacement text, -as in `csh'. If arguments are needed, a shell function should be used -(*note Shell Functions::). - - Aliases are not expanded when the shell is not interactive, unless -the `expand_aliases' shell option is set using `shopt' (*note The Shopt -Builtin::). - - The rules concerning the definition and use of aliases are somewhat -confusing. Bash always reads at least one complete line of input -before executing any of the commands on that line. Aliases are -expanded when a command is read, not when it is executed. Therefore, an -alias 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 -compound command. As a consequence, aliases defined in a function are -not available until after that function is executed. To be safe, -always put alias definitions on a separate line, and do not use `alias' -in compound commands. - - For almost every purpose, shell functions are preferred over aliases. - - -File: bash.info, Node: Arrays, Next: The Directory Stack, Prev: Aliases, Up: Bash Features - -6.7 Arrays -========== - -Bash provides one-dimensional indexed and associative array variables. -Any variable may be used as an indexed array; the `declare' 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 contiguously. Indexed arrays are referenced using integers -(including arithmetic expressions (*note Shell Arithmetic::) and are -zero-based; associative arrays use arbitrary strings. - - An indexed array is created automatically if any variable is -assigned to using the syntax - name[SUBSCRIPT]=VALUE - -The SUBSCRIPT is treated as an arithmetic expression that must evaluate -to a number greater than or equal to zero. To explicitly declare an -array, use - declare -a NAME - The syntax - declare -a NAME[SUBSCRIPT] - is also accepted; the SUBSCRIPT is ignored. - - Associative arrays are created using - declare -A NAME. - - Attributes may be specified for an array variable using the -`declare' and `readonly' builtins. Each attribute applies to all -members of an array. - - Arrays are assigned to using compound assignments of the form - name=(value1 ... valueN) - where each VALUE is of the form `[SUBSCRIPT]='STRING. Indexed array -assignments do not require the bracket and subscript. When assigning -to indexed arrays, if the optional subscript is 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 `declare' builtin. Individual -array elements may be assigned to using the `name['SUBSCRIPT`]='VALUE -syntax introduced above. - - Any element of an array may be referenced using -`${name['SUBSCRIPT`]}'. The braces are required to avoid conflicts -with the shell's filename expansion operators. If the SUBSCRIPT is `@' -or `*', the word expands to all members of the array NAME. These -subscripts differ only when the word appears within double quotes. If -the word is double-quoted, `${name[*]}' expands to a single word with -the value of each array member separated by the first character of the -`IFS' variable, and `${name[@]}' expands each element of NAME to a -separate word. When there are no array members, `${name[@]}' 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 `*'. -`${#name['SUBSCRIPT`]}' expands to the length of `${name['SUBSCRIPT`]}'. -If SUBSCRIPT is `@' or `*', the expansion is the number of elements in -the array. Referencing an array variable without a subscript is -equivalent to referencing with a subscript of 0. - - An array variable is considered set if a subscript has been assigned -a value. The null string is a valid value. - - The `unset' builtin is used to destroy arrays. `unset' -NAME[SUBSCRIPT] destroys the array element at index SUBSCRIPT. 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. - - 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. The `read' builtin accepts a `-a' option to assign -a list of words read from the standard input to an array, and can read -values from the standard input into individual array elements. The -`set' and `declare' builtins display array values in a way that allows -them to be reused as input. - - -File: bash.info, Node: The Directory Stack, Next: Printing a Prompt, Prev: Arrays, Up: Bash Features - -6.8 The Directory Stack -======================= - -* Menu: - -* Directory Stack Builtins:: Bash builtin commands to manipulate - the directory stack. - - The directory stack is a list of recently-visited directories. The -`pushd' builtin adds directories to the stack as it changes the current -directory, and the `popd' builtin removes specified directories from -the stack and changes the current directory to the directory removed. -The `dirs' builtin displays the contents of the directory stack. - - The contents of the directory stack are also visible as the value of -the `DIRSTACK' shell variable. - - -File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack - -6.8.1 Directory Stack Builtins ------------------------------- - -`dirs' - dirs [+N | -N] [-clpv] - Display the list of currently remembered directories. Directories - are added to the list with the `pushd' command; the `popd' command - removes directories from the list. - `+N' - Displays the Nth directory (counting from the left of the - list printed by `dirs' when invoked without options), starting - with zero. - - `-N' - Displays the Nth directory (counting from the right of the - list printed by `dirs' when invoked without options), starting - with zero. - - `-c' - Clears the directory stack by deleting all of the elements. - - `-l' - Produces a longer listing; the default listing format uses a - tilde to denote the home directory. - - `-p' - Causes `dirs' to print the directory stack with one entry per - line. - - `-v' - Causes `dirs' to print the directory stack with one entry per - line, prefixing each entry with its index in the stack. - -`popd' - popd [+N | -N] [-n] - - Remove the top entry from the directory stack, and `cd' to the new - top directory. When no arguments are given, `popd' removes the - top directory from the stack and performs a `cd' to the new top - directory. The elements are numbered from 0 starting at the first - directory listed with `dirs'; i.e., `popd' is equivalent to `popd - +0'. - `+N' - Removes the Nth directory (counting from the left of the list - printed by `dirs'), starting with zero. - - `-N' - Removes the Nth directory (counting from the right of the - list printed by `dirs'), starting with zero. - - `-n' - Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is - manipulated. - -`pushd' - pushd [-n] [+N | -N | DIR ] - - Save the current directory on the top of the directory stack and - then `cd' to DIR. With no arguments, `pushd' exchanges the top - two directories. - - `-n' - Suppresses the normal change of directory when adding - directories to the stack, so that only the stack is - manipulated. - - `+N' - Brings the Nth directory (counting from the left of the list - printed by `dirs', starting with zero) to the top of the list - by rotating the stack. - - `-N' - Brings the Nth directory (counting from the right of the list - printed by `dirs', starting with zero) to the top of the list - by rotating the stack. - - `DIR' - Makes the current working directory be the top of the stack, - and then executes the equivalent of ``cd' DIR'. `cd's to DIR. - - - -File: bash.info, Node: Printing a Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features - -6.9 Controlling the Prompt -========================== - -The value of the variable `PROMPT_COMMAND' is examined just before Bash -prints each primary prompt. If `PROMPT_COMMAND' is set and 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: - -`\a' - A bell character. - -`\d' - The date, in "Weekday Month Date" format (e.g., "Tue May 26"). - -`\D{FORMAT}' - The FORMAT is passed to `strftime'(3) and the result is inserted - into the prompt string; an empty FORMAT results in a - locale-specific time representation. The braces are required. - -`\e' - An escape character. - -`\h' - The hostname, up to the first `.'. - -`\H' - The hostname. - -`\j' - The number of jobs currently managed by the shell. - -`\l' - The basename of the shell's terminal device name. - -`\n' - A newline. - -`\r' - A carriage return. - -`\s' - The name of the shell, the basename of `$0' (the portion following - the final slash). - -`\t' - The time, in 24-hour HH:MM:SS format. - -`\T' - The time, in 12-hour HH:MM:SS format. - -`\@' - The time, in 12-hour am/pm format. - -`\A' - The time, in 24-hour HH:MM format. - -`\u' - The username of the current user. - -`\v' - The version of Bash (e.g., 2.00) - -`\V' - The release of Bash, version + patchlevel (e.g., 2.00.0) - -`\w' - The current working directory, with `$HOME' abbreviated with a - tilde (uses the `$PROMPT_DIRTRIM' variable). - -`\W' - The basename of `$PWD', with `$HOME' abbreviated with a tilde. - -`\!' - The history number of this command. - -`\#' - The command number of this command. - -`\$' - If the effective uid is 0, `#', otherwise `$'. - -`\NNN' - The character whose ASCII code is the octal value NNN. - -`\\' - A backslash. - -`\[' - Begin a sequence of non-printing characters. This could be used to - embed a terminal control sequence into the prompt. - -`\]' - End a sequence of non-printing characters. - - 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 (*note Bash History -Facilities::), 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 substitution, arithmetic expansion, and quote removal, subject -to the value of the `promptvars' shell option (*note Bash Builtins::). - - -File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Printing a Prompt, Up: Bash Features - -6.10 The Restricted Shell -========================= - -If Bash is started with the name `rbash', or the `--restricted' or `-r' -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. A restricted shell behaves identically to `bash' -with the exception that the following are disallowed or not performed: - - * Changing directories with the `cd' builtin. - - * Setting or unsetting the values of the `SHELL', `PATH', `ENV', or - `BASH_ENV' variables. - - * Specifying command names containing slashes. - - * Specifying a filename containing a slash as an argument to the `.' - builtin command. - - * Specifying a filename containing a slash as an argument to the `-p' - option to the `hash' builtin command. - - * Importing function definitions from the shell environment at - startup. - - * Parsing the value of `SHELLOPTS' from the shell environment at - startup. - - * Redirecting output using the `>', `>|', `<>', `>&', `&>', and `>>' - redirection operators. - - * Using the `exec' builtin to replace the shell with another command. - - * Adding or deleting builtin commands with the `-f' and `-d' options - to the `enable' builtin. - - * Using the `enable' builtin command to enable disabled shell - builtins. - - * Specifying the `-p' option to the `command' builtin. - - * Turning off restricted mode with `set +r' or `set +o restricted'. - - These restrictions are enforced after any startup files are read. - - When a command that is found to be a shell script is executed (*note -Shell Scripts::), `rbash' turns off any restrictions in the shell -spawned to execute the script. - - -File: bash.info, Node: Bash POSIX Mode, Prev: The Restricted Shell, Up: Bash Features - -6.11 Bash POSIX Mode -==================== - -Starting Bash with the `--posix' command-line option or executing `set --o posix' while Bash is running will cause Bash to conform more closely -to the POSIX standard by changing the behavior to match that specified -by POSIX in areas where the Bash default differs. - - When invoked as `sh', Bash enters POSIX mode after reading the -startup files. - - The following list is what's changed when `POSIX mode' is in effect: - - 1. When a command in the hash table no longer exists, Bash will - re-search `$PATH' to find the new location. This is also - available with `shopt -s checkhash'. - - 2. The message printed by the job control code and builtins when a job - exits with a non-zero status is `Done(status)'. - - 3. The message printed by the job control code and builtins when a job - is stopped is `Stopped(SIGNAME)', where SIGNAME is, for example, - `SIGTSTP'. - - 4. 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. - - 5. Reserved words appearing in a context where reserved words are - recognized do not undergo alias expansion. - - 6. The POSIX `PS1' and `PS2' expansions of `!' to the history number - and `!!' to `!' are enabled, and parameter expansion is performed - on the values of `PS1' and `PS2' regardless of the setting of the - `promptvars' option. - - 7. The POSIX startup files are executed (`$ENV') rather than the - normal Bash files. - - 8. Tilde expansion is only performed on assignments preceding a - command name, rather than on all assignment statements on the line. - - 9. The default history file is `~/.sh_history' (this is the default - value of `$HISTFILE'). - - 10. The output of `kill -l' prints all the signal names on a single - line, separated by spaces, without the `SIG' prefix. - - 11. The `kill' builtin does not accept signal names with a `SIG' - prefix. - - 12. Non-interactive shells exit if FILENAME in `.' FILENAME is not - found. - - 13. Non-interactive shells exit if a syntax error in an arithmetic - expansion results in an invalid expression. - - 14. Redirection operators do not perform filename expansion on the word - in the redirection unless the shell is interactive. - - 15. Redirection operators do not perform word splitting on the word in - the redirection. - - 16. Function names must be valid shell `name's. That is, they may not - contain characters other than letters, digits, and underscores, and - may not start with a digit. Declaring a function with an invalid - name causes a fatal syntax error in non-interactive shells. - - 17. POSIX special builtins are found before shell functions during - command lookup. - - 18. 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. - - 19. If `CDPATH' is set, the `cd' builtin will not implicitly append - the current directory to it. This means that `cd' will fail if no - valid directory name can be constructed from any of the entries in - `$CDPATH', even if the a directory with the same name as the name - given as an argument to `cd' exists in the current directory. - - 20. 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. - - 21. 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. - - 22. Process substitution is not available. - - 23. Assignment statements preceding POSIX special builtins persist in - the shell environment after the builtin completes. - - 24. 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. - - 25. The `export' and `readonly' builtin commands display their output - in the format required by POSIX. - - 26. The `trap' builtin displays signal names without the leading `SIG'. - - 27. 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. - - 28. The `.' and `source' builtins do not search the current directory - for the filename argument if it is not found by searching `PATH'. - - 29. Subshells spawned to execute command substitutions inherit the - value of the `-e' option from the parent shell. When not in POSIX - mode, Bash clears the `-e' option in such subshells. - - 30. Alias expansion is always enabled, even in non-interactive shells. - - 31. When the `alias' builtin displays alias definitions, it does not - display them with a leading `alias ' unless the `-p' option is - supplied. - - 32. When the `set' builtin is invoked without options, it does not - display shell function names and definitions. - - 33. 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. - - 34. 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. - - 35. When the `pwd' builtin is supplied the `-P' option, it resets - `$PWD' to a pathname containing no symlinks. - - 36. 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. - - 37. When listing the history, the `fc' builtin does not include an - indication of whether or not a history entry has been modified. - - 38. The default editor used by `fc' is `ed'. - - 39. 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'. - - 40. The `vi' editing mode will invoke the `vi' editor directly when - the `v' command is run, instead of checking `$VISUAL' and - `$EDITOR'. - - 41. 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. - - 42. The `ulimit' builtin uses a block size of 512 bytes for the `-c' - and `-f' options. - - - There is other POSIX behavior that Bash does not implement by -default even when in POSIX mode. Specifically: - - 1. The `fc' builtin checks `$EDITOR' as a program to edit history - entries if `FCEDIT' is unset, rather than defaulting directly to - `ed'. `fc' uses `ed' if `EDITOR' is unset. - - 2. As noted above, Bash requires the `xpg_echo' option to be enabled - for the `echo' builtin to be fully conformant. - - - Bash can be configured to be POSIX-conformant by default, by -specifying the `--enable-strict-posix-default' to `configure' when -building (*note Optional Features::). - - -File: bash.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top - -7 Job Control -************* - -This chapter discusses what job control is, how it works, and how Bash -allows you to access its facilities. - -* Menu: - -* Job Control Basics:: How job control works. -* Job Control Builtins:: Bash builtin commands used to interact - with job control. -* Job Control Variables:: Variables Bash uses to customize job - control. - - -File: bash.info, Node: Job Control Basics, Next: Job Control Builtins, Up: Job Control - -7.1 Job Control Basics -====================== - -Job control refers to the ability to selectively stop (suspend) the -execution of processes and continue (resume) their execution at a later -point. A user typically employs this facility via an interactive -interface supplied jointly by the operating system kernel's terminal -driver and Bash. - - The shell associates a JOB with each pipeline. It keeps a table of -currently executing jobs, which may be listed with the `jobs' command. -When Bash starts a job asynchronously, it prints a line that looks like: - [1] 25647 - indicating that this job is job number 1 and that the process ID of -the last process in the pipeline associated with this job is 25647. -All of the processes in a single pipeline are members of the same job. -Bash uses the JOB abstraction as the basis for job control. - - To facilitate the implementation of the user interface to job -control, the operating system maintains the notion of a current terminal -process group ID. Members of this process group (processes whose -process group ID is equal to the current terminal process group ID) -receive keyboard-generated signals such as `SIGINT'. These processes -are said to be in the foreground. Background processes are those whose -process group ID differs from the terminal's; such processes are immune -to keyboard-generated signals. Only foreground processes are allowed -to read from or, if the user so specifies with `stty tostop', write to -the terminal. Background processes which attempt to read from (write -to when `stty tostop' is in effect) the terminal are sent a `SIGTTIN' -(`SIGTTOU') signal by the kernel's terminal driver, which, unless -caught, suspends the process. - - If the operating system on which Bash is running supports job -control, Bash contains facilities to use it. Typing the SUSPEND -character (typically `^Z', Control-Z) while a process is running causes -that process to be stopped and returns control to Bash. Typing the -DELAYED SUSPEND character (typically `^Y', Control-Y) causes the -process to be stopped when it attempts to read input from the terminal, -and control to be returned to Bash. The user then manipulates the -state of this job, using the `bg' command to continue it in the -background, the `fg' command to continue it in the foreground, or the -`kill' command to kill it. A `^Z' takes effect immediately, and has -the additional side effect of causing pending output and typeahead to -be discarded. - - There are a number of ways to refer to a job in the shell. The -character `%' introduces a job specification (JOBSPEC). - - Job number `n' may be referred to as `%n'. The symbols `%%' and -`%+' refer to the shell's notion of the current job, which is the last -job stopped while it was in the foreground or started in the background. -A single `%' (with no accompanying job specification) also refers to -the current job. The previous job may be referenced using `%-'. If -there is only a single job, `%+' and `%-' can both be used to refer to -that job. In output pertaining to jobs (e.g., the output of the `jobs' -command), the current job is always flagged with a `+', and the -previous job with a `-'. - - A job may also be referred to using a prefix of the name used to -start it, or using a substring that appears in its command line. For -example, `%ce' refers to a stopped `ce' job. Using `%?ce', on the other -hand, refers to any job containing the string `ce' in its command line. -If the prefix or substring matches more than one job, Bash reports an -error. - - Simply naming a job can be used to bring it into the foreground: -`%1' is a synonym for `fg %1', bringing job 1 from the background into -the foreground. Similarly, `%1 &' resumes job 1 in the background, -equivalent to `bg %1' - - The shell learns immediately whenever a job changes state. -Normally, Bash waits until it is about to print a prompt before -reporting changes in a job's status so as to not interrupt any other -output. If the `-b' option to the `set' builtin is enabled, Bash -reports such changes immediately (*note The Set Builtin::). Any trap -on `SIGCHLD' is executed for each child process that exits. - - If an attempt to exit Bash is made while jobs are stopped, (or -running, if the `checkjobs' option is enabled - see *note The Shopt -Builtin::), the shell prints a warning message, and if the `checkjobs' -option is enabled, lists the jobs and their statuses. 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. - - -File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control - -7.2 Job Control Builtins -======================== - -`bg' - bg [JOBSPEC ...] - Resume each suspended job JOBSPEC in the background, as if it had - been started with `&'. If JOBSPEC is not supplied, the current - job is used. The return status is zero unless it is run when job - control is not enabled, or, when run with job control enabled, any - JOBSPEC was not found or specifies a job that was started without - job control. - -`fg' - fg [JOBSPEC] - Resume the job JOBSPEC in the foreground and make it the current - job. If JOBSPEC is not supplied, the current job is used. The - return status is that of the command placed into the foreground, - or non-zero if run when job control is disabled or, when run with - job control enabled, JOBSPEC does not specify a valid job or - JOBSPEC specifies a job that was started without job control. - -`jobs' - jobs [-lnprs] [JOBSPEC] - jobs -x COMMAND [ARGUMENTS] - - The first form lists the active jobs. The options have the - following meanings: - - `-l' - List process IDs in addition to the normal information. - - `-n' - Display information only about jobs that have changed status - since the user was last notified of their status. - - `-p' - List only the process ID of the job's process group leader. - - `-r' - Restrict output to running jobs. - - `-s' - Restrict output to stopped jobs. - - If JOBSPEC is given, output is restricted to information about - that job. If JOBSPEC is not supplied, the status of all jobs is - listed. - - If the `-x' option is supplied, `jobs' replaces any JOBSPEC found - in COMMAND or ARGUMENTS with the corresponding process group ID, - and executes COMMAND, passing it ARGUMENTs, returning its exit - status. - -`kill' - kill [-s SIGSPEC] [-n SIGNUM] [-SIGSPEC] JOBSPEC or PID - kill -l [EXIT_STATUS] - Send a signal specified by SIGSPEC or SIGNUM to the process named - by job specification JOBSPEC or process ID PID. SIGSPEC is either - a case-insensitive signal name such as `SIGINT' (with or without - the `SIG' prefix) or a signal number; SIGNUM is a signal number. - If SIGSPEC and SIGNUM are not present, `SIGTERM' is used. The - `-l' option lists the signal names. If any arguments are supplied - when `-l' is given, the names of the signals corresponding to the - arguments are listed, and the return status is zero. EXIT_STATUS - is a number specifying a signal number or the exit status of a - process terminated by a signal. The return status is zero if at - least one signal was successfully sent, or non-zero if an error - occurs or an invalid option is encountered. - -`wait' - wait [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 - last command waited for. If a job spec is given, all processes in - 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 neither JOBSPEC nor PID specifies an active child process - of the shell, the return status is 127. - -`disown' - disown [-ar] [-h] [JOBSPEC ...] - Without options, each JOBSPEC is removed from the table of active - jobs. If the `-h' option is given, the job is not removed from - the table, but is marked so that `SIGHUP' is not sent to the job - if the shell receives a `SIGHUP'. If JOBSPEC is not present, and - neither the `-a' nor `-r' option is supplied, the current job is - used. If no JOBSPEC is supplied, the `-a' option means to remove - or mark all jobs; the `-r' option without a JOBSPEC argument - restricts operation to running jobs. - -`suspend' - suspend [-f] - Suspend the execution of this shell until it receives a `SIGCONT' - signal. A login shell cannot be suspended; the `-f' option can be - used to override this and force the suspension. - - - When job control is not active, the `kill' and `wait' builtins do -not accept JOBSPEC arguments. They must be supplied process IDs. - - -File: bash.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: Job Control - -7.3 Job Control Variables -========================= - -`auto_resume' - This variable controls how the shell interacts with the user and - job control. If this variable exists then single word simple - commands without redirections are treated as candidates for - resumption of an existing job. There is no ambiguity allowed; if - there is more than one job beginning with the string typed, then - the most recently accessed job will be selected. The name of a - stopped job, in this context, is the command line used to start - it. If this variable is set to the value `exact', the string - supplied must match the name of a stopped job exactly; if set to - `substring', the string supplied needs to match a substring of the - name of a stopped job. The `substring' value provides - functionality analogous to the `%?' job ID (*note Job Control - Basics::). 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 `%' job ID. - - - -File: bash.info, Node: Command Line Editing, Next: Using History Interactively, Prev: Job Control, Up: Top - -8 Command Line Editing -********************** - -This chapter describes the basic features of the GNU command line -editing interface. Command line editing is provided by the Readline -library, which is used by several different programs, including Bash. -Command line editing is enabled by default when using an interactive -shell, unless the `--noediting' option is supplied at shell invocation. -Line editing is also used when using the `-e' option to the `read' -builtin command (*note Bash Builtins::). By default, the line editing -commands are similar to those of emacs. A vi-style line editing -interface is also available. Line editing can be enabled at any time -using the `-o emacs' or `-o vi' options to the `set' builtin command -(*note The Set Builtin::), or disabled using the `+o emacs' or `+o vi' -options to `set'. - -* Menu: - -* Introduction and Notation:: Notation used in this text. -* Readline Interaction:: The minimum set of commands for editing a line. -* Readline Init File:: Customizing Readline from a user's view. -* Bindable Readline Commands:: A description of most of the Readline commands - available for binding -* Readline vi Mode:: A short description of how to make Readline - behave like the vi editor. - -* Programmable Completion:: How to specify the possible completions for - a specific command. -* Programmable Completion Builtins:: Builtin commands to specify how to - complete arguments for a particular command. - - -File: bash.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing - -8.1 Introduction to Line Editing -================================ - -The following paragraphs describe the notation used to represent -keystrokes. - - The text `C-k' is read as `Control-K' and describes the character -produced when the key is pressed while the Control key is depressed. - - The text `M-k' is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the -key is pressed. The Meta key is labeled on many keyboards. On -keyboards with two keys labeled (usually to either side of the -space bar), the on the left side is generally set to work as a -Meta key. The key on the right may also be configured to work as -a Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. - - If you do not have a Meta or key, or another key working as a -Meta key, the identical keystroke can be generated by typing -_first_, and then typing . Either process is known as "metafying" -the key. - - The text `M-C-k' is read as `Meta-Control-k' and describes the -character produced by "metafying" `C-k'. - - In addition, several keys have their own names. Specifically, -, , , , , and all stand for themselves -when seen in this text, or in an init file (*note Readline Init File::). -If your keyboard lacks a key, typing will produce the -desired character. The key may be labeled or on -some keyboards. - - -File: bash.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing - -8.2 Readline Interaction -======================== - -Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press . You do not have to be at the end of -the line to press ; the entire line is accepted regardless of the -location of the cursor within the line. - -* Menu: - -* Readline Bare Essentials:: The least you need to know about Readline. -* Readline Movement Commands:: Moving about the input line. -* Readline Killing Commands:: How to delete text, and how to get it back! -* Readline Arguments:: Giving numeric arguments to commands. -* Searching:: Searching through previous lines. - - -File: bash.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction - -8.2.1 Readline Bare Essentials ------------------------------- - -In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your erase -character to back up and delete the mistyped character. - - Sometimes you may mistype a character, and not notice the error -until you have typed several other characters. In that case, you can -type `C-b' to move the cursor to the left, and then correct your -mistake. Afterwards, you can move the cursor to the right with `C-f'. - - When you add text in the middle of a line, you will notice that -characters to the right of the cursor are `pushed over' to make room -for the text that you have inserted. Likewise, when you delete text -behind the cursor, characters to the right of the cursor are `pulled -back' to fill in the blank space created by the removal of the text. A -list of the bare essentials for editing the text of an input line -follows. - -`C-b' - Move back one character. - -`C-f' - Move forward one character. - - or - Delete the character to the left of the cursor. - -`C-d' - Delete the character underneath the cursor. - -Printing characters - Insert the character into the line at the cursor. - -`C-_' or `C-x C-u' - Undo the last editing command. You can undo all the way back to an - empty line. - -(Depending on your configuration, the key be set to delete -the character to the left of the cursor and the key set to delete -the character underneath the cursor, like `C-d', rather than the -character to the left of the cursor.) - - -File: bash.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction - -8.2.2 Readline Movement Commands --------------------------------- - -The above table describes the most basic keystrokes that you need in -order to do editing of the input line. For your convenience, many -other commands have been added in addition to `C-b', `C-f', `C-d', and -. Here are some commands for moving more rapidly about the line. - -`C-a' - Move to the start of the line. - -`C-e' - Move to the end of the line. - -`M-f' - Move forward a word, where a word is composed of letters and - digits. - -`M-b' - Move backward a word. - -`C-l' - Clear the screen, reprinting the current line at the top. - - Notice how `C-f' moves forward a character, while `M-f' moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. - - -File: bash.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction - -8.2.3 Readline Killing Commands -------------------------------- - -"Killing" text means to delete the text from the line, but to save it -away for later use, usually by "yanking" (re-inserting) it back into -the line. (`Cut' and `paste' are more recent jargon for `kill' and -`yank'.) - - If the description for a command says that it `kills' text, then you -can be sure that you can get the text back in a different (or the same) -place later. - - When you use a kill command, the text is saved in a "kill-ring". -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill ring is not line -specific; the text that you killed on a previously typed line is -available to be yanked back later, when you are typing another line. - - Here is the list of commands for killing text. - -`C-k' - Kill the text from the current cursor position to the end of the - line. - -`M-d' - Kill from the cursor to the end of the current word, or, if between - words, to the end of the next word. Word boundaries are the same - as those used by `M-f'. - -`M-' - Kill from the cursor the start of the current word, or, if between - words, to the start of the previous word. Word boundaries are the - same as those used by `M-b'. - -`C-w' - Kill from the cursor to the previous whitespace. This is - different than `M-' because the word boundaries differ. - - - Here is how to "yank" the text back into the line. Yanking means to -copy the most-recently-killed text from the kill buffer. - -`C-y' - Yank the most recently killed text back into the buffer at the - cursor. - -`M-y' - Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `C-y' or `M-y'. - - -File: bash.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction - -8.2.4 Readline Arguments ------------------------- - -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. - - The general way to pass numeric arguments to a command is to type -meta digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once you -have typed one meta digit to get the argument started, you can type the -remainder of the digits, and then the command. For example, to give -the `C-d' command an argument of 10, you could type `M-1 0 C-d', which -will delete the next ten characters on the input line. - - -File: bash.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction - -8.2.5 Searching for Commands in the History -------------------------------------------- - -Readline provides commands for searching through the command history -(*note Bash History Facilities::) for lines containing a specified -string. There are two search modes: "incremental" and -"non-incremental". - - Incremental searches begin before the user has finished typing the -search string. As each character of the search string is typed, -Readline displays the next entry from the history matching the string -typed so far. An incremental search requires only as many characters -as needed to find the desired history entry. To search backward in the -history for a particular string, type `C-r'. Typing `C-s' searches -forward through the history. The characters present in the value of -the `isearch-terminators' variable are used to terminate an incremental -search. If that variable has not been assigned a value, the and -`C-J' characters will terminate an incremental search. `C-g' will -abort an incremental search and restore the original line. When the -search is terminated, the history entry containing the search string -becomes the current line. - - To find other matching entries in the history list, type `C-r' or -`C-s' as appropriate. This will search backward or forward in the -history for the next entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate the -search and execute that command. For instance, a will terminate -the search and accept the line, thereby executing the command from the -history list. A movement command will terminate the search, make the -last line found the current line, and begin editing. - - Readline remembers the last incremental search string. If two -`C-r's are typed without any intervening characters defining a new -search string, any remembered search string is used. - - Non-incremental searches read the entire search string before -starting to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. - - -File: bash.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing - -8.3 Readline Init File -====================== - -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. Any user can customize programs that use Readline by -putting commands in an "inputrc" file, conventionally in his home -directory. The name of this file is taken from the value of the shell -variable `INPUTRC'. If that variable is unset, the default is -`~/.inputrc'. If that file does not exist or cannot be read, the -ultimate default is `/etc/inputrc'. - - When a program which uses the Readline library starts up, the init -file is read, and the key bindings are set. - - In addition, the `C-x C-r' command re-reads this init file, thus -incorporating any changes that you might have made to it. - -* Menu: - -* Readline Init File Syntax:: Syntax for the commands in the inputrc file. - -* Conditional Init Constructs:: Conditional key bindings in the inputrc file. - -* Sample Init File:: An example inputrc file. - - -File: bash.info, Node: Readline Init File Syntax, Next: Conditional Init Constructs, Up: Readline Init File - -8.3.1 Readline Init File Syntax -------------------------------- - -There are only a few basic constructs allowed in the Readline init -file. Blank lines are ignored. Lines beginning with a `#' are -comments. Lines beginning with a `$' indicate conditional constructs -(*note Conditional Init Constructs::). Other lines denote variable -settings and key bindings. - -Variable Settings - You can modify the run-time behavior of Readline by altering the - values of variables in Readline using the `set' command within the - init file. The syntax is simple: - - set VARIABLE VALUE - - Here, for example, is how to change from the default Emacs-like - key binding to use `vi' line editing commands: - - set editing-mode vi - - Variable names and values, where appropriate, are recognized - without regard to case. Unrecognized variable names are ignored. - - Boolean variables (those that can be set to on or off) are set to - on if the value is null or empty, ON (case-insensitive), or 1. - Any other value results in the variable being set to off. - - The `bind -V' command lists the current Readline variable names - and values. *Note Bash Builtins::. - - A great deal of run-time behavior is changeable with the following - variables. - - `bell-style' - Controls what happens when Readline wants to ring the - terminal bell. If set to `none', Readline never rings the - bell. If set to `visible', Readline uses a visible bell if - one is available. If set to `audible' (the default), - Readline attempts to ring the terminal's bell. - - `bind-tty-special-chars' - If set to `on', Readline attempts to bind the control - characters treated specially by the kernel's terminal driver - to their Readline equivalents. - - `comment-begin' - The string to insert at the beginning of the line when the - `insert-comment' command is executed. The default value is - `"#"'. - - `completion-ignore-case' - If set to `on', Readline performs filename matching and - completion in a case-insensitive fashion. The default value - is `off'. - - `completion-prefix-display-length' - The length in characters of the common prefix of a list of - possible completions that is displayed without modification. - When set to a value greater than zero, common prefixes longer - than this value are replaced with an ellipsis when displaying - possible completions. - - `completion-query-items' - The number of possible completions that determines when the - user is asked whether the list of possibilities should be - displayed. If the number of possible completions is greater - than this value, Readline will ask the user whether or not he - wishes to view them; otherwise, they are simply listed. This - variable must be set to an integer value greater than or - equal to 0. A negative value means Readline should never ask. - The default limit is `100'. - - `convert-meta' - If set to `on', Readline will convert characters with the - eighth bit set to an ASCII key sequence by stripping the - eighth bit and prefixing an character, converting them - to a meta-prefixed key sequence. The default value is `on'. - - `disable-completion' - If set to `On', Readline will inhibit word completion. - Completion characters will be inserted into the line as if - they had been mapped to `self-insert'. The default is `off'. - - `editing-mode' - The `editing-mode' variable controls which default set of key - bindings is used. By default, Readline starts up in Emacs - editing mode, where the keystrokes are most similar to Emacs. - This variable can be set to either `emacs' or `vi'. - - `echo-control-characters' - When set to `on', on operating systems that indicate they - support it, readline echoes a character corresponding to a - signal generated from the keyboard. The default is `on'. - - `enable-keypad' - When set to `on', Readline will try to enable the application - keypad when it is called. Some systems need this to enable - the arrow keys. The default is `off'. - - `expand-tilde' - If set to `on', tilde expansion is performed when Readline - attempts word completion. The default is `off'. - - `history-preserve-point' - If set to `on', the history code attempts to place the point - (the current cursor position) at the same location on each - history line retrieved with `previous-history' or - `next-history'. The default is `off'. - - `history-size' - Set the maximum number of history entries saved in the - history list. If set to zero, the number of entries in the - history list is not limited. - - `horizontal-scroll-mode' - This variable can be set to either `on' or `off'. Setting it - to `on' means that the text of the lines being edited will - scroll horizontally on a single screen line when they are - longer than the width of the screen, instead of wrapping onto - a new screen line. By default, this variable is set to `off'. - - `input-meta' - If set to `on', Readline will enable eight-bit input (it will - not clear the eighth bit in the characters it reads), - regardless of what the terminal claims it can support. The - default value is `off'. The name `meta-flag' is a synonym - for this variable. - - `isearch-terminators' - The string of characters that should terminate an incremental - search without subsequently executing the character as a - command (*note Searching::). If this variable has not been - given a value, the characters and `C-J' will terminate - an incremental search. - - `keymap' - Sets Readline's idea of the current keymap for key binding - commands. Acceptable `keymap' names are `emacs', - `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move', - `vi-command', and `vi-insert'. `vi' is equivalent to - `vi-command'; `emacs' is equivalent to `emacs-standard'. The - default value is `emacs'. The value of the `editing-mode' - variable also affects the default keymap. - - `mark-directories' - If set to `on', completed directory names have a slash - appended. The default is `on'. - - `mark-modified-lines' - This variable, when set to `on', causes Readline to display an - asterisk (`*') at the start of history lines which have been - modified. This variable is `off' by default. - - `mark-symlinked-directories' - If set to `on', completed names which are symbolic links to - directories have a slash appended (subject to the value of - `mark-directories'). The default is `off'. - - `match-hidden-files' - This variable, when set to `on', causes Readline to match - files whose names begin with a `.' (hidden files) when - performing filename completion, unless the leading `.' is - supplied by the user in the filename to be completed. This - variable is `on' by default. - - `output-meta' - If set to `on', Readline will display characters with the - eighth bit set directly rather than as a meta-prefixed escape - sequence. The default is `off'. - - `page-completions' - If set to `on', Readline uses an internal `more'-like pager - to display a screenful of possible completions at a time. - This variable is `on' by default. - - `print-completions-horizontally' - If set to `on', Readline will display completions with matches - sorted horizontally in alphabetical order, rather than down - the screen. The default is `off'. - - `revert-all-at-newline' - If set to `on', Readline will undo all changes to history - lines before returning when `accept-line' is executed. By - default, history lines may be modified and retain individual - undo lists across calls to `readline'. The default is `off'. - - `show-all-if-ambiguous' - This alters the default behavior of the completion functions. - If set to `on', words which have more than one possible - completion cause the matches to be listed immediately instead - of ringing the bell. The default value is `off'. - - `show-all-if-unmodified' - This alters the default behavior of the completion functions - in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to - `on', words which have more than one possible completion - without any possible partial completion (the possible - completions don't share a common prefix) cause the matches to - be listed immediately instead of ringing the bell. The - default value is `off'. - - `skip-completed-text' - If set to `on', this alters the default completion behavior - when inserting a single match into the line. It's only - active when performing completion in the middle of a word. - If enabled, readline does not insert characters from the - completion that match characters after point in the word - being completed, so portions of the word following the cursor - are not duplicated. For instance, if this is enabled, - attempting completion when the cursor is after the `e' in - `Makefile' will result in `Makefile' rather than - `Makefilefile', assuming there is a single possible - completion. The default value is `off'. - - `visible-stats' - If set to `on', a character denoting a file's type is - appended to the filename when listing possible completions. - The default is `off'. - - -Key Bindings - The syntax for controlling key bindings in the init file is - simple. First you need to find the name of the command that you - want to change. The following sections contain tables of the - command name, the default keybinding, if any, and a short - description of what the command does. - - Once you know the name of the command, simply place on a line in - the init file the name of the key you wish to bind the command to, - a colon, and then the name of the command. There can be no space - between the key name and the colon - that will be interpreted as - part of the key name. The name of the key can be expressed in - different ways, depending on what you find most comfortable. - - In addition to command names, readline allows keys to be bound to - a string that is inserted when the key is pressed (a MACRO). - - The `bind -p' command displays Readline function names and - bindings in a format that can put directly into an initialization - file. *Note Bash Builtins::. - - KEYNAME: FUNCTION-NAME or MACRO - KEYNAME is the name of a key spelled out in English. For - example: - Control-u: universal-argument - Meta-Rubout: backward-kill-word - Control-o: "> output" - - In the above example, `C-u' is bound to the function - `universal-argument', `M-DEL' is bound to the function - `backward-kill-word', and `C-o' is bound to run the macro - expressed on the right hand side (that is, to insert the text - `> output' into the line). - - A number of symbolic character names are recognized while - processing this key binding syntax: DEL, ESC, ESCAPE, LFD, - NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. - - "KEYSEQ": FUNCTION-NAME or MACRO - KEYSEQ differs from KEYNAME above in that strings denoting an - entire key sequence can be specified, by placing the key - sequence in double quotes. Some GNU Emacs style key escapes - can be used, as in the following example, but the special - character names are not recognized. - - "\C-u": universal-argument - "\C-x\C-r": re-read-init-file - "\e[11~": "Function Key 1" - - In the above example, `C-u' is again bound to the function - `universal-argument' (just as it was in the first example), - `C-x C-r' is bound to the function `re-read-init-file', and - ` <[> <1> <1> <~>' is bound to insert the text `Function - Key 1'. - - - The following GNU Emacs style escape sequences are available when - specifying key sequences: - - `\C-' - control prefix - - `\M-' - meta prefix - - `\e' - an escape character - - `\\' - backslash - - `\"' - <">, a double quotation mark - - `\'' - <'>, a single quote or apostrophe - - In addition to the GNU Emacs style escape sequences, a second set - of backslash escapes is available: - - `\a' - alert (bell) - - `\b' - backspace - - `\d' - delete - - `\f' - form feed - - `\n' - newline - - `\r' - carriage return - - `\t' - horizontal tab - - `\v' - vertical tab - - `\NNN' - the eight-bit character whose value is the octal value NNN - (one to three digits) - - `\xHH' - the eight-bit character whose value is the hexadecimal value - HH (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 function name. In the macro body, the backslash escapes - described above are expanded. Backslash will quote any other - character in the macro text, including `"' and `''. For example, - the following binding will make `C-x \' insert a single `\' into - the line: - "\C-x\\": "\\" - - - -File: bash.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File - -8.3.2 Conditional Init Constructs ---------------------------------- - -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key bindings -and variable settings to be performed as the result of tests. There -are four parser directives used. - -`$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. - - `mode' - The `mode=' form of the `$if' directive is used to test - whether Readline is in `emacs' or `vi' mode. This may be - used in conjunction with the `set keymap' command, for - instance, to set bindings in the `emacs-standard' and - `emacs-ctlx' keymaps only if Readline is starting out in - `emacs' mode. - - `term' - The `term=' form may be used to include terminal-specific key - bindings, perhaps to bind the key sequences output by the - terminal's function keys. The word on the right side of the - `=' is tested against both the full name of the terminal and - the portion of the terminal name before the first `-'. This - allows `sun' to match both `sun' and `sun-cmd', for instance. - - `application' - The APPLICATION construct is used to include - application-specific settings. Each program using the - Readline library sets the APPLICATION NAME, and you can test - for a particular value. This could be used to bind key - sequences to functions useful for a specific program. For - instance, the following command adds a key sequence that - quotes the current or previous word in Bash: - $if Bash - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $endif - -`$endif' - This command, as seen in the previous example, terminates an `$if' - command. - -`$else' - Commands in this branch of the `$if' directive are executed if the - test fails. - -`$include' - This directive takes a single filename as an argument and reads - commands and bindings from that file. For example, the following - directive reads from `/etc/inputrc': - $include /etc/inputrc - - -File: bash.info, Node: Sample Init File, Prev: Conditional Init Constructs, Up: Readline Init File - -8.3.3 Sample Init File ----------------------- - -Here is an example of an INPUTRC file. This illustrates key binding, -variable assignment, and conditional syntax. - - - # This file controls the behaviour of line input editing for - # programs that use the GNU Readline library. Existing - # programs include FTP, Bash, and GDB. - # - # You can re-read the inputrc file with C-x C-r. - # Lines beginning with '#' are comments. - # - # First, include any systemwide bindings and variable - # assignments from /etc/Inputrc - $include /etc/Inputrc - - # - # Set various bindings for emacs mode. - - set editing-mode emacs - - $if mode=emacs - - Meta-Control-h: backward-kill-word Text after the function name is ignored - - # - # Arrow keys in keypad mode - # - #"\M-OD": backward-char - #"\M-OC": forward-char - #"\M-OA": previous-history - #"\M-OB": next-history - # - # Arrow keys in ANSI mode - # - "\M-[D": backward-char - "\M-[C": forward-char - "\M-[A": previous-history - "\M-[B": next-history - # - # Arrow keys in 8 bit keypad mode - # - #"\M-\C-OD": backward-char - #"\M-\C-OC": forward-char - #"\M-\C-OA": previous-history - #"\M-\C-OB": next-history - # - # Arrow keys in 8 bit ANSI mode - # - #"\M-\C-[D": backward-char - #"\M-\C-[C": forward-char - #"\M-\C-[A": previous-history - #"\M-\C-[B": next-history - - C-q: quoted-insert - - $endif - - # An old-style binding. This happens to be the default. - TAB: complete - - # Macros that are convenient for shell interaction - $if Bash - # edit the path - "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" - # prepare to type a quoted word -- - # insert open and close double quotes - # and move to just after the open quote - "\C-x\"": "\"\"\C-b" - # insert a backslash (testing backslash escapes - # in sequences and macros) - "\C-x\\": "\\" - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - # Add a binding to refresh the line, which is unbound - "\C-xr": redraw-current-line - # Edit variable on current line. - "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" - $endif - - # use a visible bell if one is available - set bell-style visible - - # don't strip characters to 7 bits when reading - set input-meta on - - # allow iso-latin1 characters to be inserted rather - # than converted to prefix-meta sequences - set convert-meta off - - # display characters with the eighth bit set directly - # rather than as meta-prefixed characters - set output-meta on - - # if there are more than 150 possible completions for - # a word, ask the user if he wants to see all of them - set completion-query-items 150 - - # For FTP - $if Ftp - "\C-xg": "get \M-?" - "\C-xt": "put \M-?" - "\M-.": yank-last-arg - $endif - - -File: bash.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing - -8.4 Bindable Readline Commands -============================== - -* Menu: - -* Commands For Moving:: Moving about the line. -* Commands For History:: Getting at previous lines. -* Commands For Text:: Commands for changing text. -* Commands For Killing:: Commands for killing and yanking. -* Numeric Arguments:: Specifying numeric arguments, repeat counts. -* Commands For Completion:: Getting Readline to do the typing for you. -* Keyboard Macros:: Saving and re-executing typed characters -* Miscellaneous Commands:: Other miscellaneous commands. - - This section describes Readline commands that may be bound to key -sequences. You can list your key bindings by executing `bind -P' or, -for a more terse format, suitable for an INPUTRC file, `bind -p'. -(*Note Bash Builtins::.) Command names without an accompanying key -sequence are unbound by default. - - In the following descriptions, "point" refers to the current cursor -position, and "mark" refers to a cursor position saved by the -`set-mark' command. The text between the point and mark is referred to -as the "region". - - -File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands - -8.4.1 Commands For Moving -------------------------- - -`beginning-of-line (C-a)' - Move to the start of the current line. - -`end-of-line (C-e)' - Move to the end of the line. - -`forward-char (C-f)' - Move forward a character. - -`backward-char (C-b)' - Move back a character. - -`forward-word (M-f)' - Move forward to the end of the next word. Words are composed of - letters and digits. - -`backward-word (M-b)' - Move back to the start of the current or previous word. Words are - composed of letters and digits. - -`shell-forward-word ()' - Move forward to the end of the next word. Words are delimited by - non-quoted shell metacharacters. - -`shell-backward-word ()' - Move back to the start of the current or previous word. Words are - delimited by non-quoted shell metacharacters. - -`clear-screen (C-l)' - Clear the screen and redraw the current line, leaving the current - line at the top of the screen. - -`redraw-current-line ()' - Refresh the current line. By default, this is unbound. - - - -File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands - -8.4.2 Commands For Manipulating The History -------------------------------------------- - -`accept-line (Newline or Return)' - Accept the line regardless of where the cursor is. If this line is - non-empty, add it to the history list according to the setting of - the `HISTCONTROL' and `HISTIGNORE' variables. If this line is a - modified history line, then restore the history line to its - original state. - -`previous-history (C-p)' - Move `back' through the history list, fetching the previous - command. - -`next-history (C-n)' - Move `forward' through the history list, fetching the next command. - -`beginning-of-history (M-<)' - Move to the first line in the history. - -`end-of-history (M->)' - Move to the end of the input history, i.e., the line currently - being entered. - -`reverse-search-history (C-r)' - Search backward starting at the current line and moving `up' - through the history as necessary. This is an incremental search. - -`forward-search-history (C-s)' - Search forward starting at the current line and moving `down' - through the the history as necessary. This is an incremental - search. - -`non-incremental-reverse-search-history (M-p)' - Search backward starting at the current line and moving `up' - through the history as necessary using a non-incremental search - for a string supplied by the user. - -`non-incremental-forward-search-history (M-n)' - Search forward starting at the current line and moving `down' - through the the history as necessary using a non-incremental search - for a string supplied by the user. - -`history-search-forward ()' - Search forward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. By default, this command is unbound. - -`history-search-backward ()' - Search backward through the history for the string of characters - between the start of the current line and the point. This is a - non-incremental search. By default, this command is unbound. - -`yank-nth-arg (M-C-y)' - Insert the first argument to the previous command (usually the - second word on the previous line) at point. With an argument N, - insert the Nth word from the previous command (the words in the - previous command begin with word 0). A negative argument inserts - the Nth word from the end of the previous command. Once the - argument N is computed, the argument is extracted as if the `!N' - history expansion had been specified. - -`yank-last-arg (M-. or M-_)' - Insert last argument to the previous command (the last word of the - previous history entry). With an argument, behave exactly like - `yank-nth-arg'. Successive calls to `yank-last-arg' move back - through the history list, inserting the last argument of each line - in turn. The history expansion facilities are used to extract the - last argument, as if the `!$' history expansion had been specified. - - - -File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands - -8.4.3 Commands For Changing Text --------------------------------- - -`delete-char (C-d)' - Delete the character at point. If point is at the beginning of - the line, there are no characters in the line, and the last - character typed was not bound to `delete-char', then return EOF. - -`backward-delete-char (Rubout)' - Delete the character behind the cursor. A numeric argument means - to kill the characters instead of deleting them. - -`forward-backward-delete-char ()' - Delete the character under the cursor, unless the cursor is at the - end of the line, in which case the character behind the cursor is - deleted. By default, this is not bound to a key. - -`quoted-insert (C-q or C-v)' - Add the next character typed to the line verbatim. This is how to - insert key sequences like `C-q', for example. - -`self-insert (a, b, A, 1, !, ...)' - Insert yourself. - -`transpose-chars (C-t)' - Drag the character before the cursor forward over the character at - the cursor, moving the cursor forward as well. If the insertion - point is at the end of the line, then this transposes the last two - characters of the line. Negative arguments have no effect. - -`transpose-words (M-t)' - Drag the word before point past the word after point, moving point - past that word as well. If the insertion point is at the end of - the line, this transposes the last two words on the line. - -`upcase-word (M-u)' - Uppercase the current (or following) word. With a negative - argument, uppercase the previous word, but do not move the cursor. - -`downcase-word (M-l)' - Lowercase the current (or following) word. With a negative - argument, lowercase the previous word, but do not move the cursor. - -`capitalize-word (M-c)' - Capitalize the current (or following) word. With a negative - argument, capitalize the previous word, but do not move the cursor. - -`overwrite-mode ()' - Toggle overwrite mode. With an explicit positive numeric argument, - switches to overwrite mode. With an explicit non-positive numeric - argument, switches to insert mode. This command affects only - `emacs' mode; `vi' mode does overwrite differently. Each call to - `readline()' starts in insert mode. - - In overwrite mode, characters bound to `self-insert' replace the - text at point rather than pushing the text to the right. - Characters bound to `backward-delete-char' replace the character - before point with a space. - - By default, this command is unbound. - - - -File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands - -8.4.4 Killing And Yanking -------------------------- - -`kill-line (C-k)' - Kill the text from point to the end of the line. - -`backward-kill-line (C-x Rubout)' - Kill backward to the beginning of the line. - -`unix-line-discard (C-u)' - Kill backward from the cursor to the beginning of the current line. - -`kill-whole-line ()' - Kill all characters on the current line, no matter where point is. - By default, this is unbound. - -`kill-word (M-d)' - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the same - as `forward-word'. - -`backward-kill-word (M-)' - Kill the word behind point. Word boundaries are the same as - `backward-word'. - -`shell-kill-word ()' - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the same - as `shell-forward-word'. - -`backward-kill-word ()' - Kill the word behind point. Word boundaries are the same as - `shell-backward-word'. - -`unix-word-rubout (C-w)' - Kill the word behind point, using white space as a word boundary. - The killed text is saved on the kill-ring. - -`unix-filename-rubout ()' - Kill the word behind point, using white space and the slash - character as the word boundaries. The killed text is saved on the - kill-ring. - -`delete-horizontal-space ()' - Delete all spaces and tabs around point. By default, this is - unbound. - -`kill-region ()' - Kill the text in the current region. By default, this command is - unbound. - -`copy-region-as-kill ()' - Copy the text in the region to the kill buffer, so it can be yanked - right away. By default, this command is unbound. - -`copy-backward-word ()' - Copy the word before point to the kill buffer. The word - boundaries are the same as `backward-word'. By default, this - command is unbound. - -`copy-forward-word ()' - Copy the word following point to the kill buffer. The word - boundaries are the same as `forward-word'. By default, this - command is unbound. - -`yank (C-y)' - Yank the top of the kill ring into the buffer at point. - -`yank-pop (M-y)' - Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `yank' or `yank-pop'. - - -File: bash.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands - -8.4.5 Specifying Numeric Arguments ----------------------------------- - -`digit-argument (M-0, M-1, ... M--)' - Add this digit to the argument already accumulating, or start a new - argument. `M--' starts a negative argument. - -`universal-argument ()' - 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 - followed by digits, executing `universal-argument' again ends the - numeric argument, but is otherwise ignored. As a special case, if - this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argument - count four, a second time makes the argument count sixteen, and so - on. By default, this is not bound to a key. - - -File: bash.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands - -8.4.6 Letting Readline Type For You ------------------------------------ - -`complete ()' - Attempt to perform completion on the text before point. The - actual completion performed is application-specific. Bash - attempts completion treating the text as a variable (if the text - 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. - -`possible-completions (M-?)' - List the possible completions of the text before point. - -`insert-completions (M-*)' - Insert all completions of the text before point that would have - been generated by `possible-completions'. - -`menu-complete ()' - Similar to `complete', but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of `menu-complete' steps through the list 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 - `bell-style') 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 , but is unbound by - default. - -`menu-complete-backward ()' - Identical to `menu-complete', but moves backward through the list - of possible completions, as if `menu-complete' had been given a - negative argument. - -`delete-char-or-list ()' - Deletes the character under the cursor if not at the beginning or - end of the line (like `delete-char'). If at the end of the line, - behaves identically to `possible-completions'. This command is - unbound by default. - -`complete-filename (M-/)' - Attempt filename completion on the text before point. - -`possible-filename-completions (C-x /)' - List the possible completions of the text before point, treating - it as a filename. - -`complete-username (M-~)' - Attempt completion on the text before point, treating it as a - username. - -`possible-username-completions (C-x ~)' - List the possible completions of the text before point, treating - it as a username. - -`complete-variable (M-$)' - Attempt completion on the text before point, treating it as a - shell variable. - -`possible-variable-completions (C-x $)' - List the possible completions of the text before point, treating - it as a shell variable. - -`complete-hostname (M-@)' - Attempt completion on the text before point, treating it as a - hostname. - -`possible-hostname-completions (C-x @)' - List the possible completions of the text before point, treating - it as a hostname. - -`complete-command (M-!)' - Attempt completion on the text before point, treating it as a - command name. Command completion attempts to match the text - against aliases, reserved words, shell functions, shell builtins, - and finally executable filenames, in that order. - -`possible-command-completions (C-x !)' - List the possible completions of the text before point, treating - it as a command name. - -`dynamic-complete-history (M-)' - Attempt completion on the text before point, comparing the text - against lines from the history list for possible completion - matches. - -`dabbrev-expand ()' - Attempt menu completion on the text before point, comparing the - text against lines from the history list for possible completion - matches. - -`complete-into-braces (M-{)' - Perform filename completion and insert the list of possible - completions enclosed within braces so the list is available to the - shell (*note Brace Expansion::). - - - -File: bash.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands - -8.4.7 Keyboard Macros ---------------------- - -`start-kbd-macro (C-x ()' - Begin saving the characters typed into the current keyboard macro. - -`end-kbd-macro (C-x ))' - Stop saving the characters typed into the current keyboard macro - and save the definition. - -`call-last-kbd-macro (C-x e)' - Re-execute the last keyboard macro defined, by making the - characters in the macro appear as if typed at the keyboard. - - - -File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands - -8.4.8 Some Miscellaneous Commands ---------------------------------- - -`re-read-init-file (C-x C-r)' - Read in the contents of the INPUTRC file, and incorporate any - bindings or variable assignments found there. - -`abort (C-g)' - Abort 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. - -`prefix-meta ()' - Metafy the next character typed. This is for keyboards without a - meta key. Typing ` f' is equivalent to typing `M-f'. - -`undo (C-_ or C-x C-u)' - Incremental undo, separately remembered for each line. - -`revert-line (M-r)' - Undo all changes made to this line. This is like executing the - `undo' command enough times to get back to the beginning. - -`tilde-expand (M-&)' - Perform tilde expansion on the current word. - -`set-mark (C-@)' - Set the mark to the point. If a numeric argument is supplied, the - mark is set to that position. - -`exchange-point-and-mark (C-x C-x)' - Swap the point with the mark. The current cursor position is set - to the saved position, and the old cursor position is saved as the - mark. - -`character-search (C-])' - A character is read and point is moved to the next occurrence of - that character. A negative count searches for previous - occurrences. - -`character-search-backward (M-C-])' - A character is read and point is moved to the previous occurrence - of that character. A negative count searches for subsequent - occurrences. - -`skip-csi-sequence ()' - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. Such sequences begin - with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\e[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. - This is unbound by default, but usually bound to ESC-[. - -`insert-comment (M-#)' - Without a numeric argument, the value of the `comment-begin' - variable is inserted at the beginning of the current line. If a - numeric argument is supplied, this command acts as a toggle: if - the characters at the beginning of the line do not match the value - of `comment-begin', the value is inserted, otherwise the - characters in `comment-begin' are deleted from the beginning of - the line. In either case, the line is accepted as if a newline - had been typed. The default value of `comment-begin' causes this - command to make the current line a shell comment. If a numeric - argument causes the comment character to be removed, the line will - be executed by the shell. - -`dump-functions ()' - Print all of the functions and their key bindings to the Readline - output stream. If a numeric argument is supplied, the output is - formatted in such a way that it can be made part of an INPUTRC - file. This command is unbound by default. - -`dump-variables ()' - Print all of the settable variables and their values to the - Readline output stream. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. - -`dump-macros ()' - Print all of the Readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. - -`glob-complete-word (M-g)' - The word before point is treated as a pattern for pathname - expansion, with an asterisk implicitly appended. This pattern is - used to generate a list of matching file names for possible - completions. - -`glob-expand-word (C-x *)' - The word before point is treated as a pattern for pathname - expansion, and the list of matching file names is inserted, - replacing the word. If a numeric argument is supplied, a `*' is - appended before pathname expansion. - -`glob-list-expansions (C-x g)' - The list of expansions that would have been generated by - `glob-expand-word' is displayed, and the line is redrawn. If a - numeric argument is supplied, a `*' is appended before pathname - expansion. - -`display-shell-version (C-x C-v)' - Display version information about the current instance of Bash. - -`shell-expand-line (M-C-e)' - Expand the line as the shell does. This performs alias and - history expansion as well as all of the shell word expansions - (*note Shell Expansions::). - -`history-expand-line (M-^)' - Perform history expansion on the current line. - -`magic-space ()' - Perform history expansion on the current line and insert a space - (*note History Interaction::). - -`alias-expand-line ()' - Perform alias expansion on the current line (*note Aliases::). - -`history-and-alias-expand-line ()' - Perform history and alias expansion on the current line. - -`insert-last-argument (M-. or M-_)' - A synonym for `yank-last-arg'. - -`operate-and-get-next (C-o)' - Accept the current line for execution and fetch the next line - relative to the current line from the history for editing. Any - argument is ignored. - -`edit-and-execute-command (C-xC-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. - - - -File: bash.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: Bindable Readline Commands, Up: Command Line Editing - -8.5 Readline vi Mode -==================== - -While the Readline library does not have a full set of `vi' editing -functions, it does contain enough to allow simple editing of the line. -The Readline `vi' mode behaves as specified in the POSIX 1003.2 -standard. - - In order to switch interactively between `emacs' and `vi' editing -modes, use the `set -o emacs' and `set -o vi' commands (*note The Set -Builtin::). The Readline default is `emacs' mode. - - When you enter a line in `vi' mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing switches -you into `command' mode, where you can edit the text of the line with -the standard `vi' movement keys, move to previous history lines with -`k' and subsequent lines with `j', and so forth. - - -File: bash.info, Node: Programmable Completion, Next: Programmable Completion Builtins, Prev: Readline vi Mode, Up: Command Line Editing - -8.6 Programmable Completion -=========================== - -When word completion is attempted for an argument to a command for -which a completion specification (a COMPSPEC) has been defined using -the `complete' builtin (*note Programmable Completion Builtins::), the -programmable completion facilities are invoked. - - First, the command name is identified. If a compspec has been -defined for that command, the compspec is used to generate the list of -possible completions for the word. If the command word is the empty -string (completion attempted at the beginning of an empty line), any -compspec defined with the `-E' option to `complete' is used. If the -command word is a full pathname, a compspec for the full pathname is -searched for first. If no compspec is found for the full pathname, an -attempt is made to find a compspec for the portion following the final -slash. If those searches do not result in a compspec, any compspec -defined with the `-D' option to `complete' is used as the default. - - Once a compspec has been found, it is used to generate the list of -matching words. If a compspec is not found, the default Bash completion -described above (*note Commands For Completion::) is performed. - - First, the actions specified by the compspec are used. Only matches -which are prefixed by the word being completed are returned. When the -`-f' or `-d' option is used for filename or directory name completion, -the shell variable `FIGNORE' is used to filter the matches. *Note Bash -Variables::, for a description of `FIGNORE'. - - Any completions specified by a filename expansion pattern to the -`-G' option are generated next. The words generated by the pattern -need not match the word being completed. The `GLOBIGNORE' shell -variable is not 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. - - After these matches have been generated, any shell function or -command specified with the `-F' and `-C' options is invoked. When the -command or function is invoked, the `COMP_LINE', `COMP_POINT', -`COMP_KEY', and `COMP_TYPE' variables are assigned values as described -above (*note Bash Variables::). If a shell function is being invoked, -the `COMP_WORDS' and `COMP_CWORD' variables are also set. When the -function or command is invoked, the first argument is the name of the -command whose arguments are being completed, the second argument is the -word being completed, and the third argument is the word preceding the -word being completed on the current command line. No filtering of the -generated completions against the word being completed is performed; -the function or command has complete freedom in generating the matches. - - Any function specified with `-F' is invoked first. The function may -use any of the shell facilities, including the `compgen' and `compopt' -builtins described below (*note Programmable Completion Builtins::), to -generate the matches. It must put the possible completions in the -`COMPREPLY' array variable. - - Next, any command specified with the `-C' option is invoked in an -environment equivalent to command substitution. It should print a list -of completions, one per line, to the standard output. Backslash may be -used to escape a newline, if necessary. - - After all of the possible completions are generated, any filter -specified with the `-X' option is applied to the list. The filter is a -pattern as used for pathname expansion; a `&' in the pattern is -replaced with the text of the word being completed. A literal `&' may -be escaped with a backslash; the backslash is removed before attempting -a match. Any completion that matches the pattern will be removed from -the list. A leading `!' negates the pattern; in this case any -completion not matching the pattern will be removed. - - Finally, any prefix and suffix specified with the `-P' and `-S' -options are added to each member of the completion list, and the result -is returned to the Readline completion code as the list of possible -completions. - - If the previously-applied actions do not generate any matches, and -the `-o dirnames' option was supplied to `complete' when the compspec -was defined, directory name completion is attempted. - - If the `-o plusdirs' option was supplied to `complete' when the -compspec was defined, directory name completion is attempted and any -matches are added to the results of the other actions. - - By default, if a compspec is found, whatever it generates is -returned to the completion code as the full set of possible completions. -The default Bash completions are not attempted, and the Readline default -of filename completion is disabled. If the `-o bashdefault' option was -supplied to `complete' when the compspec was defined, the default Bash -completions are attempted if the compspec generates no matches. If the -`-o default' option was supplied to `complete' when the compspec was -defined, Readline's default completion will be performed if the -compspec (and, if attempted, the default Bash completions) generate no -matches. - - When a compspec indicates that directory name completion is desired, -the programmable completion functions force Readline to append a slash -to completed names which are symbolic links to directories, subject to -the value of the MARK-DIRECTORIES Readline variable, regardless of the -setting of the MARK-SYMLINKED-DIRECTORIES Readline variable. - - There is some support for dynamically modifying completions. This is -most useful when used in combination with a default completion specified -with `-D'. It's possible for shell functions executed as completion -handlers to indicate that completion should be retried by returning an -exit status of 124. If a shell function returns 124, and changes the -compspec associated with the command on which completion is being -attempted (supplied as the first argument when the function is -executed), programmable completion restarts from the beginning, with an -attempt to find a compspec for that command. This allows a set of -completions to be built dynamically as completion is attempted, rather -than being loaded all at once. - - For instance, assuming that there is a library of compspecs, each -kept in a file corresponding to the name of the command, the following -default completion function would load completions dynamically: - - _completion_loader() - { - . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 - } - complete -D -F _completion_loader - - -File: bash.info, Node: Programmable Completion Builtins, Prev: Programmable Completion, Up: Command Line Editing - -8.7 Programmable Completion Builtins -==================================== - -Two builtin commands are available to manipulate the programmable -completion facilities. - -`compgen' - `compgen [OPTION] [WORD]' - - Generate possible completion matches for WORD according to the - OPTIONs, which may be any option accepted by the `complete' - builtin with the exception of `-p' and `-r', and write the matches - to the standard output. When using the `-F' or `-C' 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 - programmable completion code had generated them directly from a - completion specification with the same flags. If WORD is - specified, only those completions matching WORD will be displayed. - - The return value is true unless an invalid option is supplied, or - no matches were generated. - -`complete' - `complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] - [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] - [-P PREFIX] [-S SUFFIX] NAME [NAME ...]' - `complete -pr [-DE] [NAME ...]' - - Specify how arguments to each NAME should be completed. If the - `-p' option is supplied, or if no options are supplied, existing - completion specifications are printed in a way that allows them to - be reused as input. The `-r' option removes a completion - specification for each NAME, or, if no NAMEs are supplied, all - completion specifications. The `-D' option indicates that the - remaining options and actions should apply to the "default" - command completion; that is, completion attempted on a command for - which no completion has previously been defined. The `-E' option - indicates that the remaining options and actions should apply to - "empty" 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 (*note Programmable - Completion::). The `-D' option takes precedence over `-E'. - - Other options, if specified, have the following meanings. The - arguments to the `-G', `-W', and `-X' options (and, if necessary, - the `-P' and `-S' options) should be quoted to protect them from - expansion before the `complete' builtin is invoked. - - `-o COMP-OPTION' - The COMP-OPTION controls several aspects of the compspec's - behavior beyond the simple generation of completions. - COMP-OPTION may be one of: - - `bashdefault' - Perform the rest of the default Bash completions if the - compspec generates no matches. - - `default' - Use Readline's default filename completion if the - compspec generates no matches. - - `dirnames' - Perform directory name completion if the compspec - generates no matches. - - `filenames' - Tell Readline that the compspec generates filenames, so - it can perform any filename-specific processing (like - adding a slash to directory names quoting special - characters, or suppressing trailing spaces). This - option is intended to be used with shell functions - specified with `-F'. - - `nospace' - Tell Readline not to append a space (the default) to - words completed at the end of the line. - - `plusdirs' - After any matches defined by the compspec are generated, - directory name completion is attempted and any matches - are added to the results of the other actions. - - - `-A ACTION' - The ACTION may be one of the following to generate a list of - possible completions: - - `alias' - Alias names. May also be specified as `-a'. - - `arrayvar' - Array variable names. - - `binding' - Readline key binding names (*note Bindable Readline - Commands::). - - `builtin' - Names of shell builtin commands. May also be specified - as `-b'. - - `command' - Command names. May also be specified as `-c'. - - `directory' - Directory names. May also be specified as `-d'. - - `disabled' - Names of disabled shell builtins. - - `enabled' - Names of enabled shell builtins. - - `export' - Names of exported shell variables. May also be - specified as `-e'. - - `file' - File names. May also be specified as `-f'. - - `function' - Names of shell functions. - - `group' - Group names. May also be specified as `-g'. - - `helptopic' - Help topics as accepted by the `help' builtin (*note - Bash Builtins::). - - `hostname' - Hostnames, as taken from the file specified by the - `HOSTFILE' shell variable (*note Bash Variables::). - - `job' - Job names, if job control is active. May also be - specified as `-j'. - - `keyword' - Shell reserved words. May also be specified as `-k'. - - `running' - Names of running jobs, if job control is active. - - `service' - Service names. May also be specified as `-s'. - - `setopt' - Valid arguments for the `-o' option to the `set' builtin - (*note The Set Builtin::). - - `shopt' - Shell option names as accepted by the `shopt' builtin - (*note Bash Builtins::). - - `signal' - Signal names. - - `stopped' - Names of stopped jobs, if job control is active. - - `user' - User names. May also be specified as `-u'. - - `variable' - Names of all shell variables. May also be specified as - `-v'. - - `-G GLOBPAT' - The filename expansion pattern GLOBPAT is expanded to generate - the possible completions. - - `-W WORDLIST' - The WORDLIST is split using the characters in the `IFS' - 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 completed. - - `-C COMMAND' - COMMAND is executed in a subshell environment, and its output - is used as the possible completions. - - `-F FUNCTION' - The shell function FUNCTION is executed in the current shell - environment. When it finishes, the possible completions are - retrieved from the value of the `COMPREPLY' array variable. - - `-X FILTERPAT' - FILTERPAT is a pattern as used for filename expansion. It is - applied to the list of possible completions generated by the - preceding options and arguments, and each completion matching - FILTERPAT is removed from the list. A leading `!' in - FILTERPAT negates the pattern; in this case, any completion - not matching FILTERPAT is removed. - - `-P PREFIX' - PREFIX is added at the beginning of each possible completion - after all other options have been applied. - - `-S SUFFIX' - SUFFIX is appended to each possible completion after all - other options have been applied. - - The return value is true unless an invalid option is supplied, an - option other than `-p' or `-r' is supplied without a NAME - argument, an attempt is made to remove a completion specification - for a NAME for which no specification exists, or an error occurs - adding a completion specification. - -`compopt' - `compopt' [-o OPTION] [-DE] [+o OPTION] [NAME] - Modify completion options for each NAME according to the OPTIONs, - or for the currently-execution completion if no NAMEs are supplied. - If no OPTIONs are given, display the completion options for each - NAME or the current completion. The possible values of OPTION are - those valid for the `complete' builtin described above. The `-D' - option indicates that the remaining options should apply to the - "default" command completion; that is, completion attempted on a - command for which no completion has previously been defined. The - `-E' option indicates that the remaining options should apply to - "empty" command completion; that is, completion attempted on a - blank line. - - The `-D' option takes precedence over `-E'. - - The return value is true unless an invalid option is supplied, an - attempt is made to modify the options for a NAME for which no - completion specification exists, or an output error occurs. - - - -File: bash.info, Node: Using History Interactively, Next: Installing Bash, Prev: Command Line Editing, Up: Top - -9 Using History Interactively -***************************** - -This chapter describes how to use the GNU History Library -interactively, from a user's standpoint. It should be considered a -user's guide. For information on using the GNU History Library in -other programs, see the GNU Readline Library Manual. - -* Menu: - -* Bash History Facilities:: How Bash lets you manipulate your command - history. -* Bash History Builtins:: The Bash builtin commands that manipulate - the command history. -* History Interaction:: What it feels like using History as a user. - - -File: bash.info, Node: Bash History Facilities, Next: Bash History Builtins, Up: Using History Interactively - -9.1 Bash History Facilities -=========================== - -When the `-o history' option to the `set' builtin is enabled (*note The -Set Builtin::), the shell provides access to the "command history", the -list of commands previously typed. The value of the `HISTSIZE' shell -variable is used as the number of commands to save in a history list. -The text of the last `$HISTSIZE' commands (default 500) is saved. The -shell stores each command in the history list prior to parameter and -variable expansion but after history expansion is performed, subject to -the values of the shell variables `HISTIGNORE' and `HISTCONTROL'. - - When the shell starts up, the history is initialized from the file -named by the `HISTFILE' variable (default `~/.bash_history'). The file -named by the value of `HISTFILE' is truncated, if necessary, to contain -no more than the number of lines specified by the value of the -`HISTFILESIZE' variable. When an interactive shell exits, the last -`$HISTSIZE' lines are copied from the history list to the file named by -`$HISTFILE'. If the `histappend' shell option is set (*note Bash -Builtins::), the lines are appended to the history file, otherwise the -history file is overwritten. If `HISTFILE' is unset, or if the history -file is unwritable, the history is not saved. After saving the -history, the history file is truncated to contain no more than -`$HISTFILESIZE' lines. If `HISTFILESIZE' is not set, no truncation is -performed. - - If the `HISTTIMEFORMAT' is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. When the history file is -read, lines beginning with the history comment character followed -immediately by a digit are interpreted as timestamps for the previous -history line. - - The builtin command `fc' may be used to list or edit and re-execute -a portion of the history list. The `history' builtin may be used to -display or modify the history list and manipulate the history file. -When using command-line editing, search commands are available in each -editing mode that provide access to the history list (*note Commands -For History::). - - The shell allows control over which commands are saved on the history -list. The `HISTCONTROL' and `HISTIGNORE' variables may be set to cause -the shell to save only a subset of the commands entered. The `cmdhist' -shell option, if enabled, causes the shell to attempt to save each line -of a multi-line command in the same history entry, adding semicolons -where necessary to preserve syntactic correctness. The `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'. - - -File: bash.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively - -9.2 Bash History Builtins -========================= - -Bash provides two builtin commands which manipulate the history list -and history file. - -`fc' - `fc [-e ENAME] [-lnr] [FIRST] [LAST]' - `fc -s [PAT=REP] [COMMAND]' - - Fix Command. In the first form, a range of commands from FIRST to - LAST is selected from the history list. 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 - 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 - reverses the order of the listing. Otherwise, the editor given by - ENAME is invoked on a file containing those commands. If ENAME is - not given, the value of the following variable expansion is used: - `${FCEDIT:-${EDITOR:-vi}}'. This says to use the value of the - `FCEDIT' variable if set, or the value of the `EDITOR' variable if - that is set, or `vi' if neither is set. When editing is complete, - the edited commands are echoed and executed. - - In the second form, COMMAND is re-executed after each instance of - PAT in the selected command is replaced by REP. - - A useful alias to use with the `fc' command is `r='fc -s'', so - that typing `r cc' runs the last command beginning with `cc' and - typing `r' re-executes the last command (*note Aliases::). - -`history' - history [N] - history -c - history -d OFFSET - history [-anrw] [FILENAME] - history -ps ARG - - With no options, display the history list with line numbers. - Lines prefixed with a `*' have been modified. An argument of N - lists only the last N lines. If the shell variable - `HISTTIMEFORMAT' is set and not null, it is used as a format - string for STRFTIME to display the time stamp associated with each - displayed history entry. No intervening blank is printed between - the formatted time stamp and the history line. - - Options, if supplied, have the following meanings: - - `-c' - Clear the history list. This may be combined 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. - - `-a' - Append the new history lines (history lines entered since the - beginning of the current Bash session) to the history file. - - `-n' - Append the history lines not already read from the history - file to the current history list. These are lines appended - to the history file since the beginning of the current Bash - session. - - `-r' - Read the current history file and append its contents to the - history list. - - `-w' - Write out the current history to the history file. - - `-p' - Perform history substitution on the ARGs and display the - result on the standard output, without storing the results in - the history list. - - `-s' - The ARGs are added to the end of the history list as a single - entry. - - - When any of the `-w', `-r', `-a', or `-n' options is used, if - FILENAME is given, then it is used as the history file. If not, - then the value of the `HISTFILE' variable is used. - - - -File: bash.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively - -9.3 History Expansion -===================== - -The History library provides a history expansion feature that is similar -to the history expansion provided by `csh'. This section describes the -syntax used to manipulate the history information. - - History expansions introduce words from the history list into the -input stream, making it easy to repeat commands, insert the arguments -to a previous command into the current input line, or fix errors in -previous commands quickly. - - History expansion takes place in two parts. The first is to -determine which line from the history list should be used during -substitution. The second is to select portions of that line for -inclusion into the current one. The line selected from the history is -called the "event", and the portions of that line that are acted upon -are called "words". Various "modifiers" are available to manipulate -the selected words. The line is broken into words in the same fashion -that Bash does, so that several words surrounded by quotes are -considered one word. History expansions are introduced by the -appearance of the history expansion character, which is `!' by default. -Only `\' and `'' may be used to escape the history expansion character. - - Several shell options settable with the `shopt' builtin (*note Bash -Builtins::) may be used to tailor the behavior of history expansion. -If the `histverify' shell option is enabled, and Readline is being -used, history substitutions are not immediately passed to the shell -parser. Instead, the expanded line is reloaded into the Readline -editing buffer for further modification. If Readline is being used, -and the `histreedit' shell option is enabled, a failed history -expansion will be reloaded into the Readline editing buffer for -correction. The `-p' option to the `history' builtin command may be -used to see what a history expansion 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 subsequent recall. This is most useful in conjunction -with Readline. - - The shell allows control of the various characters used by the -history expansion mechanism with the `histchars' variable, as explained -above (*note Bash Variables::). The shell uses the history comment -character to mark history timestamps when writing the history file. - -* Menu: - -* Event Designators:: How to specify which history line to use. -* Word Designators:: Specifying which words are of interest. -* Modifiers:: Modifying the results of substitution. - - -File: bash.info, Node: Event Designators, Next: Word Designators, Up: History Interaction - -9.3.1 Event Designators ------------------------ - -An event designator is a reference to a command line entry in the -history list. - -`!' - Start a history substitution, except when followed by a space, tab, - the end of the line, `=' or `(' (when the `extglob' shell option - is enabled using the `shopt' builtin). - -`!N' - Refer to command line N. - -`!-N' - Refer to the command N lines back. - -`!!' - Refer to the previous command. This is a synonym for `!-1'. - -`!STRING' - Refer to the most recent command starting with STRING. - -`!?STRING[?]' - Refer to the most recent command containing STRING. The trailing - `?' may be omitted if the STRING is followed immediately by a - newline. - -`^STRING1^STRING2^' - Quick Substitution. Repeat the last command, replacing STRING1 - with STRING2. Equivalent to `!!:s/STRING1/STRING2/'. - -`!#' - The entire command line typed so far. - - - -File: bash.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction - -9.3.2 Word Designators ----------------------- - -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 separated by single spaces. - - For example, - -`!!' - designates the preceding command. When you type this, the - preceding command is repeated in toto. - -`!!:$' - designates the last argument of the preceding command. This may be - shortened to `!$'. - -`!fi:2' - designates the second argument of the most recent command starting - with the letters `fi'. - - Here are the word designators: - -`0 (zero)' - The `0'th word. For many applications, this is the command word. - -`N' - The Nth word. - -`^' - The first argument; that is, word 1. - -`$' - The last argument. - -`%' - The word matched by the most recent `?STRING?' search. - -`X-Y' - A range of words; `-Y' abbreviates `0-Y'. - -`*' - All of the words, except the `0'th. This is a synonym for `1-$'. - It is not an error to use `*' if there is just one word in the - event; the empty string is returned in that case. - -`X*' - Abbreviates `X-$' - -`X-' - Abbreviates `X-$' like `X*', but omits the last word. - - - If a word designator is supplied without an event specification, the -previous command is used as the event. - - -File: bash.info, Node: Modifiers, Prev: Word Designators, Up: History Interaction - -9.3.3 Modifiers ---------------- - -After the optional word designator, you can add a sequence of one or -more of the following modifiers, each preceded by a `:'. - -`h' - Remove a trailing pathname component, leaving only the head. - -`t' - Remove all leading pathname components, leaving the tail. - -`r' - Remove a trailing suffix of the form `.SUFFIX', leaving the - basename. - -`e' - Remove all but the trailing suffix. - -`p' - Print the new command but do not execute it. - -`q' - Quote the substituted words, escaping further substitutions. - -`x' - Quote the substituted words as with `q', but break into words at - spaces, tabs, and newlines. - -`s/OLD/NEW/' - Substitute NEW for the first occurrence of OLD in the event line. - Any delimiter may be used in place of `/'. The delimiter may be - quoted in OLD and NEW with a single backslash. If `&' appears in - NEW, it is replaced by OLD. A single backslash will quote the - `&'. The final delimiter is optional if it is the last character - on the input line. - -`&' - Repeat the previous substitution. - -`g' -`a' - Cause changes to be applied over the entire event line. Used in - conjunction with `s', as in `gs/OLD/NEW/', or with `&'. - -`G' - Apply the following `s' modifier once to each word in the event. - - - -File: bash.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top - -10 Installing Bash -****************** - -This chapter provides basic instructions for installing Bash on the -various supported platforms. The distribution supports the GNU -operating systems, nearly every version of Unix, and several non-Unix -systems such as BeOS and Interix. Other independent ports exist for -MS-DOS, OS/2, and Windows platforms. - -* Menu: - -* Basic Installation:: Installation instructions. -* Compilers and Options:: How to set special options for various - systems. -* Compiling For Multiple Architectures:: How to compile Bash for more - than one kind of system from - the same source tree. -* Installation Names:: How to set the various paths used by the installation. -* Specifying the System Type:: How to configure Bash for a particular system. -* Sharing Defaults:: How to share default configuration values among GNU - programs. -* Operation Controls:: Options recognized by the configuration program. -* Optional Features:: How to enable and disable optional features when - building Bash. - - -File: bash.info, Node: Basic Installation, Next: Compilers and Options, Up: Installing Bash - -10.1 Basic Installation -======================= - -These are installation instructions for Bash. - - The simplest way to compile Bash is: - - 1. `cd' to the directory containing the source code and type - `./configure' to configure Bash for your system. If you're using - `csh' on an old version of System V, you might need to type `sh - ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes some time. While running, it prints - messages telling which features it is checking for. - - 2. Type `make' to compile Bash and build the `bashbug' bug reporting - script. - - 3. Optionally, type `make tests' to run the Bash test suite. - - 4. Type `make install' to install `bash' and `bashbug'. This will - also install the manual pages and Info file. - - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package -(the top directory, the `builtins', `doc', and `support' directories, -each directory under `lib', and several others). It also creates a -`config.h' file containing system-dependent definitions. Finally, it -creates a shell script named `config.status' that you can run in the -future to recreate the current configuration, a file `config.cache' -that saves the results of its tests to speed up reconfiguring, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). If at some point `config.cache' contains -results you don't want to keep, you may remove or edit it. - - To find out more about the options and arguments that the -`configure' script understands, type - - bash-2.04$ ./configure --help - -at the Bash prompt in your Bash source directory. - - 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 -considered for the next release. - - The file `configure.in' is used to create `configure' by a program -called Autoconf. You only need `configure.in' if you want to change it -or regenerate `configure' using a newer version of Autoconf. If you do -this, make sure you are using Autoconf version 2.50 or newer. - - You can remove the program binaries and object files from the source -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'. - - -File: bash.info, Node: Compilers and Options, Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash - -10.2 Compilers and Options -========================== - -Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - - On systems that have the `env' program, you can do it like this: - - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - - The configuration process uses GCC to build Bash if it is available. - - -File: bash.info, Node: Compiling For Multiple Architectures, Next: Installation Names, Prev: Compilers and Options, Up: Installing Bash - -10.3 Compiling For Multiple Architectures -========================================= - -You can compile Bash for more than one kind of computer at the same -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 `..'. - - 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 directory. After you have installed Bash for one -architecture, use `make distclean' before reconfiguring for another -architecture. - - Alternatively, if your system supports symbolic links, you can use -the `support/mkclone' script to create a build tree which has symbolic -links back to each file in the source directory. Here's an example -that creates a build directory in the current directory from a source -directory `/usr/gnu/src/bash-2.0': - - bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 . - -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. - - -File: bash.info, Node: Installation Names, Next: Specifying the System Type, Prev: Compiling For Multiple Architectures, Up: Installing Bash - -10.4 Installation Names -======================= - -By default, `make install' will install into `/usr/local/bin', -`/usr/local/man', etc. You can specify an installation prefix other -than `/usr/local' by giving `configure' the option `--prefix=PATH', or -by specifying a value for the `DESTDIR' `make' variable when running -`make install'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', `make install' will -use PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - -File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash - -10.5 Specifying the System Type -=============================== - -There may be some features `configure' can not figure out -automatically, but need to determine by the type of host Bash will run -on. Usually `configure' can figure that out, but if it prints a -message saying it can not guess the host type, give it the -`--host=TYPE' option. `TYPE' can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: -`CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2'). - - See the file `support/config.sub' for the possible values of each -field. - - -File: bash.info, Node: Sharing Defaults, Next: Operation Controls, Prev: Specifying the System Type, Up: Installing Bash - -10.6 Sharing Defaults -===================== - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. `configure' -looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: the Bash `configure' looks for a site script, but not all -`configure' scripts do. - - -File: bash.info, Node: Operation Controls, Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash - -10.7 Operation Controls -======================= - -`configure' recognizes the following options to control how it operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. - -`--srcdir=DIR' - Look for the Bash source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - - `configure' also accepts some other, not widely used, boilerplate -options. `configure --help' prints the complete list. - - -File: bash.info, Node: Optional Features, Prev: Operation Controls, Up: Installing Bash - -10.8 Optional Features -====================== - -The Bash `configure' has a number of `--enable-FEATURE' options, where -FEATURE indicates an optional part of Bash. There are also several -`--with-PACKAGE' options, where PACKAGE is something like `bash-malloc' -or `purify'. To turn off the default use of a package, use -`--without-PACKAGE'. To configure Bash without a feature that is -enabled by default, use `--disable-FEATURE'. - - Here is a complete list of the `--enable-' and `--with-' options -that the Bash `configure' recognizes. - -`--with-afs' - Define if you are using the Andrew File System from Transarc. - -`--with-bash-malloc' - Use the Bash version of `malloc' in the directory `lib/malloc'. - This is not the same `malloc' that appears in GNU libc, but an - older version originally derived from the 4.2 BSD `malloc'. This - `malloc' is very fast, but wastes some space on each allocation. - This option is enabled by default. The `NOTES' file contains a - list of systems for which this should be turned off, and - `configure' disables this option automatically for a number of - systems. - -`--with-curses' - Use the curses library instead of the termcap library. This should - be supplied if your system has an inadequate or incomplete termcap - database. - -`--with-gnu-malloc' - A synonym for `--with-bash-malloc'. - -`--with-installed-readline[=PREFIX]' - Define this to make Bash link with a locally-installed version of - Readline rather than the version in `lib/readline'. This works - only with Readline 5.0 and later versions. If PREFIX is `yes' or - not supplied, `configure' uses the values of the make variables - `includedir' and `libdir', which are subdirectories of `prefix' by - default, to find the installed version of Readline if it is not in - the standard system include and library directories. If PREFIX is - `no', Bash links with the version in `lib/readline'. If PREFIX is - set to any other value, `configure' treats it as a directory - pathname and looks for the installed version of Readline in - subdirectories of that directory (include files in - PREFIX/`include' and the library in PREFIX/`lib'). - -`--with-purify' - Define this to use the Purify memory allocation checker from - Rational Software. - -`--enable-minimal-config' - This produces a shell with minimal features, close to the - historical Bourne shell. - - There are several `--enable-' options that alter how Bash is -compiled and linked, rather than changing run-time features. - -`--enable-largefile' - Enable support for large files - (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if - the operating system requires special compiler options to build - programs which can access large files. This is enabled by - default, if the operating system provides large file support. - -`--enable-profiling' - This builds a Bash binary that produces profiling information to be - processed by `gprof' each time it is executed. - -`--enable-static-link' - This causes Bash to be linked statically, if `gcc' is being used. - This could be used to build a version to use as root's shell. - - The `minimal-config' option can be used to disable all of the -following options, but it is processed first, so individual options may -be enabled using `enable-FEATURE'. - - All of the following options except for `disabled-builtins' and -`xpg-echo-default' are enabled by default, unless the operating system -does not provide the necessary support. - -`--enable-alias' - Allow alias expansion and include the `alias' and `unalias' - builtins (*note Aliases::). - -`--enable-arith-for-command' - Include support for the alternate form of the `for' command that - behaves like the C language `for' statement (*note Looping - Constructs::). - -`--enable-array-variables' - Include support for one-dimensional array shell variables (*note - Arrays::). - -`--enable-bang-history' - Include support for `csh'-like history substitution (*note History - Interaction::). - -`--enable-brace-expansion' - Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ). - See *note Brace Expansion::, for a complete description. - -`--enable-casemod-attributes' - Include support for case-modifying attributes in the `declare' - builtin and assignment statements. Variables with the UPPERCASE - attribute, for example, will have their values converted to - uppercase upon assignment. - -`--enable-casemod-expansion' - Include support for case-modifying word expansions. - -`--enable-command-timing' - Include support for recognizing `time' as a reserved word and for - displaying timing statistics for the pipeline following `time' - (*note Pipelines::). This allows pipelines as well as shell - builtins and functions to be timed. - -`--enable-cond-command' - Include support for the `[[' conditional command. (*note - Conditional Constructs::). - -`--enable-cond-regexp' - Include support for matching POSIX regular expressions using the - `=~' binary operator in the `[[' conditional command. (*note - Conditional Constructs::). - -`--enable-coprocesses' - Include support for coprocesses and the `coproc' reserved word - (*note Pipelines::). - -`--enable-debugger' - Include support for the bash debugger (distributed separately). - -`--enable-directory-stack' - Include support for a `csh'-like directory stack and the `pushd', - `popd', and `dirs' builtins (*note The Directory Stack::). - -`--enable-disabled-builtins' - Allow builtin commands to be invoked via `builtin xxx' even after - `xxx' has been disabled using `enable -n xxx'. See *note Bash - Builtins::, for details of the `builtin' and `enable' builtin - commands. - -`--enable-dparen-arithmetic' - Include support for the `((...))' command (*note Conditional - Constructs::). - -`--enable-extended-glob' - Include support for the extended pattern matching features - described above under *note Pattern Matching::. - -`--enable-extended-glob-default' - Set the default value of the EXTGLOB shell option described above - under *note The Shopt Builtin:: to be enabled. - -`--enable-help-builtin' - Include the `help' builtin, which displays help on shell builtins - and variables (*note Bash Builtins::). - -`--enable-history' - Include command history and the `fc' and `history' builtin - commands (*note Bash History Facilities::). - -`--enable-job-control' - This enables the job control features (*note Job Control::), if - the operating system supports them. - -`--enable-multibyte' - This enables support for multibyte characters if the operating - system provides the necessary support. - -`--enable-net-redirections' - This enables the special handling of filenames of the form - `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in - redirections (*note Redirections::). - -`--enable-process-substitution' - This enables process substitution (*note Process Substitution::) if - the operating system provides the necessary support. - -`--enable-progcomp' - Enable the programmable completion facilities (*note Programmable - Completion::). 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 - strings. See *note Printing a Prompt::, for a complete list of - prompt string escape sequences. - -`--enable-readline' - Include support for command-line editing and history with the Bash - version of the Readline library (*note Command Line Editing::). - -`--enable-restricted' - Include support for a "restricted shell". If this is enabled, - Bash, when called as `rbash', enters a restricted mode. See *note - The Restricted Shell::, for a description of restricted mode. - -`--enable-select' - Include the `select' builtin, which allows the generation of simple - menus (*note Conditional Constructs::). - -`--enable-separate-helpfiles' - Use external files for the documentation displayed by the `help' - builtin instead of storing the text internally. - -`--enable-single-help-strings' - Store the text displayed by the `help' builtin as a single string - for each help topic. This aids in translating the text to - different languages. You may need to disable this if your - compiler cannot handle very long string literals. - -`--enable-strict-posix-default' - Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). - -`--enable-usg-echo-default' - A synonym for `--enable-xpg-echo-default'. - -`--enable-xpg-echo-default' - Make the `echo' builtin expand backslash-escaped characters by - default, without requiring the `-e' option. This sets the default - value of the `xpg_echo' shell option to `on', which makes the Bash - `echo' behave more like the version specified in the Single Unix - Specification, version 3. *Note Bash Builtins::, for a - description of the escape sequences that `echo' recognizes. - - - The file `config-top.h' contains C Preprocessor `#define' statements -for options which are not settable from `configure'. Some of these are -not meant to be changed; beware of the consequences if you do. Read -the comments associated with each definition for more information about -its effect. - - -File: bash.info, Node: Reporting Bugs, Next: Major Differences From The Bourne Shell, Prev: Installing Bash, Up: Top - -Appendix A Reporting Bugs -************************* - -Please report all bugs you find in Bash. But first, you should make -sure that it really is a bug, and that it appears in the latest version -of Bash. The latest version of Bash is always available for FTP from -`ftp://ftp.gnu.org/pub/gnu/bash/'. - - Once you have determined that a bug actually exists, use the -`bashbug' command to submit a bug report. If you have a fix, you are -encouraged to mail that as well! Suggestions and `philosophical' bug -reports may be mailed to or posted to the Usenet -newsgroup `gnu.bash.bug'. - - All bug reports should include: - * The version number of Bash. - - * The hardware and operating system. - - * The compiler used to compile Bash. - - * A description of the bug behaviour. - - * A short script or `recipe' which exercises the bug and may be used - to reproduce it. - -`bashbug' inserts the first three items automatically into the template -it provides for filing a bug report. - - Please send all reports concerning this manual to -. - - -File: bash.info, Node: Major Differences From The Bourne Shell, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top - -Appendix B Major Differences From The Bourne Shell -************************************************** - -Bash implements essentially the same grammar, parameter and variable -expansion, redirection, and quoting as the Bourne Shell. Bash uses the -POSIX standard as the specification of how these features are to be -implemented. There are some differences between the traditional Bourne -shell and Bash; this section quickly details the differences of -significance. A number of these differences are explained in greater -depth in previous sections. This section uses the version of `sh' -included in SVR4.2 (the last version of the historical Bourne shell) as -the baseline reference. - - * Bash is POSIX-conformant, even where the POSIX specification - differs from traditional `sh' behavior (*note Bash POSIX Mode::). - - * Bash has multi-character invocation options (*note Invoking - Bash::). - - * Bash has command-line editing (*note Command Line Editing::) and - the `bind' builtin. - - * Bash provides a programmable word completion mechanism (*note - Programmable Completion::), and builtin commands `complete', - `compgen', and `compopt', to manipulate it. - - * Bash has command history (*note Bash History Facilities::) and the - `history' and `fc' builtins to manipulate it. The Bash history - list maintains timestamp information and uses the value of the - `HISTTIMEFORMAT' variable to display it. - - * Bash implements `csh'-like history expansion (*note History - Interaction::). - - * Bash has one-dimensional array variables (*note Arrays::), and the - appropriate variable expansions and assignment syntax to use them. - Several of the Bash builtins take options to act on arrays. Bash - provides a number of built-in array variables. - - * The `$'...'' quoting syntax, which expands ANSI-C - backslash-escaped characters in the text between the single quotes, - is supported (*note ANSI-C Quoting::). - - * Bash supports the `$"..."' quoting syntax to do locale-specific - translation of the characters between the double quotes. The - `-D', `--dump-strings', and `--dump-po-strings' invocation options - list the translatable strings found in a script (*note Locale - Translation::). - - * Bash implements the `!' keyword to negate the return value of a - pipeline (*note Pipelines::). Very useful when an `if' statement - needs to act only if a test fails. The Bash `-o pipefail' option - to `set' will cause a pipeline to return a failure status if any - command fails. - - * Bash has the `time' reserved word and command timing (*note - Pipelines::). The display of the timing statistics may be - controlled with the `TIMEFORMAT' variable. - - * Bash implements the `for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic - for command, similar to the C language (*note Looping - Constructs::). - - * Bash includes the `select' compound command, which allows the - generation of simple menus (*note Conditional Constructs::). - - * Bash includes the `[[' compound command, which makes conditional - testing part of the shell grammar (*note Conditional - Constructs::), including optional regular expression matching. - - * Bash provides optional case-insensitive matching for the `case' and - `[[' constructs. - - * Bash includes brace expansion (*note Brace Expansion::) and tilde - expansion (*note Tilde Expansion::). - - * Bash implements command aliases and the `alias' and `unalias' - builtins (*note Aliases::). - - * Bash provides shell arithmetic, the `((' compound command (*note - Conditional Constructs::), and arithmetic expansion (*note Shell - Arithmetic::). - - * Variables present in the shell's initial environment are - automatically exported to child processes. The Bourne shell does - not normally do this unless the variables are explicitly marked - using the `export' command. - - * Bash supports the `+=' assignment operator, which appends to the - value of the variable named on the left hand side. - - * Bash includes the POSIX pattern removal `%', `#', `%%' and `##' - expansions to remove leading or trailing substrings from variable - values (*note Shell Parameter Expansion::). - - * The expansion `${#xx}', which returns the length of `${xx}', is - supported (*note Shell Parameter Expansion::). - - * The expansion `${var:'OFFSET`[:'LENGTH`]}', which expands to the - substring of `var''s value of length LENGTH, beginning at OFFSET, - is present (*note Shell Parameter Expansion::). - - * The expansion `${var/[/]'PATTERN`[/'REPLACEMENT`]}', which matches - PATTERN and replaces it with REPLACEMENT in the value of `var', is - available (*note Shell Parameter Expansion::). - - * The expansion `${!PREFIX}*' expansion, which expands to the names - of all shell variables whose names begin with PREFIX, is available - (*note Shell Parameter Expansion::). - - * Bash has INDIRECT variable expansion using `${!word}' (*note Shell - Parameter Expansion::). - - * Bash can expand positional parameters beyond `$9' using `${NUM}'. - - * The POSIX `$()' form of command substitution is implemented (*note - Command Substitution::), and preferred to the Bourne shell's ```' - (which is also implemented for backwards compatibility). - - * Bash has process substitution (*note Process Substitution::). - - * Bash automatically assigns variables that provide information - about the current user (`UID', `EUID', and `GROUPS'), the current - host (`HOSTTYPE', `OSTYPE', `MACHTYPE', and `HOSTNAME'), and the - instance of Bash that is running (`BASH', `BASH_VERSION', and - `BASH_VERSINFO'). *Note Bash Variables::, for details. - - * The `IFS' variable is used to split only the results of expansion, - not all words (*note Word Splitting::). This closes a - longstanding shell security hole. - - * Bash implements the full set of POSIX filename expansion operators, - including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING - SYMBOLS (*note Filename Expansion::). - - * Bash implements extended pattern matching features when the - `extglob' shell option is enabled (*note Pattern Matching::). - - * It is possible to have a variable and a function with the same - name; `sh' does not separate the two name spaces. - - * Bash functions are permitted to have local variables using the - `local' builtin, and thus useful recursive functions may be written - (*note Bash Builtins::). - - * Variable assignments preceding commands affect only that command, - even builtins and functions (*note Environment::). In `sh', all - variable assignments preceding commands are global unless the - command is executed from the file system. - - * Bash performs filename expansion on filenames specified as operands - to input and output redirection operators (*note Redirections::). - - * Bash contains the `<>' redirection operator, allowing a file to be - opened for both reading and writing, and the `&>' redirection - operator, for directing standard output and standard error to the - same file (*note Redirections::). - - * Bash includes the `<<<' redirection operator, allowing a string to - be used as the standard input to a command. - - * Bash implements the `[n]<&WORD' and `[n]>&WORD' redirection - operators, which move one file descriptor to another. - - * Bash treats a number of filenames specially when they are used in - redirection operators (*note Redirections::). - - * Bash can open network connections to arbitrary machines and - services with the redirection operators (*note Redirections::). - - * The `noclobber' option is available to avoid overwriting existing - files with output redirection (*note The Set Builtin::). The `>|' - redirection operator may be used to override `noclobber'. - - * The Bash `cd' and `pwd' builtins (*note Bourne Shell Builtins::) - each take `-L' and `-P' options to switch between logical and - physical modes. - - * Bash allows a function to override a builtin with the same name, - and provides access to that builtin's functionality within the - function via the `builtin' and `command' builtins (*note Bash - Builtins::). - - * The `command' builtin allows selective disabling of functions when - command lookup is performed (*note Bash Builtins::). - - * Individual builtins may be enabled or disabled using the `enable' - builtin (*note Bash Builtins::). - - * The Bash `exec' builtin takes additional options that allow users - to control the contents of the environment passed to the executed - command, and what the zeroth argument to the command is to be - (*note Bourne Shell Builtins::). - - * Shell functions may be exported to children via the environment - using `export -f' (*note Shell Functions::). - - * The Bash `export', `readonly', and `declare' builtins can take a - `-f' option to act on shell functions, a `-p' option to display - variables with various attributes set in a format that can be used - as shell input, a `-n' option to remove various variable - attributes, and `name=value' arguments to set variable attributes - and values simultaneously. - - * The Bash `hash' builtin allows a name to be associated with an - arbitrary filename, even when that filename cannot be found by - searching the `$PATH', using `hash -p' (*note Bourne Shell - Builtins::). - - * Bash includes a `help' builtin for quick reference to shell - facilities (*note Bash Builtins::). - - * The `printf' builtin is available to display formatted output - (*note Bash Builtins::). - - * The Bash `read' builtin (*note Bash Builtins::) will read a line - ending in `\' with the `-r' option, and will use the `REPLY' - variable as a default if no non-option arguments are supplied. - The Bash `read' builtin also accepts a prompt string with the `-p' - option and will use Readline to obtain the line when given the - `-e' option. The `read' builtin also has additional options to - control input: the `-s' option will turn off echoing of input - characters as they are read, the `-t' option will allow `read' to - time out if input does not arrive within a specified number of - seconds, the `-n' option will allow reading only a specified - number of characters rather than a full line, and the `-d' option - will read until a particular character rather than newline. - - * The `return' builtin may be used to abort execution of scripts - executed with the `.' or `source' builtins (*note Bourne Shell - Builtins::). - - * Bash includes the `shopt' builtin, for finer control of shell - optional capabilities (*note The Shopt Builtin::), and allows - these options to be set and unset at shell invocation (*note - Invoking Bash::). - - * Bash has much more optional behavior controllable with the `set' - builtin (*note The Set Builtin::). - - * The `-x' (`xtrace') option displays commands other than simple - commands when performing an execution trace (*note The Set - Builtin::). - - * The `test' builtin (*note Bourne Shell Builtins::) is slightly - different, as it implements the POSIX algorithm, which specifies - the behavior based on the number of arguments. - - * Bash includes the `caller' builtin, which displays the context of - any active subroutine call (a shell function or a script executed - with the `.' or `source' builtins). This supports the bash - debugger. - - * The `trap' builtin (*note Bourne Shell Builtins::) allows a - `DEBUG' pseudo-signal specification, similar to `EXIT'. Commands - specified with a `DEBUG' trap are executed before every simple - command, `for' command, `case' command, `select' command, every - arithmetic `for' command, and before the first command executes in - a shell function. The `DEBUG' trap is not inherited by shell - functions unless the function has been given the `trace' attribute - or the `functrace' option has been enabled using the `shopt' - builtin. The `extdebug' shell option has additional effects on the - `DEBUG' trap. - - The `trap' builtin (*note Bourne Shell Builtins::) allows an `ERR' - pseudo-signal specification, similar to `EXIT' and `DEBUG'. - Commands specified with an `ERR' trap are executed after a simple - command fails, with a few exceptions. The `ERR' trap is not - inherited by shell functions unless the `-o errtrace' option to - the `set' builtin is enabled. - - The `trap' builtin (*note Bourne Shell Builtins::) allows a - `RETURN' pseudo-signal specification, similar to `EXIT' and - `DEBUG'. Commands specified with an `RETURN' trap are executed - before execution resumes after a shell function or a shell script - executed with `.' or `source' returns. The `RETURN' trap is not - inherited by shell functions unless the function has been given - the `trace' attribute or the `functrace' option has been enabled - using the `shopt' builtin. - - * The Bash `type' builtin is more extensive and gives more - information about the names it finds (*note Bash Builtins::). - - * The Bash `umask' builtin permits a `-p' option to cause the output - to be displayed in the form of a `umask' command that may be - reused as input (*note Bourne Shell Builtins::). - - * Bash implements a `csh'-like directory stack, and provides the - `pushd', `popd', and `dirs' builtins to manipulate it (*note The - Directory Stack::). Bash also makes the directory stack visible - as the value of the `DIRSTACK' shell variable. - - * Bash interprets special backslash-escaped characters in the prompt - strings when interactive (*note Printing a Prompt::). - - * The Bash restricted mode is more useful (*note The Restricted - Shell::); the SVR4.2 shell restricted mode is too limited. - - * The `disown' builtin can remove a job from the internal shell job - table (*note Job Control Builtins::) or suppress the sending of - `SIGHUP' to a job when the shell exits as the result of a `SIGHUP'. - - * Bash includes a number of features to support a separate debugger - for shell scripts. - - * The SVR4.2 shell has two privilege-related builtins (`mldmode' and - `priv') not present in Bash. - - * Bash does not have the `stop' or `newgrp' builtins. - - * Bash does not use the `SHACCT' variable or perform shell - accounting. - - * The SVR4.2 `sh' uses a `TIMEOUT' variable like Bash uses `TMOUT'. - - -More features unique to Bash may be found in *note Bash Features::. - -B.1 Implementation Differences From The SVR4.2 Shell -==================================================== - -Since Bash is a completely new implementation, it does not suffer from -many of the limitations of the SVR4.2 shell. For instance: - - * Bash does not fork a subshell when redirecting into or out of a - shell control structure such as an `if' or `while' statement. - - * Bash does not allow unbalanced quotes. The SVR4.2 shell will - silently insert a needed closing quote at `EOF' under certain - circumstances. This can be the cause of some hard-to-find errors. - - * The SVR4.2 shell uses a baroque memory management scheme based on - trapping `SIGSEGV'. If the shell is started from a process with - `SIGSEGV' blocked (e.g., by using the `system()' C library - function call), it misbehaves badly. - - * In a questionable attempt at security, the SVR4.2 shell, when - invoked without the `-p' option, will alter its real and effective - UID and GID if they are less than some magic threshold value, - commonly 100. This can lead to unexpected results. - - * The SVR4.2 shell does not allow users to trap `SIGSEGV', - `SIGALRM', or `SIGCHLD'. - - * The SVR4.2 shell does not allow the `IFS', `MAILCHECK', `PATH', - `PS1', or `PS2' variables to be unset. - - * The SVR4.2 shell treats `^' as the undocumented equivalent of `|'. - - * Bash allows multiple option arguments when it is invoked (`-x -v'); - the SVR4.2 shell allows only one option argument (`-xv'). In - fact, some versions of the shell dump core if the second argument - begins with a `-'. - - * The SVR4.2 shell exits a script if any builtin fails; Bash exits a - script only if one of the POSIX special builtins fails, and only - for certain failures, as enumerated in the POSIX standard. - - * The SVR4.2 shell behaves differently when invoked as `jsh' (it - turns on job control). - - -File: bash.info, Node: GNU Free Documentation License, Next: Indexes, Prev: Major Differences From The Bourne Shell, Up: Top - -Appendix C GNU Free Documentation License -***************************************** - - Version 1.3, 3 November 2008 - - Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. - `http://fsf.org/' - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - 0. PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - functional and useful document "free" in the sense of freedom: to - assure everyone the effective freedom to copy and redistribute it, - with or without modifying it, either commercially or - noncommercially. Secondarily, this License preserves for the - author and publisher a way to get credit for their work, while not - being considered responsible for modifications made by others. - - This License is a kind of "copyleft", which means that derivative - works of the document must themselves be free in the same sense. - It complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same freedoms - that the software does. But this License is not limited to - software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is - instruction or reference. - - 1. APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work, in any medium, - that contains a notice placed by the copyright holder saying it - can be distributed under the terms of this License. Such a notice - grants a world-wide, royalty-free license, unlimited in duration, - to use that work under the conditions stated herein. The - "Document", below, refers to any such manual or work. Any member - of the public is a licensee, and is addressed as "you". You - accept the license if you copy, modify or distribute the work in a - way requiring permission under copyright law. - - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter section - of the Document that deals exclusively with the relationship of the - publishers or authors of the Document to the Document's overall - subject (or to related matters) and contains nothing that could - fall directly within that overall subject. (Thus, if the Document - is in part a textbook of mathematics, a Secondary Section may not - explain any mathematics.) The relationship could be a matter of - historical connection with the subject or with related matters, or - of legal, commercial, philosophical, ethical or political position - regarding them. - - The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. If a section does not fit the above definition of - Secondary then it is not allowed to be designated as Invariant. - The Document may contain zero Invariant Sections. If the Document - does not identify any Invariant Sections then there are none. - - The "Cover Texts" are certain short passages of text that are - listed, as Front-Cover Texts or Back-Cover Texts, in the notice - that says that the Document is released under this License. A - Front-Cover Text may be at most 5 words, and a Back-Cover Text may - be at most 25 words. - - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, that is suitable for revising the document - straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup, or absence of - markup, has been arranged to thwart or discourage subsequent - modification by readers is not Transparent. An image format is - not Transparent if used for any substantial amount of text. A - copy that is not "Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include plain - ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML, PostScript or PDF designed for - human modification. Examples of transparent image formats include - PNG, XCF and JPG. Opaque formats include proprietary formats that - can be read and edited only by proprietary word processors, SGML or - XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML, PostScript or PDF - produced by some word processors for output purposes only. - - The "Title Page" means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the - material this License requires to appear in the title page. For - works in formats which do not have any title page as such, "Title - Page" means the text near the most prominent appearance of the - work's title, preceding the beginning of the body of the text. - - The "publisher" means any person or entity that distributes copies - of the Document to the public. - - A section "Entitled XYZ" means a named subunit of the Document - whose title either is precisely XYZ or contains XYZ in parentheses - following text that translates XYZ in another language. (Here XYZ - stands for a specific section name mentioned below, such as - "Acknowledgements", "Dedications", "Endorsements", or "History".) - To "Preserve the Title" of such a section when you modify the - Document means that it remains a section "Entitled XYZ" according - to this definition. - - The Document may include Warranty Disclaimers next to the notice - which states that this License applies to the Document. These - Warranty Disclaimers are considered to be included by reference in - this License, but only as regards disclaiming warranties: any other - implication that these Warranty Disclaimers may have is void and - has no effect on the meaning of this License. - - 2. VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that you - add no other conditions whatsoever to those of this License. You - may not use technical measures to obstruct or control the reading - or further copying of the copies you make or distribute. However, - you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. - - You may also lend copies, under the same conditions stated above, - and you may publicly display copies. - - 3. COPYING IN QUANTITY - - If you publish printed copies (or copies in media that commonly - have printed covers) of the Document, numbering more than 100, and - the Document's license notice requires Cover Texts, you must - enclose the copies in covers that carry, clearly and legibly, all - these Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also clearly - and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - - If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a computer-network location from - which the general network-using public has access to download - using public-standard network protocols a complete Transparent - copy of the Document, free of added material. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. - - It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. - - 4. MODIFICATIONS - - You may copy and distribute a Modified Version of the Document - under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified 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: - - A. 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 of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. - - B. List on the Title Page, as authors, one or more persons or - entities responsible for authorship of the modifications in - the Modified Version, together with at least five of the - principal authors of the Document (all of its principal - authors, if it has fewer than five), unless they release you - from this requirement. - - C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - D. Preserve all the copyright notices of the Document. - - E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - F. Include, immediately after the copyright notices, a license - notice giving the public permission to use the Modified - Version under the terms of this License, in the form shown in - the Addendum below. - - G. Preserve in that license notice the full lists of Invariant - Sections and required Cover Texts given in the Document's - license notice. - - H. Include an unaltered copy of this License. - - I. Preserve the section Entitled "History", Preserve its Title, - and add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section Entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. - - J. Preserve the network location, if any, given in the Document - for public access to a Transparent copy of the Document, and - likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. - - K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the - section all the substance and tone of each of the contributor - acknowledgements and/or dedications given therein. - - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. - - M. Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - - N. Do not retitle any existing section to be Entitled - "Endorsements" or to conflict in title with any Invariant - Section. - - O. Preserve any Warranty Disclaimers. - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. - - You may add a section Entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - - You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this - License give permission to use their names for publicity for or to - assert or imply endorsement of any Modified Version. - - 5. COMBINING DOCUMENTS - - You may combine the Document with other documents released under - this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, - unmodified, and list them all as Invariant Sections of your - combined work in its license notice, and that you preserve all - their Warranty Disclaimers. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name - but different contents, make the title of each such section unique - by adding at the end of it, in parentheses, the name of the - original author or publisher of that section if known, or else a - unique number. Make the same adjustment to the section titles in - the list of Invariant Sections in the license notice of the - combined work. - - In the combination, you must combine any sections Entitled - "History" in the various original documents, forming one section - Entitled "History"; likewise combine any sections Entitled - "Acknowledgements", and any sections Entitled "Dedications". You - must delete all sections Entitled "Endorsements." - - 6. COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other - documents released under this License, and replace the individual - copies of this License in the various documents with a single copy - that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - - You may extract a single document from such a collection, and - distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. - - 7. AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, is called an "aggregate" if the - copyright resulting from the compilation is not used to limit the - legal rights of the compilation's users beyond what the individual - works permit. When the Document is included in an aggregate, this - License does not apply to the other works in the aggregate which - are not themselves derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one half - of the entire aggregate, the Document's Cover Texts may be placed - on covers that bracket the Document within the aggregate, or the - electronic equivalent of covers if the Document is in electronic - form. Otherwise they must appear on printed covers that bracket - the whole aggregate. - - 8. TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section - 4. Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License, and all the license notices in the - Document, and any Warranty Disclaimers, provided that you also - include the original English version of this License and the - original versions of those notices and disclaimers. In case of a - disagreement between the translation and the original version of - this License or a notice or disclaimer, the original version will - prevail. - - If a section in the Document is Entitled "Acknowledgements", - "Dedications", or "History", the requirement (section 4) to - Preserve its Title (section 1) will typically require changing the - actual title. - - 9. TERMINATION - - You may not copy, modify, sublicense, or distribute the Document - except as expressly provided under this License. Any attempt - otherwise to copy, modify, sublicense, or distribute it is void, - and will automatically terminate your rights under this License. - - However, if you cease all violation of this License, then your - license from a particular copyright holder is reinstated (a) - provisionally, unless and until the copyright holder explicitly - and finally terminates your license, and (b) permanently, if the - copyright holder fails to notify you of the violation by some - reasonable means prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is - reinstated permanently if the copyright holder notifies you of the - violation by some reasonable means, this is the first time you have - received notice of violation of this License (for any work) from - that copyright holder, and you cure the violation prior to 30 days - after your receipt of the notice. - - Termination of your rights under this section does not terminate - the licenses of parties who have received copies or rights from - you under this License. If your rights have been terminated and - not permanently reinstated, receipt of a copy of some or all of - the same material does not give you any rights to use it. - - 10. FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions of - the GNU Free Documentation License from time to time. Such new - versions will be similar in spirit to the present version, but may - differ in detail to address new problems or concerns. See - `http://www.gnu.org/copyleft/'. - - Each version of the License is given a distinguishing version - number. If the Document specifies that a particular numbered - version of this License "or any later version" applies to it, you - have the option of following the terms and conditions either of - that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. If the Document specifies that a proxy - can decide which future versions of this License can be used, that - proxy's public statement of acceptance of a version permanently - authorizes you to choose that version for the Document. - - 11. RELICENSING - - "Massive Multiauthor Collaboration Site" (or "MMC Site") means any - World Wide Web server that publishes copyrightable works and also - provides prominent facilities for anybody to edit those works. A - public wiki that anybody can edit is an example of such a server. - A "Massive Multiauthor Collaboration" (or "MMC") contained in the - site means any set of copyrightable works thus published on the MMC - site. - - "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 - license published by Creative Commons Corporation, a not-for-profit - corporation with a principal place of business in San Francisco, - California, as well as future copyleft versions of that license - published by that same organization. - - "Incorporate" means to publish or republish a Document, in whole or - in part, as part of another Document. - - An MMC is "eligible for relicensing" if it is licensed under this - License, and if all works that were first published under this - License somewhere other than this MMC, and subsequently - incorporated in whole or in part into the MMC, (1) had no cover - texts or invariant sections, and (2) were thus incorporated prior - to November 1, 2008. - - The operator of an MMC Site may republish an MMC contained in the - site under CC-BY-SA on the same site at any time before August 1, - 2009, provided the MMC is eligible for relicensing. - - -ADDENDUM: How to use this License for your documents -==================================================== - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and license -notices just after the title page: - - Copyright (C) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.3 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover - Texts. A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - - If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: - - with the Invariant Sections being LIST THEIR TITLES, with - the Front-Cover Texts being LIST, and with the Back-Cover Texts - being LIST. - - If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - - If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. - - -File: bash.info, Node: Indexes, Prev: GNU Free Documentation License, Up: Top - -Appendix D Indexes -****************** - -* Menu: - -* Builtin Index:: Index of Bash builtin commands. -* Reserved Word Index:: Index of Bash reserved words. -* Variable Index:: Quick reference helps you find the - variable you want. -* Function Index:: Index of bindable Readline functions. -* Concept Index:: General index for concepts described in - this manual. - - -File: bash.info, Node: Builtin Index, Next: Reserved Word Index, Up: Indexes - -D.1 Index of Shell Builtin Commands -=================================== - -[index] -* Menu: - -* .: Bourne Shell Builtins. - (line 16) -* :: Bourne Shell Builtins. - (line 11) -* [: Bourne Shell Builtins. - (line 213) -* alias: Bash Builtins. (line 11) -* bg: Job Control Builtins. - (line 7) -* bind: Bash Builtins. (line 21) -* break: Bourne Shell Builtins. - (line 29) -* builtin: Bash Builtins. (line 98) -* caller: Bash Builtins. (line 106) -* cd: Bourne Shell Builtins. - (line 36) -* command: Bash Builtins. (line 123) -* compgen: Programmable Completion Builtins. - (line 10) -* complete: Programmable Completion Builtins. - (line 28) -* compopt: Programmable Completion Builtins. - (line 217) -* continue: Bourne Shell Builtins. - (line 55) -* declare: Bash Builtins. (line 142) -* dirs: Directory Stack Builtins. - (line 7) -* disown: Job Control Builtins. - (line 83) -* echo: Bash Builtins. (line 221) -* enable: Bash Builtins. (line 273) -* eval: Bourne Shell Builtins. - (line 63) -* exec: Bourne Shell Builtins. - (line 70) -* exit: Bourne Shell Builtins. - (line 82) -* export: Bourne Shell Builtins. - (line 88) -* fc: Bash History Builtins. - (line 10) -* fg: Job Control Builtins. - (line 16) -* getopts: Bourne Shell Builtins. - (line 103) -* hash: Bourne Shell Builtins. - (line 145) -* help: Bash Builtins. (line 301) -* history: Bash History Builtins. - (line 39) -* jobs: Job Control Builtins. - (line 25) -* kill: Job Control Builtins. - (line 57) -* let: Bash Builtins. (line 321) -* local: Bash Builtins. (line 328) -* logout: Bash Builtins. (line 338) -* mapfile: Bash Builtins. (line 342) -* popd: Directory Stack Builtins. - (line 37) -* printf: Bash Builtins. (line 387) -* pushd: Directory Stack Builtins. - (line 58) -* pwd: Bourne Shell Builtins. - (line 163) -* read: Bash Builtins. (line 412) -* readarray: Bash Builtins. (line 484) -* readonly: Bourne Shell Builtins. - (line 172) -* return: Bourne Shell Builtins. - (line 188) -* set: The Set Builtin. (line 11) -* shift: Bourne Shell Builtins. - (line 201) -* shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 492) -* suspend: Job Control Builtins. - (line 94) -* test: Bourne Shell Builtins. - (line 213) -* times: Bourne Shell Builtins. - (line 281) -* trap: Bourne Shell Builtins. - (line 286) -* type: Bash Builtins. (line 496) -* typeset: Bash Builtins. (line 527) -* ulimit: Bash Builtins. (line 533) -* umask: Bourne Shell Builtins. - (line 332) -* unalias: Bash Builtins. (line 621) -* unset: Bourne Shell Builtins. - (line 349) -* wait: Job Control Builtins. - (line 73) - - -File: bash.info, Node: Reserved Word Index, Next: Variable Index, Prev: Builtin Index, Up: Indexes - -D.2 Index of Shell Reserved Words -================================= - -[index] -* Menu: - -* !: Pipelines. (line 9) -* [[: Conditional Constructs. - (line 117) -* ]]: Conditional Constructs. - (line 117) -* case: Conditional Constructs. - (line 28) -* do: Looping Constructs. (line 12) -* done: Looping Constructs. (line 12) -* elif: Conditional Constructs. - (line 7) -* else: Conditional Constructs. - (line 7) -* esac: Conditional Constructs. - (line 28) -* fi: Conditional Constructs. - (line 7) -* for: Looping Constructs. (line 29) -* function: Shell Functions. (line 13) -* if: Conditional Constructs. - (line 7) -* in: Conditional Constructs. - (line 28) -* select: Conditional Constructs. - (line 76) -* then: Conditional Constructs. - (line 7) -* time: Pipelines. (line 9) -* until: Looping Constructs. (line 12) -* while: Looping Constructs. (line 20) -* {: Command Grouping. (line 21) -* }: Command Grouping. (line 21) - - -File: bash.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Indexes - -D.3 Parameter and Variable Index -================================ - -[index] -* Menu: - -* !: Special Parameters. (line 46) -* #: Special Parameters. (line 30) -* $: Special Parameters. (line 42) -* *: Special Parameters. (line 9) -* -: Special Parameters. (line 37) -* 0: Special Parameters. (line 50) -* ?: Special Parameters. (line 33) -* @: Special Parameters. (line 19) -* _: Special Parameters. (line 59) -* auto_resume: Job Control Variables. - (line 6) -* BASH: Bash Variables. (line 13) -* BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 37) -* BASH_ARGV: Bash Variables. (line 47) -* BASH_CMDS: Bash Variables. (line 57) -* BASH_COMMAND: Bash Variables. (line 64) -* BASH_ENV: Bash Variables. (line 69) -* BASH_EXECUTION_STRING: Bash Variables. (line 75) -* BASH_LINENO: Bash Variables. (line 78) -* BASH_REMATCH: Bash Variables. (line 87) -* BASH_SOURCE: Bash Variables. (line 95) -* BASH_SUBSHELL: Bash Variables. (line 99) -* BASH_VERSINFO: Bash Variables. (line 103) -* BASH_VERSION: Bash Variables. (line 127) -* BASH_XTRACEFD: Bash Variables. (line 130) -* BASHOPTS: Bash Variables. (line 16) -* BASHPID: Bash Variables. (line 25) -* bell-style: Readline Init File Syntax. - (line 38) -* bind-tty-special-chars: Readline Init File Syntax. - (line 45) -* CDPATH: Bourne Shell Variables. - (line 9) -* COLUMNS: Bash Variables. (line 141) -* comment-begin: Readline Init File Syntax. - (line 50) -* COMP_CWORD: Bash Variables. (line 146) -* COMP_KEY: Bash Variables. (line 175) -* COMP_LINE: Bash Variables. (line 152) -* COMP_POINT: Bash Variables. (line 157) -* COMP_TYPE: Bash Variables. (line 165) -* COMP_WORDBREAKS: Bash Variables. (line 179) -* COMP_WORDS: Bash Variables. (line 185) -* completion-prefix-display-length: Readline Init File Syntax. - (line 60) -* completion-query-items: Readline Init File Syntax. - (line 67) -* COMPREPLY: Bash Variables. (line 193) -* convert-meta: Readline Init File Syntax. - (line 77) -* DIRSTACK: Bash Variables. (line 198) -* disable-completion: Readline Init File Syntax. - (line 83) -* editing-mode: Readline Init File Syntax. - (line 88) -* EMACS: Bash Variables. (line 208) -* enable-keypad: Readline Init File Syntax. - (line 99) -* EUID: Bash Variables. (line 213) -* expand-tilde: Readline Init File Syntax. - (line 104) -* FCEDIT: Bash Variables. (line 217) -* FIGNORE: Bash Variables. (line 221) -* FUNCNAME: Bash Variables. (line 227) -* GLOBIGNORE: Bash Variables. (line 236) -* GROUPS: Bash Variables. (line 242) -* histchars: Bash Variables. (line 248) -* HISTCMD: Bash Variables. (line 263) -* HISTCONTROL: Bash Variables. (line 268) -* HISTFILE: Bash Variables. (line 284) -* HISTFILESIZE: Bash Variables. (line 288) -* HISTIGNORE: Bash Variables. (line 296) -* history-preserve-point: Readline Init File Syntax. - (line 108) -* history-size: Readline Init File Syntax. - (line 114) -* HISTSIZE: Bash Variables. (line 315) -* HISTTIMEFORMAT: Bash Variables. (line 319) -* HOME: Bourne Shell Variables. - (line 13) -* horizontal-scroll-mode: Readline Init File Syntax. - (line 119) -* HOSTFILE: Bash Variables. (line 328) -* HOSTNAME: Bash Variables. (line 339) -* HOSTTYPE: Bash Variables. (line 342) -* IFS: Bourne Shell Variables. - (line 18) -* IGNOREEOF: Bash Variables. (line 345) -* input-meta: Readline Init File Syntax. - (line 126) -* INPUTRC: Bash Variables. (line 355) -* isearch-terminators: Readline Init File Syntax. - (line 133) -* keymap: Readline Init File Syntax. - (line 140) -* LANG: Bash Variables. (line 359) -* LC_ALL: Bash Variables. (line 363) -* LC_COLLATE: Bash Variables. (line 367) -* LC_CTYPE: Bash Variables. (line 374) -* LC_MESSAGES <1>: Locale Translation. (line 11) -* LC_MESSAGES: Bash Variables. (line 379) -* LC_NUMERIC: Bash Variables. (line 383) -* LINENO: Bash Variables. (line 387) -* LINES: Bash Variables. (line 391) -* MACHTYPE: Bash Variables. (line 396) -* MAIL: Bourne Shell Variables. - (line 22) -* MAILCHECK: Bash Variables. (line 400) -* MAILPATH: Bourne Shell Variables. - (line 27) -* mark-modified-lines: Readline Init File Syntax. - (line 153) -* mark-symlinked-directories: Readline Init File Syntax. - (line 158) -* match-hidden-files: Readline Init File Syntax. - (line 163) -* meta-flag: Readline Init File Syntax. - (line 126) -* OLDPWD: Bash Variables. (line 408) -* OPTARG: Bourne Shell Variables. - (line 34) -* OPTERR: Bash Variables. (line 411) -* OPTIND: Bourne Shell Variables. - (line 38) -* OSTYPE: Bash Variables. (line 415) -* output-meta: Readline Init File Syntax. - (line 170) -* page-completions: Readline Init File Syntax. - (line 175) -* PATH: Bourne Shell Variables. - (line 42) -* PIPESTATUS: Bash Variables. (line 418) -* POSIXLY_CORRECT: Bash Variables. (line 423) -* PPID: Bash Variables. (line 432) -* PROMPT_COMMAND: Bash Variables. (line 436) -* PROMPT_DIRTRIM: Bash Variables. (line 440) -* PS1: Bourne Shell Variables. - (line 48) -* PS2: Bourne Shell Variables. - (line 53) -* PS3: Bash Variables. (line 446) -* PS4: Bash Variables. (line 451) -* PWD: Bash Variables. (line 457) -* RANDOM: Bash Variables. (line 460) -* REPLY: Bash Variables. (line 465) -* revert-all-at-newline: Readline Init File Syntax. - (line 185) -* SECONDS: Bash Variables. (line 468) -* SHELL: Bash Variables. (line 474) -* SHELLOPTS: Bash Variables. (line 479) -* SHLVL: Bash Variables. (line 488) -* show-all-if-ambiguous: Readline Init File Syntax. - (line 191) -* show-all-if-unmodified: Readline Init File Syntax. - (line 197) -* skip-completed-text: Readline Init File Syntax. - (line 206) -* TEXTDOMAIN: Locale Translation. (line 11) -* TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 493) -* TMOUT: Bash Variables. (line 531) -* TMPDIR: Bash Variables. (line 543) -* UID: Bash Variables. (line 547) -* visible-stats: Readline Init File Syntax. - (line 219) - - -File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes - -D.4 Function Index -================== - -[index] -* Menu: - -* abort (C-g): Miscellaneous Commands. - (line 10) -* accept-line (Newline or Return): Commands For History. (line 6) -* backward-char (C-b): Commands For Moving. (line 15) -* backward-delete-char (Rubout): Commands For Text. (line 11) -* backward-kill-line (C-x Rubout): Commands For Killing. (line 9) -* backward-kill-word (M-): Commands For Killing. (line 24) -* backward-word (M-b): Commands For Moving. (line 22) -* beginning-of-history (M-<): Commands For History. (line 20) -* beginning-of-line (C-a): Commands For Moving. (line 6) -* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) -* capitalize-word (M-c): Commands For Text. (line 46) -* character-search (C-]): Miscellaneous Commands. - (line 41) -* character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) -* complete (): Commands For Completion. - (line 6) -* copy-backward-word (): Commands For Killing. (line 58) -* copy-forward-word (): Commands For Killing. (line 63) -* copy-region-as-kill (): Commands For Killing. (line 54) -* delete-char (C-d): Commands For Text. (line 6) -* delete-char-or-list (): Commands For Completion. - (line 39) -* delete-horizontal-space (): Commands For Killing. (line 46) -* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) -* do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. - (line 14) -* downcase-word (M-l): Commands For Text. (line 42) -* dump-functions (): Miscellaneous Commands. - (line 73) -* dump-macros (): Miscellaneous Commands. - (line 85) -* dump-variables (): Miscellaneous Commands. - (line 79) -* end-kbd-macro (C-x )): Keyboard Macros. (line 9) -* 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) -* forward-backward-delete-char (): Commands For Text. (line 15) -* 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) -* history-search-backward (): Commands For History. (line 51) -* history-search-forward (): Commands For History. (line 46) -* insert-comment (M-#): Miscellaneous Commands. - (line 60) -* insert-completions (M-*): Commands For Completion. - (line 18) -* kill-line (C-k): Commands For Killing. (line 6) -* kill-region (): Commands For Killing. (line 50) -* kill-whole-line (): Commands For Killing. (line 15) -* kill-word (M-d): Commands For Killing. (line 19) -* menu-complete (): Commands For Completion. - (line 22) -* menu-complete-backward (): Commands For Completion. - (line 34) -* next-history (C-n): Commands For History. (line 17) -* non-incremental-forward-search-history (M-n): Commands For History. - (line 41) -* non-incremental-reverse-search-history (M-p): Commands For History. - (line 36) -* overwrite-mode (): Commands For Text. (line 50) -* possible-completions (M-?): Commands For Completion. - (line 15) -* prefix-meta (): Miscellaneous Commands. - (line 18) -* previous-history (C-p): Commands For History. (line 13) -* quoted-insert (C-q or C-v): Commands For Text. (line 20) -* re-read-init-file (C-x C-r): Miscellaneous Commands. - (line 6) -* redraw-current-line (): Commands For Moving. (line 38) -* reverse-search-history (C-r): Commands For History. (line 27) -* revert-line (M-r): Miscellaneous Commands. - (line 25) -* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 24) -* set-mark (C-@): Miscellaneous Commands. - (line 32) -* skip-csi-sequence (): Miscellaneous Commands. - (line 51) -* start-kbd-macro (C-x (): Keyboard Macros. (line 6) -* transpose-chars (C-t): Commands For Text. (line 27) -* transpose-words (M-t): Commands For Text. (line 33) -* undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) -* universal-argument (): Numeric Arguments. (line 10) -* unix-filename-rubout (): Commands For Killing. (line 41) -* unix-line-discard (C-u): Commands For Killing. (line 12) -* unix-word-rubout (C-w): Commands For Killing. (line 37) -* upcase-word (M-u): Commands For Text. (line 38) -* yank (C-y): Commands For Killing. (line 68) -* yank-last-arg (M-. or M-_): Commands For History. (line 65) -* yank-nth-arg (M-C-y): Commands For History. (line 56) -* yank-pop (M-y): Commands For Killing. (line 71) - - -File: bash.info, Node: Concept Index, Prev: Function Index, Up: Indexes - -D.5 Concept Index -================= - -[index] -* Menu: - -* alias expansion: Aliases. (line 6) -* arithmetic evaluation: Shell Arithmetic. (line 6) -* arithmetic expansion: Arithmetic Expansion. - (line 6) -* arithmetic, shell: Shell Arithmetic. (line 6) -* arrays: Arrays. (line 6) -* background: Job Control Basics. (line 6) -* Bash configuration: Basic Installation. (line 6) -* Bash installation: Basic Installation. (line 6) -* Bourne shell: Basic Shell Features. - (line 6) -* brace expansion: Brace Expansion. (line 6) -* builtin: Definitions. (line 17) -* command editing: Readline Bare Essentials. - (line 6) -* command execution: Command Search and Execution. - (line 6) -* command expansion: Simple Command Expansion. - (line 6) -* command history: Bash History Facilities. - (line 6) -* command search: Command Search and Execution. - (line 6) -* command substitution: Command Substitution. - (line 6) -* command timing: Pipelines. (line 9) -* commands, compound: Compound Commands. (line 6) -* commands, conditional: Conditional Constructs. - (line 6) -* commands, grouping: Command Grouping. (line 6) -* commands, lists: Lists. (line 6) -* commands, looping: Looping Constructs. (line 6) -* commands, pipelines: Pipelines. (line 6) -* commands, shell: Shell Commands. (line 6) -* commands, simple: Simple Commands. (line 6) -* comments, shell: Comments. (line 6) -* completion builtins: Programmable Completion Builtins. - (line 6) -* configuration: Basic Installation. (line 6) -* control operator: Definitions. (line 21) -* coprocess: Coprocesses. (line 6) -* directory stack: The Directory Stack. (line 6) -* editing command lines: Readline Bare Essentials. - (line 6) -* environment: Environment. (line 6) -* evaluation, arithmetic: Shell Arithmetic. (line 6) -* event designators: Event Designators. (line 6) -* execution environment: Command Execution Environment. - (line 6) -* exit status <1>: Exit Status. (line 6) -* exit status: Definitions. (line 26) -* expansion: Shell Expansions. (line 6) -* expansion, arithmetic: Arithmetic Expansion. - (line 6) -* expansion, brace: Brace Expansion. (line 6) -* expansion, filename: Filename Expansion. (line 9) -* expansion, parameter: Shell Parameter Expansion. - (line 6) -* expansion, pathname: Filename Expansion. (line 9) -* expansion, tilde: Tilde Expansion. (line 6) -* expressions, arithmetic: Shell Arithmetic. (line 6) -* expressions, conditional: Bash Conditional Expressions. - (line 6) -* field: Definitions. (line 30) -* filename: Definitions. (line 35) -* filename expansion: Filename Expansion. (line 9) -* foreground: Job Control Basics. (line 6) -* functions, shell: Shell Functions. (line 6) -* history builtins: Bash History Builtins. - (line 6) -* history events: Event Designators. (line 7) -* history expansion: History Interaction. (line 6) -* history list: Bash History Facilities. - (line 6) -* History, how to use: Programmable Completion Builtins. - (line 237) -* identifier: Definitions. (line 51) -* initialization file, readline: Readline Init File. (line 6) -* installation: Basic Installation. (line 6) -* interaction, readline: Readline Interaction. - (line 6) -* interactive shell <1>: Interactive Shells. (line 6) -* interactive shell: Invoking Bash. (line 127) -* internationalization: Locale Translation. (line 6) -* job: Definitions. (line 38) -* job control <1>: Job Control Basics. (line 6) -* job control: Definitions. (line 42) -* kill ring: Readline Killing Commands. - (line 19) -* killing text: Readline Killing Commands. - (line 6) -* localization: Locale Translation. (line 6) -* login shell: Invoking Bash. (line 124) -* matching, pattern: Pattern Matching. (line 6) -* metacharacter: Definitions. (line 46) -* name: Definitions. (line 51) -* native languages: Locale Translation. (line 6) -* notation, readline: Readline Bare Essentials. - (line 6) -* operator, shell: Definitions. (line 57) -* parameter expansion: Shell Parameter Expansion. - (line 6) -* parameters: Shell Parameters. (line 6) -* parameters, positional: Positional Parameters. - (line 6) -* parameters, special: Special Parameters. (line 6) -* pathname expansion: Filename Expansion. (line 9) -* pattern matching: Pattern Matching. (line 6) -* pipeline: Pipelines. (line 6) -* POSIX: Definitions. (line 9) -* POSIX Mode: Bash POSIX Mode. (line 6) -* process group: Definitions. (line 62) -* process group ID: Definitions. (line 66) -* process substitution: Process Substitution. - (line 6) -* programmable completion: Programmable Completion. - (line 6) -* prompting: Printing a Prompt. (line 6) -* quoting: Quoting. (line 6) -* quoting, ANSI: ANSI-C Quoting. (line 6) -* Readline, how to use: Job Control Variables. - (line 24) -* redirection: Redirections. (line 6) -* reserved word: Definitions. (line 70) -* restricted shell: The Restricted Shell. - (line 6) -* return status: Definitions. (line 75) -* shell arithmetic: Shell Arithmetic. (line 6) -* shell function: Shell Functions. (line 6) -* shell script: Shell Scripts. (line 6) -* shell variable: Shell Parameters. (line 6) -* shell, interactive: Interactive Shells. (line 6) -* signal: Definitions. (line 78) -* signal handling: Signals. (line 6) -* special builtin <1>: Special Builtins. (line 6) -* special builtin: Definitions. (line 82) -* startup files: Bash Startup Files. (line 6) -* suspending jobs: Job Control Basics. (line 6) -* tilde expansion: Tilde Expansion. (line 6) -* token: Definitions. (line 86) -* translation, native languages: Locale Translation. (line 6) -* variable, shell: Shell Parameters. (line 6) -* variables, readline: Readline Init File Syntax. - (line 37) -* word: Definitions. (line 90) -* word splitting: Word Splitting. (line 6) -* yanking text: Readline Killing Commands. - (line 6) - - - -Tag Table: -Node: Top1348 -Node: Introduction3189 -Node: What is Bash?3417 -Node: What is a shell?4530 -Node: Definitions7070 -Node: Basic Shell Features9988 -Node: Shell Syntax11207 -Node: Shell Operation12237 -Node: Quoting13531 -Node: Escape Character14834 -Node: Single Quotes15319 -Node: Double Quotes15667 -Node: ANSI-C Quoting16792 -Node: Locale Translation17748 -Node: Comments18644 -Node: Shell Commands19262 -Node: Simple Commands20086 -Node: Pipelines20717 -Node: Lists22973 -Node: Compound Commands24702 -Node: Looping Constructs25506 -Node: Conditional Constructs27961 -Node: Command Grouping35967 -Node: Coprocesses37446 -Node: Shell Functions39090 -Node: Shell Parameters43644 -Node: Positional Parameters46060 -Node: Special Parameters46960 -Node: Shell Expansions49924 -Node: Brace Expansion51849 -Node: Tilde Expansion54604 -Node: Shell Parameter Expansion56955 -Node: Command Substitution65853 -Node: Arithmetic Expansion67186 -Node: Process Substitution68036 -Node: Word Splitting69086 -Node: Filename Expansion70709 -Node: Pattern Matching72848 -Node: Quote Removal76487 -Node: Redirections76782 -Node: Executing Commands85314 -Node: Simple Command Expansion85984 -Node: Command Search and Execution87914 -Node: Command Execution Environment90251 -Node: Environment93237 -Node: Exit Status94897 -Node: Signals96518 -Node: Shell Scripts98486 -Node: Shell Builtin Commands101004 -Node: Bourne Shell Builtins103032 -Node: Bash Builtins120408 -Node: Modifying Shell Behavior144707 -Node: The Set Builtin145052 -Node: The Shopt Builtin154576 -Node: Special Builtins165438 -Node: Shell Variables166417 -Node: Bourne Shell Variables166857 -Node: Bash Variables168838 -Node: Bash Features192324 -Node: Invoking Bash193207 -Node: Bash Startup Files199016 -Node: Interactive Shells204028 -Node: What is an Interactive Shell?204438 -Node: Is this Shell Interactive?205087 -Node: Interactive Shell Behavior205902 -Node: Bash Conditional Expressions209182 -Node: Shell Arithmetic212707 -Node: Aliases215453 -Node: Arrays218025 -Node: The Directory Stack221983 -Node: Directory Stack Builtins222697 -Node: Printing a Prompt225589 -Node: The Restricted Shell228341 -Node: Bash POSIX Mode230173 -Node: Job Control238026 -Node: Job Control Basics238486 -Node: Job Control Builtins243203 -Node: Job Control Variables247567 -Node: Command Line Editing248725 -Node: Introduction and Notation250292 -Node: Readline Interaction251914 -Node: Readline Bare Essentials253105 -Node: Readline Movement Commands254894 -Node: Readline Killing Commands255859 -Node: Readline Arguments257779 -Node: Searching258823 -Node: Readline Init File261009 -Node: Readline Init File Syntax262156 -Node: Conditional Init Constructs276369 -Node: Sample Init File278902 -Node: Bindable Readline Commands282019 -Node: Commands For Moving283226 -Node: Commands For History284370 -Node: Commands For Text287525 -Node: Commands For Killing290198 -Node: Numeric Arguments292649 -Node: Commands For Completion293788 -Node: Keyboard Macros297748 -Node: Miscellaneous Commands298319 -Node: Readline vi Mode304125 -Node: Programmable Completion305039 -Node: Programmable Completion Builtins312245 -Node: Using History Interactively321381 -Node: Bash History Facilities322065 -Node: Bash History Builtins324979 -Node: History Interaction328836 -Node: Event Designators331541 -Node: Word Designators332556 -Node: Modifiers334195 -Node: Installing Bash335599 -Node: Basic Installation336736 -Node: Compilers and Options339428 -Node: Compiling For Multiple Architectures340169 -Node: Installation Names341833 -Node: Specifying the System Type342651 -Node: Sharing Defaults343367 -Node: Operation Controls344040 -Node: Optional Features344998 -Node: Reporting Bugs354557 -Node: Major Differences From The Bourne Shell355758 -Node: GNU Free Documentation License372445 -Node: Indexes397641 -Node: Builtin Index398095 -Node: Reserved Word Index404922 -Node: Variable Index407370 -Node: Function Index419463 -Node: Concept Index426472 - -End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf deleted file mode 100644 index b51955e8e..000000000 Binary files a/doc/bash.pdf and /dev/null differ diff --git a/doc/bash.ps b/doc/bash.ps deleted file mode 100644 index 7c8dbab87..000000000 --- a/doc/bash.ps +++ /dev/null @@ -1,8845 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Fri Jan 11 16:34:25 2013 -%%DocumentNeededResources: font Times-Roman -%%+ font Times-Bold -%%+ font Times-Italic -%%+ font Courier -%%+ font Symbol -%%DocumentSuppliedResources: procset grops 1.19 2 -%%Pages: 75 -%%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () -%%Orientation: Portrait -%%EndComments -%%BeginDefaults -%%PageMedia: Default -%%EndDefaults -%%BeginProlog -%%BeginResource: procset grops 1.19 2 -%!PS-Adobe-3.0 Resource-ProcSet -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/Fr{ -setrgbcolor fill -}bind def -/setcmykcolor where{ -pop -/Fk{ -setcmykcolor fill -}bind def -}if -/Fg{ -setgray fill -}bind def -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/setcmykcolor where{ -pop -/Ck/setcmykcolor load def -}if -/Cg/setgray load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -/setpagedevice{}def -}bind def -/PEND{ -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%EndProlog -%%BeginSetup -%%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice -%%EndFeature -%%IncludeResource: font Times-Roman -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -%%IncludeResource: font Courier -%%IncludeResource: font Symbol -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron -/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE -/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 -(bash \255 GNU Bourne-Ag)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-2013 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 -(cutes commands read from the standard).15 F(input or from a \214le.)108 -194.4 Q F2(Bash)5 E F0(also incorporates useful features from the)2.5 E -/F3 10/Times-Italic@0 SF -.4(Ko)2.5 G(rn).4 E F0(and)2.5 E F3(C)2.5 E F0 -(shells \()2.5 E F2(ksh)A F0(and)2.5 E F2(csh)2.5 E F0(\).)A F2(Bash)108 -211.2 Q F0 .527(is intended to be a conformant implementation of the Sh\ -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 .61(All of the)108 252 R .61 -(single-character shell options documented in the description of the) -5.61 F F2(set)3.11 E F0 -.2(bu)3.11 G .61(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)39.86 F F23.381 E F0 .881(option is present, then command\ -s 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.706(.I).22 G 3.206(ft)-5.706 G .706 -(here are ar)-3.206 F .706(guments after the)-.18 F F3(command_string) -3.206 E F0 3.206(,t).22 G(he)-3.206 E 3.206(ya)-.15 G .706 -(re assigned to the posi-)-3.206 F(tional parameters, starting with)158 -316.8 Q F2($0)2.5 E F0(.)A F2108 328.8 Q F0(If the)41.52 E F2 -2.5 E F0(option is present, the shell is)2.5 E F3(inter)2.5 E -(active)-.15 E F0(.).18 E F2108 340.8 Q F0(Mak)41.52 E(e)-.1 E F2 -(bash)2.5 E F0(act as if it had been in)2.5 E -.2(vo)-.4 G -.1(ke).2 G -2.5(da).1 G 2.5(sal)-2.5 G(ogin shell \(see)-2.5 E/F4 9/Times-Bold@0 SF -(INV)2.5 E(OCA)-.405 E(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E F2 -108 352.8 Q F0(If the)39.86 E F22.5 E F0 -(option is present, the shell becomes)2.5 E F3 -.37(re)2.5 G(stricted) -.37 E F0(\(see)3.27 E F4(RESTRICTED SHELL)2.5 E F0(belo)2.25 E(w\).)-.25 -E F2108 364.8 Q F0 .602(If the)40.41 F F23.102 E F0 .602 -(option is present, or if no ar)3.102 F .602 -(guments remain after option processing, then commands)-.18 F .616 -(are read from the standard input.)158 376.8 R .617(This option allo) -5.617 F .617(ws the positional parameters to be set when)-.25 F(in)158 -388.8 Q -.2(vo)-.4 G(king an interacti).2 E .3 -.15(ve s)-.25 H(hell.) -.15 E F2108 400.8 Q F0 3.184(Al)37.08 G .684 -(ist of all double-quoted strings preceded by)-3.184 F F2($)3.184 E F0 -.684(is printed on the standard output.)3.184 F .683(These are)5.683 F -.458(the strings that are subject to language translation when the curr\ -ent locale is not)158 412.8 R F2(C)2.958 E F0(or)2.959 E F2(POSIX)2.959 -E F0(.)A(This implies the)158 424.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 436.8 Q F3(shopt_option)A F2(])A F3(shopt_option)158 -448.8 Q F0 1.097(is one of the shell options accepted by the)3.597 F F2 -(shopt)3.597 E F0 -.2(bu)3.597 G 1.097(iltin \(see).2 F F4 1.096 -(SHELL B)3.596 F(UIL)-.09 E(TIN)-.828 E(COMMANDS)158 460.8 Q F0(belo) -3.002 E 3.252(w\). If)-.25 F F3(shopt_option)3.253 E F0 .753 -(is present,)3.253 F F23.253 E F0 .753(sets the v)3.253 F .753 -(alue of that option;)-.25 F F2(+O)3.253 E F0(unsets)3.253 E 2.625 -(it. If)158 472.8 R F3(shopt_option)2.625 E F0 .125 -(is not supplied, the names and v)2.625 F .124 -(alues of the shell options accepted by)-.25 F F2(shopt)2.624 E F0 .505 -(are printed on the standard output.)158 484.8 R .505(If the in)5.505 F --.2(vo)-.4 G .505(cation option is).2 F F2(+O)3.005 E F0 3.005(,t)C .506 -(he output is displayed in a)-3.005 F -(format that may be reused as input.)158 496.8 Q F2108 508.8 Q F0 -(A)38.6 E F23.364 E F0 .864 -(signals the end of options and disables further option processing.) -3.364 F(An)5.863 E 3.363(ya)-.15 G -.18(rg)-3.363 G .863(uments after) -.18 F(the)158 520.8 Q F22.5 E F0 -(are treated as \214lenames and ar)2.5 E 2.5(guments. An)-.18 F(ar)2.5 E -(gument of)-.18 E F22.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to) -.25 E F22.5 E F0(.)A F2(Bash)108 537.6 Q F0 .303 -(also interprets a number of multi-character options.)2.803 F .304 -(These options must appear on the command line)5.303 F -(before the single-character options to be recognized.)108 549.6 Q F2 -108 566.4 Q(ugger)-.2 E F0 .475(Arrange for the deb)144 -578.4 R .475(ugger pro\214le to be e)-.2 F -.15(xe)-.15 G .475 -(cuted before the shell starts.).15 F -.45(Tu)5.474 G .474(rns on e).45 -F .474(xtended deb)-.15 F(ug-)-.2 E -(ging mode \(see the description of the)144 590.4 Q 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(\255\255dump\255po\255strings)108 602.4 Q F0(Equi) -144 614.4 Q -.25(va)-.25 G(lent to).25 E F22.5 E F0 2.5(,b)C -(ut the output is in the GNU)-2.7 E F3 -.1(ge)2.5 G(tte).1 E(xt)-.2 E F2 -(po)2.5 E F0(\(portable object\) \214le format.)2.5 E F2 -(\255\255dump\255strings)108 626.4 Q F0(Equi)144 638.4 Q -.25(va)-.25 G -(lent to).25 E F22.5 E F0(.)A F2(\255\255help)108 650.4 Q F0 -(Display a usage message on standard output and e)6.26 E -(xit successfully)-.15 E(.)-.65 E F2108 662.4 Q F3 -(\214le)2.5 E F2108 674.4 Q(c\214le)-.18 E F3(\214le)2.5 E F0 -(Ex)144 686.4 Q 1.598(ecute commands from)-.15 F F3(\214le)6.008 E F0 -1.598(instead of the standard personal initialization \214le)4.278 F F3 -(~/.bashr)3.599 E(c)-.37 E F0 1.599(if the)4.409 F(shell is interacti) -144 698.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.2)72 768 Q -(2013 January 8)144.29 E(1)198.45 E 0 Cg EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(\255\255login)108 84 Q F0(Equi)144 96 Q --.25(va)-.25 G(lent to).25 E F12.5 E F0(.)A F1(\255\255noediting) -108 112.8 Q F0(Do not use the GNU)144 124.8 Q F1 -.18(re)2.5 G(adline) -.18 E F0(library to read command lines when the shell is interacti)2.5 E --.15(ve)-.25 G(.).15 E F1(\255\255nopr)108 141.6 Q(o\214le)-.18 E F0 -.017(Do not read either the system-wide startup \214le)144 153.6 R/F2 10 -/Times-Italic@0 SF(/etc/pr)4.183 E(o\214le)-.45 E F0 .017(or an)4.183 F -2.517(yo)-.15 G 2.517(ft)-2.517 G .017 -(he personal initialization \214les)-2.517 F F2(~/.bash_pr)144 165.6 Q -(o\214le)-.45 E F0(,).18 E F2(~/.bash_lo)2.697 E(gin)-.1 E F0 2.697(,o) -.24 G(r)-2.697 E F2(~/.pr)2.698 E(o\214le)-.45 E F0 5.198(.B).18 G 2.698 -(yd)-5.198 G(ef)-2.698 E(ault,)-.1 E F1(bash)2.698 E F0 .198 -(reads these \214les when it is in)2.698 F -.2(vo)-.4 G -.1(ke).2 G -2.698(da).1 G(s)-2.698 E 2.5(al)144 177.6 S(ogin shell \(see)-2.5 E/F3 9 -/Times-Bold@0 SF(INV)2.5 E(OCA)-.405 E(TION)-.855 E F0(belo)2.25 E(w\).) --.25 E F1108 194.4 Q(c)-.18 E F0 1.228(Do not read and e) -5.34 F -.15(xe)-.15 G 1.228(cute the personal initialization \214le).15 -F F2(~/.bashr)3.228 E(c)-.37 E F0 1.228(if the shell is interacti)4.038 -F -.15(ve)-.25 G 6.228(.T).15 G(his)-6.228 E(option is on by def)144 -206.4 Q(ault if the shell is in)-.1 E -.2(vo)-.4 G -.1(ke).2 G 2.5(da).1 -G(s)-2.5 E F1(sh)2.5 E F0(.)A F1(\255\255posix)108 223.2 Q F0 1.782 -(Change the beha)144 235.2 R 1.782(vior of)-.2 F F1(bash)4.282 E F0 -1.782(where the def)4.282 F 1.782(ault operation dif)-.1 F 1.782 -(fers from the POSIX standard to)-.25 F(match the standard \()144 247.2 -Q F2(posix mode)A F0(\).)A F1108 264 Q(estricted)-.18 E F0 -(The shell becomes restricted \(see)144 276 Q F3(RESTRICTED SHELL)2.5 E -F0(belo)2.25 E(w\).)-.25 E F1108 292.8 Q(erbose)-.1 E F0(Equi) -144 304.8 Q -.25(va)-.25 G(lent to).25 E F15 E F0(.)A F1 -108 321.6 Q(ersion)-.1 E F0(Sho)144 333.6 Q 2.5(wv)-.25 G -(ersion information for this instance of)-2.65 E F1(bash)2.5 E F0 -(on the standard output and e)2.5 E(xit successfully)-.15 E(.)-.65 E/F4 -10.95/Times-Bold@0 SF(ARGUMENTS)72 350.4 Q F0 .017(If ar)108 362.4 R -.016(guments remain after option processing, and neither the)-.18 F F1 -2.516 E F0 .016(nor the)2.516 F F12.516 E F0 .016 -(option has been supplied, the \214rst)2.516 F(ar)108 374.4 Q .041(gume\ -nt is assumed to be the name of a \214le containing shell commands.)-.18 -F(If)5.041 E F1(bash)2.541 E F0 .041(is in)2.541 F -.2(vo)-.4 G -.1(ke) -.2 G 2.541(di).1 G 2.541(nt)-2.541 G .042(his f)-2.541 F(ashion,)-.1 E -F1($0)108 386.4 Q F0 .936(is set to the name of the \214le, and the pos\ -itional parameters are set to the remaining ar)3.436 F(guments.)-.18 E -F1(Bash)5.935 E F0 .233(reads and e)108 398.4 R -.15(xe)-.15 G .233 -(cutes commands from this \214le, then e).15 F(xits.)-.15 E F1(Bash) -5.234 E F0 1.334 -.55('s e)D .234(xit status is the e).4 F .234 -(xit status of the last com-)-.15 F .349(mand e)108 410.4 R -.15(xe)-.15 -G .349(cuted in the script.).15 F .349(If no commands are e)5.349 F -.15 -(xe)-.15 G .349(cuted, the e).15 F .348(xit status is 0.)-.15 F .348 -(An attempt is \214rst made to)5.348 F .253 -(open the \214le in the current directory)108 422.4 R 2.753(,a)-.65 G -.254 -(nd, if no \214le is found, then the shell searches the directories in) --2.753 F F3 -.666(PA)2.754 G(TH)-.189 E F0(for the script.)108 434.4 Q -F4(INV)72 451.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 463.2 Q F2(lo)2.5 E -(gin shell)-.1 E F0(is one whose \214rst character of ar)2.5 E -(gument zero is a)-.18 E F12.5 E F0 2.5(,o)C 2.5(ro)-2.5 G -(ne started with the)-2.5 E F1(\255\255login)2.5 E F0(option.)2.5 E(An) -108 480 Q F2(inter)2.815 E(active)-.15 E F0 .315 -(shell is one started without non-option ar)2.815 F .315 -(guments and without the)-.18 F F12.814 E F0 .314 -(option whose standard)2.814 F 1.5 -(input and error are both connected to terminals \(as determined by)108 -492 R F2(isatty)4 E F0 1.5(\(3\)\), or one started with the).32 F F1 -4 E F0(option.)108 504 Q F3(PS1)5.29 E F0 .29(is set and)2.54 F F1 -<24ad>2.79 E F0(includes)2.79 E F1(i)2.79 E F0(if)2.79 E F1(bash)2.79 E -F0 .289(is interacti)2.789 F -.15(ve)-.25 G 2.789(,a).15 G(llo)-2.789 E -.289(wing a shell script or a startup \214le to test this)-.25 F(state.) -108 516 Q .032(The follo)108 532.8 R .032(wing paragraphs describe ho) --.25 F(w)-.25 E F1(bash)2.532 E F0 -.15(exe)2.532 G .032 -(cutes its startup \214les.).15 F .032(If an)5.032 F 2.532(yo)-.15 G -2.532(ft)-2.532 G .032(he \214les e)-2.532 F .033(xist b)-.15 F .033 -(ut cannot be)-.2 F(read,)108 544.8 Q F1(bash)2.6 E F0 .1 -(reports an error)2.6 F 5.1(.T)-.55 G .1(ildes are e)-5.45 F .099 -(xpanded in \214lenames as described belo)-.15 F 2.599(wu)-.25 G(nder) --2.599 E F1 -.18(Ti)2.599 G .099(lde Expansion).18 F F0(in)2.599 E(the) -108 556.8 Q F3(EXP)2.5 E(ANSION)-.666 E F0(section.)2.25 E(When)108 -573.6 Q F1(bash)2.895 E F0 .395(is in)2.895 F -.2(vo)-.4 G -.1(ke).2 G -2.895(da).1 G 2.895(sa)-2.895 G 2.895(ni)-2.895 G(nteracti)-2.895 E .695 --.15(ve l)-.25 H .396(ogin shell, or as a non-interacti).15 F .696 -.15 -(ve s)-.25 H .396(hell with the).15 F F1(\255\255login)2.896 E F0 .396 -(option, it)2.896 F 1.334(\214rst reads and e)108 585.6 R -.15(xe)-.15 G -1.334(cutes commands from the \214le).15 F F2(/etc/pr)3.834 E(o\214le) --.45 E F0 3.834(,i)C 3.833(ft)-3.834 G 1.333(hat \214le e)-3.833 F 3.833 -(xists. After)-.15 F 1.333(reading that \214le, it)3.833 F .248 -(looks for)108 597.6 R F2(~/.bash_pr)2.748 E(o\214le)-.45 E F0(,)A F2 -(~/.bash_lo)2.748 E(gin)-.1 E F0 2.748(,a)C(nd)-2.748 E F2(~/.pr)2.748 E -(o\214le)-.45 E F0 2.748(,i)C 2.749(nt)-2.748 G .249(hat order)-2.749 F -2.749(,a)-.4 G .249(nd reads and e)-2.749 F -.15(xe)-.15 G .249 -(cutes commands from).15 F .797(the \214rst one that e)108 609.6 R .797 -(xists and is readable.)-.15 F(The)5.796 E F1(\255\255nopr)3.296 E -(o\214le)-.18 E F0 .796(option may be used when the shell is started to) -3.296 F(inhibit this beha)108 621.6 Q(vior)-.2 E(.)-.55 E -(When a login shell e)108 638.4 Q(xits,)-.15 E F1(bash)2.5 E F0 -(reads and e)2.5 E -.15(xe)-.15 G(cutes commands from the \214le).15 E -F2(~/.bash_lo)2.5 E(gout)-.1 E F0 2.5(,i)C 2.5(fi)-2.5 G 2.5(te)-2.5 G -(xists.)-2.65 E 1.697(When an interacti)108 655.2 R 1.997 -.15(ve s)-.25 -H 1.698(hell that is not a login shell is started,).15 F F1(bash)4.198 E -F0 1.698(reads and e)4.198 F -.15(xe)-.15 G 1.698(cutes commands from) -.15 F F2(~/.bashr)108 667.2 Q(c)-.37 E F0 2.536(,i)C 2.536(ft)-2.536 G -.036(hat \214le e)-2.536 F 2.536(xists. This)-.15 F .036 -(may be inhibited by using the)2.536 F F12.535 E(c)-.18 E F0 -2.535(option. The)2.535 F F12.535 E(c\214le)-.18 E F2(\214le) -2.535 E F0 .035(option will)2.535 F(force)108 679.2 Q F1(bash)2.5 E F0 -(to read and e)2.5 E -.15(xe)-.15 G(cute commands from).15 E F2(\214le) -2.5 E F0(instead of)2.5 E F2(~/.bashr)2.5 E(c)-.37 E F0(.)A(When)108 696 -Q F1(bash)5.305 E F0 2.805(is started non-interacti)5.305 F -.15(ve)-.25 -G(ly).15 E 5.305(,t)-.65 G 5.305(or)-5.305 G 2.806 -(un a shell script, for e)-5.305 F 2.806(xample, it looks for the v)-.15 -F(ariable)-.25 E F3 -.27(BA)108 708 S(SH_ENV).27 E F0 1.011(in the en) -3.261 F 1.011(vironment, e)-.4 F 1.01(xpands its v)-.15 F 1.01 -(alue if it appears there, and uses the e)-.25 F 1.01(xpanded v)-.15 F -1.01(alue as the)-.25 F(name of a \214le to read and e)108 720 Q -.15 -(xe)-.15 G(cute.).15 E F1(Bash)5 E F0(beha)2.5 E -.15(ve)-.2 G 2.5(sa) -.15 G 2.5(si)-2.5 G 2.5(ft)-2.5 G(he follo)-2.5 E(wing command were e) --.25 E -.15(xe)-.15 G(cuted:).15 E(GNU Bash 4.2)72 768 Q(2013 January 8) -144.29 E(2)198.45 E 0 Cg EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Courier@0 SF -(if [ \255n "$BASH_ENV" ]; then . "$BASH_ENV"; fi)144 84 Q F0 -.2(bu)108 -102 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E/F2 9/Times-Bold@0 SF --.666(PA)2.5 G(TH)-.189 E F0 -.25(va)2.25 G -(riable is not used to search for the \214lename.).25 E(If)108 118.8 Q -/F3 10/Times-Bold@0 SF(bash)3.417 E F0 .917(is in)3.417 F -.2(vo)-.4 G --.1(ke).2 G 3.417(dw).1 G .917(ith the name)-3.417 F F3(sh)3.417 E F0 -3.417(,i)C 3.417(tt)-3.417 G .917(ries to mimic the startup beha)-3.417 -F .917(vior of historical v)-.2 F .917(ersions of)-.15 F F3(sh)3.417 E -F0(as)3.417 E .145 -(closely as possible, while conforming to the POSIX standard as well.) -108 130.8 R .145(When in)5.145 F -.2(vo)-.4 G -.1(ke).2 G 2.645(da).1 G -2.645(sa)-2.645 G 2.645(ni)-2.645 G(nteracti)-2.645 E .445 -.15(ve l) --.25 H(ogin).15 E 1.263(shell, or a non-interacti)108 142.8 R 1.563 -.15 -(ve s)-.25 H 1.264(hell with the).15 F F3(\255\255login)3.764 E F0 1.264 -(option, it \214rst attempts to read and e)3.764 F -.15(xe)-.15 G 1.264 -(cute commands).15 F(from)108 154.8 Q/F4 10/Times-Italic@0 SF(/etc/pr) -4.143 E(o\214le)-.45 E F0(and)3.173 E F4(~/.pr)2.993 E(o\214le)-.45 E F0 -2.993(,i).18 G 2.993(nt)-2.993 G .493(hat order)-2.993 F 5.493(.T)-.55 G -(he)-5.493 E F3(\255\255nopr)2.993 E(o\214le)-.18 E F0 .492 -(option may be used to inhibit this beha)2.992 F(vior)-.2 E(.)-.55 E -.417(When in)108 166.8 R -.2(vo)-.4 G -.1(ke).2 G 2.917(da).1 G 2.917 -(sa)-2.917 G 2.918(ni)-2.917 G(nteracti)-2.918 E .718 -.15(ve s)-.25 H -.418(hell with the name).15 F F3(sh)2.918 E F0(,)A F3(bash)2.918 E F0 -.418(looks for the v)2.918 F(ariable)-.25 E F2(ENV)2.918 E/F5 9 -/Times-Roman@0 SF(,)A F0 -.15(ex)2.668 G .418(pands its v).15 F(alue) --.25 E .171(if it is de\214ned, and uses the e)108 178.8 R .171 -(xpanded v)-.15 F .171(alue as the name of a \214le to read and e)-.25 F --.15(xe)-.15 G 2.671(cute. Since).15 F 2.67(as)2.671 G .17(hell in)-2.67 -F -.2(vo)-.4 G -.1(ke).2 G(d).1 E(as)108 190.8 Q F3(sh)3.08 E F0 .58 -(does not attempt to read and e)3.08 F -.15(xe)-.15 G .581 -(cute commands from an).15 F 3.081(yo)-.15 G .581 -(ther startup \214les, the)-3.081 F F33.081 E(c\214le)-.18 E F0 -.581(option has)3.081 F .183(no ef)108 202.8 R 2.683(fect. A)-.25 F -(non-interacti)2.683 E .483 -.15(ve s)-.25 H .182(hell in).15 F -.2(vo) --.4 G -.1(ke).2 G 2.682(dw).1 G .182(ith the name)-2.682 F F3(sh)2.682 E -F0 .182(does not attempt to read an)2.682 F 2.682(yo)-.15 G .182 -(ther startup \214les.)-2.682 F(When in)108 214.8 Q -.2(vo)-.4 G -.1(ke) -.2 G 2.5(da).1 G(s)-2.5 E F3(sh)2.5 E F0(,)A F3(bash)2.5 E F0(enters)2.5 -E F4(posix)3.75 E F0(mode after the startup \214les are read.)3.03 E -(When)108 231.6 Q F3(bash)2.726 E F0 .226(is started in)2.726 F F4 -(posix)3.976 E F0 .226(mode, as with the)3.256 F F3(\255\255posix)2.726 -E F0 .226(command line option, it follo)2.726 F .227(ws the POSIX stan-) --.25 F .342(dard for startup \214les.)108 243.6 R .341 -(In this mode, interacti)5.342 F .641 -.15(ve s)-.25 H .341(hells e).15 -F .341(xpand the)-.15 F F2(ENV)2.841 E F0 -.25(va)2.591 G .341 -(riable and commands are read and).25 F -.15(exe)108 255.6 S -(cuted from the \214le whose name is the e).15 E(xpanded v)-.15 E 2.5 -(alue. No)-.25 F(other startup \214les are read.)2.5 E F3(Bash)108 272.4 -Q F0 .224(attempts to determine when it is being run with its standard \ -input connected to a netw)2.723 F .224(ork connection,)-.1 F .025 -(as when e)108 284.4 R -.15(xe)-.15 G .025 -(cuted by the remote shell daemon, usually).15 F F4 -.1(rs)2.525 G(hd).1 -E F0 2.525(,o)C 2.525(rt)-2.525 G .025(he secure shell daemon)-2.525 F -F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F3(bash)2.525 E F0(deter)2.525 -E(-)-.2 E .133(mines it is being run in this f)108 296.4 R .133 -(ashion, it reads and e)-.1 F -.15(xe)-.15 G .134(cutes commands from) -.15 F F4(~/.bashr)2.634 E(c)-.37 E F0 2.634(,i)C 2.634(ft)-2.634 G .134 -(hat \214le e)-2.634 F .134(xists and is)-.15 F 2.869(readable. It)108 -308.4 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G -2.869(da).1 G(s)-2.869 E F3(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F3 -2.869 E(c)-.18 E F0 .369 -(option may be used to inhibit this beha)2.869 F(vior)-.2 E 2.869(,a)-.4 -G(nd)-2.869 E(the)108 320.4 Q F32.606 E(c\214le)-.18 E F0 .106 -(option may be used to force another \214le to be read, b)2.606 F(ut)-.2 -E F4 -.1(rs)2.606 G(hd).1 E F0 .106(does not generally in)2.606 F -.2 -(vo)-.4 G .306 -.1(ke t).2 H .106(he shell).1 F -(with those options or allo)108 332.4 Q 2.5(wt)-.25 G -(hem to be speci\214ed.)-2.5 E 1.208 -(If the shell is started with the ef)108 349.2 R(fecti)-.25 E 1.508 -.15 -(ve u)-.25 H 1.207 -(ser \(group\) id not equal to the real user \(group\) id, and the).15 F -F33.707 E F0 .536(option is not supplied, no startup \214les are \ -read, shell functions are not inherited from the en)108 361.2 R .536 -(vironment, the)-.4 F F2(SHELLOPTS)108 373.2 Q F5(,)A F2 -.27(BA)2.96 G -(SHOPTS).27 E F5(,)A F2(CDP)2.96 E -.855(AT)-.666 G(H).855 E F5(,)A F0 -(and)2.96 E F2(GLOBIGNORE)3.209 E F0 -.25(va)2.959 G .709 -(riables, if the).25 F 3.209(ya)-.15 G .709(ppear in the en)-3.209 F -.709(vironment, are)-.4 F .904(ignored, and the ef)108 385.2 R(fecti) --.25 E 1.204 -.15(ve u)-.25 H .904(ser id is set to the real user id.) -.15 F .904(If the)5.904 F F33.404 E F0 .905 -(option is supplied at in)3.405 F -.2(vo)-.4 G .905(cation, the).2 F -(startup beha)108 397.2 Q(vior is the same, b)-.2 E(ut the ef)-.2 E -(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id is not reset.).15 E/F6 10.95 -/Times-Bold@0 SF(DEFINITIONS)72 414 Q F0(The follo)108 426 Q -(wing de\214nitions are used throughout the rest of this document.)-.25 -E F3(blank)108 438 Q F0 2.5(As)11.54 G(pace or tab)-2.5 E(.)-.4 E F3 -.1 -(wo)108 450 S(rd).1 E F0 2.5(As)13.88 G -(equence of characters considered as a single unit by the shell.)-2.5 E -(Also kno)5 E(wn as a)-.25 E F3(tok)2.5 E(en)-.1 E F0(.)A F3(name)108 -462 Q F0(A)12.67 E F4(wor)3.006 E(d)-.37 E F0 .165 -(consisting only of alphanumeric characters and underscores, and be) -3.436 F .165(ginning with an alpha-)-.15 F -(betic character or an underscore.)144 474 Q(Also referred to as an)5 E -F3(identi\214er)2.5 E F0(.)A F3(metacharacter)108 486 Q F0 2.5(Ac)144 -498 S(haracter that, when unquoted, separates w)-2.5 E 2.5(ords. One)-.1 -F(of the follo)2.5 E(wing:)-.25 E F3 5(|&;\(\)<>s)144 510 S 2.5 -(pace tab)-5 F(contr)108 522 Q(ol operator)-.18 E F0(A)144 534 Q F4(tok) -2.5 E(en)-.1 E F0(that performs a control function.)2.5 E -(It is one of the follo)5 E(wing symbols:)-.25 E F3 2.5 -(|| & && ; ;; \( \) | |&)144 546 R()10 E F6(RESER)72 562.8 Q -(VED W)-.602 E(ORDS)-.11 E F4 .306(Reserved wor)108 574.8 R(ds)-.37 E F0 -.306(are w)2.806 F .306(ords that ha)-.1 F .606 -.15(ve a s)-.2 H .306 -(pecial meaning to the shell.).15 F .307(The follo)5.307 F .307(wing w) --.25 F .307(ords are recognized as)-.1 F(reserv)108 586.8 Q .227 -(ed when unquoted and either the \214rst w)-.15 F .227 -(ord of a simple command \(see)-.1 F F2 .226(SHELL GRAMMAR)2.727 F F0 -(belo)2.476 E .226(w\) or)-.25 F(the third w)108 598.8 Q(ord of a)-.1 E -F3(case)2.5 E F0(or)2.5 E F3 -.25(fo)2.5 G(r).25 E F0(command:)2.5 E F3 -11.295(!c)144 615.6 S 8.795(ase copr)-11.295 F 8.795 -(oc do done elif else esac \214 f)-.18 F 8.795 -(or function if in select then)-.25 F 7.5(until while { } time [[ ]])144 -627.6 R F6(SHELL GRAMMAR)72 644.4 Q F3(Simple Commands)87 656.4 Q F0(A) -108 668.4 Q F4 .389(simple command)2.889 F F0 .389 -(is a sequence of optional v)2.889 F .388(ariable assignments follo)-.25 -F .388(wed by)-.25 F F3(blank)2.888 E F0 .388(-separated w)B .388 -(ords and)-.1 F .815(redirections, and terminated by a)108 680.4 R F4 -(contr)3.315 E .815(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815 -(he \214rst w)-5.815 F .816(ord speci\214es the command to be e)-.1 F --.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 692.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 .176(The return v)108 709.2 R .176(alue of a)-.25 F F4 .176 -(simple command)2.676 F F0 .175(is its e)2.676 F .175 -(xit status, or 128+)-.15 F F4(n)A F0 .175 -(if the command is terminated by signal)3.508 F F4(n)2.675 E F0(.).24 E -(GNU Bash 4.2)72 768 Q(2013 January 8)144.29 E(3)198.45 E 0 Cg EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Pipelines)87 84 Q F0(A)108 96 Q/F2 10 -/Times-Italic@0 SF(pipeline)2.996 E F0 .496(is a sequence of one or mor\ -e commands separated by one of the control operators)2.996 F F1(|)2.996 -E F0(or)2.996 E F1(|&)2.996 E F0 5.496(.T)C(he)-5.496 E -(format for a pipeline is:)108 108 Q([)144 124.8 Q F1(time)A F0([)2.5 E -F1A F0(]] [ ! ])A F2(command)2.5 E F0 2.5([[)2.5 G F1(|)-2.5 E/F3 -10/Symbol SFA F1(|&)A F0(])A F2(command2)2.5 E F0(... ])2.5 E .244 -(The standard output of)108 141.6 R F2(command)2.944 E F0 .243 -(is connected via a pipe to the standard input of)3.514 F F2(command2) -2.743 E F0 5.243(.T).02 G .243(his connec-)-5.243 F .642 -(tion is performed before an)108 153.6 R 3.142(yr)-.15 G .642 -(edirections speci\214ed by the command \(see)-3.142 F/F4 9/Times-Bold@0 -SF(REDIRECTION)3.143 E F0(belo)2.893 E 3.143(w\). If)-.25 F F1(|&)3.143 -E F0(is)3.143 E(used,)108 165.6 Q F2(command)3.216 E F0 1.816 -.55('s s) -D .715(tandard output and standard error are connected to).55 F F2 -(command2)3.215 E F0 1.815 -.55('s s)D .715(tandard input through).55 F -.734(the pipe; it is shorthand for)108 177.6 R F1 .734(2>&1 |)3.234 F F0 -5.734(.T)C .734 -(his implicit redirection of the standard error is performed after an) --5.734 F(y)-.15 E(redirections speci\214ed by the command.)108 189.6 Q -.48(The return status of a pipeline is the e)108 206.4 R .48 -(xit status of the last command, unless the)-.15 F F1(pipefail)2.98 E F0 -.48(option is enabled.)2.98 F(If)108 218.4 Q F1(pipefail)2.686 E F0 .186 -(is enabled, the pipeline')2.686 F 2.686(sr)-.55 G .186 -(eturn status is the v)-2.686 F .187 -(alue of the last \(rightmost\) command to e)-.25 F .187(xit with a)-.15 -F .611(non-zero status, or zero if all commands e)108 230.4 R .611 -(xit successfully)-.15 F 5.611(.I)-.65 G 3.111(ft)-5.611 G .61 -(he reserv)-3.111 F .61(ed w)-.15 F(ord)-.1 E F1(!)3.11 E F0 .61 -(precedes a pipeline, the)5.61 F -.15(ex)108 242.4 S .55 -(it status of that pipeline is the logical ne).15 F -.05(ga)-.15 G .55 -(tion of the e).05 F .55(xit status as described abo)-.15 F -.15(ve)-.15 -G 5.55(.T).15 G .55(he shell w)-5.55 F .55(aits for)-.1 F -(all commands in the pipeline to terminate before returning a v)108 -254.4 Q(alue.)-.25 E .299(If the)108 271.2 R F1(time)2.799 E F0(reserv) -2.799 E .299(ed w)-.15 F .299(ord precedes a pipeline, the elapsed as w\ -ell as user and system time consumed by its)-.1 F -.15(exe)108 283.2 S -.139(cution are reported when the pipeline terminates.).15 F(The)5.139 E -F12.639 E F0 .14(option changes the output format to that spec-) -2.639 F .303(i\214ed by POSIX.)108 295.2 R .303(When the shell is in) -5.303 F F2 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303 -(oes not recognize)-2.803 F F1(time)2.803 E F0 .303(as a reserv)2.803 F -.303(ed w)-.15 F .302(ord if the ne)-.1 F(xt)-.15 E(tok)108 307.2 Q .735 -(en be)-.1 F .736(gins with a `-'.)-.15 F(The)5.736 E F4(TIMEFORMA)3.236 -E(T)-.855 E F0 -.25(va)2.986 G .736 -(riable may be set to a format string that speci\214es ho).25 F 3.236 -(wt)-.25 G(he)-3.236 E 2.226 -(timing information should be displayed; see the description of)108 -319.2 R F4(TIMEFORMA)4.725 E(T)-.855 E F0(under)4.475 E F1 2.225 -(Shell V)4.725 F(ariables)-.92 E F0(belo)108 331.2 Q -.65(w.)-.25 G .85 -(When the shell is in)108 348 R F2 .85(posix mode)3.35 F F0(,)A F1(time) -3.35 E F0 .85(may be follo)3.35 F .85(wed by a ne)-.25 F 3.35(wline. In) --.25 F .85(this case, the shell displays the)3.35 F 1.074 -(total user and system time consumed by the shell and its children.)108 -360 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 372 Q -(Each command in a pipeline is e)108 388.8 Q -.15(xe)-.15 G -(cuted as a separate process \(i.e., in a subshell\).).15 E F1(Lists)87 -405.6 Q F0(A)108 417.6 Q F2(list)2.849 E F0 .349(is a sequence of one o\ -r more pipelines separated by one of the operators)2.849 F F1(;)2.85 E -F0(,)A F1(&)2.85 E F0(,)A F1(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F1(||)2.85 -E F0 2.85(,a)C .35(nd option-)-2.85 F(ally terminated by one of)108 -429.6 Q F1(;)2.5 E F0(,)A F1(&)2.5 E F0 2.5(,o)C(r)-2.5 E F1() -2.5 E F0(.)A .961(Of these list operators,)108 446.4 R F1(&&)3.461 E F0 -(and)3.461 E F1(||)3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961 -(qual precedence, follo).15 F .96(wed by)-.25 F F1(;)3.46 E F0(and)3.46 -E F1(&)3.46 E F0 3.46(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96 -(qual prece-).15 F(dence.)108 458.4 Q 2.5(As)108 475.2 S -(equence of one or more ne)-2.5 E(wlines may appear in a)-.25 E F2(list) -2.5 E F0(instead of a semicolon to delimit commands.)2.5 E .029 -(If a command is terminated by the control operator)108 492 R F1(&)2.529 -E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029 -(cutes the command in the).15 F F2(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0 -(in)2.529 E 2.876(as)108 504 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 516 R F1(;)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 528 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 on\ -e of more pipelines separated by the)108 544.8 R F1(&&)3.436 E F0(and) -3.436 E F1(||)3.436 E F0 .936(control operators,)3.436 F(respecti)108 -556.8 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 F2(command1)144 573.6 Q F1(&&) -2.5 E F2(command2)2.5 E(command2)108.2 590.4 Q F0(is e)2.52 E -.15(xe) --.15 G(cuted if, and only if,).15 E F2(command1)2.7 E F0(returns an e) -2.5 E(xit status of zero.)-.15 E(An OR list has the form)108 607.2 Q F2 -(command1)144 624 Q F1(||)2.5 E F2(command2)2.5 E(command2)108.2 645.6 Q -F0 .728(is e)3.248 F -.15(xe)-.15 G .729(cuted if and only if).15 F F2 -(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 -657.6 Q(xit status of the last command e)-.15 E -.15(xe)-.15 G -(cuted in the list.).15 E F1(Compound Commands)87 674.4 Q F0(A)108 686.4 -Q F2 1.054(compound command)3.554 F F0 1.054(is one of the follo)3.554 F -3.553(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 -1.053(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be) --3.553 F 1.026(separated from the rest of the command by one or more ne) -108 698.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 710.4 Q(GNU Bash 4.2) -72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(\()108 84 Q/F1 10/Times-Italic@0 SF(list)A F0(\))A F1(list)17.11 -E 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(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 -(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)3.89 E 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 -(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 -(xpansion, command substi-)-.15 F 1.081 -(tution, process substitution, and quote remo)144 302.4 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\ -e used, the string to the right of the operator is considered a pat-) -3.002 F .025(tern and matched according to the rules described belo)144 -362.4 R 2.524(wu)-.25 G(nder)-2.524 E F3 -.1(Pa)2.524 G(tter).1 E 2.524 -(nM)-.15 G(atching)-2.524 E F0 5.024(.T)C(he)-5.024 E F3(=)2.524 E F0 -(operator)2.524 E .824(is equi)144 374.4 R -.25(va)-.25 G .824(lent to) -.25 F F3(==)3.324 E F0 5.824(.I)C 3.324(ft)-5.824 G .824 -(he shell option)-3.324 F F3(nocasematch)3.324 E F0 .824 -(is enabled, the match is performed without)3.324 F(re)144 386.4 Q -.05 -(ga)-.15 G .133(rd to the case of alphabetic characters.).05 F .132 -(The return v)5.132 F .132(alue is 0 if the string matches \()-.25 F F3 -(==)A F0 2.632(\)o)C 2.632(rd)-2.632 G(oes)-2.632 E .94(not match \()144 -398.4 R F3(!=)A F0 3.44(\)t)C .94(he pattern, and 1 otherwise.)-3.44 F -(An)5.94 E 3.44(yp)-.15 G .94 -(art of the pattern may be quoted to force the)-3.44 F -(quoted portion to be matched as a string.)144 410.4 Q .243 -(An additional binary operator)144 428.4 R(,)-.4 E F3(=~)2.743 E F0 -2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243 -(ilable, with the same precedence as).25 F F3(==)2.743 E F0(and)2.743 E -F3(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F 1.953 -(used, the string to the right of the operator is considered an e)144 -440.4 R 1.954(xtended re)-.15 F 1.954(gular e)-.15 F 1.954 -(xpression and)-.15 F .207(matched accordingly \(as in)144 452.4 R F1 --.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 -(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 shell option)5.667 F F3(nocasematch) -3.167 E F0 .667(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 -(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 -(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) -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.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(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 -(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 -(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 -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 -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 --.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) --.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 -(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 -(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 362.4 Q F0 .973(to be set to null.)3.653 F .973 -(The line read is sa)5.973 F -.15(ve)-.2 G 3.472(di).15 G 3.472(nt) --3.472 G .972(he v)-3.472 F(ariable)-.25 E F3(REPL)3.472 E(Y)-.828 E F4 -(.)A F0(The)5.472 E F2(list)3.562 E F0 .972(is e)4.152 F -.15(xe)-.15 G -.972(cuted after).15 F .071(each selection until a)144 374.4 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 -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 -(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 -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.092(panded using tilde e).15 F 1.092 -(xpansion, parameter and v)-.15 F 1.092(ariable e)-.25 F 1.092 -(xpansion, arithmetic substitution, 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 .353(using tilde e)144 463.2 R -.353(xpansion, parameter and v)-.15 F .353(ariable e)-.25 F .353 -(xpansion, arithmetic substitution, command substi-)-.15 F 1.516 -(tution, and process substitution.)144 475.2 R 1.516 -(If the shell option)6.516 F F1(nocasematch)4.016 E F0 1.517 -(is enabled, the match is per)4.017 F(-)-.2 E 1.347(formed without re) -144 487.2 R -.05(ga)-.15 G 1.347 -(rd to the case of alphabetic characters.).05 F 1.346 -(When a match is found, the corre-)6.347 F(sponding)144 499.2 Q F2(list) -2.776 E F0 .277(is e)2.776 F -.15(xe)-.15 G 2.777(cuted. If).15 F(the) -2.777 E F1(;;)2.777 E F0 .277 -(operator is used, no subsequent matches are attempted after the)2.777 F -.849(\214rst pattern match.)144 511.2 R(Using)5.849 E F1(;&)3.349 E F0 -.849(in place of)3.349 F F1(;;)3.349 E F0 .849(causes e)3.349 F -.15(xe) --.15 G .849(cution to continue with the).15 F F2(list)3.348 E F0 -(associated)3.348 E .077(with the ne)144 523.2 R .077 -(xt set of patterns.)-.15 F(Using)5.077 E F1(;;&)2.577 E F0 .078 -(in place of)2.577 F F1(;;)2.578 E F0 .078 -(causes the shell to test the ne)2.578 F .078(xt pattern list in)-.15 F -.227(the statement, if an)144 535.2 R 1.527 -.65(y, a)-.15 H .227(nd e) -.65 F -.15(xe)-.15 G .227(cute an).15 F 2.727(ya)-.15 G(ssociated)-2.727 -E F2(list)2.727 E F0 .227(on a successful match.)2.727 F .227(The e) -5.227 F .227(xit status is zero)-.15 F(if no 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 E F1(elif)2.5 E -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 -(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) -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.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(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(chr\ -onously 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 -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 -(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 -(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 -(xe)-.15 G(cuting).15 E .103 -(shell, and that \214le descriptor is assigned to)108 242.4 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 -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 -(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 -(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 -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 -([\(\)])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 -(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 -(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) -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 -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(.).15 E F2 -(compound\255command)6.671 E F0 1.671(is e)4.171 F -.15(xe)-.15 G 1.671 -(cuted whene).15 F -.15(ve)-.25 G(r).15 E F2(name)4.171 E F0 1.671 -(is speci\214ed as the name of a simple)4.171 F 2.752(command. When)144 -460.8 R(in)2.753 E F2 .253(posix mode)2.753 F F0(,)A F2(name)2.753 E F0 -.253(may not be the name of one of the POSIX)2.753 F F2 .253(special b) -2.753 F(uiltins)-.2 E F0(.)A(An)144 472.8 Q 3.242(yr)-.15 G .742 -(edirections \(see)-3.242 F F3(REDIRECTION)3.242 E F0(belo)2.992 E .741 -(w\) speci\214ed when a function is de\214ned are performed)-.25 F .17 -(when the function is e)144 484.8 R -.15(xe)-.15 G 2.67(cuted. The).15 F --.15(ex)2.67 G .171 -(it status of a function de\214nition is zero unless a syntax error).15 -F .705(occurs or a readonly function with the same name already e)144 -496.8 R 3.204(xists. When)-.15 F -.15(exe)3.204 G .704(cuted, the e).15 -F .704(xit status)-.15 F 1.821(of a function is the e)144 508.8 R 1.821 -(xit status of the last command e)-.15 F -.15(xe)-.15 G 1.821 -(cuted in the body).15 F 6.822(.\()-.65 G(See)-6.822 E F3(FUNCTIONS) -4.322 E F0(belo)144 520.8 Q -.65(w.)-.25 G(\)).65 E/F4 10.95 -/Times-Bold@0 SF(COMMENTS)72 537.6 Q F0 .982(In a non-interacti)108 -549.6 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 561.6 S .951(iltin is enabled \(see).2 F F3 .952(SHELL B) -3.451 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.452 E -F0 .952(causes that w)3.452 F(ord)-.1 E .605 -(and all remaining characters on that line to be ignored.)108 573.6 R -.604(An interacti)5.605 F .904 -.15(ve s)-.25 H .604(hell without the) -.15 F F1(interacti)3.104 E -.1(ve)-.1 G(_com-).1 E(ments)108 585.6 Q F0 -1.336(option enabled does not allo)3.836 F 3.836(wc)-.25 G 3.836 -(omments. The)-3.836 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E -F0 1.337(option is on by def)3.837 F 1.337(ault in)-.1 F(interacti)108 -597.6 Q .3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 614.4 S -.438(OT) -.11 G(ING).438 E F2(Quoting)108 626.4 Q F0 .478(is used to remo)2.978 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 .477(Quoting can be)5.477 F .184 -(used to disable special treatment for special characters, to pre)108 -638.4 R -.15(ve)-.25 G .185(nt reserv).15 F .185(ed w)-.15 F .185 -(ords from being recognized as)-.1 F(such, and to pre)108 650.4 Q -.15 -(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .289(Each of the)108 -667.2 R F2(metac)2.789 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288 -(listed abo)2.789 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 679.2 Q 1.344 -(When the command history e)108 696 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.595 E 1.345(w\), the) --.25 F F2(history e)108 708 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 -(There are three quoting mechanisms: the)108 724.8 Q F2(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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 2.975(An)108 84 S .475(on-quoted backslash \()-2.975 F/F1 10 -/Times-Bold@0 SF(\\)A F0 2.974(\)i)C 2.974(st)-2.974 G(he)-2.974 E/F2 10 -/Times-Italic@0 SF .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 .474(xt character that)-.15 F(follo) -108 96 Q 1.553(ws, with the e)-.25 F 1.553(xception of . If)-.25 F(a)4.053 E F1(\\)4.053 E F0( pair appears, and the backslash is not itself)-.25 F 1.123 -(quoted, the)108 108 R F1(\\)3.623 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.122(rom the input stream and)-3.622 F -(ef)108 120 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295 -(Enclosing characters in single quotes preserv)108 136.8 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 148.8 Q -.15(ve) --.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .034 -(Enclosing characters in double quotes preserv)108 165.6 R .034 -(es the literal v)-.15 F .034 -(alue of all characters within the quotes, with the)-.25 F -.15(ex)108 -177.6 S .827(ception of).15 F F1($)3.327 E F0(,)A F1<92>3.328 E F0(,)A -F1(\\)3.328 E F0 3.328(,a)C .828(nd, when history e)-3.328 F .828 -(xpansion is enabled,)-.15 F F1(!)3.328 E F0 5.828(.T)C .828 -(he characters)-5.828 F F1($)3.328 E F0(and)3.328 E F1<92>3.328 E F0 -.828(retain their special)3.328 F .075(meaning within double quotes.)108 -189.6 R .074(The backslash retains its special meaning only when follo) -5.075 F .074(wed by one of the)-.25 F(follo)108 201.6 Q .204 -(wing characters:)-.25 F F1($)2.704 E F0(,)A F1<92>2.704 E F0(,)A F1(") -3.537 E F0(,).833 E F1(\\)2.704 E F0 2.704(,o)C(r)-2.704 E F1() -2.705 E F0 5.205(.A)C .205 -(double quote may be quoted within double quotes by pre-)-2.5 F .082 -(ceding it with a backslash.)108 213.6 R .082(If enabled, history e) -5.082 F .082(xpansion will be performed unless an)-.15 F F1(!)2.581 E F0 -.081(appearing in double)5.081 F(quotes is escaped using a backslash.) -108 225.6 Q(The backslash preceding the)5 E F1(!)2.5 E F0(is not remo)5 -E -.15(ve)-.15 G(d.).15 E(The special parameters)108 242.4 Q F1(*)2.5 E -F0(and)2.5 E F1(@)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 -259.2 S .211(rds of the form).8 F F1($)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 271.2 R .604 -(Backslash escape sequences, if present, are decoded)5.605 F(as follo) -108 283.2 Q(ws:)-.25 E F1(\\a)144 295.2 Q F0(alert \(bell\))28.22 E F1 -(\\b)144 307.2 Q F0(backspace)27.66 E F1(\\e)144 319.2 Q(\\E)144 331.2 Q -F0(an escape character)26.55 E F1(\\f)144 343.2 Q F0(form feed)29.89 E -F1(\\n)144 355.2 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 -367.2 Q F0(carriage return)28.78 E F1(\\t)144 379.2 Q F0(horizontal tab) -29.89 E F1(\\v)144 391.2 Q F0 -.15(ve)28.22 G(rtical tab).15 E F1(\\\\) -144 403.2 Q F0(backslash)30.44 E F1<5c08>144 415.2 Q F0(single quote) -30.44 E F1(\\")144 427.2 Q F0(double quote)27.67 E F1(\\)144 439.2 Q F2 -(nnn)A F0(the eight-bit character whose v)18.22 E(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 451.2 Q F2(HH)A F0(the eight-bit character whose v)13.78 E -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 -(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 -(\\u)144 463.2 Q F2(HHHH)A F0 1.506 -(the Unicode \(ISO/IEC 10646\) character whose v)180 475.2 R 1.507 -(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) -4.007 E F0(\(one to four he)180 487.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 499.2 Q F2(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 511.2 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.047 E(HHH)180 523.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(\\c)144 535.2 Q F2(x)A F0 2.5(ac)24.34 G(ontrol-)-2.5 -E F2(x)A F0(character)2.5 E(The e)108 552 Q(xpanded result is single-qu\ -oted, as if the dollar sign had not been present.)-.15 E 2.64(Ad)108 -568.8 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F F1 -($)A F0(")A F2(string)A F0 .14 -("\) will cause the string to be translated according)B .496 -(to the current locale.)108 580.8 R .495(If the current locale is)5.496 -F F1(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 592.8 Q/F4 -10.95/Times-Bold@0 SF -.81(PA)72 609.6 S(RAMETERS).81 E F0(A)108 621.6 Q -F2(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 F2(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 633.6 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 F2(variable)-2.21 E F0 .823(is a parameter denoted by a) -3.503 F F2(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823 -(riable has a).25 F F2(value)108 645.6 Q F0 .368(and zero or more)2.868 -F F2(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 -(utes are assigned using the)-.2 F F1(declar)2.869 E(e)-.18 E F0 -.2(bu) -2.869 G .369(iltin command \(see).2 F F1(declar)2.869 E(e)-.18 E F0 -(belo)108 657.6 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 674.4 -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 686.4 Q F1(unset)2.5 E F0 -.2(bu) -2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 703.2 Q F2(variable)2.79 E F0 -(may be assigned to by a statement of the form)2.68 E F2(name)144 720 Q -F0(=[)A F2(value)A F0(])A(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(If)108 84 Q/F1 10/Times-Italic@0 SF(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 -E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15 -F .515(and v)108 96 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 108 -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 120 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 132 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.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 144 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 156 S(adonly).18 E F0 -2.629(,a)C(nd)-2.629 E F3(local)2.629 E F0 -.2(bu)2.629 G .129 -(iltin commands.).2 F .129(When in)5.129 F F1 .129(posix mode)2.629 F F0 -2.629(,t)C .129(hese b)-2.629 F .13 -(uiltins may appear in a command after)-.2 F -(one or more instances of the)108 168 Q F3(command)2.5 E F0 -.2(bu)2.5 G -(iltin and retain these assignment statement properties.).2 E .377 -(In the conte)108 184.8 R .377 -(xt where an assignment statement is assigning a v)-.15 F .376 -(alue to a shell v)-.25 F .376(ariable or array inde)-.25 F .376 -(x, the +=)-.15 F .257 -(operator can be used to append to or add to the v)108 196.8 R(ariable') --.25 E 2.757(sp)-.55 G(re)-2.757 E .257(vious v)-.25 F 2.757(alue. When) --.25 F .257(+= is applied to a v)2.757 F(ariable)-.25 E .361 -(for which the)108 208.8 R F1(inte)2.861 E -.1(ge)-.4 G(r).1 E F0 -(attrib)2.861 E .361(ute has been set,)-.2 F F1(value)2.861 E F0 .361 -(is e)2.861 F -.25(va)-.25 G .36(luated as an arithmetic e).25 F .36 -(xpression and added to the)-.15 F -.25(va)108 220.8 S(riable').25 E -2.888(sc)-.55 G .388(urrent v)-2.888 F .388(alue, which is also e)-.25 F --.25(va)-.25 G 2.889(luated. When).25 F .389 -(+= is applied to an array v)2.889 F .389(ariable using compound)-.25 F -.186(assignment \(see)108 232.8 R F3(Arrays)2.686 E F0(belo)2.686 E .186 -(w\), the v)-.25 F(ariable')-.25 E 2.685(sv)-.55 G .185 -(alue is not unset \(as it is when using =\), and ne)-2.935 F 2.685(wv) --.25 G .185(alues are)-2.935 F 1.384(appended to the array be)108 244.8 -R 1.384(ginning at one greater than the array')-.15 F 3.885(sm)-.55 G -1.385(aximum inde)-3.885 F 3.885(x\()-.15 G 1.385(for inde)-3.885 F -.15 -(xe)-.15 G 3.885(da).15 G 1.385(rrays\) or)-3.885 F .123 -(added as additional k)108 256.8 R -.15(ey)-.1 G.15 E .123 -(alue pairs in an associati)-.25 F .423 -.15(ve a)-.25 H(rray).15 E -5.123(.W)-.65 G .122(hen applied to a string-v)-5.123 F .122(alued v) --.25 F(ariable,)-.25 E F1(value)2.622 E F0(is e)108 268.8 Q -(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E 3.382(Av)108 285.6 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 297.6 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 -2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 3.335 -(able. This)108 309.6 R(allo)3.335 E .835(ws v)-.25 F .835 -(ariables to be manipulated indirectly)-.25 F 5.835(.W)-.65 G(hene) --5.835 E -.15(ve)-.25 G 3.335(rt).15 G .835(he nameref v)-3.335 F .835 -(ariable is referenced or)-.25 F .021 -(assigned to, the operation is actually performed on the v)108 321.6 R -.021(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.521 -(sv)-.55 G 2.521(alue. A)-2.771 F .818 -(nameref is commonly used within shell functions to refer to a v)108 -333.6 R .819(ariable whose name is passed as an ar)-.25 F(gu-)-.18 E -.132(ment to the function.)108 345.6 R -.15(Fo)5.132 G 2.632(ri).15 G -.132(nstance, if a v)-2.632 F .131 -(ariable name is passed to a shell function as its \214rst ar)-.25 F -.131(gument, run-)-.18 F(ning)108 357.6 Q/F4 10/Courier@0 SF -(declare -n ref=$1)144 375.6 Q F0 .302 -(inside the function creates a nameref v)108 393.6 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)-.25 -F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E 3.318 -(ment. References)108 405.6 R .818(and assignments to)3.318 F F3 -.18 -(re)3.318 G(f).18 E F0 .818 -(are treated as references and assignments to the v)3.318 F .818 -(ariable whose)-.25 F .274(name w)108 417.6 R .274(as passed as)-.1 F F3 -($1)2.774 E F0 5.274(.I)C 2.775(ft)-5.274 G .275(he control v)-2.775 F -.275(ariable in a)-.25 F F3 -.25(fo)2.775 G(r).25 E F0 .275 -(loop has the nameref attrib)2.775 F .275(ute, the list of w)-.2 F .275 -(ords can)-.1 F .355(be a list of shell v)108 429.6 R .354 -(ariables, and a name reference will be established for each w)-.25 F -.354(ord in the list, in turn, when)-.1 F .085(the loop is e)108 441.6 R --.15(xe)-.15 G 2.585(cuted. Array).15 F -.25(va)2.585 G .086 -(riables cannot be gi).25 F -.15(ve)-.25 G 2.586(nt).15 G(he)-2.586 E F3 -2.586 E F0(attrib)2.586 E 2.586(ute. Ho)-.2 F(we)-.25 E -.15(ve) --.25 G .886 -.4(r, n).15 H .086(ameref v).4 F .086(ariables can ref-) --.25 F .884(erence array v)108 453.6 R .883 -(ariables and subscripted array v)-.25 F 3.383(ariables. Namerefs)-.25 F -.883(can be unset using the)3.383 F F33.383 E F0 .883 -(option to the)3.383 F F3(unset)108 465.6 Q F0 -.2(bu)2.557 G 2.557 -(iltin. Otherwise,).2 F(if)2.557 E F3(unset)2.557 E F0 .058(is e)2.558 F --.15(xe)-.15 G .058(cuted with the name of a nameref v).15 F .058 -(ariable as an ar)-.25 F .058(gument, the v)-.18 F(ari-)-.25 E -(able referenced by the nameref v)108 477.6 Q(ariable will be unset.) --.25 E F3 -.2(Po)87 494.4 S(sitional P).2 E(arameters)-.1 E F0(A)108 -506.4 Q F1 .706(positional par)4.456 F(ameter)-.15 E F0 .706(is a param\ -eter denoted by one or more digits, other than the single digit 0.)3.936 -F(Posi-)5.705 E .444(tional parameters are assigned from the shell')108 -518.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 .445(d, and may be reassigned using).1 F(the) -108 530.4 Q F3(set)3.334 E F0 -.2(bu)3.334 G .834(iltin command.).2 F -.833(Positional parameters may not be assigned to with assignment state\ -ments.)5.834 F(The)5.833 E .334(positional parameters are temporarily r\ -eplaced when a shell function is e)108 542.4 R -.15(xe)-.15 G .334 -(cuted \(see).15 F F2(FUNCTIONS)2.834 E F0(belo)2.584 E(w\).)-.25 E -1.404(When a positional parameter consisting of more than a single digi\ -t is e)108 559.2 R 1.403(xpanded, it must be enclosed in)-.15 F -(braces \(see)108 571.2 Q F2(EXP)2.5 E(ANSION)-.666 E F0(belo)2.25 E -(w\).)-.25 E F3(Special P)87 588 Q(arameters)-.1 E F0 1.674 -(The shell treats se)108 600 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 612 Q(wed.)-.25 E F3(*)108 624 Q F0 .606 -(Expands to the positional parameters, starting from one.)31 F .605 -(When the e)5.605 F .605(xpansion occurs within dou-)-.15 F .083 -(ble quotes, it e)144 636 R .084(xpands to a single w)-.15 F .084 -(ord with the v)-.1 F .084 -(alue of each parameter separated by the \214rst char)-.25 F(-)-.2 E -.004(acter of the)144 648 R F2(IFS)2.503 E F0 .003(special v)2.253 F -2.503(ariable. That)-.25 F .003(is, ")2.503 F F3($*)A F0 2.503("i)C -2.503(se)-2.503 G(qui)-2.503 E -.25(va)-.25 G .003(lent to ").25 F F3 -($1)A F1(c)A F3($2)A F1(c)A F3(...)A F0 .003(", where)B F1(c)2.703 E F0 -.003(is the \214rst char)2.813 F(-)-.2 E .768(acter of the v)144 660 R -.768(alue of the)-.25 F F2(IFS)3.268 E F0 -.25(va)3.018 G 3.268 -(riable. If).25 F F2(IFS)3.268 E F0 .769 -(is unset, the parameters are separated by spaces.)3.018 F(If)5.769 E F2 -(IFS)144 672 Q F0(is null, the parameters are joined without interv)2.25 -E(ening separators.)-.15 E F3(@)108 684 Q F0 .606 -(Expands to the positional parameters, starting from one.)26.7 F .605 -(When the e)5.605 F .605(xpansion occurs within dou-)-.15 F .113 -(ble quotes, each parameter e)144 696 R .113(xpands to a separate w)-.15 -F 2.614(ord. That)-.1 F .114(is, ")2.614 F F3($@)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 F3($1)A F0 -2.614("")C F3($2)-2.614 E F0 2.614(".)C(..)-2.614 E .135 -(If the double-quoted e)144 708 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 720 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(GNU Bash 4.2)72 -768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .338(the last part of the original w)144 84 R 2.838(ord. When)-.1 -F .337(there are no positional parameters, ")2.838 F/F1 10/Times-Bold@0 -SF($@)A F0 2.837("a)C(nd)-2.837 E F1($@)2.837 E F0 -.15(ex)2.837 G(pand) -.15 E(to nothing \(i.e., the)144 96 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 -(ve)-.15 G(d\).).15 E F1(#)108 108 Q F0 -(Expands to the number of positional parameters in decimal.)31 E F1(?) -108 120 Q F0(Expands to the e)31 E(xit status of the most recently e) --.15 E -.15(xe)-.15 G(cuted fore).15 E(ground pipeline.)-.15 E F1108 -132 Q F0 .881 -(Expands to the current option \215ags as speci\214ed upon in)30.3 F -.2 -(vo)-.4 G .881(cation, by the).2 F F1(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 -144 Q F12.5 E F0(option\).)2.5 E F1($)108 156 Q F0 .214 -(Expands to the process ID of the shell.)31 F .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 168 Q F1(!)108 180 Q F0 -(Expands to the process ID of the most recently e)32.67 E -.15(xe)-.15 G -(cuted background \(asynchronous\) command.).15 E F1(0)108 192 Q F0 -1.691(Expands to the name of the shell or shell script.)31 F 1.692 -(This is set at shell initialization.)6.692 F(If)6.692 E F1(bash)4.192 E -F0(is)4.192 E(in)144 204 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 -(ith a \214le of commands,)-3.078 F F1($0)3.078 E F0 .578 -(is set to the name of that \214le.)3.078 F(If)5.577 E F1(bash)3.077 E -F0 .577(is started with the)3.077 F F13.077 E F0 .368 -(option, then)144 216 R F1($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 228 Q -.2(vo)-.4 G -.1 -(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H -2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1(_)108 240 -Q F0 .055(At shell startup, set to the absolute pathname used to in)31 F --.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 252 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 264 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 276 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 -288 Q(ed.)-.1 E F1(Shell V)87 304.8 Q(ariables)-.92 E F0(The follo)108 -316.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F1 -.3(BA) -108 333.6 S(SH).3 E F0(Expands to the full \214lename used to in)9.07 E --.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A -F1 -.3(BA)108 345.6 S(SHOPTS).3 E F0 2.549(Ac)144 357.6 S .049 -(olon-separated list of enabled shell options.)-2.549 F .049(Each w) -5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F12.548 E F0 1.398(option to the)144 369.6 -R F1(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F/F2 9 -/Times-Bold@0 SF 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 381.6 R F2 -.27(BA)2.977 G(SHOPTS).27 E F0 .477 -(are those reported as)2.727 F/F3 10/Times-Italic@0 SF(on)3.207 E F0(by) -3.217 E F1(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 393.6 -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 405.6 Q(ariable is read-only)-.25 E -(.)-.65 E F1 -.3(BA)108 417.6 S(SHPID).3 E F0 .188 -(Expands to the process ID of the current)144 429.6 R F1(bash)2.688 E F0 -2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F F1($$) -2.687 E F0 .187(under certain circum-)2.687 F -(stances, such as subshells that do not require)144 441.6 Q F1(bash)2.5 -E F0(to be re-initialized.)2.5 E F1 -.3(BA)108 453.6 S(SH_ALIASES).3 E -F0 1.195(An associati)144 465.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 .025(tained by the)144 477.6 R F1(alias)2.524 E F0 --.2(bu)2.524 G 2.524(iltin. Elements).2 F .024 -(added to this array appear in the alias list; unsetting array ele-) -2.524 F(ments cause aliases to be remo)144 489.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the alias list.)-2.5 E F1 -.3(BA)108 501.6 S(SH_ARGC).3 E -F0 .934(An array v)144 513.6 R .934(ariable whose v)-.25 F .934 -(alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.435 E F0 -.15(exe)144 525.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 537.6 S .141(cuted with).15 F F1(.) -2.641 E F0(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa) --2.641 G 2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 -(When a subroutine is e)5.142 F -.15(xe)-.15 G .142 -(cuted, the number of).15 F 2.631(parameters passed is pushed onto)144 -549.6 R F2 -.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 F2 -.27(BA)5.13 G(SH_ARGC).27 E F0 2.63 -(only when in)4.88 F -.15(ex)144 561.6 S(tended deb).15 E -(ugging mode \(see the description of the)-.2 E F1(extdeb)2.5 E(ug)-.2 E -F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E -(w\))-.25 E F1 -.3(BA)108 573.6 S(SH_ARGV).3 E F0 .979(An array v)144 -585.6 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 th\ -e top of the stack; the \214rst parameter of the initial)144 597.6 R -1.424(call is at the bottom.)144 609.6 R 1.424(When a subroutine is e) -6.424 F -.15(xe)-.15 G 1.424 -(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 -621.6 S(SH_ARGV).27 E F4(.)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(description of the)144 633.6 Q -F1(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2 -(bu)2.5 G(iltin belo).2 E(w\))-.25 E F1 -.3(BA)108 645.6 S(SH_CMDS).3 E -F0 .667(An associati)144 657.6 R .967 -.15(ve a)-.25 H .667(rray v).15 F -.668(ariable whose members correspond to the internal hash table of com\ -mands)-.25 F .147(as maintained by the)144 669.6 R F1(hash)2.647 E F0 --.2(bu)2.646 G 2.646(iltin. Elements).2 F .146 -(added to this array appear in the hash table; unsetting)2.646 F -(array elements cause commands to be remo)144 681.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the hash table.)-2.5 E F1 -.3(BA)108 693.6 S(SH_COMMAND).3 -E F0 1.242(The command currently being e)144 705.6 R -.15(xe)-.15 G -1.243(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F -(command as the result of a trap, in which case it is the command e)144 -717.6 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.3(BA)108 84 S(SH_EXECUTION_STRING).3 E F0 -(The command ar)144 96 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 108 S(SH_LINENO).3 E F0 -.693(An array v)144 120 R .692(ariable whose members are the line numbe\ -rs in source \214les where each corresponding)-.25 F .969(member of)144 -132 R/F2 9/Times-Bold@0 SF(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G -3.469(si).1 G -1.9 -.4(nv o)-3.469 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E -(ASH_LINENO[)-.3 E/F3 10/Times-Italic@0 SF($i)A F1(]})A F0 .97 -(is the line number in the source)3.469 F 14.672(\214le \()144 144 R F1 -(${B)A(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 17.172(\)w)C(here)-17.172 -E F1(${FUNCN)17.172 E(AME[)-.2 E F3($i)A F1(]})A F0 -.1(wa)17.172 G -17.171(sc).1 G 14.671(alled \(or)-17.171 F F1(${B)144 156 Q(ASH_LINENO[) --.3 E F3($i-1)A F1(]})A F0 .115 -(if referenced within another shell function\).)2.615 F(Use)5.115 E F2 -(LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -168 Q(.)-.55 E F1 -.3(BA)108 180 S(SH_REMA).3 E(TCH)-.95 E F0 .006 -(An array v)144 192 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 204 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 216 R(x)-.15 E -F3(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F -F3(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 228 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 240 S(SH_SOURCE).3 E F0 .125(An array v)144 252 R .125(ar\ -iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .781(names in the)144 264 R F2(FUNCN)3.28 E(AME) --.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F3($i)A F1(]})A -F0(is)3.28 E(de\214ned in the \214le)144 276 Q F1(${B)2.5 E(ASH_SOURCE[) --.3 E F3($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) --.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 288 S(SH_SUBSHELL).3 E F0 -.296(Incremented by one within each subshell or subshell en)144 300 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 312 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 324 S(SH_VERSINFO).3 E F0 2.645 -(Ar)144 336 S .145(eadonly array v)-2.645 F .144 -(ariable whose members hold v)-.25 F .144 -(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 -(.T)C(he)-5.144 E -.25(va)144 348 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 366 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)24.74 E -(ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 -(BA)144 378 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)24.74 E -(ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) -144 390 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)24.74 E -.15 -(ve)-.25 G(l.).15 E F1 -.3(BA)144 402 S(SH_VERSINFO[).3 E F0(3)A F1(])A -F0(The b)24.74 E(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 414 S -(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)24.74 E -F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 426 S(SH_VERSINFO[).3 E F0(5)A F1 -(])A F0(The v)24.74 E(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 -/Times-Roman@0 SF(.)A F1 -.3(BA)108 438 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 450 Q -(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -462 Q(ORD)-.1 E F0 .396(An inde)144 474 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 486 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 498 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 510 Q F0(The k)144 522 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 534 Q F0 1.207 -(The current command line.)144 546 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 558 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 570 Q(w\).)-.25 E F1(COMP_POINT)108 582 Q F0 .666(The inde) -144 594 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 -606 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 618 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 630 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 -642 Q F0 .042(Set to an inte)144 654 R .042(ger v)-.15 F .041(alue corr\ -esponding to the type of completion attempted that caused a completion) --.25 F .337(function to be called:)144 666 R F3 -.5(TA)2.837 G(B).5 E F0 -2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f) -C .337(or listing completions after successi)-2.837 F .638 -.15(ve t) --.25 H(abs,).15 E F3(!)144 678 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 F3(@)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 690 R F3(%)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 702 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.428 E(ogrammable)-.18 E(Completion)144 -714 Q F0(belo)2.5 E(w\).)-.25 E(GNU Bash 4.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(COMP_W)108 84 Q(ORDBREAKS)-.1 E F0 1.335 -(The set of characters that the)144 96 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 108 R/F2 9/Times-Bold@0 SF(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 120 Q F1(COMP_W)108 132 Q(ORDS)-.1 E -F0 .653(An array v)144 144 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 156 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 F2 -(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 -168 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 180 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 192 Q(OC)-.3 E F0 .169(An array v) -144 204 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 216 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 228 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 240 R 2.26(ariable \(see)-.25 F F1 -(Arrays)4.76 E F0(belo)4.76 E 2.26 -(w\) containing the current contents of the directory stack.)-.25 F -1.095(Directories appear in the stack in the order the)144 252 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 264 R 1.432 -(ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 276 Q F0(and)2.746 E F1(popd)2.746 E -F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 --.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .35(will not change the current directory)144 288 R -5.35(.I)-.65 G(f)-5.35 E F2(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 -(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 -(ni).15 G(f)-2.851 E(it is subsequently reset.)144 300 Q F1(EUID)108 312 -Q F0 1.104(Expands to the ef)11 F(fecti)-.25 E 1.403 -.15(ve u)-.25 H -1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 -(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 -(ariable is)-.25 F(readonly)144 324 Q(.)-.65 E F1(FUNCN)108 336 Q(AME) --.2 E F0 .478(An array v)144 348 R .479 -(ariable containing the names of all shell functions currently in the e) --.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 -(The element with inde)144 360 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 -(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 -G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 -(element \(the one with the highest inde)144 372 R .384(x\) is)-.15 F/F3 -10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 -(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .035 -(tion is e)144 384 R -.15(xe)-.15 G 2.535(cuting. Assignments).15 F(to) -2.535 E F2(FUNCN)2.535 E(AME)-.18 E F0(ha)2.285 E .335 -.15(ve n)-.2 H -2.535(oe).15 G -.25(ff)-2.535 G .035(ect and return an error status.).25 -F(If)5.034 E F2(FUNC-)2.534 E -.18(NA)144 396 S(ME).18 E F0 -(is unset, it loses its special properties, e)2.25 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 .11(This v)144 414 R .111(ariable can be used with)-.25 F F1 -.3 -(BA)2.611 G(SH_LINENO).3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 -E F0 5.111(.E)C .111(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 -426 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 438 R -.15(Fo) -5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E -/F4 10/Times-Italic@0 SF($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 F4 -($i+1)A F1(]})A F0 1.184(at line number)144 450 R F1(${B)3.684 E -(ASH_LINENO[)-.3 E F4($i)A F1(]})A F0 6.184(.T)C(he)-6.184 E F1(caller) -3.683 E F0 -.2(bu)3.683 G 1.183 -(iltin displays the current call stack using).2 F(this information.)144 -462 Q F1(GR)108 474 Q(OUPS)-.3 E F0 1.228(An array v)144 486 R 1.228(ar\ -iable containing the list of groups of which the current user is a memb\ -er)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E .597(ments to)144 498 R F2(GR) -3.097 E(OUPS)-.27 E F0(ha)2.847 E .897 -.15(ve n)-.2 H 3.097(oe).15 G --.25(ff)-3.097 G .597(ect and return an error status.).25 F(If)5.597 E -F2(GR)3.097 E(OUPS)-.27 E F0 .597(is unset, it loses its spe-)2.847 F -(cial properties, e)144 510 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(HISTCMD)108 522 -Q F0 .355(The history number)144 534 R 2.855(,o)-.4 G 2.855(ri)-2.855 G -(nde)-2.855 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 -(he history list, of the current command.)-2.856 F(If)5.356 E F2 -(HISTCMD)2.856 E F0 .356(is unset, it)2.606 F -(loses its special properties, e)144 546 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 558 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 570 Q F1 -(HOSTTYPE)108 582 Q F0 .223(Automatically set to a string that uniquely\ - describes the type of machine on which)144 594 R F1(bash)2.722 E F0 -.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 606 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 618 Q F0 1.408(Each\ - time this parameter is referenced, the shell substitutes a decimal num\ -ber representing the)144 630 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 642 R .078 -(When not in a script or)5.078 F .306(function, the v)144 654 R .306 -(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.307 E -F2(LINENO)2.807 E F0 .307(is unset, it loses its)2.557 F -(special properties, e)144 666 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 678 Q -(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\ -es the system type on which)144 690 R F1(bash)3.398 E F0 .898(is e)3.398 -F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 702 Q F4 -(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E -(ault is system-dependent.)-.1 E(GNU Bash 4.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(MAPFILE)108 84 Q F0 .293(An array v)144 96 -R .293(ariable \(see)-.25 F F1(Arrays)2.793 E F0(belo)2.793 E .293 -(w\) created to hold the te)-.25 F .294(xt read by the)-.15 F F1 -(map\214le)2.794 E F0 -.2(bu)2.794 G .294(iltin when no).2 F -.25(va)144 -108 S(riable name is supplied.).25 E F1(OLDPWD)108 120 Q F0(The pre)144 -132 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 144 Q(ARG)-.9 E F0 1.627(The v)144 156 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.626(iltin command \(see).2 -F/F2 9/Times-Bold@0 SF(SHELL)4.126 E -.09(BU)144 168 S(IL).09 E -(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 180 Q F0 -1.651(The inde)144 192 R 4.151(xo)-.15 G 4.151(ft)-4.151 G 1.651(he ne) --4.151 F 1.651(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F -F1(getopts)4.152 E F0 -.2(bu)4.152 G 1.652(iltin command \(see).2 F F2 -(SHELL)4.152 E -.09(BU)144 204 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OSTYPE)108 216 Q F0 .329(Automatically set to a s\ -tring that describes the operating system on which)144 228 R F1(bash) -2.829 E F0 .329(is e)2.829 F -.15(xe)-.15 G 2.829(cuting. The).15 F(def) -144 240 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 252 Q -.95(AT) --.9 G(US).95 E F0 .61(An array v)144 264 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 276 Q -.15(xe)-.15 G(cuted fore).15 E -(ground pipeline \(which may contain only a single command\).)-.15 E F1 -(PPID)108 288 Q F0(The process ID of the shell')12.67 E 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 300 Q F0(The current w)12.67 E -(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 312 Q F0 .566 -(Each time this parameter is referenced, a random inte)144 324 R .565 -(ger between 0 and 32767 is generated.)-.15 F(The)5.565 E .01 -(sequence of random numbers may be initialized by assigning a v)144 336 -R .01(alue to)-.25 F F2(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 348 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 360 Q F0 1.547(The contents of the)144 372 R -F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer) --.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F4 10/Courier@0 SF -1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546(SHELL B)4.047 F(UIL)-.09 -E 1.546(TIN COM-)-.828 F(MANDS)144 384 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 396 Q F0 .313 -(The position of the insertion point in the)144 408 R F1 -.18(re)2.813 G -(adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F4 .314(bind -x)2.814 F F0(\(see)2.814 E F2 -(SHELL)2.814 E -.09(BU)144 420 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(REPL)108 432 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 444 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 456 Q F0 .795(Each time this parameter is referen\ -ced, the number of seconds since shell in)144 468 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .712(If a v)144 480 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 .408(of seconds since the assignment plus the v)144 492 R .408 -(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .407 -(is unset, it loses its special)2.658 F(properties, e)144 504 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 516 Q F0 3.262(Ac)144 528 S -.763(olon-separated list of enabled shell options.)-3.262 F .763(Each w) -5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 540 Q F0 1.174(option to the)3.674 F -F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173 -(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E -3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 552 R F2 -(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F/F5 10 -/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0 -5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .02 -(ariable is in the en)-.25 F(vironment)-.4 E(when)144 564 Q F1(bash) -3.142 E F0 .642(starts up, each shell option in the list will be enable\ -d before reading an)3.142 F 3.141(ys)-.15 G .641(tartup \214les.)-3.141 -F(This v)144 576 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 588 Q -(VL)-.92 E F0(Incremented by one each time an instance of)144 600 Q F1 -(bash)2.5 E F0(is started.)2.5 E F1(UID)108 612 Q F0 -(Expands to the user ID of the current user)17.67 E 2.5(,i)-.4 G -(nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .993(The follo)108 628.8 R .993(wing v)-.25 F .994 -(ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 -(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 -(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 640.8 -Q -.65(w.)-.25 G F1 -.3(BA)108 657.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 -1.054(The v)144 669.6 R 1.053(alue is used to set the shell')-.25 F -3.553(sc)-.55 G 1.053(ompatibility le)-3.553 F -.15(ve)-.25 G 3.553 -(l. See).15 F 1.053(the description of the)3.553 F F1 1.053(shopt b) -3.553 F(uiltin)-.2 E(belo)144 681.6 Q 2.925(wu)-.1 G .425(nder SHELL B) --2.925 F(UIL)-.1 E .425(TIN COMMANDS)-.92 F -.25(fo)5.425 G -5.424 2.925 -(ra d).25 H .426(escription of the v)-2.925 F .426(arious compatibility) --.1 F(le)144 693.6 Q -.1(ve)-.15 G .133(ls and their effects.).1 F .133 -(The v)5.133 F .133(alue may be a decimal number \(e.g)-.1 F .133 -(., 4.2\) or an integer \(e.g)-.15 F .132(., 42\))-.15 F(corr)144 705.6 -Q 1.111(esponding to the desir)-.18 F 1.111(ed compatibility le)-.18 F --.1(ve)-.15 G 3.611(l. If).1 F -.3(BA)3.612 G(SH_COMP).3 E 3.012 -.95 -(AT i)-.74 H 3.612(su).95 G 1.112(nset or set to the)-3.612 F 3.325 -(empty string, the compatibility le)144 717.6 R -.1(ve)-.15 G 5.825(li) -.1 G 5.825(ss)-5.825 G 3.325(et to the default f)-5.825 F 3.325 -(or the curr)-.25 F 3.325(ent v)-.18 F 5.825(ersion. If)-.1 F -.3(BA)144 -729.6 S(SH_COMP).3 E 2.93 -.95(AT i)-.74 H 3.53(ss).95 G 1.03(et to a v) --3.53 F 1.031(alue that is not one of the v)-.1 F 1.031 -(alid compatibility le)-.1 F -.1(ve)-.15 G 1.031(ls, the shell).1 F F0 -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF .06(prints an err)144 84 R .06 -(or message and sets the compatibility le)-.18 F -.1(ve)-.15 G 2.56(lt) -.1 G 2.56(ot)-2.56 G .06(he default f)-2.56 F .06(or the curr)-.25 F .06 -(ent v)-.18 F(ersion.)-.1 E .543(The v)144 96 R .543 -(alid compatibility le)-.1 F -.1(ve)-.15 G .543(ls corr).1 F .543 -(espond to the compatibility options accepted by the shopt)-.18 F -.2 -(bu)144 108 S .138(iltin described belo).2 F 2.638(w\()-.1 G -.25(fo) --2.638 G 2.638(re).25 G .138(xample, compat42 means that 4.2 and 42 ar) --2.638 F 2.638(ev)-.18 G .137(alid v)-2.738 F 2.637(alues\). The)-.1 F -(curr)144 120 Q(ent v)-.18 E(ersion is also a v)-.1 E(alid v)-.1 E -(alue.)-.1 E -.3(BA)108 132 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 144 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 156 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 168 R -.525(xpansion, command substitution, and arithmetic e)-.15 F .525 -(xpansion before being interpreted)-.15 F(as a \214lename.)144 180 Q F3 --.666(PA)5 G(TH)-.189 E F0 -(is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 192 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 204 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 216 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 228 S -(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)2.388 F -2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 G -(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\ -mpty string causes the trace output to be sent to the standard error)144 -240 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F3 -.27(BA)144 252 -S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \214le de\ -scriptor\) and then unsetting it will result in the)2.991 F -(standard error being closed.)144 264 Q F1(CDP)108 276 Q -.95(AT)-.74 G -(H).95 E F0 1.247(The search path for the)144 288 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 300 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 312 Q F0(.)A F1(CHILD_MAX)108 324 Q F0 -.997(Set the number of e)144 336 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 348 -S .11(lue to be decreased belo).25 F 2.61(waP)-.25 G .11 -(osix-mandated minimum, and there is a maximum v)-2.61 F .11 -(alue \(currently)-.25 F(8192\) that this may not e)144 360 Q 2.5 -(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E F1 -(COLUMNS)108 372 Q F0 .828(Used by the)144 384 R F1(select)3.328 E F0 -.829(compound command to determine the terminal width when printing sel\ -ection)3.328 F 4.507(lists. Automatically)144 396 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 408 Q F3(SIGWINCH)2.5 E/F5 9 -/Times-Roman@0 SF(.)A F1(COMPREPL)108 420 Q(Y)-.92 E F0 .847(An array v) -144 432 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 444 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 -456 Q F1(EMA)108 468 Q(CS)-.55 E F0(If)144 480 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 -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 492 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 504 Q F0(Similar to) -14.89 E F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)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(FCEDIT)108 516 Q F0(The def)144 528 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 540 Q F0 2.599(Ac)144 552 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 564 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 576 Q 2.5(As)5 -G(ample v)-2.5 E(alue is)-.25 E F4(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 -588 Q F0 1.78(If set to a numeric v)144 600 R 1.78 -(alue greater than 0, de\214nes a maximum function nesting le)-.25 F --.15(ve)-.25 G 4.28(l. Function).15 F(in)144 612 Q -.2(vo)-.4 G -(cations that e).2 E(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 -624 Q F0 3.118(Ac)144 636 S .618(olon-separated list of patterns de\214\ -ning the set of \214lenames to be ignored by pathname e)-3.118 F(xpan-) --.15 E 3.132(sion. If)144 648 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 F3 -(GLOBIGNORE)144 660 Q F5(,)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 672 Q(OL)-.3 E F0 -2.653(Ac)144 684 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 696 R .491 -(alues includes)-.25 F F2(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 708 R 3.057(Av)5.557 G -.557(alue of)-3.307 F F2(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 720 S .459(alue of)-3.209 F F2(ignor)2.969 E(eboth)-.37 E F0 -.459(is shorthand for)3.239 F F2(ignor)2.959 E(espace)-.37 E F0(and) -2.959 E F2(ignor)2.958 E(edups)-.37 E F0 5.458(.A)C -.25(va)-2.5 G .458 -(lue of).25 F F2(er)2.958 E(asedups)-.15 E F0(causes)2.958 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .698(all pre)144 84 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 96 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/F1 9/Times-Bold@0 SF(HISTCONTR)2.763 E -(OL)-.27 E F0 .263(is unset, or does not include)2.513 F 2.941(av)144 -108 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 F1(HISTIGNORE)144 120 Q/F2 9/Times-Roman@0 -SF(.)A F0 1.981(The second and subsequent lines of a multi-line compoun\ -d command are not)6.482 F(tested, and are added to the history re)144 -132 Q -.05(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTCONTR) -2.5 E(OL)-.27 E F2(.)A/F3 10/Times-Bold@0 SF(HISTFILE)108 144 Q F0 .181 -(The name of the \214le in which command history is sa)144 156 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR)-.162 E(Y) --.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v) --.1 F(alue)-.25 E(is)144 168 Q/F4 10/Times-Italic@0 SF(~/.bash_history) -2.5 E F0 5(.I)C 2.5(fu)-5 G(nset, the command history is not sa)-2.5 E --.15(ve)-.2 G 2.5(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F3 -(HISTFILESIZE)108 180 Q F0 1.623 -(The maximum number of lines contained in the history \214le.)144 192 R -1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 -204 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 216 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 -228 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 240 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 F3(HISTSIZE)144 252 Q F0(after reading an) -2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 264 Q F0 -2.657(Ac)144 276 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 288 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 300 R F3(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125 -(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626 -(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144 -312 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 -F3(&)A F0(')A 2.514(matches the pre)144 324 R 2.514(vious history line.) --.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514 -(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 336 -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 -(command are not tested, and are added to the history re)144 348 Q -.05 -(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F1(HISTIGNORE)2.5 E F2 -(.)A F3(HISTSIZE)108 360 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 372 -R F1(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) --.25 F(the)3.888 E -.25(va)144 384 S 1.321 -(lue is 0, commands are not sa).25 F -.15(ve)-.2 G 3.821(di).15 G 3.821 -(nt)-3.821 G 1.321(he history list.)-3.821 F 1.32(Numeric v)6.32 F 1.32 -(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 396 T .436 -(ry command being sa).25 F -.15(ve)-.2 G 2.936(do).15 G 2.936(nt)-2.936 -G .436(he history list \(there is no limit\).)-2.936 F .437 -(The shell sets the def)5.437 F .437(ault v)-.1 F(alue)-.25 E -(to 500 after reading an)144 408 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F3(HISTTIMEFORMA)108 420 Q(T)-.95 E F0 .952(If this v)144 432 R .952 -(ariable is set and not null, its v)-.25 F .951 -(alue is used as a format string for)-.25 F F4(strftime)3.451 E F0 .951 -(\(3\) to print the)B .672 -(time stamp associated with each history entry displayed by the)144 444 -R F3(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) -3.173 F .673(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 456 R -2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 -(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 468 Q -F3(HOME)108 480 Q F0 1.27 -(The home directory of the current user; the def)144 492 R 1.27(ault ar) --.1 F 1.27(gument for the)-.18 F F3(cd)3.77 E F0 -.2(bu)3.77 G 1.27 -(iltin command.).2 F(The)6.27 E -.25(va)144 504 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3 -(HOSTFILE)108 516 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 528 R F4 -(/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F -.55(needs to complete a hostname.)144 540 R .551 -(The list of possible hostname completions may be changed while)5.551 F -1.059(the shell is running; the ne)144 552 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.058 -(alue is changed,)-.25 F F3(bash)144 564 Q F0 .138 -(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) --2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0 -.138(is set, b)2.388 F .139(ut has no v)-.2 F .139(alue, or)-.25 F .518 -(does not name a readable \214le,)144 576 R F3(bash)3.018 E F0 .518 -(attempts to read)3.018 F F4(/etc/hosts)4.683 E F0 .517 -(to obtain the list of possible host-)4.683 F(name completions.)144 588 -Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) -2.25 E F3(IFS)108 600 Q F0(The)20.44 E F4 .555(Internal F)3.635 F .555 -(ield Separ)-.45 F(ator)-.15 E F0 .555(that is used for w)3.785 F .556 -(ord splitting after e)-.1 F .556(xpansion and to split lines into)-.15 -F -.1(wo)144 612 S(rds with the).1 E F3 -.18(re)2.5 G(ad).18 E F0 -.2 -(bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E -(`')-.25 E('.)-.74 E F3(IGNOREEOF)108 624 Q -F0 .503(Controls the action of an interacti)144 636 R .803 -.15(ve s) --.25 H .503(hell on receipt of an).15 F F1(EOF)3.003 E F0 .503 -(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) -144 648 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F1 -(EOF)3.076 E F0 .426 -(characters which must be typed as the \214rst characters)2.676 F .303 -(on an input line before)144 660 R F3(bash)2.802 E F0 -.15(ex)2.802 G -2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 -(xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .302(alue, or has)-.25 F(no v)144 672 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 -F1(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F3 -(INPUTRC)108 684 Q F0 1.435(The \214lename for the)144 696 R F3 -.18(re) -3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G -1.436(rriding the def).15 F 1.436(ault of)-.1 F F4(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.602 E F1(READLINE)3.936 E F0(belo)144 708 Q(w\).)-.25 -E(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(LANG)108 84 Q F0 1.24 -(Used to determine the locale cate)7.11 F 1.239(gory for an)-.15 F 3.739 -(yc)-.15 G(ate)-3.739 E 1.239(gory not speci\214cally selected with a v) --.15 F(ariable)-.25 E(starting with)144 96 Q F1(LC_)2.5 E F0(.)A F1 -(LC_ALL)108 108 Q F0 .973(This v)144 120 R .973(ariable o)-.25 F -.15 -(ve)-.15 G .973(rrides the v).15 F .973(alue of)-.25 F/F2 9/Times-Bold@0 -SF(LANG)3.473 E F0 .973(and an)3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1 -(LC_)3.473 E F0 -.25(va)3.473 G .974(riable specifying a locale cate-) -.25 F(gory)144 132 Q(.)-.65 E F1(LC_COLLA)108 144 Q(TE)-.95 E F0 .412 -(This v)144 156 R .412(ariable determines the collation order used when\ - sorting the results of pathname e)-.25 F(xpansion,)-.15 E 1.464 -(and determines the beha)144 168 R 1.464(vior of range e)-.2 F 1.465 -(xpressions, equi)-.15 F -.25(va)-.25 G 1.465 -(lence classes, and collating sequences).25 F(within pathname e)144 180 -Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 192 Q F0 1.936 -(This v)144 204 R 1.936 -(ariable determines the interpretation of characters and the beha)-.25 F -1.935(vior of character classes)-.2 F(within pathname e)144 216 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 228 Q(GES)-.55 E -F0(This v)144 240 Q(ariable determines the locale used to translate dou\ -ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 252 Q F0(This v)144 264 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LINES)108 276 Q F0 .054 -(Used by the)5.99 F F1(select)2.554 E F0 .054(compound command to deter\ -mine the column length for printing selection lists.)2.554 F .265 -(Automatically set if the)144 288 R F1(checkwinsize)2.765 E F0 .264 -(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264 -(hell upon receipt of a).15 F F2(SIGWINCH)144 300 Q/F3 9/Times-Roman@0 -SF(.)A F1(MAIL)108 312 Q F0 1.201 -(If this parameter is set to a \214le or directory name and the)8.78 F -F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.202 -(riable is not set,).25 F F1(bash)3.702 E F0 -(informs the user of the arri)144 324 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 336 Q F0 .099 -(Speci\214es ho)144 348 R 2.599(wo)-.25 G .099(ften \(in seconds\)) --2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) -5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223 -(to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 360 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F .066 -(or set to a v)144 372 R .066(alue that is not a number greater than or\ - equal to zero, the shell disables mail checking.)-.25 F F1(MAILP)108 -384 Q -.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 396 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 408 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 420 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 432 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 444 Q F0 .388 -(supplies a def)2.888 F .388(ault v)-.1 F .388(alue for this v)-.25 F -.388(ariable, b)-.25 F .389 -(ut the location of the user mail \214les that it uses is)-.2 F -(system dependent \(e.g., /v)144 456 Q(ar/mail/)-.25 E F1($USER)A F0 -(\).)A F1(OPTERR)108 468 Q F0 .39(If set to the v)144 480 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 492 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 504 Q -.15(xe)-.15 G(cuted.) -.15 E F1 -.74(PA)108 516 S(TH)-.21 E F0 .588 -(The search path for commands.)9.91 F .587 -(It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 528 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 540 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 552 R .868 -(The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F 26.329(administrator who installs)144 564 R F1(bash)28.829 E F0 -31.329(.A)C 26.328(common v)-2.501 F 26.328(alue is)-.25 F/F4 10 -/Courier@0 SF -(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 576 Q -F0(.)A F1(POSIXL)108 588 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 600 R -.471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971 -E F0 .471(starts, the shell enters)2.971 F/F5 10/Times-Italic@0 SF .472 -(posix mode)2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 612 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 624 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 636 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 648 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 660 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 672 R .676 -(alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 684 R .923(xpanding the)-.15 F F1(\\w)3.423 -E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) -3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E -(Characters remo)144 696 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS1)108 708 Q F0 .064(The v) -19.33 F .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 720 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(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(PS2)108 84 Q F0 .118(The v)19.33 F .118 -(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F/F2 9 -/Times-Bold@0 SF(PS1)2.617 E F0 .117 -(and used as the secondary prompt string.)2.367 F(The)5.117 E(def)144 96 -Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G(.).74 E F1(PS3)108 -108 Q F0 1.115(The v)19.33 F 1.115 -(alue of this parameter is used as the prompt for the)-.25 F F1(select) -3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR) -144 120 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 132 Q F0 -.101(The v)19.33 F .101(alue of this parameter is e)-.25 F .101 -(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 -(alue is printed before each command)-.25 F F1(bash)144 144 Q F0 .291 -(displays during an e)2.791 F -.15(xe)-.15 G .292(cution trace.).15 F -.292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .292 -(is replicated multiple times, as)2.542 F(necessary)144 156 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 168 Q F0 .664 -(The full pathname to the shell is k)144 180 R .664(ept in this en)-.1 F -.664(vironment v)-.4 F 3.164(ariable. If)-.25 F .663 -(it is not set when the shell)3.164 F(starts,)144 192 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 204 Q(T)-.95 E F0 .826(The v)144 -216 R .826 -(alue of this parameter is used as a format string specifying ho)-.25 F -3.327(wt)-.25 G .827(he timing information for)-3.327 F .649 -(pipelines pre\214x)144 228 R .649(ed with the)-.15 F F1(time)3.149 E F0 -(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F -(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711 -(an escape sequence that is e)144 240 R .711(xpanded to a time v)-.15 F -.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F -(and their meanings are as follo)144 252 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 270 Q F0 2.5 -(Al)30 G(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 282 Q/F3 10 -/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)11.68 -E F1(%[)144 294 Q F3(p)A F1(][l]U)A F0 -(The number of CPU seconds spent in user mode.)11.68 E F1(%[)144 306 Q -F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.) -13.34 E F1(%P)144 318 Q F0 -(The CPU percentage, computed as \(%U + %S\) / %R.)33.89 E .87 -(The optional)144 334.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.525(point. A) -144 346.8 R -.25(va)2.525 G .025 -(lue of 0 causes no decimal point or fraction to be output.).25 F .026 -(At most three places after the)5.025 F .538 -(decimal point may be speci\214ed; v)144 358.8 R .538(alues of)-.25 F F3 -(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E -F3(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 370.8 Q -(alue 3 is used.)-.25 E .667(The optional)144 387.6 R F1(l)3.167 E F0 -.668(speci\214es a longer format, including minutes, of the form)3.168 F -F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.168(s. The)B -.25(va) -3.168 G(lue).25 E(of)144 399.6 Q F3(p)2.5 E F0 -(determines whether or not the fraction is included.)2.5 E 13.365 -(If this v)144 416.4 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 -E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 428.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\%3lS\010)-.18 E F0 7.446(.I) -C 4.946(ft)-7.446 G 2.446(he v)-4.946 F 2.446 -(alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -440.4 R(trailing ne)2.5 E -(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 -452.4 Q F0 .941(If set to a v)144 464.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 476.4 Q F1(select)2.81 E F0 .31 -(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H -(fter).15 E F2(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F -.886(ing from a terminal.)144 488.4 R .886(In an interacti)5.886 F 1.185 --.15(ve s)-.25 H .885(hell, the v).15 F .885 -(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 500.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 512.4 -Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 524.4 Q F0 .391(If set,)144 536.4 -R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 -(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39 -(creates temporary \214les for the)2.89 F(shell')144 548.4 Q 2.5(su)-.55 -G(se.)-2.5 E F1(auto_r)108 560.4 Q(esume)-.18 E F0 .53(This v)144 572.4 -R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531 -(he shell interacts with the user and job control.)-3.03 F .531 -(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 584.4 R -.538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 596.4 S .366(isting stopped job) -.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366 -(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F -1.125(the string typed, the job most recently accessed is selected.)144 -608.4 R(The)6.125 E F3(name)3.985 E F0 1.124(of a stopped job, in this) -3.805 F(conte)144 620.4 Q 1.132 -(xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 -(he string supplied must)-3.633 F .625 -(match the name of a stopped job e)144 632.4 R .624(xactly; if set to) --.15 F F3(substring)3.124 E F0 3.124(,t).22 G .624 -(he string supplied needs to match a)-3.124 F .884 -(substring of the name of a stopped job)144 644.4 R 5.884(.T)-.4 G(he) --5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 -(vides functionality analogous to)-.15 F(the)144 656.4 Q F1(%?)3.334 E -F0 .834(job identi\214er \(see)5.834 F F2 .834(JOB CONTR)3.334 F(OL)-.27 -E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) --.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315 -(must be a pre\214x of a stopped job')144 668.4 R 2.816(sn)-.55 G .316 -(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F -F1(%)2.816 E F3(string)A F0(job)2.816 E(identi\214er)144 680.4 Q(.)-.55 -E F1(histchars)108 692.4 Q F0 2.07(The tw)144 704.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.569 E(OR) --.162 E(Y)-.315 E(EXP)144 716.4 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 -(w\). The)-.25 F 1.215(\214rst character is the)3.715 F F3 1.216 -(history e)3.715 F(xpansion)-.2 E F0(character)3.716 E 3.716(,t)-.4 G -1.216(he character which)-3.716 F 3.495 -(signals the start of a history e)144 728.4 R 3.494 -(xpansion, normally `)-.15 F F1(!)A F0 5.994('. The)B 3.494 -(second character is the)5.994 F F3(quic)5.994 E(k)-.2 E F0 -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Italic@0 SF(substitution)144 84 Q F0(character)3.476 -E 3.476(,w)-.4 G .977(hich is used as shorthand for re-running the pre) --3.476 F .977(vious command entered,)-.25 F .466 -(substituting one string for another in the command.)144 96 R .466 -(The def)5.466 F .466(ault is `)-.1 F/F2 10/Times-Bold@0 SF(^)A F0 2.966 -('. The)B .466(optional third charac-)2.966 F .431(ter is the character\ - which indicates that the remainder of the line is a comment when found\ - as the)144 108 R .39(\214rst character of a w)144 120 R .389 -(ord, normally `)-.1 F F2(#)A F0 2.889('. The)B .389 -(history comment character causes history substitution)2.889 F .25 -(to be skipped for the remaining w)144 132 R .25(ords on the line.)-.1 F -.25(It does not necessarily cause the shell parser to)5.25 F -(treat the rest of the line as a comment.)144 144 Q F2(Arrays)87 160.8 Q -(Bash)108 172.8 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F --.15(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15 -(ve a)-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G -.89(ariable may be used as an)-3.641 F(inde)108 184.8 Q -.15(xe)-.15 G -2.573(da).15 G .073(rray; the)-2.573 F F2(declar)2.573 E(e)-.18 E F0 -.2 -(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 -F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F -.329(an array)108 196.8 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) --.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G -2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F -5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 -(rrays are refer)-2.828 F(-)-.2 E 1.386(enced using inte)108 208.8 R -1.386(gers \(including arithmetic e)-.15 F 3.887(xpressions\) and)-.15 F -1.387(are zero-based; associati)3.887 F 1.687 -.15(ve a)-.25 H 1.387 -(rrays are refer).15 F(-)-.2 E .22(enced using arbitrary strings.)108 -220.8 R .219(Unless otherwise noted, inde)5.219 F -.15(xe)-.15 G 2.719 -(da).15 G .219(rray indices must be non-ne)-2.719 F -.05(ga)-.15 G(ti) -.05 E .519 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 -237.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 F1(name)4.963 E F0([)A -F1(sub-)A(script)108 249.6 Q F0(]=)A F1(value)A F0 6.549(.T)C(he)-6.549 -E F1(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 261.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 F2(declar)4.48 E 4.48<65ad>-.18 G(a) --4.48 E F1(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 F2(declar)108 273.6 Q 2.5<65ad>-.18 G(a)-2.5 E F1(name)2.5 -E F2([)A F1(subscript)A F2(])A F0(is also accepted; the)2.5 E F1 -(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 290.4 Q .3 -.15 -(ve a)-.25 H(rrays are created using).15 E F2(declar)2.5 E 2.5<65ad>-.18 -G(A)-2.5 E F1(name)2.5 E F0(.)A(Attrib)108 307.2 Q .941 -(utes may be speci\214ed for an array v)-.2 F .941(ariable using the) --.25 F F2(declar)3.441 E(e)-.18 E F0(and)3.44 E F2 -.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 319.2 Q(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 336 R -F1(name)4.147 E F0(=)A F2(\()A F0 -.25(va)C(lue).25 E F1(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F1(n)A F2(\))A F0 4.148(,w)C 1.648(here each) --4.148 F F1(value)108 348 Q F0 1.833(is of the form [)4.333 F F1 -(subscript)A F0(]=)A F1(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 F1(string)4.332 E F0(.)A .163 -(When assigning to inde)108 360 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 372 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 384 Q -(xing starts at zero.)-.15 E(When assigning to an associati)108 400.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 417.6 R F2(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 F1(name)108 -429.6 Q F0([)A F1(subscript)A F0(]=)A F1(value)A F0 1.917 -(syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 -(hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) --4.417 E 4.417(,i)-.65 G(f)-4.417 E F1(name)4.777 E F0 1.916(is sub-) -4.597 F .115(scripted by a ne)108 441.6 R -.05(ga)-.15 G(ti).05 E .415 --.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115 -(hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H -2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E -(of)108 453.6 Q F1(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 465.6 Q(An)108 482.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 -(braces are required to a)3.576 F -.2(vo)-.2 G(id).2 E 1.542 -(con\215icts with pathname e)108 494.4 R 4.041(xpansion. If)-.15 F F1 -(subscript)4.041 E F0(is)4.041 E F2(@)4.041 E F0(or)4.041 E F2(*)4.041 E -F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 -(xpands to all members of)-.15 F F1(name)4.041 E F0(.)A 1.056 -(These subscripts dif)108 506.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 518.4 Q F1(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 530.4 R F3(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 -542.4 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 554.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 -566.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 578.4 R .228(xpansion of the special parameters)-.15 -F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 -(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 590.4 -S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A -F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) -3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 -(xpansion is the number of ele-)-.15 F .462(ments in the array)108 602.4 -R 5.462(.R)-.65 G .462(eferencing an array v)-5.462 F .463 -(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .463 -(lent to referencing the array).25 F .233(with a subscript of 0.)108 -614.4 R .233(If the)5.233 F F1(subscript)3.073 E F0 .233 -(used to reference an element of an inde)3.413 F -.15(xe)-.15 G 2.733 -(da).15 G .233(rray e)-2.733 F -.25(va)-.25 G .233(luates to a num-).25 -F .616(ber less than zero, it is interpreted as relati)108 626.4 R .916 --.15(ve t)-.25 H 3.116(oo).15 G .617(ne greater than the maximum inde) --3.116 F 3.117(xo)-.15 G 3.117(ft)-3.117 G .617(he array)-3.117 F 3.117 -(,s)-.65 G 3.117(on)-3.117 G -.15(eg)-3.117 G(-).15 E(ati)108 638.4 Q .3 --.15(ve i)-.25 H(ndices count back from the end of the array).15 E 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 .168(An array v)108 655.2 R .168 -(ariable is considered set if a subscript has been assigned a v)-.25 F -2.668(alue. The)-.25 F .168(null string is a v)2.668 F .168(alid v)-.25 -F(alue.)-.25 E(The)108 672 Q F2(unset)2.766 E F0 -.2(bu)2.766 G .267 -(iltin is used to destro).2 F 2.767(ya)-.1 G(rrays.)-2.767 E F2(unset) -5.267 E F1(name)2.767 E F0([)A F1(subscript)A F0 2.767(]d)C(estro)-2.767 -E .267(ys the array element at inde)-.1 F(x)-.15 E F1(sub-)2.767 E -(script)108 684 Q F0 6.319(.N)C -2.25 -.15(eg a)-6.319 H(ti).15 E 1.619 --.15(ve s)-.25 H 1.319(ubscripts to inde).15 F -.15(xe)-.15 G 3.819(da) -.15 G 1.319(rrays are interpreted as described abo)-3.819 F -.15(ve)-.15 -G 6.318(.C).15 G 1.318(are must be tak)-6.318 F 1.318(en to)-.1 F -.2 -(avo)108 696 S .297(id unw).2 F .297(anted side ef)-.1 F .297 -(fects caused by pathname e)-.25 F(xpansion.)-.15 E F2(unset)5.297 E F1 -(name)2.798 E F0 2.798(,w)C(here)-2.798 E F1(name)2.798 E F0 .298 -(is an array)2.798 F 2.798(,o)-.65 G(r)-2.798 E F2(unset)2.798 E F1 -(name)108 708 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 -724.8 Q F2(declar)3.574 E(e)-.18 E F0(,)A F2(local)3.574 E F0 3.574(,a)C -(nd)-3.574 E F2 -.18(re)3.574 G(adonly).18 E F0 -.2(bu)3.574 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.573(da).15 G 1.073 -(rray and a)-3.573 F F23.573 E F0(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .338(option to specify an associati)108 84 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/F1 10/Times-Bold@0 SF2.838 E -F0(tak)2.838 E .338(es precedence.)-.1 F(The)5.338 E F1 -.18(re)2.839 G -(ad).18 E F0 -.2(bu)2.839 G(iltin).2 E .441(accepts a)108 96 R F1 -2.941 E F0 .441(option to assign a list of w)2.941 F .441 -(ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he) --5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.94 E(e)-.18 E F0 -.2 -(bu)108 108 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 124.8 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 136.8 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 148.8 S .37(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 .369 -(command sub-)2.869 F(stitution)108 160.8 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 .47(The order of e)108 177.6 R .471(xpansions is: brace e)-.15 F .471 -(xpansion, tilde e)-.15 F .471(xpansion, parameter)-.15 F 2.971(,v)-.4 G -.471(ariable and arithmetic e)-3.221 F(xpansion)-.15 E -(and command substitution \(done in a left-to-right f)108 189.6 Q -(ashion\), w)-.1 E(ord splitting, and pathname e)-.1 E(xpansion.)-.15 E -(On systems that can support it, there is an additional e)108 206.4 Q -(xpansion a)-.15 E -.25(va)-.2 G(ilable:).25 E F3(pr)2.5 E -(ocess substitution)-.45 E F0(.)A 1.487(Only brace e)108 223.2 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 235.2 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F -1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 -(ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) --.15 F -.15(ex)108 247.2 S(pansions of ").15 E F1($@)A F0 2.5("a)C(nd ") --2.5 E F1(${)A F3(name)A F1([@]})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/F4 9/Times-Bold@0 -SF -.666(PA)2.5 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1 -(Brace Expansion)87 264 Q F3(Br)108.58 276 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 288 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 300 R F3(pr)2.652 E(eamble) --.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 -(wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 312 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(co\ -ntained within the braces, and the postscript is then appended to each \ -resulting string, e)108 324 R .658(xpanding left to)-.15 F(right.)108 -336 Q .718(Brace e)108 352.8 R .719(xpansions may be nested.)-.15 F .719 -(The results of each e)5.719 F .719 -(xpanded string are not sorted; left to right order is)-.15 F(preserv) -108 364.8 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F1({)A F0 -(d,c,b)A F1(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As) -108 381.6 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743 -(es the form)-.1 F F1({)3.243 E F3(x)A F1(..)A F3(y)A F1([..)A F3(incr)A -F1(]})A F0 3.243(,w)C(here)-3.243 E F3(x)3.243 E F0(and)3.242 E F3(y) -3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,) --.15 F(and)108 393.6 Q F3(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 -405.6 R F3(x)2.578 E F0(and)2.578 E F3(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 F3(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 417.6 R .014(When either)5.014 F F3(x)2.514 E F0(or) -2.514 E F3(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\ -empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 429.6 R -6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F -(xpression)-.15 E -.15(ex)108 441.6 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 .984 -(that both)108 453.6 R F3(x)3.484 E F0(and)3.484 E F3(y)3.484 E F0 .983 -(must be of the same type.)3.484 F .983 -(When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 465.6 Q(The def)5 E -(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 482.4 -R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 -(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 -(haracters special to other e)-3.082 F(xpansions)-.15 E .016 -(are preserv)108 494.4 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 506.4 Q -(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 3.632(Ac)108 523.2 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 535.2 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 547.2 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 559.2 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 -(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 571.2 Q 1.476(This construct is typically used \ -as shorthand when the common pre\214x of the strings to be generated is) -108 588 R(longer than in the abo)108 600 Q .3 -.15(ve ex)-.15 H(ample:) -.15 E(mkdir /usr/local/src/bash/{old,ne)144 616.8 Q -.65(w,)-.25 G -(dist,b).65 E(ugs})-.2 E(or)108 628.8 Q(cho)144 640.8 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 657.6 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 669.6 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 681.6 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 F3(\214le{1,2})108 693.6 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 F3 .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 705.6 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 717.6 Q F0(option to the)2.5 E F1 -(set)2.5 E F0(command \(see)2.5 E F4(SHELL B)2.5 E(UIL)-.09 E -(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF -.18(Ti)87 84 S(lde Expansion).18 E F0 -1.086(If a w)108 96 R 1.086(ord be)-.1 F 1.086 -(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.087 -('\), all of the characters preceding the \214rst unquoted)B .185(slash\ - \(or all characters, if there is no unquoted slash\) are considered a) -108 108 R/F2 10/Times-Italic@0 SF(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(i\ -n the tilde-pre\214x are quoted, the characters in the tilde-pre\214x f\ -ollo)108 120 R .726(wing the tilde are treated as a possible)-.25 F F2 -(lo)108 132 Q .523(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 -(his login name is the null string, the tilde is replaced with the v) --3.023 F .522(alue of the shell parameter)-.25 F/F3 9/Times-Bold@0 SF -(HOME)108 144 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(wise, the tilde-pre\214x is replaced with the home directory asso\ -ciated with the speci\214ed login name.)108 156 Q .093 -(If the tilde-pre\214x is a `~+', the v)108 172.8 R .092 -(alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 -(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) -5.092 F 3.403(a`)108 184.8 S .903(~\255', the v)-3.403 F .903 -(alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 -.904(if it is set, is substituted.)3.154 F .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 196.8 R F2(N)4.142 -E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 -(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ -ith the corresponding element from the directory stack, as it w)108 -208.8 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) -108 220.8 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G -.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F -.454(the characters follo)2.954 F .454 -(wing the tilde in the tilde-pre\214x)-.25 F -(consist of a number without a leading `+' or `\255', `+' is assumed.) -108 232.8 Q(If the login name is in)108 249.6 Q -.25(va)-.4 G -(lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .166(Each v)108 266.4 R .167 -(ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) --.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E -F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E -.468(these cases, tilde e)108 278.4 R .468(xpansion is also performed.) --.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467 -(ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 -290.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) --.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H) -.855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E -(alue.)-.25 E F1 -.1(Pa)87 307.2 S(rameter Expansion).1 E F0 1.605 -(The `)108 319.2 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 331.2 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 343.2 R .032(ariable to be e)-.25 F .032 -(xpanded from characters immediately follo)-.15 F .033 -(wing it which could be interpreted as part)-.25 F(of the name.)108 -355.2 Q 1.19 -(When braces are used, the matching ending brace is the \214rst `)108 -372 R F1(})A F0 3.689('n)C 1.189(ot escaped by a backslash or within a) --3.689 F 2.15(quoted string, and not within an embedded arithmetic e)108 -384 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15(ex) -108 396 S(pansion.).15 E(${)108 412.8 Q F2(par)A(ameter)-.15 E F0(})A -1.205(The v)144 424.8 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 436.8 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 448.8 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 460.8 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 .815(If the \214rst character of)108 477.6 R F2(par)3.316 E -(ameter)-.15 E F0 .816(is an e)3.316 F .816(xclamation point \()-.15 F -F1(!)A F0 .816(\), it introduces a le)B -.15(ve)-.25 G 3.316(lo).15 G -3.316(fv)-3.316 G .816(ariable indirection.)-3.566 F F1(Bash)108 489.6 Q -F0 .106(uses the v)2.606 F .106(alue of the v)-.25 F .106 -(ariable formed from the rest of)-.25 F F2(par)2.606 E(ameter)-.15 E F0 -.106(as the name of the v)2.606 F .106(ariable; this v)-.25 F(ari-)-.25 -E .351(able is then e)108 501.6 R .351(xpanded and that v)-.15 F .352 -(alue is used in the rest of the substitution, rather than the v)-.25 F -.352(alue of)-.25 F F2(par)2.852 E(ame-)-.15 E(ter)108 513.6 Q F0 2.52 -(itself. This)2.52 F .02(is kno)2.52 F .02(wn as)-.25 F F2(indir)2.52 E -.02(ect e)-.37 F(xpansion)-.2 E F0 5.019(.T)C .019(he e)-5.019 F .019 -(xceptions to this are the e)-.15 F .019(xpansions of ${)-.15 F F1(!)A -F2(pr)A(e\214x)-.37 E F1(*)A F0 2.519(}a)C(nd)-2.519 E(${)108 525.6 Q F1 -(!)A F2(name)A F0([)A F2(@)A F0 .762(]} described belo)B 4.563 -.65 -(w. T)-.25 H .763(he e).65 F .763 -(xclamation point must immediately follo)-.15 F 3.263(wt)-.25 G .763 -(he left brace in order to)-3.263 F(introduce indirection.)108 537.6 Q -.334(In each of the cases belo)108 554.4 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 566.4 Q(xpansion.)-.15 E 1.089 -(When not performing substring e)108 583.2 R 1.089 -(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G -(e.g.,)-3.589 E F1(:-)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 595.2 Q(Omitti\ -ng the colon results in a test only for a parameter that is unset.)5 E -(${)108 612 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(})A -F1 .723(Use Default V)144 624 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 636 Q(alue of)-.25 E F2 -(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 648 Q F2(par) -A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 2.004 -(Assign Default V)144 660 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 672 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 684 Q(ay)-.1 E(.)-.65 E(${) -108 696 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A F1 -.535(Display Err)144 708 R .535(or if Null or Unset)-.18 F F0 5.535(.I)C -(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535 -(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E -(d)-.37 E F0 .535(\(or a mes-)3.035 F .662(sage to that ef)144 720 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 -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(interacti)144 84 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5 -(xits. Otherwise,)-2.65 F(the v)2.5 E(alue of)-.25 E/F1 10 -/Times-Italic@0 SF(par)2.5 E(ameter)-.15 E F0(is substituted.)2.5 E(${) -108 96 Q F1(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(:+)A F1(wor)A(d) --.37 E F0(})A F2 .745(Use Alter)144 108 R .745(nate V)-.15 F(alue)-.92 E -F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0 .745 -(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 120 Q F1(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 132 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F0(})A(${)108 144 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion) -144 156 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E -F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E -(ameter)-.15 E F0 .002(starting at the)2.502 F 1.081 -(character speci\214ed by)144 168 R F1(of)3.581 E(fset)-.18 E F0 6.081 -(.I)C(f)-6.081 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E -F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15 -G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.582 E F2(*) -3.582 E F0 3.582(,o)C 3.582(ra)-3.582 G(n)-3.582 E(associati)144 180 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 F1(length) -3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .042 -(substring of the v)144 192 R .042(alue of)-.25 F F1(par)2.542 E(ameter) --.15 E F0 .043(starting at the character speci\214ed by)2.542 F F1(of) -2.543 E(fset)-.18 E F0 .043(and e)2.543 F .043(xtending to the)-.15 F -.847(end of the v)144 204 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 -E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .846 -(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV)3.346 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 216 Q(w\).)-.25 E -(If)144 240 Q F1(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529 -(luates to a number less than zero, the v).25 F .529 -(alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.046(end of the v)144 252 R .046(alue of)-.25 F F1(par)2.546 E(ameter) --.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G -.046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 264 Q .202(fset in characters from the end of the v)-.25 F .202 -(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .203 -(rather than a number of characters, and)2.702 F .558(the e)144 276 R -.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E -F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga) --.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25 -F(separated from the colon by at least one space to a)144 288 Q -.2(vo) --.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G -(pansion.).15 E(If)144 312 Q F1(par)2.958 E(ameter)-.15 E F0(is)2.958 E -F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 E -F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of) -2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.109 E(fset)-.18 E F0 .096(is tak)144 324 R .096 -(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 .095(luates to).25 F 1.321 -(the last positional parameter)144 336 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 -F1(length)3.822 E F0 -.25(eva)3.822 G 1.322 -(luates to a number less than).25 F(zero.)144 348 Q(If)144 372 Q F1(par) -3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014 -(da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014 -F F1(length)3.014 E F0 .513(members of)3.013 F 1.081(the array be)144 -384 R 1.081(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A -(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082(is tak)3.582 F 1.082 -(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo).15 G 1.082(ne greater) --3.582 F 1.08(than the maximum inde)144 396 R 3.58(xo)-.15 G 3.58(ft) --3.58 G 1.08(he speci\214ed array)-3.58 F 6.079(.I)-.65 G 3.579(ti) --6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079(xpansion error if) --3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079(luates to a).25 F -(number less than zero.)144 408 Q(Substring e)144 432 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 456 R -1.931(xing is zero-based unless the positional parameters are used, in \ -which case the)-.15 F(inde)144 468 Q .307(xing starts at 1 by def)-.15 F -2.807(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($0)2.806 E F0 -.306(is pre\214x)2.806 F(ed)-.15 E(to the list.)144 480 Q(${)108 496.8 Q -F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 508.8 Q F2(!)A F1(pr)A -(e\214x)-.37 E F2(@)A F0(})A F2 .084(Names matching pr)144 520.8 R -(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F .084 -(ariables whose names be)-.25 F .085(gin with)-.15 F F1(pr)2.585 E -(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258 -(rated by the \214rst character of the)144 532.8 R F3(IFS)2.758 E F0 -.257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.757 E F0 .257 -(is used and the e)2.757 F .257(xpansion appears)-.15 F -(within double quotes, each v)144 544.8 Q(ariable name e)-.25 E -(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 561.6 Q F2(!)A F1(name) -A F0([)A F1(@)A F0(]})A(${)108 573.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0 -(]})A F2 2.035(List of array k)144 585.6 R(eys)-.1 E F0 7.036(.I)C(f) --7.036 E F1(name)4.536 E F0 2.036(is an array v)4.536 F 2.036 -(ariable, e)-.25 F 2.036(xpands to the list of array indices \(k)-.15 F --.15(ey)-.1 G(s\)).15 E .596(assigned in)144 597.6 R F1(name)3.096 E F0 -5.596(.I)C(f)-5.596 E F1(name)3.096 E F0 .595(is not an array)3.096 F -3.095(,e)-.65 G .595(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .595 -(is set and null otherwise.)3.095 F(When)5.595 E F1(@)144 609.6 Q F0 -(is used and the e)2.5 E(xpansion appears within double quotes, each k) --.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 -626.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 638.4 S .47 -(rameter length).1 F F0 5.47(.T)C .471(he length in characters of the v) --5.47 F .471(alue of)-.25 F F1(par)2.971 E(ameter)-.15 E F0 .471 -(is substituted.)2.971 F(If)5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 -650.4 Q F0(is)4.439 E F2(*)3.709 E F0(or)3.709 E F2(@)3.709 E F0 3.708 -(,t)C 1.208(he v)-3.708 F 1.208 -(alue substituted is the number of positional parameters.)-.25 F(If) -6.208 E F1(par)4.958 E(ameter)-.15 E F0 1.208(is an)4.438 F .348 -(array name subscripted by)144 662.4 R F2(*)2.849 E F0(or)2.849 E F2(@) -2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 -(alue substituted is the number of elements in the array)-.25 F 5.349 -(.I)-.65 G(f)-5.349 E F1(par)145.25 674.4 Q(ameter)-.15 E F0 .456 -(is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456 -(rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756 --.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455 -(hat number is interpreted)-2.955 F .972(as relati)144 686.4 R 1.272 --.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde) --3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 -3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273 --.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array) -144 698.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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(${)108 84 Q/F1 10/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10 -/Times-Bold@0 SF(#)A F1(wor)A(d)-.37 E F0(})A(${)108 96 Q F1(par)A -(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 108 Q 1.396 --.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F(n)-.15 E -F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196(is e)4.466 F -1.196(xpanded to produce a pattern just as in path-)-.15 F .151(name e) -144 120 R 2.651(xpansion. If)-.15 F .152(the pattern matches the be) -2.652 F .152(ginning of the v)-.15 F .152(alue of)-.25 F F1(par)2.652 E -(ameter)-.15 E F0 2.652(,t).73 G .152(hen the result of)-2.652 F 1.4 -(the e)144 132 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 144 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.782 E F0 2.782(,t)C .282(he pattern)-2.782 F(remo)144 156 -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 .401(tant list.)144 168 R -(If)5.401 E F1(par)4.151 E(ameter)-.15 E F0 .401(is an array v)3.631 F -.401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*) -2.901 E F0 2.902(,t)C .402(he pattern remo)-2.902 F -.25(va)-.15 G 2.902 -(lo).25 G(peration)-2.902 E -(is applied to each member of the array in turn, and the e)144 180 Q -(xpansion is the resultant list.)-.15 E(${)108 196.8 Q F1(par)A(ameter) --.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 208.8 Q F1(par)A(ameter) --.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 220.8 Q .347 -.1 -(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 E F0 5.147(.T)C(he) --5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F .146 -(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 -232.8 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 244.8 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 256.8 S F2 -(%).74 E F0 1.521 -.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.542 E F0(or)2.542 E F2(*)2.542 E F0 -2.542(,t)C(he)-2.542 E .441(pattern remo)144 268.8 R -.25(va)-.15 G -2.941(lo).25 G .441 -(peration is applied to each positional parameter in turn, and the e) --2.941 F .44(xpansion is the)-.15 F .24(resultant list.)144 280.8 R(If) -5.24 E F1(par)3.99 E(ameter)-.15 E F0 .24(is an array v)3.47 F .241 -(ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.741 E F2(*)2.741 E -F0 2.741(,t)C .241(he pattern remo)-2.741 F -.25(va)-.15 G 2.741(lo).25 -G(per)-2.741 E(-)-.2 E -(ation is applied to each member of the array in turn, and the e)144 -292.8 Q(xpansion is the resultant list.)-.15 E(${)108 309.6 Q F1(par)A -(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa) -144 321.6 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 E F0 6.107(.T)C -(he)-6.107 E F1(pattern)3.607 E F0 1.107(is e)3.607 F 1.106 -(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E -(sion.)144 333.6 Q F1 -.8(Pa)6.033 G -.15(ra).8 G(meter).15 E F0 1.033 -(is e)3.533 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) -3.533 E F0(ag)3.533 E 1.034(ainst its v)-.05 F 1.034 -(alue is replaced with)-.25 F F1(string)144 345.6 Q F0 5.161(.I)C(f) --5.161 E F1(pattern)2.661 E F0(be)2.661 E .161(gins with)-.15 F F2(/) -2.661 E F0 2.661(,a)C .161(ll matches of)-2.661 F F1(pattern)2.661 E F0 -.16(are replaced with)2.661 F F1(string)2.66 E F0 5.16(.N)C .16 -(ormally only the)-5.16 F .806(\214rst match is replaced.)144 357.6 R -(If)5.806 E F1(pattern)3.306 E F0(be)3.306 E .806(gins with)-.15 F F2(#) -3.306 E F0 3.306(,i)C 3.307(tm)-3.306 G .807(ust match at the be)-3.307 -F .807(ginning of the e)-.15 F(xpanded)-.15 E -.25(va)144 369.6 S .621 -(lue of).25 F F1(par)3.121 E(ameter)-.15 E F0 5.621(.I)C(f)-5.621 E F1 -(pattern)3.121 E F0(be)3.121 E .621(gins with)-.15 F F2(%)3.121 E F0 -3.121(,i)C 3.121(tm)-3.121 G .62(ust match at the end of the e)-3.121 F -.62(xpanded v)-.15 F .62(alue of)-.25 F F1(par)144 381.6 Q(ameter)-.15 E -F0 6.253(.I)C(f)-6.253 E F1(string)3.753 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.254(may be) -3.754 F 2.679(omitted. If)144 393.6 R F1(par)3.929 E(ameter)-.15 E F0 -(is)3.409 E F2(@)2.679 E F0(or)2.679 E F2(*)2.679 E F0 2.679(,t)C .178 -(he substitution operation is applied to each positional parameter) --2.679 F .618(in turn, and the e)144 405.6 R .619 -(xpansion is the resultant list.)-.15 F(If)5.619 E F1(par)4.369 E -(ameter)-.15 E F0 .619(is an array v)3.849 F .619 -(ariable subscripted with)-.25 F F2(@)144 417.6 Q F0(or)3.224 E F2(*) -3.224 E F0 3.224(,t)C .723(he substitution operation is applied to each\ - member of the array in turn, and the e)-3.224 F(xpan-)-.15 E -(sion is the resultant list.)144 429.6 Q(${)108 446.4 Q F1(par)A(ameter) --.15 E F2(^)A F1(pattern)A F0(})A(${)108 458.4 Q F1(par)A(ameter)-.15 E -F2(^^)A F1(pattern)A F0(})A(${)108 470.4 Q F1(par)A(ameter)-.15 E F2(,)A -F1(pattern)A F0(})A(${)108 482.4 Q F1(par)A(ameter)-.15 E F2(,,)A F1 -(pattern)A F0(})A F2 .437(Case modi\214cation)144 494.4 R F0 5.437(.T)C -.437(his e)-5.437 F .438 -(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 506.4 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 518.4 -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 -530.4 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 542.4 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 554.4 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 566.4 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 578.4 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 590.4 R -(xpansion)-.15 E .469(is the resultant list.)144 602.4 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 .005(tion operation is \ -applied to each member of the array in turn, and the e)144 614.4 R .005 -(xpansion is the resultant list.)-.15 F F2(Command Substitution)87 631.2 -Q F1 1.698(Command substitution)108 643.2 R F0(allo)4.198 E 1.697 -(ws the output of a command to replace the command name.)-.25 F 1.697 -(There are tw)6.697 F(o)-.1 E(forms:)108 655.2 Q F2($\()144 672 Q F1 -(command)A F2(\))1.666 E F0(or)108 684 Q F2<92>144 696 Q F1(command)A F2 -<92>A(Bash)108 712.8 Q F0 .019(performs the e)2.519 F .019 -(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.519 E F0 -.02(and replacing the command substitution with the stan-)2.519 F .768 -(dard output of the command, with an)108 724.8 R 3.268(yt)-.15 G .768 -(railing ne)-3.268 F .768(wlines deleted.)-.25 F .768(Embedded ne)5.768 -F .768(wlines are not deleted, b)-.25 F(ut)-.2 E(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(the)108 84 Q 3.218(ym)-.15 G .718(ay be remo)-3.218 F -.15(ve) --.15 G 3.218(dd).15 G .719(uring w)-3.218 F .719(ord splitting.)-.1 F -.719(The command substitution)5.719 F/F1 10/Times-Bold@0 SF($\(cat)3.219 -E/F2 10/Times-Italic@0 SF(\214le)3.219 E F1(\))A F0 .719 -(can be replaced by the)3.219 F(equi)108 96 Q -.25(va)-.25 G(lent b).25 -E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1(\))A F0(.)A -1.724(When the old-style backquote form of substitution is used, backsl\ -ash retains its literal meaning e)108 112.8 R(xcept)-.15 E .314 -(when follo)108 124.8 R .314(wed by)-.25 F F1($)2.814 E F0(,)A F1<92> -2.814 E F0 2.814(,o)C(r)-2.814 E F1(\\)2.814 E F0 5.314(.T)C .315(he \ -\214rst backquote not preceded by a backslash terminates the command su\ -b-)-5.314 F 3.887(stitution. When)108 136.8 R 1.387(using the $\()3.887 -F F2(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 148.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 165.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 177.6 Q .422 -(If the substitution appears within double quotes, w)108 194.4 R .422 -(ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15 -F(on the results.)108 206.4 Q F1(Arithmetic Expansion)87 223.2 Q F0 -1.034(Arithmetic e)108 235.2 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 247.2 Q(xpansion is:)-.15 E F1($\(\() -144 264 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 280.8 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 1.074 -(treated specially)108 292.8 R 6.074(.A)-.65 G 1.074(ll tok)-6.074 F -1.074(ens in the e)-.1 F 1.074(xpression under)-.15 F 1.074 -(go parameter e)-.18 F 1.074(xpansion, string e)-.15 F 1.075 -(xpansion, command)-.15 F(substitution, and quote remo)108 304.8 Q -.25 -(va)-.15 G 2.5(l. Arithmetic).25 F -.15(ex)2.5 G -(pansions may be nested.).15 E 1.379(The e)108 321.6 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 -.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 .97 -(ocess substitution)-.45 F F0 .971 -(is supported on systems that support named pipes \()3.47 F F2(FIFOs)A -F0 3.471(\)o)C 3.471(rt)-3.471 G(he)-3.471 E F1(/de)3.471 E(v/fd)-.15 E -F0 .971(method of)3.471 F .022(naming open \214les.)108 374.4 R .021 -(It tak)5.022 F .021(es the form of)-.1 F F1(<\()2.521 E F2(list)A F1 -(\)).833 E F0(or)2.521 E F1(>\()2.521 E F2(list)A F1(\)).833 E F0 5.021 -(.T)C .021(he process)-5.021 F F2(list)2.521 E F0 .021 -(is run with its input or output con-)2.521 F .058(nected to a)108 386.4 -R F2(FIFO)2.558 E F0 .058(or some \214le in)2.558 F F1(/de)2.558 E(v/fd) --.15 E F0 5.058(.T)C .058(he name of this \214le is passed as an ar) --5.058 F .059(gument to the current com-)-.18 F .131 -(mand as the result of the e)108 398.4 R 2.631(xpansion. If)-.15 F(the) -2.63 E F1(>\()2.63 E F2(list)A F1(\)).833 E F0 .13 -(form is used, writing to the \214le will pro)2.63 F .13(vide input for) --.15 F F2(list)2.63 E F0(.)A(If the)108 410.4 Q F1(<\()2.5 E F2(list)A -F1(\)).833 E F0(form is used, the \214le passed as an ar)2.5 E -(gument should be read to obtain the output of)-.18 E F2(list)2.5 E F0 -(.)A .896(When a)108 427.2 R -.25(va)-.2 G .896(ilable, process substit\ -ution is performed simultaneously with parameter and v).25 F .897 -(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 439.2 Q(xpansion.)-.15 E F1 --.75(Wo)87 456 S(rd Splitting).75 E F0 1.143 -(The shell scans the results of parameter e)108 468 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 480 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 496.8 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 1.789(on these characters.)108 508.8 R(If)6.789 E F3 -(IFS)4.289 E F0 1.788(is unset, or its v)4.039 F 1.788(alue is e)-.25 F -(xactly)-.15 E F1()4.288 E F0 4.288(,t)C 1.788 -(he def)-4.288 F 1.788(ault, then)-.1 F .021(sequences of)108 520.8 R F1 -()2.521 E F0(,)A F1()2.521 E F0 2.521(,a)C(nd)-2.521 E F1 -()2.521 E F0 .021(at the be)2.521 F .021 -(ginning and end of the results of the pre)-.15 F .022(vious e)-.25 F -(xpan-)-.15 E .586(sions are ignored, and an)108 532.8 R 3.086(ys)-.15 G -.586(equence of)-3.086 F F3(IFS)3.086 E F0 .586 -(characters not at the be)2.836 F .586(ginning or end serv)-.15 F .585 -(es to delimit w)-.15 F(ords.)-.1 E(If)108 544.8 Q F3(IFS)3.617 E F0 -1.117(has a v)3.367 F 1.117(alue other than the def)-.25 F 1.117 -(ault, then sequences of the whitespace characters)-.1 F F1(space)3.617 -E F0(and)3.617 E F1(tab)3.617 E F0(are)3.617 E .315(ignored at the be) -108 556.8 R .315(ginning and end of the w)-.15 F .315 -(ord, as long as the whitespace character is in the v)-.1 F .315 -(alue of)-.25 F F3(IFS)2.815 E F0(\(an)2.565 E F3(IFS)108 568.8 Q F0 -1.053(whitespace character\).)3.303 F(An)6.053 E 3.553(yc)-.15 G 1.053 -(haracter in)-3.553 F F3(IFS)3.553 E F0 1.053(that is not)3.303 F F3 -(IFS)3.553 E F0 1.054(whitespace, along with an)3.304 F 3.554(ya)-.15 G -(djacent)-3.554 E F3(IFS)3.554 E F0 .332 -(whitespace characters, delimits a \214eld.)108 580.8 R 2.832(As)5.332 G -.332(equence of)-2.832 F F3(IFS)2.832 E F0 .331 -(whitespace characters is also treated as a delim-)2.582 F(iter)108 -592.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.878 -(Explicit null ar)108 609.6 R 1.878(guments \()-.18 F F1 .833("").833 G -F0(or)3.545 E F1 .833<0808>5.211 G F0 4.378(\)a)C 1.878(re retained.) --4.378 F 1.878(Unquoted implicit null ar)6.878 F 1.879 -(guments, resulting from the)-.18 F -.15(ex)108 621.6 S .177 -(pansion of parameters that ha).15 F .477 -.15(ve n)-.2 H 2.677(ov).15 G -.177(alues, are remo)-2.927 F -.15(ve)-.15 G 2.676(d. If).15 F 2.676(ap) -2.676 G .176(arameter with no v)-2.676 F .176(alue is e)-.25 F .176 -(xpanded within)-.15 F(double quotes, a null ar)108 633.6 Q -(gument results and is retained.)-.18 E(Note that if no e)108 650.4 Q -(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 667.2 S -(thname Expansion).1 E F0 .37(After w)108 679.2 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 691.2 R .677 -(ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E -F0 3.177(,a).24 G .677(nd replaced with an alphabeti-)-3.177 F .562 -(cally sorted list of \214lenames matching the pattern \(see)108 703.2 R -F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) -2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F .009 -(are found, and the shell option)108 715.2 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 727.2 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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 1.38(found, an error message is printed and the command is not e) -108 84 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 -F/F1 10/Times-Bold@0 SF(nocaseglob)3.88 E F0(is)3.88 E .103 -(enabled, the match is performed without re)108 96 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 108 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 120 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 -132 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 -144 R F1(shopt)2.665 E F0(belo)2.665 E 2.665(wu)-.25 G(nder)-2.665 E/F2 -9/Times-Bold@0 SF .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 156 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 172.8 Q -F2(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/F3 10/Times-Italic@0 SF(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E -F2(GLO-)2.785 E(BIGNORE)108 184.8 Q F0 2.316(is set, each matching \214\ -lename that also matches one of the patterns in)4.565 F F2(GLOBIGNORE) -4.816 E F0(is)4.566 E(remo)108 196.8 Q -.15(ve)-.15 G 2.66(df).15 G .16 -(rom the list of matches.)-2.66 F .16(The \214lenames)5.16 F F1 -.63(``) -2.66 G -.55(.').63 G(')-.08 E F0(and)5.16 E F1 -.63(``)2.66 G(..).63 E --.63('')-.55 G F0 .16(are al)5.79 F -.1(wa)-.1 G .159(ys ignored when).1 -F F2(GLOBIGNORE)2.659 E F0(is)2.409 E .045(set and not null.)108 208.8 R -(Ho)5.045 E(we)-.25 E -.15(ve)-.25 G .845 -.4(r, s).15 H(etting).4 E F2 -(GLOBIGNORE)2.545 E F0 .046(to a non-null v)2.296 F .046 -(alue has the ef)-.25 F .046(fect of enabling the)-.25 F F1(dotglob) -2.546 E F0 .787(shell option, so all other \214lenames be)108 220.8 R -.787(ginning with a)-.15 F F1 -.63(``)3.287 G -.55(.').63 G(')-.08 E F0 -.787(will match.)5.787 F 2.386 -.8(To g)5.787 H .786(et the old beha).8 -F .786(vior of ignoring)-.2 F .641(\214lenames be)108 232.8 R .641 -(ginning with a)-.15 F F1 -.63(``)3.141 G -.55(.').63 G(')-.08 E F0 -3.141(,m)C(ak)-3.141 E(e)-.1 E F1 -.63(``)3.141 G(.*').63 E(')-.63 E F0 -.642(one of the patterns in)5.642 F F2(GLOBIGNORE)3.142 E/F4 9 -/Times-Roman@0 SF(.)A F0(The)5.142 E F1(dotglob)3.142 E F0 .642 -(option is)3.142 F(disabled when)108 244.8 Q F2(GLOBIGNORE)2.5 E F0 -(is unset.)2.25 E F1 -.1(Pa)108 261.6 S(tter).1 E 2.5(nM)-.15 G(atching) --2.5 E F0(An)108 278.4 Q 3.138(yc)-.15 G .638(haracter that appears in \ -a pattern, other than the special pattern characters described belo) --3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62(itself. The)108 290.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 302.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 314.4 Q(.)-.65 E -(The special pattern characters ha)108 331.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1(*)144 348 Q F0 .376(Matches an) -31 F 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 360 Q F1(*)3.275 E F0 .775 -(is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw) --.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775 -(sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\ - or more directories and subdirectories.)180 372 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 384 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 396 Q F0 -(Matches an)31 E 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1([...]) -144 408 Q F0 .579(Matches an)21.84 F 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 420 R F3 -.15(ra)3.184 G(ng).15 E 3.184(ee)-.1 G(xpr) --3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 -(haracter that f).15 F .684(alls between those tw)-.1 F 3.185(oc)-.1 G -.685(haracters, inclu-)-3.185 F(si)180 432 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 444 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 456 R .894 -(xpressions is determined by the current locale)-.15 F .375(and the v) -180 468 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) -2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 -(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8 -F .068(ditional interpretation of range e)180 480 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 492 R F1(LC_ALL)2.656 E F0 -.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C -2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 -.157(shell option.)2.657 F(A)5.157 E F12.657 E F0(may)2.657 E .193(\ -be matched by including it as the \214rst or last character in the set.) -180 504 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 516 Q -.4(Wi)180 -534 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F3 -.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 F3(class)A F1 -(:])A F0 3.071(,w)C(here)-3.071 E F3(class)3.071 E F0 -(is one of the follo)180 546 Q -(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 558 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 570 R 5(ord xdigit)-.1 F F0 -4.289(Ac)180 582 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 594 Q -.4(Wi) -180 612 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 F3 2.037(equivalence class)4.537 F F0 2.036 -(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F3(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 624 R -(the character)180 636 Q F3(c)2.5 E F0(.)A -.4(Wi)180 654 S(thin).4 E F1 -([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5 -E F3(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F3(symbol) -2.5 E F0(.)A .705(If the)108 670.8 R F1(extglob)3.205 E F0 .705 -(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu) -3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704 -(xtended pattern matching operators)-.15 F .255(are recognized.)108 -682.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F3 -(pattern-list)2.755 E F0 .255 -(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E -F0(.)A(Composite patterns may be formed using one or more of the follo) -108 694.8 Q(wing sub-patterns:)-.25 E(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(?\()144 84 Q/F2 10/Times-Italic@0 SF -(pattern-list).833 E F1(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 96 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F1(*\()144 108 Q F2(pattern-list).833 E F1(\)) -.833 E F0(Matches zero or more occurrences of the gi)180 120 Q -.15(ve) --.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 132 Q F2(pattern-list).833 -E F1(\)).833 E F0(Matches one or more occurrences of the gi)180 144 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 156 Q F2 -(pattern-list).833 E F1(\)).833 E F0(Matches one of the gi)180 168 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(!\()144 180 Q F2 -(pattern-list).833 E F1(\)).833 E F0(Matches an)180 192 Q(ything e)-.15 -E(xcept one of the gi)-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E -F1(Quote Remo)87 208.8 Q -.1(va)-.1 G(l).1 E F0 1.113 -(After the preceding e)108 220.8 R 1.113 -(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) -3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0 -1.112(that did not result)4.445 F(from one of the abo)108 232.8 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 249.6 Q F0 .545 -(Before a command is e)108 261.6 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 273.6 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 285.6 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 297.6 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 -309.6 R .875(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 -.875(or may follo)4.145 F 3.376(wa)-.25 G F2(command)A F0 5.876(.R).77 G -.876(edirections are)-5.876 F(processed in the order the)108 321.6 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 338.4 R .771(ord of)-.1 F .292(the form {) -108 350.4 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 362.4 S -.679(le descriptor greater than or equal to 10 and assign it to)-3.18 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 374.4 Q -F0(}, the v)A(alue of)-.25 E F2(varname)2.5 E F0 -(de\214nes the \214le descriptor to close.)2.5 E .283(In the follo)108 -391.2 R .284(wing descriptions, if the \214le descriptor number is omit\ -ted, and the \214rst character of the redirect-)-.25 F .513 -(ion operator is)108 403.2 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 415.2 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 432 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 444 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 456 R -.866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F -.867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .867(xpands to more than one)-.15 F -.1(wo)108 468 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 484.8 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 501.6 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 518.4 -Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 -535.2 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 -(directs only the standard output to \214le)108 552 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 564 Q(as redirected to)-.1 E F2 -(dirlist)2.5 E F0(.).68 E F1(Bash)108 580.8 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(table:)108 592.8 Q F1(/de)144 609.6 Q(v/fd/)-.15 E F2(fd)A -F0(If)180 621.6 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 633.6 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.) -180 645.6 Q F1(/de)144 657.6 Q(v/stdout)-.15 E F0 -(File descriptor 1 is duplicated.)180 669.6 Q F1(/de)144 681.6 Q -(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 693.6 Q F1(/de) -144 705.6 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 717.6 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 729.6 Q F1(bash)2.5 E F0 -(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(/de)144 84 Q(v/udp/)-.15 E/F2 10 -/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 96 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 108 Q F1(bash)2.5 -E F0(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af) -108 124.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 than 9 s\ -hould be used with care, as the)108 141.6 R 3.446(ym)-.15 G .946 -(ay con\215ict with \214le)-3.446 F -(descriptors the shell uses internally)108 153.6 Q(.)-.65 E F1(Redir)87 -170.4 Q(ecting Input)-.18 E F0 .391 -(Redirection of input causes the \214le whose name results from the e) -108 182.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 194.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 211.2 Q([)144 228 Q F2 -(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 244.8 Q(ecting Output) --.18 E F0 .175 -(Redirection of output causes the \214le whose name results from the e) -108 256.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 268.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 280.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 297.6 Q([)144 314.4 Q -F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 -(If the redirection operator is)108 331.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 343.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 355.2 R F1(>|)2.909 E F0 2.909(,o)C -2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E -F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 -(option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.908 G .408 -(iltin command).2 F(is not enabled, the redirection is attempted e)108 -367.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 -384 S(pending Redir).25 E(ected Output)-.18 E F0 .641 -(Redirection of output in this f)108 396 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 408 R F2(n)2.974 E F0 -2.974(,o).24 G 2.974(rt)-2.974 G .474 -(he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.333 E F0 -.473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108 -420 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 436.8 Q([)144 453.6 Q -F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 475.2 Q -(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .248 -(This construct allo)108 487.2 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 -499.2 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(There are tw)108 516 Q 2.5(of)-.1 G -(ormats for redirecting standard output and standard error:)-2.5 E F1 -(&>)144 532.8 Q F2(wor)A(d)-.37 E F0(and)108 544.8 Q F1(>&)144 556.8 Q -F2(wor)A(d)-.37 E F0(Of the tw)108 573.6 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 590.4 Q F2(wor)A(d)-.37 E F0(2)2.5 -E F1(>&)A F0(1)A .115(When using the second form,)108 607.2 R F2(wor) -2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) --.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.614(td)-2.614 G -.114(oes, other redirection operators)-2.614 F(apply \(see)108 619.2 Q -F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E -(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 636 S -(pending Standard Output and Standard Err).25 E(or)-.18 E F0 .248 -(This construct allo)108 648 R .249(ws both the standard output \(\214l\ -e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F -(tor 2\) to be appended to the \214le whose name is the e)108 660 Q -(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(The format for appending standard output and standard error is:)108 -676.8 Q F1(&>>)144 693.6 Q F2(wor)A(d)-.37 E F0 -(This is semantically equi)108 710.4 Q -.25(va)-.25 G(lent to).25 E F1 -(>>)144 727.2 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(\(see)108 84 Q/F1 10/Times-Bold@0 SF -(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E F1(Her)87 -100.8 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redirection i\ -nstructs the shell to read input from the current source until a line c\ -ontaining only)108 112.8 R/F2 10/Times-Italic@0 SF(delimiter)108.35 -124.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 for a command.)108 136.8 Q -(The format of here-documents is:)108 153.6 Q F1(<<)144 170.4 Q F0([)A -F1A F0(])A F2(wor)A(d)-.37 E(her)164 182.4 Q(e-document)-.37 E -(delimiter)144 194.4 Q F0 .302(No parameter and v)108 211.2 R .302 -(ariable e)-.25 F .302(xpansion, command substitution, arithmetic e)-.15 -F .301(xpansion, or pathname e)-.15 F(xpansion)-.15 E .225 -(is performed on)108 223.2 R F2(wor)2.725 E(d)-.37 E F0 5.225(.I).77 G -2.726(fa)-5.225 G .526 -.15(ny c)-2.726 H .226(haracters in).15 F F2 -(wor)3.066 E(d)-.37 E F0 .226(are quoted, the)3.496 F F2(delimiter)3.076 -E F0 .226(is the result of quote remo)3.456 F -.25(va)-.15 G 2.726(lo) -.25 G(n)-2.726 E F2(wor)108 235.2 Q(d)-.37 E F0 2.715(,a).77 G .215 -(nd the lines in the here-document are not e)-2.715 F 2.714(xpanded. If) --.15 F F2(wor)2.714 E(d)-.37 E F0 .214 -(is unquoted, all lines of the here-docu-)2.714 F .499 -(ment are subjected to parameter e)108 247.2 R .499 -(xpansion, command substitution, and arithmetic e)-.15 F .5 -(xpansion, the character)-.15 F(sequence)108 259.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 .602 -(If the redirection operator is)108 276 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 288 Q F2(delimiter)2.5 E F0 5(.T).73 G -(his allo)-5 E -(ws here-documents within shell scripts to be indented in a natural f) --.25 E(ashion.)-.1 E F1(Her)87 304.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 -2.5(Av)108 316.8 S(ariant of here documents, the format is:)-2.75 E F1 -(<<<)144 333.6 Q F2(wor)A(d)-.37 E F0(The)108 350.4 Q F2(wor)2.893 E(d) --.37 E F0(under)2.893 E .393(goes brace e)-.18 F .393(xpansion, tilde e) --.15 F .393(xpansion, parameter and v)-.15 F .394(ariable e)-.25 F .394 -(xpansion, command substi-)-.15 F 2.148(tution, arithmetic e)108 362.4 R -2.148(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.147 -(ord splitting are not per)-.1 F(-)-.2 E 2.5(formed. The)108 374.4 R(re\ -sult is supplied as a single string to the command on its standard inpu\ -t.)2.5 E F1(Duplicating File Descriptors)87 391.2 Q F0 -(The redirection operator)108 403.2 Q([)144 420 Q F2(n)A F0(])A F1(<&)A -F2(wor)A(d)-.37 E F0 .126 -(is used to duplicate input \214le descriptors.)108 436.8 R(If)5.127 E -F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 -(pands to one or more digits, the \214le descriptor denoted).15 F(by)108 -448.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 460.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 472.8 Q -(The operator)108 489.6 Q([)144 506.4 Q F2(n)A F0(])A F1(>&)A F2(wor)A -(d)-.37 E F0 .444 -(is used similarly to duplicate output \214le descriptors.)108 523.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 535.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 547.2 R F2(wor) -3.094 E(d)-.37 E F0 -.25(eva)3.524 G .254(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 559.2 R .965(xpand to one or more digits or)-.15 F F1 -3.465 E F0 3.466(,t)C .966 -(he standard output and standard error are redirected as described) --3.466 F(pre)108 571.2 Q(viously)-.25 E(.)-.65 E F1(Mo)87 588 Q -(ving File Descriptors)-.1 E F0(The redirection operator)108 600 Q([)144 -616.8 Q F2(n)A F0(])A F1(<&)A F2(digit)A F1A F0(mo)108 633.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 645.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 662.4 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 679.2 Q -F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 696 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 708 Q -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Opening File Descriptors f)87 84 Q -(or Reading and Writing)-.25 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(wor)A(d)-.37 E -F0 1.349(causes the \214le whose name is the e)108 129.6 R 1.349 -(xpansion of)-.15 F F2(wor)4.189 E(d)-.37 E F0 1.349 -(to be opened for both reading and writing on \214le)4.619 F(descriptor) -108 141.6 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 158.4 Q F2(Aliases)108 170.4 Q F0(allo)3.173 -E 3.173(was)-.25 G .674(tring to be substituted for a w)-3.173 F .674 -(ord when it is used as the \214rst w)-.1 F .674 -(ord of a simple command.)-.1 F .394(The shell maintains a list of alia\ -ses that may be set and unset with the)108 182.4 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 194.4 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 206.4 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 218.4 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 230.4 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 242.4 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 254.4 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 266.4 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 278.4 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 295.2 Q F1(alias)2.5 E F0 -(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F1 -(unalias)2.5 E F0(command.)2.5 E .284 -(There is no mechanism for using ar)108 312 R .284 -(guments in the replacement te)-.18 F 2.784(xt. If)-.15 F(ar)2.784 E -.284(guments are needed, a shell func-)-.18 F(tion should be used \(see) -108 324 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.22 -(Aliases are not e)108 340.8 R 1.22 -(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 3.72(,u) -.15 G 1.22(nless the)-3.72 F F1(expand_aliases)3.72 E F0 1.22 -(shell option is set)3.72 F(using)108 352.8 Q F1(shopt)2.5 E F0 -(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F4 -(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 -E .436 -(The rules concerning the de\214nition and use of aliases are some)108 -369.6 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 -(wa)-.1 G .435(ys reads at least).1 F .337 -(one complete line of input before e)108 381.6 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 393.6 S .904 -(ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404 -(cuted. Therefore,).15 F .904 -(an alias de\214nition appearing on the same line as)3.404 F 1.161 -(another command does not tak)108 405.6 R 3.662(ee)-.1 G -.25(ff)-3.662 -G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F -1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277 -(alias de\214nition on that line are not af)108 417.6 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 -429.6 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F -.699(xpanded when a function de\214nition is read, not when the functio\ -n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .495 -(because a function de\214nition is itself a compound command.)108 441.6 -R .494(As a consequence, aliases de\214ned in a func-)5.494 F .084 -(tion are not a)108 453.6 R -.25(va)-.2 G .084 -(ilable until after that function is e).25 F -.15(xe)-.15 G 2.584 -(cuted. T).15 F 2.584(ob)-.8 G 2.584(es)-2.584 G .084(afe, al)-2.584 F --.1(wa)-.1 G .085(ys put alias de\214nitions on a sepa-).1 F -(rate line, and do not use)108 465.6 Q F1(alias)2.5 E F0 -(in compound commands.)2.5 E -.15(Fo)108 482.4 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 499.2 Q F0 3.468(As)108 511.2 S .968 -(hell function, de\214ned as described abo)-3.468 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 523.2 R --.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\ -ion is used as a simple command name, the list of com-)3.501 F .316 -(mands associated with that function name is e)108 535.2 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 547.2 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 559.2 R -.15(xe)-.15 G .64(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 571.2 -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 583.2 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 1.25(All other aspects of the shell e)108 -600 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.048(these e)108 612 R 3.548(xceptions: the)-.15 F F4(DEB)3.548 E(UG) --.09 E F0(and)3.298 E F1(RETURN)3.548 E F0 1.048 -(traps \(see the description of the)3.548 F F1(trap)3.548 E F0 -.2(bu) -3.548 G 1.048(iltin under).2 F F4(SHELL)3.549 E -.09(BU)108 624 S(IL).09 -E .479(TIN COMMANDS)-.828 F F0(belo)2.729 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 F1(trace)2.978 E F0(attrib)2.978 E -.478(ute \(see)-.2 F .42(the description of the)108 636 R F4(declar)2.92 -E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F -F1 .42(\255o functrace)2.92 F F0 .42 -(shell option has been enabled with the)2.92 F F1(set)2.921 E F0 -.2(bu) -108 648 S .072(iltin \(in which case all functions inherit the).2 F F1 -(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F1(RETURN)2.572 E F0 .072 -(traps\), and the)2.572 F F4(ERR)2.571 E F0 .071(trap is not inher)2.321 -F(-)-.2 E(ited unless the)108 660 Q F1(\255o errtrace)2.5 E F0 -(shell option has been enabled.)2.5 E -1.11(Va)108 676.8 S .655 -(riables local to the function may be declared with the)1.11 F F1(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 688.8 Q -(alues are shared between the function and its caller)-.25 E(.)-.55 E -(The)108 705.6 Q F1(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 -(riable, if set to a numeric v).25 F 1.028 -(alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 -717.6 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(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .043(If the b)108 84 R .043(uiltin command)-.2 F/F1 10 -/Times-Bold@0 SF -.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 96 -R 1.012(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc) --.15 G 1.011(ommand associated with the)-3.511 F F1(RETURN)3.511 E F0 -1.011(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 108 -R -.15(xe)-.15 G .213(cution resumes.).15 F .213 -(When a function completes, the v)5.213 F .214 -(alues of the positional parameters and the spe-)-.25 F(cial parameter) -108 120 Q F1(#)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 136.8 R F1 -3.858 E F0 1.358(option to the)3.858 F F1(declar)3.858 E(e)-.18 E -F0(or)3.858 E F1(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F -3.39(mands. The)108 148.8 R F13.39 E F0 .89(option to)3.39 F F1 -(declar)3.39 E(e)-.18 E F0(or)3.39 E F1(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 160.8 R 2.827(,i)-.4 G 2.827(ft)-2.827 G -(he)-2.827 E F1(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 172.8 R -1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F13.797 E -F0 1.297(option to the)3.797 F F1(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 184.8 R F12.661 E F0 .161(option to the) -2.661 F F1(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 -196.8 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 208.8 Q -(en in cases where this may cause a problem.)-.1 E .372 -(Functions may be recursi)108 225.6 R -.15(ve)-.25 G 5.371(.T).15 G(he) --5.371 E F1(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 237.6 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 249.6 Q .3 --.15(ve c)-.25 H(alls.).15 E/F2 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 -266.4 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 -(The shell allo)108 278.4 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 F1(let)4.797 E F0 -(and)4.797 E F1(declar)108 290.4 Q(e)-.18 E F0 -.2(bu)2.705 G .205 -(iltin commands and).2 F F1 .205(Arithmetic Expansion)2.705 F F0 2.705 -(\). Ev)B .205(aluation is done in \214x)-.25 F .206(ed-width inte)-.15 -F .206(gers with no)-.15 F .429(check for o)108 302.4 R -.15(ve)-.15 G -(r\215o).15 E 1.729 -.65(w, t)-.25 H .429(hough di).65 F .428 -(vision by 0 is trapped and \215agged as an error)-.25 F 5.428(.T)-.55 G -.428(he operators and their prece-)-5.428 F 1.919(dence, associati)108 -314.4 R(vity)-.25 E 4.419(,a)-.65 G 1.919(nd v)-4.419 F 1.919 -(alues are the same as in the C language.)-.25 F 1.92(The follo)6.92 F -1.92(wing list of operators is)-.25 F(grouped into le)108 326.4 Q -.15 -(ve)-.25 G(ls of equal-precedence operators.).15 E(The le)5 E -.15(ve) --.25 G(ls are listed in order of decreasing precedence.).15 E/F3 10 -/Times-Italic@0 SF(id)108 343.2 Q F1(++)A F3(id)2.5 E F1A F0 -.25 -(va)144 355.2 S(riable post-increment and post-decrement).25 E F1(++)108 -367.2 Q F3(id)A F12.5 E F3(id)A F0 -.25(va)144 379.2 S -(riable pre-increment and pre-decrement).25 E F1 2.5108 391.2 S F0 -(unary minus and plus)19.6 E F1 2.5(!~)108 403.2 S F0 -(logical and bitwise ne)24.34 E -.05(ga)-.15 G(tion).05 E F1(**)108 -415.2 Q F0 -.15(ex)26 G(ponentiation).15 E F1 2.5(*/%)108 427.2 S F0 -(multiplication, di)10.72 E(vision, remainder)-.25 E F1 2.5<2bad>108 -439.2 S F0(addition, subtraction)19.6 E F1(<< >>)108 451.2 Q F0 -(left and right bitwise shifts)10.7 E F1(<= >= < >)108 463.2 Q F0 -(comparison)144 475.2 Q F1(== !=)108 487.2 Q F0(equality and inequality) -13.07 E F1(&)108 499.2 Q F0(bitwise AND)27.67 E F1(^)108 511.2 Q F0 -(bitwise e)32.67 E(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F1(|)108 -523.2 Q F0(bitwise OR)33.8 E F1(&&)108 535.2 Q F0(logical AND)19.34 E F1 -(||)108 547.2 Q F0(logical OR)31.6 E F3 -.2(ex)108 559.2 S(pr).2 E F1(?) -A F3 -.2(ex)C(pr).2 E F1(:)A F3 -.2(ex)C(pr).2 E F0 -(conditional operator)144 571.2 Q F1 2.5(=*)108 583.2 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 595.2 Q F3 -.2(ex)108 607.2 S -(pr1).2 E F1(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 619.2 Q .68 -(Shell v)108 636 R .68(ariables are allo)-.25 F .68 -(wed as operands; parameter e)-.25 F .68 -(xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F --.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 648 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 660 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 672 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.39 -(when it is referenced, or when a v)108 684 R 1.389 -(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.889(nt).15 G(he) --3.889 E F3(inte)3.889 E -.1(ge)-.4 G(r).1 E F0(attrib)3.889 E 1.389 -(ute using)-.2 F F1(declar)3.889 E 3.889(e-)-.18 G(i)-3.889 E F0(is) -3.889 E .332(assigned a v)108 696 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 F3(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 708 Q -(xpression.)-.15 E 1.406 -(Constants with a leading 0 are interpreted as octal numbers.)108 724.8 -R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) --.15 E(GNU Bash 4.2)72 768 Q(2013 January 8)144.29 E(29)193.45 E 0 Cg EP -%%Page: 30 30 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .112(Otherwise, numbers tak)108 84 R 2.612(et)-.1 G .112 -(he form [)-2.612 F/F1 10/Times-Italic@0 SF(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 96 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 .16(When specifying)108 108 R -F1(n)2.66 E F0 2.66(,t)C .16 -(he digits greater< than 9 are represented by the lo)-2.66 F .16 -(wercase letters, the uppercase letters,)-.25 F .943 -(@, and _, in that order)108 120 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 132 Q .234 -(Operators are e)108 148.8 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 .235 -(luated \214rst and may).25 F -.15(ove)108 160.8 S -(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F2 10.95 -/Times-Bold@0 SF(CONDITION)72 177.6 Q(AL EXPRESSIONS)-.219 E F0 .256 -(Conditional e)108 189.6 R .256(xpressions are used by the)-.15 F/F3 10 -/Times-Bold@0 SF([[)2.755 E F0 .255(compound command and the)2.755 F F3 -(test)2.755 E F0(and)2.755 E F3([)2.755 E F0 -.2(bu)2.755 G .255 -(iltin commands to test).2 F .77(\214le attrib)108 201.6 R .77 -(utes and perform string and arithmetic comparisons.)-.2 F .77 -(Expressions are formed from the follo)5.77 F(wing)-.25 E 1.041 -(unary or binary primaries.)108 213.6 R 1.041(If an)6.041 F(y)-.15 E F1 -(\214le)3.541 E F0(ar)3.541 E 1.04 -(gument to one of the primaries is of the form)-.18 F F1(/de)3.54 E -(v/fd/n)-.15 E F0 3.54(,t)C 1.04(hen \214le)-3.54 F(descriptor)108 225.6 -Q F1(n)3.788 E F0 1.289(is check)3.788 F 3.789(ed. If)-.1 F(the)3.789 E -F1(\214le)3.789 E F0(ar)3.789 E 1.289 -(gument to one of the primaries is one of)-.18 F F1(/de)3.789 E(v/stdin) --.15 E F0(,)A F1(/de)3.789 E(v/stdout)-.15 E F0 3.789(,o)C(r)-3.789 E F1 -(/de)108 237.6 Q(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 .722 -(Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 254.4 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 266.4 -Q 1.095(When used with)108 284.4 R F3([[)3.595 E F0 3.595(,t)C(he)-3.595 -E F3(<)3.595 E F0(and)3.595 E F3(>)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 F3(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 -296.4 Q F3108 320.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 -E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F3108 332.4 Q F1 -(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a block special \214le.).15 E F3108 344.4 Q F1 -(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a character special \214le.).15 E F3108 356.4 Q -F1(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F3108 368.4 Q F1 -(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) -2.5 G(ists.).15 E F3108 380.4 Q F1(\214le)2.5 E F0 -.35(Tr)12.25 G -(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a re).15 E -(gular \214le.)-.15 E F3108 392.4 Q F1(\214le)2.5 E F0 -.35(Tr) -10.58 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is set-group-id.).15 E F3108 404.4 Q F1(\214le)2.5 E F0 --.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F3108 416.4 Q F1(\214le)2.5 E -F0 -.35(Tr)10.02 G(ue if).35 E F1(\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 F3108 428.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 -E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a named pipe \(FIFO\).) -.15 E F3108 440.4 Q F1(\214le)2.5 E F0 -.35(Tr)11.14 G(ue if).35 E -F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F3108 -452.4 Q F1(\214le)2.5 E F0 -.35(Tr)11.69 G(ue if).35 E F1(\214le)2.5 E -F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F3 -108 464.4 Q F1(fd)2.5 E F0 -.35(Tr)16.69 G(ue if \214le descriptor).35 E -F1(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F3108 -476.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E -F0 -.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F3 -108 488.4 Q F1(\214le)2.5 E F0 -.35(Tr)8.36 G(ue if).35 E F1 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is writable.).15 E F3108 -500.4 Q F1(\214le)2.5 E F0 -.35(Tr)10.58 G(ue if).35 E F1(\214le)2.5 E -F0 -.15(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F3 -108 512.4 Q F1(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F1 -(\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 F3108 524.4 Q F1 -(\214le)2.5 E F0 -.35(Tr)8.91 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a symbolic link.).15 E F3108 536.4 Q F1(\214le) -2.5 E F0 -.35(Tr)8.36 G(ue if).35 E F1(\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 F3 -108 548.4 Q F1(\214le)2.5 E F0 -.35(Tr)7.8 G(ue if).35 E F1 -(\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 F3108 560.4 Q F1 -(\214le)2.5 E F0 -.35(Tr)10.02 G(ue if).35 E F1(\214le)2.5 E F0 -.15(ex) -2.5 G(ists and is a sock).15 E(et.)-.1 E F1(\214le1)108 572.4 Q F3 -(\255ef)2.5 E F1(\214le2)2.5 E F0 -.35(Tr)144 584.4 S(ue if).35 E F1 -(\214le1)2.5 E F0(and)2.5 E F1(\214le2)2.5 E F0(refer to the same de)2.5 -E(vice and inode numbers.)-.25 E F1(\214le1)108 596.4 Q F02.5 E F3 -(nt)A F1(\214le2)2.5 E F0 -.35(Tr)144 608.4 S .039(ue if).35 F F1 -(\214le1)2.539 E F0 .039(is ne)2.539 F .039 -(wer \(according to modi\214cation date\) than)-.25 F F1(\214le2)2.539 E -F0 2.539(,o)C 2.539(ri)-2.539 G(f)-2.539 E F1(\214le1)2.539 E F0 -.15 -(ex)2.539 G .039(ists and).15 F F1(\214le2)2.539 E F0 .038(does not.) -2.538 F F1(\214le1)108 620.4 Q F02.5 E F3(ot)A F1(\214le2)2.5 E F0 --.35(Tr)144 632.4 S(ue if).35 E F1(\214le1)2.5 E F0(is older than)2.5 E -F1(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F1(\214le2)2.5 E F0 --.15(ex)2.5 G(ists and).15 E F1(\214le1)2.5 E F0(does not.)2.5 E F3 -108 644.4 Q F1(optname)2.5 E F0 -.35(Tr)144 656.4 S .262 -(ue if the shell option).35 F F1(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 F32.763 E F0(option to the)144 668.4 Q F3(set)2.5 E F0 -.2(bu) -2.5 G(iltin belo).2 E -.65(w.)-.25 G F3108 680.4 Q F1(varname)2.5 -E F0 -.35(Tr)144 692.4 S(ue if the shell v).35 E(ariable)-.25 E F1 -(varname)2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E -F3108 704.4 Q F1(varname)2.5 E F0 -.35(Tr)144 716.4 S -(ue if the shell v).35 E(ariable)-.25 E F1(varname)2.79 E F0 -(is set and is a name reference.)2.68 E(GNU Bash 4.2)72 768 Q -(2013 January 8)144.29 E(30)193.45 E 0 Cg EP -%%Page: 31 31 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF108 84 Q/F2 10/Times-Italic@0 SF -(string)2.5 E F0 -.35(Tr)144 96 S(ue if the length of).35 E F2(string) -2.5 E F0(is zero.)2.5 E F2(string)108 108 Q F1108 120 Q F2(string) -2.5 E F0 -.35(Tr)144 132 S(ue if the length of).35 E F2(string)2.84 E F0 -(is non-zero.)2.72 E F2(string1)108 148.8 Q F1(==)2.5 E F2(string2)2.5 E -(string1)108 160.8 Q F1(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 172.8 S -.862(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 -(should be used with the)3.361 F F1(test)3.361 E F0 .861 -(command for POSIX conformance.)3.361 F .446(When used with the)144 -184.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 196.8 Q F0(\).)A F2 -(string1)108 213.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 225.6 S -(ue if the strings are not equal.).35 E F2(string1)108 242.4 Q F1(<)2.5 -E F2(string2)2.5 E F0 -.35(Tr)144 254.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 271.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 -(Tr)144 283.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 -300 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 312 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 324 R -F2(ar)144 336 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 352.8 Q(ANSION)-.81 E F0 -.614(When a simple command is e)108 364.8 R -.15(xe)-.15 G .614 -(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613 -(xpansions, assignments, and redi-)-.15 F(rections, from left to right.) -108 376.8 Q 26(1. The)108 393.6 R -.1(wo)4.348 G 1.848 -(rds that the parser has mark).1 F 1.848(ed as v)-.1 F 1.849 -(ariable assignments \(those preceding the command)-.25 F -(name\) and redirections are sa)144 405.6 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E 26(2. The)108 422.4 R -.1(wo)3.664 G 1.164 -(rds 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 -434.4 R .775(xpansion, the \214rst w)-.15 F .775(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 446.4 Q(guments.)-.18 E 26(3. Redirections)108 463.2 R -(are performed as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F3 -(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0 26(4. The)108 480 R(te) -3.217 E .717(xt after the)-.15 F F1(=)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 492 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 504 Q .332 -(If no command name results, the v)108 520.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 532.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 544.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 -(the command e)108 556.8 Q(xits with a non-zero status.)-.15 E .149 -(If no command name results, redirections are performed, b)108 573.6 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 585.6 -Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 602.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 -614.4 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 626.4 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 638.4 -Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 655.2 Q F0 -.546(After a command has been split into w)108 667.2 R .547 -(ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 679.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 696 R .379(If there e)5.379 F .379 -(xists a shell function by)-.15 F .246(that name, that function is in) -108 708 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 720 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(GNU Bash 4.2)72 768 -Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .31(If the name is neither a shell function nor a b)108 84 R .309 -(uiltin, and contains no slashes,)-.2 F/F1 10/Times-Bold@0 SF(bash)2.809 -E F0 .309(searches each element of)2.809 F(the)108 96 Q/F2 9 -/Times-Bold@0 SF -.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 F1(Bash)5.662 E F0 .663 -(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108 -108 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F1(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 120 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 search\ -es for a de\214ned shell function named)108 132 R F1(command_not_f)3.455 -E(ound_han-)-.25 E(dle)108 144 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 156 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 168 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 184.8 R -.15 -(xe)-.15 G 1.09(cutes the).15 F .198(named program in a separate e)108 -196.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 208.8 Q -(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 -(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 225.6 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 237.6 R/F3 10 -/Times-Italic@0 SF .678(shell script)3.178 F F0 3.178(,a\214)C .678 -(le containing shell commands.)-3.178 F 3.178(As)5.678 G .678 -(ubshell is spa)-3.178 F .677(wned to e)-.15 F -.15(xe)-.15 G .677 -(cute it.).15 F(This)5.677 E .329 -(subshell reinitializes itself, so that the ef)108 249.6 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 261.6 R 1.219 -(xception that the locations of commands remembered by the parent \(see) --.15 F F1(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 273.6 S(IL).09 E(TIN COMMANDS)-.828 E/F4 9 -/Times-Roman@0 SF(\))A F0(are retained by the child.)2.25 E .347 -(If the program is a \214le be)108 290.4 R .347(ginning with)-.15 F F1 -(#!)2.847 E F0 2.847(,t)C .348(he remainder of the \214rst line speci\ -\214es an interpreter for the pro-)-2.847 F 3.178(gram. The)108 302.4 R -.678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpre\ -ter on operating systems that do not handle this e).15 F -.15(xe)-.15 G -(cutable).15 E 1.192(format themselv)108 314.4 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 326.4 R -1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F -(command ar)108 338.4 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95 -/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 355.2 Q(ONMENT)-.329 E F0 -(The shell has an)108 367.2 Q F3 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E -(onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 -E 32.5<836f>108 384 S 1.405(pen \214les inherited by the shell at in) --32.5 F -.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 396 S(iltin).2 E 32.5<8374>108 412.8 S -(he current w)-32.5 E(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 32.5 -<8374>108 429.6 S(he \214le creation mode mask as set by)-32.5 E F1 -(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent) --2.5 E 32.5<8363>108 446.4 S(urrent traps set by)-32.5 E F1(trap)2.5 E -F0 32.5<8373>108 463.2 S .257(hell parameters that are set by v)-32.5 F -.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 475.2 Q(vironment)-.4 E 32.5<8373>108 492 S -(hell functions de\214ned during e)-32.5 E -.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 32.5<836f>108 508.8 S -(ptions enabled at in)-32.5 E -.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 32.5<836f>108 525.6 S(ptions enabled by)-32.5 E F1(shopt)2.5 E F0 -32.5<8373>108 542.4 S(hell aliases de\214ned with)-32.5 E F1(alias)2.5 E -F0 32.5<8376>108 559.2 S -(arious process IDs, including those of background jobs, the v)-32.75 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(PPID)2.5 E F0 .426(When a simple command other than a b)108 576 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 588 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 600 Q 32.5<8374>108 616.8 S 1.055(he shell')-32.5 F -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 628.8 Q 32.5<8374>108 645.6 S(he current w)-32.5 E -(orking directory)-.1 E 32.5<8374>108 662.4 S -(he \214le creation mode mask)-32.5 E 32.5<8373>108 679.2 S .857(hell v) --32.5 F .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 691.2 Q(vironment) --.4 E 32.5<8374>108 708 S .306 -(raps caught by the shell are reset to the v)-32.5 F .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 720 Q -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 2.5(Ac)108 84 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 100.8 R -.2(vo)-.4 G -.1 -(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 112.8 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 124.8 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 136.8 -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 148.8 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 -165.6 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 -/F1 10/Times-Bold@0 SF3.876 E F0 1.376(option from the parent) -3.876 F 2.5(shell. When)108 177.6 R(not in)2.5 E/F2 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 F1 -2.5 E F0(option in such subshells.)2.5 E .404(If a command is follo)108 -194.4 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 206.4 R F2(/de)2.698 E(v/null)-.15 E F0 5.198 -(.O)C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc) -.1 G .197(ommand inherits the \214le descriptors of the calling shell) --2.698 F(as modi\214ed by redirections.)108 218.4 Q/F3 10.95 -/Times-Bold@0 SF(ENVIR)72 235.2 Q(ONMENT)-.329 E F0 2.353 -(When a program is in)108 247.2 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(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 259.2 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 276 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 288 Q .144(vironment and creates a parameter for each\ - name found, automatically marking 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 300 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 312 -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 324 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 336 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 348 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 360 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E -.562(The en)108 376.8 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 388.8 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 400.8 Q -(vironment seen by that command.)-.4 E .81(If the)108 417.6 R F1 -3.31 E F0 .81(option is set \(see the)3.31 F F1(set)3.31 E F0 -.2(bu) -3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 -.81(parameter assignments are placed in)3.82 F(the en)108 429.6 Q -(vironment for a command, not just those that precede the command name.) --.4 E(When)108 446.4 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1 -(ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v) --3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085 -(is set to the full \214lename of the command and)3.586 F -(passed to that command in its en)108 458.4 Q(vironment.)-.4 E F3 -(EXIT ST)72 475.2 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 487.2 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 499.2 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 511.2 Q 5.673(.E)-.65 G -.673(xit statuses from shell b)-5.673 F .673 -(uiltins and compound commands are also limited to this range. Under)-.2 -F(certain circumstances, the shell will use special v)108 523.2 Q -(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15(Fo)108 -540 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 552 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 564 Q F2(N)2.5 E F0(,)A F1(bash) -2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E -(xit status.)-.15 E .405 -(If a command is not found, the child process created to e)108 580.8 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 592.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 609.6 -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 626.4 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 638.4 Q 2.5(ye)-.15 G -.15(xe)-2.65 G 2.5(cute. All).15 -F -.2(bu)2.5 G(iltins return an e).2 E -(xit status of 2 to indicate incorrect usage.)-.15 E F1(Bash)108 655.2 Q -F0 .202(itself returns the e)2.702 F .202 -(xit status of the last command e)-.15 F -.15(xe)-.15 G .201 -(cuted, unless a syntax error occurs, in which case).15 F(it e)108 667.2 -Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1 -(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F3 -(SIGN)72 684 Q(ALS)-.219 E F0(When)108 696 Q F1(bash)3.182 E F0 .682 -(is interacti)3.182 F -.15(ve)-.25 G 3.182(,i).15 G 3.182(nt)-3.182 G -.682(he absence of an)-3.182 F 3.183(yt)-.15 G .683(raps, it ignores) --3.183 F F4(SIGTERM)3.183 E F0 .683(\(so that)2.933 F F1 .683(kill 0) -3.183 F F0 .683(does not kill an)3.183 F(interacti)108 708 Q .758 -.15 -(ve s)-.25 H .458(hell\), and).15 F F4(SIGINT)2.958 E F0 .458 -(is caught and handled \(so that the)2.708 F F1(wait)2.958 E F0 -.2(bu) -2.958 G .457(iltin is interruptible\).).2 F .457(In all cases,)5.457 F -F1(bash)108 720 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 F1(bash)2.5 E F0(ignores)2.5 -E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 -E F4(SIGTSTP)2.5 E F5(.)A F0(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(Non-b)108 84 Q 1.064(uiltin commands run by)-.2 F/F1 10 -/Times-Bold@0 SF(bash)3.564 E F0(ha)3.564 E 1.365 -.15(ve s)-.2 H 1.065 -(ignal handlers set to the v).15 F 1.065 -(alues inherited by the shell from its)-.25 F 3.248(parent. When)108 96 -R .748(job control is not in ef)3.248 F .747 -(fect, asynchronous commands ignore)-.25 F/F2 9/Times-Bold@0 SF(SIGINT) -3.247 E F0(and)2.997 E F2(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 -F .652(tion to these inherited handlers.)108 108 R .653 -(Commands run as a result of command substitution ignore the k)5.652 F --.15(ey)-.1 G(board-).15 E(generated job control signals)108 120 Q F2 -(SIGTTIN)2.5 E/F3 9/Times-Roman@0 SF(,)A F2(SIGTT)2.25 E(OU)-.162 E F3 -(,)A F0(and)2.25 E F2(SIGTSTP)2.5 E F3(.)A F0 2.046(The shell e)108 -136.8 R 2.046(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F2 -(SIGHUP)4.545 E F3(.)A F0 2.045(Before e)6.545 F 2.045 -(xiting, an interacti)-.15 F 2.345 -.15(ve s)-.25 H 2.045 -(hell resends the).15 F F2(SIGHUP)108 148.8 Q F0 1.004 -(to all jobs, running or stopped.)3.254 F 1.004(Stopped jobs are sent) -6.004 F F2(SIGCONT)3.505 E F0 1.005(to ensure that the)3.255 F 3.505(yr) --.15 G(ecei)-3.505 E 1.305 -.15(ve t)-.25 H(he).15 E F2(SIGHUP)108 160.8 -Q F3(.)A F0 2.53 -.8(To p)5.43 H(re).8 E -.15(ve)-.25 G .93(nt the shel\ -l from sending the signal to a particular job, it should be remo).15 F --.15(ve)-.15 G 3.429(df).15 G .929(rom the)-3.429 F 1.356 -(jobs table with the)108 172.8 R F1(diso)3.856 E(wn)-.1 E F0 -.2(bu) -3.856 G 1.356(iltin \(see).2 F F2 1.356(SHELL B)3.856 F(UIL)-.09 E 1.356 -(TIN COMMANDS)-.828 F F0(belo)3.607 E 1.357(w\) or mark)-.25 F 1.357 -(ed to not recei)-.1 F -.15(ve)-.25 G F2(SIGHUP)108 184.8 Q F0(using) -2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A .166(If the)108 201.6 R F1 -(huponexit)2.666 E F0 .166(shell option has been set with)2.666 F F1 -(shopt)2.666 E F0(,)A F1(bash)2.666 E F0 .166(sends a)2.666 F F2(SIGHUP) -2.666 E F0 .166(to all jobs when an interacti)2.416 F -.15(ve)-.25 G -(login shell e)108 213.6 Q(xits.)-.15 E(If)108 230.4 Q F1(bash)3.046 E -F0 .546(is w)3.046 F .546(aiting for a command to complete and recei)-.1 -F -.15(ve)-.25 G 3.046(sas).15 G .546 -(ignal for which a trap has been set, the trap)-3.046 F .663 -(will not be e)108 242.4 R -.15(xe)-.15 G .663 -(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E -F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .99 -(via the)108 254.4 R F1(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 F1 -(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F -(return immediately with an e)108 266.4 Q -(xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E/F4 10.95/Times-Bold@0 SF(JOB CONTR)72 -283.2 Q(OL)-.329 E/F5 10/Times-Italic@0 SF -.25(Jo)108 295.2 S 4.568(bc) -.25 G(ontr)-4.568 E(ol)-.45 E F0 2.068(refers to the ability to selecti) -5.078 F -.15(ve)-.25 G 2.067(ly stop \().15 F F5(suspend)A F0 4.567(\)t) -C 2.067(he e)-4.567 F -.15(xe)-.15 G 2.067 -(cution of processes and continue).15 F(\()108 307.2 Q F5 -.37(re)C -(sume).37 E F0 3.201(\)t)C .701(heir e)-3.201 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.002 -.15(ve i)-.25 H(nterf).15 E(ace) --.1 E(supplied jointly by the operating system k)108 319.2 Q(ernel')-.1 -E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E -F1(bash)2.5 E F0(.)A .785(The shell associates a)108 336 R F5(job)5.025 -E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F .784 -(eeps a table of currently e)-.1 F -.15(xe)-.15 G .784 -(cuting jobs, which may be).15 F .34(listed with the)108 348 R F1(jobs) -2.84 E F0 2.84(command. When)2.84 F F1(bash)2.84 E F0 .341 -(starts a job asynchronously \(in the)2.84 F F5(bac)2.841 E(kgr)-.2 E -(ound)-.45 E F0 .341(\), it prints a line).77 F(that looks lik)108 360 Q -(e:)-.1 E([1] 25647)144 376.8 Q .241(indicating that this job is job nu\ -mber 1 and that the process ID of the last process in the pipeline asso\ -ciated)108 393.6 R .732(with this job is 25647.)108 405.6 R .733 -(All of the processes in a single pipeline are members of the same job) -5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 417.6 Q F5(job) -4.24 E F0(abstraction as the basis for job control.)2.73 E 3.063 -.8 -(To f)108 434.4 T 1.463(acilitate the implementation of the user interf) -.7 F 1.462(ace to job control, the operating system maintains the)-.1 F -.87(notion of a)108 446.4 R F5(curr)3.37 E .87(ent terminal pr)-.37 F -.871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .871 -(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 -458.4 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F F2(SIG-)2.522 E(INT)108 470.4 Q -F3(.)A F0 1.346(These processes are said to be in the)5.846 F F5(for) -3.847 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F5(Bac)6.927 E -(kgr)-.2 E(ound)-.45 E F0 1.347(processes are those whose process)4.617 -F .146(group ID dif)108 482.4 R .146(fers from the terminal')-.25 F .146 -(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145 -(board-generated signals.).15 F .145(Only fore-)5.145 F .16 -(ground processes are allo)108 494.4 R .16(wed to read from or)-.25 F -2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 -10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) --2.66 F(-)-.2 E 3.052(minal. Background)108 506.4 R .551 -(processes which attempt to read from \(write to when)3.052 F F6 .551 -(stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F -.717(terminal are sent a)108 518.4 R F2 .717(SIGTTIN \(SIGTT)3.217 F -(OU\))-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 -G .718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718 -(hich, unless caught, sus-).4 F(pends the process.)108 530.4 Q 1.088 -(If the operating system on which)108 547.2 R F1(bash)3.588 E F0 1.088 -(is running supports job control,)3.588 F F1(bash)3.587 E F0 1.087 -(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8(Ty)108 559.2 S -.301(ping the).8 F F5(suspend)3.141 E F0 .301(character \(typically) -3.571 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.143(stopped and returns control to)108 571.2 R F1(bash)4.642 E F0 -7.142(.T)C 2.142(yping the)-7.942 F F5 2.142(delayed suspend)4.992 F F0 -2.142(character \(typically)5.412 F F1(^Y)4.642 E F0 4.642(,C)C -(ontrol-Y\))-4.642 E .021(causes the process to be stopped when it atte\ -mpts to read input from the terminal, and control to be returned)108 -583.2 R(to)108 595.2 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 .894 -(background, the)108 607.2 R F1(fg)3.394 E F0 .895 -(command to continue it in the fore)3.394 F .895(ground, or the)-.15 F -F1(kill)3.395 E F0 .895(command to kill it.)3.395 F(A)5.895 E F1(^Z) -3.395 E F0(tak)3.395 E(es)-.1 E(ef)108 619.2 Q .949(fect immediately) --.25 F 3.449(,a)-.65 G .948(nd has the additional side ef)-3.449 F .948 -(fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 631.2 Q .777(There are a number of w)108 648 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 660 Q -F5(jobspec)A F0 3.458(\). Job)B(number)3.458 E F5(n)3.818 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 672 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 684 Q F1(ce)3.464 E F0(job)3.464 E -5.964(.I)-.4 G 3.463(fap)-5.964 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.463(,o)C 3.463(nt)-3.463 G .963(he other)-3.463 F .086 -(hand, refers to an)108 696 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 708 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 -F5(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) --2.518 F .494(the last job stopped while it w)108 720 R .495 -(as in the fore)-.1 F .495(ground or started in the background.)-.15 F -(The)5.495 E F5(pr)4.245 E -.15(ev)-.37 G .495(ious job).15 F F0 .495 -(may be)3.225 F(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .788(referenced using)108 84 R/F1 10/Times-Bold@0 SF<25ad>3.288 E -F0 5.788(.I)C 3.288(ft)-5.788 G .787(here is only a single job,)-3.288 F -F1(%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .787 -(can both be used to refer to that job)3.287 F 5.787(.I)-.4 G(n)-5.787 E -.256(output pertaining to jobs \(e.g., the output of the)108 96 R F1 -(jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa) --.1 G .257(ys \215agged with a).1 F F1(+)2.757 E F0(,)A .411 -(and the pre)108 108 R .411(vious job with a)-.25 F F12.911 E F0 -5.411(.A)C .411(single % \(with no accompan)-2.5 F .41 -(ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E -(rent job)108 120 Q(.)-.4 E .443 -(Simply naming a job can be used to bring it into the fore)108 136.8 R -(ground:)-.15 E F1(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) --.15 F F1 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C -(ringing)-2.944 E 1.473(job 1 from the background into the fore)108 -148.8 R 3.973(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.972 G 1.472 -(%1 &').63 F(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F -(equi)108 160.8 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1') -.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 177.6 R --.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) -5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.631 G .131 -(its until it is about to print a).1 F .158 -(prompt before reporting changes in a job')108 189.6 R 2.658(ss)-.55 G -.158(tatus so as to not interrupt an)-2.658 F 2.657(yo)-.15 G .157 -(ther output.)-2.657 F .157(If the)5.157 F F12.657 E F0 .157 -(option to)2.657 F(the)108 201.6 Q F1(set)3.951 E F0 -.2(bu)3.951 G -1.451(iltin command is enabled,).2 F F1(bash)3.951 E F0 1.452 -(reports such changes immediately)3.951 F 6.452(.A)-.65 G 1.752 -.15 -(ny t)-6.452 H 1.452(rap on).15 F/F2 9/Times-Bold@0 SF(SIGCHLD)3.952 E -F0(is)3.702 E -.15(exe)108 213.6 S(cuted for each child that e).15 E -(xits.)-.15 E .033(If an attempt to e)108 230.4 R(xit)-.15 E F1(bash) -2.533 E F0 .033(is made while jobs are stopped \(or)2.533 F 2.532(,i)-.4 -G 2.532(ft)-2.532 G(he)-2.532 E F1(checkjobs)2.532 E F0 .032 -(shell option has been enabled)2.532 F 2.019(using the)108 242.4 R F1 -(shopt)4.519 E F0 -.2(bu)4.519 G 2.019 -(iltin, running\), the shell prints a w).2 F 2.02 -(arning message, and, if the)-.1 F F1(checkjobs)4.52 E F0 2.02 -(option is)4.52 F .459(enabled, lists the jobs and their statuses.)108 -254.4 R(The)5.459 E F1(jobs)2.959 E F0 .458 -(command may then be used to inspect their status.)2.958 F .458(If a) -5.458 F .603(second attempt to e)108 266.4 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 278.4 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F3 -10.95/Times-Bold@0 SF(PR)72 295.2 Q(OMPTING)-.329 E F0 .645(When e)108 -307.2 R -.15(xe)-.15 G .645(cuting interacti).15 F -.15(ve)-.25 G(ly).15 -E(,)-.65 E F1(bash)3.145 E F0 .645(displays the primary prompt)3.145 F -F2(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.825 -(and the secondary prompt)108 319.2 R F2(PS2)4.325 E F0 1.825 -(when it needs more input to complete a command.)4.075 F F1(Bash)6.826 E -F0(allo)4.326 E 1.826(ws these)-.25 F 1.499(prompt strings to be custom\ -ized by inserting a number of backslash-escaped special characters that\ - are)108 331.2 R(decoded as follo)108 343.2 Q(ws:)-.25 E F1(\\a)144 -355.2 Q F0(an ASCII bell character \(07\))28.22 E F1(\\d)144 367.2 Q F0 -(the date in "W)27.66 E(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E F1(\\D{)144 379.2 Q/F4 10/Times-Italic@0 SF(format) -A F1(})A F0(the)180 391.2 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 -403.2 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 415.2 Q F0 -(an ASCII escape character \(033\))28.78 E F1(\\h)144 427.2 Q F0 -(the hostname up to the \214rst `.)27.66 E(')-.7 E F1(\\H)144 439.2 Q F0 -(the hostname)25.44 E F1(\\j)144 451.2 Q F0 -(the number of jobs currently managed by the shell)29.89 E F1(\\l)144 -463.2 Q F0(the basename of the shell')30.44 E 2.5(st)-.55 G(erminal de) --2.5 E(vice name)-.25 E F1(\\n)144 475.2 Q F0(ne)27.66 E(wline)-.25 E F1 -(\\r)144 487.2 Q F0(carriage return)28.78 E F1(\\s)144 499.2 Q F0 -(the name of the shell, the basename of)29.33 E F1($0)2.5 E F0 -(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1(\\t)144 -511.2 Q F0(the current time in 24-hour HH:MM:SS format)29.89 E F1(\\T) -144 523.2 Q F0(the current time in 12-hour HH:MM:SS format)26.55 E F1 -(\\@)144 535.2 Q F0(the current time in 12-hour am/pm format)23.92 E F1 -(\\A)144 547.2 Q F0(the current time in 24-hour HH:MM format)26 E F1 -(\\u)144 559.2 Q F0(the username of the current user)27.66 E F1(\\v)144 -571.2 Q F0(the v)28.22 E(ersion of)-.15 E F1(bash)2.5 E F0 -(\(e.g., 2.00\))2.5 E F1(\\V)144 583.2 Q F0(the release of)26 E 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 595.2 Q F0 .116(the current w)26 F -.116(orking directory)-.1 F 2.616(,w)-.65 G(ith)-2.616 E F2($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 F2(PR)180 607.2 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 --.25(va)2.25 G(riable\)).25 E F1(\\W)144 619.2 Q F0 -(the basename of the current w)23.22 E(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 631.2 Q F0(the history number of this command)29.89 E -F1(\\#)144 643.2 Q F0(the command number of this command)28.22 E F1(\\$) -144 655.2 Q F0(if the ef)28.22 E(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 667.2 Q F4(nnn)A F0 -(the character corresponding to the octal number)18.22 E F4(nnn)2.5 E F1 -(\\\\)144 679.2 Q F0 2.5(ab)30.44 G(ackslash)-2.5 E F1(\\[)144 691.2 Q -F0(be)29.89 E 1.257(gin a sequence of non-printing characters, which co\ -uld be used to embed a terminal)-.15 F(control sequence into the prompt) -180 703.2 Q F1(\\])144 715.2 Q F0 -(end a sequence of non-printing characters)29.89 E(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .12(The command number and the history number are usually dif)108 -84 R .119(ferent: the history number of a command is its)-.25 F 1.585(p\ -osition in the history list, which may include commands restored from t\ -he history \214le \(see)108 96 R/F1 9/Times-Bold@0 SF(HIST)4.085 E(OR) --.162 E(Y)-.315 E F0(belo)108 108 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 120 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 132 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/F2 -10/Times-Bold@0 SF(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351 -(shell option \(see the)2.852 F(description of the)108 144 Q F2(shopt) -2.5 E F0(command under)2.5 E F1(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E/F3 10.95/Times-Bold@0 SF(READLINE)72 -160.8 Q F0 .15 -(This is the library that handles reading input when using an interacti) -108 172.8 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F F2 -(\255\255noediting)2.651 E F0(option)2.651 E 1.209(is gi)108 184.8 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 196.8 Q .851 -(ault, the line editing commands are similar to those of Emacs.)-.1 F -3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852 -(ace is also)-.1 F -.2(av)108 208.8 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 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 220.8 Q F1 .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 232.8 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 249.6 Q -F0 .463(In this section, the Emacs-style notation is used to denote k) -108 261.6 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 273.6 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 285.6 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 297.6 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 309.6 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 326.4 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 -338.4 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.019(acts in the forw)108 350.4 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 362.4 Q -(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) --.25 E -.65(w.)-.25 G .811(When a command is described as)108 379.2 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 .812 -(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F4 -(yank-)-3.312 E(ing)108 391.2 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 403.2 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 415.2 Q F2(Readline Initialization)87 432 Q F0 .091(Readline is cus\ -tomized by putting commands in an initialization \214le \(the)108 444 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 456 R .196(en from the v) --.1 F .196(alue of the)-.25 F F1(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 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 468 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25 -(va)108 480 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 492 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 504 R(lines denote k)2.5 E .3 -.15 -(ey b)-.1 H(indings and v).15 E(ariable settings.)-.25 E .986(The def) -108 520.8 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 532.8 Q(wn commands and bindings.)-.25 E -.15 -(Fo)108 549.6 S 2.5(re).15 G(xample, placing)-2.65 E -(M\255Control\255u: uni)144 566.4 Q -.15(ve)-.25 G(rsal\255ar).15 E -(gument)-.18 E(or)108 578.4 Q(C\255Meta\255u: uni)144 590.4 Q -.15(ve) --.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 602.4 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 619.2 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 631.2 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 648 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 660 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F2 -(Readline K)87 676.8 Q(ey Bindings)-.25 E F0 .366 -(The syntax for controlling k)108 688.8 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 .382(command or the te)108 700.8 R .383(xt of a macro and a k) --.15 F .683 -.15(ey s)-.1 H .383 -(equence to which it should be bound. The name may be speci-).15 F .853 -(\214ed in one of tw)108 712.8 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 724.8 Q(GNU Bash 4.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 1.541(When using the form)108 84 R/F1 10/Times-Bold@0 SF -.1(ke) -4.041 G(yname).1 E F0(:)A/F2 10/Times-Italic@0 SF(function\255name).833 -E F0(or)4.041 E F2(macr)4.042 E(o)-.45 E F0(,)A F2 -.1(ke)4.042 G(yname) --.2 E F0 1.542(is the name of a k)4.222 F 1.842 -.15(ey s)-.1 H 1.542 -(pelled out in).15 F 2.5(English. F)108 96 R(or e)-.15 E(xample:)-.15 E -(Control-u: uni)144 120 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E -(Meta-Rubout: backw)144 132 Q(ard-kill-w)-.1 E(ord)-.1 E -(Control-o: "> output")144 144 Q .699(In the abo)108 160.8 R .998 -.15 -(ve ex)-.15 H(ample,).15 E F2(C\255u)3.038 E F0 .698 -(is bound to the function)3.448 F F1(uni)3.198 E -.1(ve)-.1 G -(rsal\255ar).1 E(gument)-.1 E F0(,)A F2(M\255DEL)3.878 E F0 .698 -(is bound to the func-)3.728 F(tion)108 172.8 Q F1 -(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F2 -(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F .259 -(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -184.8 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 201.6 R F1("k)2.556 -E(eyseq")-.1 E F0(:)A F2(function\255name).833 E F0(or)2.556 E F2(macr) -2.556 E(o)-.45 E F0(,)A F1 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 -(fers from)-.25 F F1 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 -(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 -(denoting an entire k)108 213.6 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ -ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .386(GNU Emacs style k)108 225.6 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 237.6 Q("\\C\255u": uni)144 261.6 Q -.15(ve) --.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 273.6 Q -("\\e[11~": "Function K)144 285.6 Q .3 -.15(ey 1)-.25 H(").15 E .314 -(In this e)108 302.4 R(xample,)-.15 E F2(C\255u)2.654 E F0 .314(is ag) -3.064 F .315(ain bound to the function)-.05 F F1(uni)2.815 E -.1(ve)-.1 -G(rsal\255ar).1 E(gument)-.1 E F0(.)A F2 .315(C\255x C\255r)5.155 F F0 -.315(is bound to the func-)3.545 F(tion)108 314.4 Q F1 -.18(re)2.5 G -.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F2 -(ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3 -(Function Key 1)2.5 E F0(.)A -(The full set of GNU Emacs style escape sequences is)108 331.2 Q F1 -<5c43ad>144 343.2 Q F0(control pre\214x)20.3 E F1<5c4dad>144 355.2 Q F0 -(meta pre\214x)18.08 E F1(\\e)144 367.2 Q F0(an escape character)28.78 E -F1(\\\\)144 379.2 Q F0(backslash)30.44 E F1(\\")144 391.2 Q F0 -(literal ")27.67 E F1<5c08>144 403.2 Q F0(literal \010)30.44 E(In addit\ -ion to the GNU Emacs style escape sequences, a second set of backslash \ -escapes is a)108 420 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 432 Q F0 -(alert \(bell\))28.22 E F1(\\b)144 444 Q F0(backspace)27.66 E F1(\\d)144 -456 Q F0(delete)27.66 E F1(\\f)144 468 Q F0(form feed)29.89 E F1(\\n)144 -480 Q F0(ne)27.66 E(wline)-.25 E F1(\\r)144 492 Q F0(carriage return) -28.78 E F1(\\t)144 504 Q F0(horizontal tab)29.89 E F1(\\v)144 516 Q F0 --.15(ve)28.22 G(rtical tab).15 E F1(\\)144 528 Q F2(nnn)A F0 -(the eight-bit character whose v)18.22 E(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 -540 Q F2(HH)A F0(the eight-bit character whose v)13.78 E(alue is the he) --.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E -2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142 -(When entering the te)108 556.8 R 1.141(xt of a macro, single or double\ - quotes must be used to indicate a macro de\214nition.)-.15 F .089 -(Unquoted te)108 568.8 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 -580.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 597.6 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F -.73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the) -.15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045 -(The editing mode may be switched during interacti)108 609.6 R .345 -.15 -(ve u)-.25 H .046(se by using the).15 F F12.546 E F0 .046 -(option to the)2.546 F F1(set)2.546 E F0 -.2(bu)2.546 G .046 -(iltin command).2 F(\(see)108 621.6 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 F1 -(Readline V)87 638.4 Q(ariables)-.92 E F0 .044(Readline has v)108 650.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.553 E(tr)108 662.4 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F1(set)144 679.2 Q F2 -(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -696 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) --.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79(\(without re)3.29 -F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .449(nized v) -108 708 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 720 Q -.15(ve)-.25 G .467 -(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On) -2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 -F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468 -(he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E -.25(va)108 84 S(lues are:).25 E/F1 10/Times-Bold@0 SF -(bell\255style \(audible\))108 100.8 Q F0 .011 -(Controls what happens when readline w)144 112.8 R .011 -(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51 -E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 -(rings the bell.)144 124.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 136.8 Q 2.5(sb)-.55 G(ell.) --2.5 E F1(bind\255tty\255special\255chars \(On\))108 148.8 Q F0 .056 -(If set to)144 160.8 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\ -s to bind the control characters treated specially by the k)-2.556 F -(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 172.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(color)108 184.8 Q(ed\255stats \(Off\))-.18 E F0 -1.579(If set to)144 196.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 208.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 220.8 Q(`#')-.63 E('\))-.63 E F0 .885 -(The string that is inserted when the readline)144 232.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 244.8 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\255ignor)108 256.8 Q -(e\255case \(Off\))-.18 E F0(If set to)144 268.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\255pr) -108 280.8 Q(e\214x\255display\255length \(0\))-.18 E F0 .829(The length\ - in characters of the common pre\214x of a list of possible completions\ - that is displayed)144 292.8 R 1.275(without modi\214cation.)144 304.8 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 316.8 S(lue are replaced with a\ -n ellipsis when displaying possible completions.).25 E F1 -(completion\255query\255items \(100\))108 328.8 Q F0 .529 -(This determines when the user is queried about vie)144 340.8 R .53 -(wing the number of possible completions gen-)-.25 F .561(erated by the) -144 352.8 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 -364.8 R .783(If the number of possible completions is greater than or e\ -qual to the v)5.782 F .783(alue of this)-.25 F -.25(va)144 376.8 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 388.8 Q F1(con)108 -400.8 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 412.8 -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 424.8 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 -SF .541(meta pr)3.041 F(e-)-.37 E<8c78>144 436.8 Q F0(\).)A F1 -(disable\255completion \(Off\))108 448.8 Q F0 .038(If set to)144 460.8 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 472.8 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E -F0(.)A F1(editing\255mode \(emacs\))108 484.8 Q F0 .142 -(Controls whether readline be)144 496.8 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 508.8 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E -F0(.)A F1(echo\255contr)108 520.8 Q(ol\255characters \(On\))-.18 E F0 -1.21(When set to)144 532.8 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G -1.211(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 -(upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 544.8 Q -.15(ey)-.1 -G(board.).15 E F1(enable\255k)108 556.8 Q(eypad \(Off\))-.1 E F0 .893 -(When set to)144 568.8 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 580.8 Q 2.5(wk)-.25 G -.15(ey) --2.6 G(s.).15 E F1(enable\255meta\255k)108 592.8 Q(ey \(On\))-.1 E F0 -.64(When set to)144 604.8 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 616.8 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 628.8 Q F0(If set to)144 640.8 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 652.8 Q(eser)-.18 E -.1(ve)-.1 G -(\255point \(Off\)).1 E F0 1.339(If set to)144 664.8 R F1(On)3.839 E F0 -3.839(,t)C 1.338(he history code attempts to place point at the same lo\ -cation on each history line)-3.839 F(retrie)144 676.8 Q -.15(ve)-.25 G -2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F0 -(or)2.5 E F1(next-history)2.5 E F0(.)A F1(history\255size \(0\))108 -688.8 Q F0 .948(Set the maximum number of history entries sa)144 700.8 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 712.8 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 -(ber of history entries is not limited.)144 724.8 Q(By def)5 E -(ault, the number of history entries is not limited.)-.1 E(GNU Bash 4.2) -72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(horizontal\255scr)108 84 Q -(oll\255mode \(Off\))-.18 E F0 .448(When set to)144 96 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 -(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 108 R(w)-.25 E(line.)144 120 Q F1(input\255meta \(Off\))108 132 -Q F0 .227(If set to)144 144 R F1(On)2.727 E F0 2.727(,r)C .228(eadline \ -will enable eight-bit input \(that is, it will not strip the high bit f\ -rom the char)-2.727 F(-)-.2 E .957(acters it reads\), re)144 156 R -.05 -(ga)-.15 G .956(rdless of what the terminal claims it can support.).05 F -.956(The name)5.956 F F1(meta\255\215ag)3.456 E F0 .956(is a)3.456 F -(synon)144 168 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 180 Q -(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))-.63 E F0 .439(\ -The string of characters that should terminate an incremental search wi\ -thout subsequently e)144 192 R -.15(xe)-.15 G(cut-).15 E .935 -(ing the character as a command.)144 204 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 10/Times-Italic@0 SF(ESC)3.434 E F0 -(and)144 216 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) -2.5 E F1 -.1(ke)108 228 S(ymap \(emacs\)).1 E F0 2.02 -(Set the current readline k)144 240 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 252 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.568 E F0(;)A F2(emacs)2.568 E F0 1.543(is equi)144 264 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.044 E F0(also)4.044 E(af)144 276 Q(fects the def)-.25 -E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 288 S -(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 300 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 312 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.356(an tak)-3.856 F 3.856(ea) --.1 G(dditional)-3.856 E .32(input to complete a longer k)144 324 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 .906(use the shorter b)144 336 R .907 -(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 -(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907 -(alue of)-.25 F .05(1000 means that)144 348 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 360 R(alue,)-.25 -E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 -(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed) --2.552 E(to decide which k)144 372 Q .3 -.15(ey s)-.1 H -(equence to complete.).15 E F1(mark\255dir)108 384 Q(ectories \(On\)) --.18 E F0(If set to)144 396 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 408 Q F0(If set to)144 -420 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 432 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 444 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 456 -Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 468 Q F0 .192(This v)144 480 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 492 R .456 -(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) --2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 504 Q F1 -(menu\255complete\255display\255pr)108 516 Q(e\214x \(Off\))-.18 E F0 -1.585(If set to)144 528 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\ -ion displays the common pre\214x of the list of possible completions) --4.085 F(\(which may be empty\) before c)144 540 Q -(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 552 Q F0 -.507(If set to)144 564 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \ -display characters with the eighth bit set directly rather than as a me\ -ta-)-3.007 F(pre\214x)144 576 Q(ed escape sequence.)-.15 E F1 -(page\255completions \(On\))108 588 Q F0 .808(If set to)144 600 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 612 Q F1 -(print\255completions\255horizontally \(Off\))108 624 Q F0 1.319 -(If set to)144 636 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 648 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1 -2.29 -.18(re v)108 660 T(ert\255all\255at\255newline \(Off\)).08 E -F0 .698(If set to)144 672 R F1(On)3.198 E F0 3.198(,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 684 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 696 S(adline) -.18 E F0(.)A(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(sho)108 84 Q -(w\255all\255if\255ambiguous \(Off\))-.1 E F0 .303(This alters the def) -144 96 R .303(ault beha)-.1 F .304(vior of the completion functions.)-.2 -F .304(If set to)5.304 F F1(On)2.804 E F0 2.804(,w)C .304(ords which ha) --2.904 F .604 -.15(ve m)-.2 H(ore).15 E 1.264(than one possible complet\ -ion cause the matches to be listed immediately instead of ringing the) -144 108 R(bell.)144 120 Q F1(sho)108 132 Q -(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.345 -(This alters the def)144 144 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 156 Q(w\255all\255if\255ambiguous)-.1 E F0 6.691(.I)C -4.191(fs)-6.691 G 1.691(et to)-4.191 F F1(On)4.191 E F0 4.191(,w)C 1.691 -(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 -(ore than one possible completion).15 F 1.039(without an)144 168 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 180 Q F1 -(sho)108 192 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.019 -(If set to)144 204 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 216 Q F1 -(skip\255completed\255text \(Off\))108 228 Q F0 .094(If set to)144 240 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 252 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 264 R -1.395(ord being com-)-.1 F(pleted, so portions of the w)144 276 Q -(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(visible\255stats \(Off\))108 288 Q F0 .847(If set to)144 300 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 312 Q F1 -(Readline Conditional Constructs)87 328.8 Q F0 .05 -(Readline implements a f)108 340.8 R .05(acility similar in spirit to t\ -he conditional compilation features of the C preprocessor)-.1 F .097 -(which allo)108 352.8 R .097(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 364.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 381.6 Q F0(The)24.89 E F1($if)2.962 E -F0 .462(construct allo)2.962 F .463(ws bindings to be made based on the\ - editing mode, the terminal being used,)-.25 F .478 -(or the application using readline.)144 393.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 405.6 Q F1(mode)144 422.4 Q F0(The) -12.67 E F1(mode=)3.711 E F0 1.211(form of the)3.711 F F1($if)3.711 E F0 -(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 434.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 446.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 458.4 -Q F1(term)144 475.2 Q F0(The)15.46 E F1(term=)3.197 E F0 .696 -(form may be used to include terminal-speci\214c k)3.197 F .996 -.15 -(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 487.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 499.2 Q F1(=)3.232 -E F0 .732(is tested ag)3.232 F .732(ainst the both full name of the ter\ -minal and the portion of the terminal)-.05 F(name before the \214rst)180 -511.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 528 Q F0(The)180 540 -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 -552 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 -564 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 576 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 588 Q -(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 612 Q F0 -(Bash)2.5 E 2.5(#Q)180 624 S(uote the current or pre)-2.5 E(vious w)-.25 -E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 636 Q F1($endif)180 648 Q -($endif)108 664.8 Q F0(This command, as seen in the pre)9.33 E(vious e) --.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1 -($else)108 681.6 Q F0(Commands in this branch of the)15.45 E F1($if)2.5 -E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G -(cuted if the test f).15 E(ails.)-.1 E F1($include)108 698.4 Q F0 .356 -(This directi)144 710.4 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 722.4 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 --.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF($include)144 84 Q/F2 10/Times-Italic@0 SF -(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 100.8 Q(ching)-.18 E F0 .835 -(Readline pro)108 112.8 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 124.8 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 141.6 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 153.6 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 165.6 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 177.6 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 189.6 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 201.6 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 213.6 Q 2.938 -.8(To \214) -108 230.4 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 242.4 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 254.4 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 266.4 R F2(ne)3.041 E(wline)-.15 E F0 .541 -(will terminate the search and accept the line, thereby e)3.041 F -.15 -(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 278.4 -Q .653(Readline remembers the last incremental search string.)108 295.2 -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 307.2 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 324 R(The search \ -string may be typed by the user or be part of the contents of the curre\ -nt line.)108 336 Q F1(Readline Command Names)87 352.8 Q F0 1.391 -(The follo)108 364.8 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 376.8 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 388.8 Q F2(point)3.41 E -F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E -F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db) -.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 400.8 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 417.6 Q(or Mo)-.25 E(ving)-.1 -E(beginning\255of\255line \(C\255a\))108 429.6 Q F0(Mo)144 441.6 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 453.6 Q F0(Mo)144 465.6 Q .3 -.15 -(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 -477.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 489.6 Q .3 -.15(ve f) --.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1 -(backward\255char \(C\255b\))108 501.6 Q F0(Mo)144 513.6 Q .3 -.15(ve b) --.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 525.6 S(rward\255w) -.25 E(ord \(M\255f\))-.1 E F0(Mo)144 537.6 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 549.6 Q F1(backward\255w)108 561.6 Q -(ord \(M\255b\))-.1 E F0(Mo)144 573.6 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 585.6 Q F1(shell\255f)108 597.6 -Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 609.6 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 621.6 Q F1(shell\255backward\255w)108 633.6 Q(ord)-.1 E -F0(Mo)144 645.6 Q .908 -.15(ve b)-.15 H .609 -(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109 -(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F -(metacharacters.)144 657.6 Q F1(clear\255scr)108 669.6 Q(een \(C\255l\)) --.18 E F0 .993(Clear the screen lea)144 681.6 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 693.6 Q F1 -.18(re)108 -705.6 S(draw\255curr).18 E(ent\255line)-.18 E F0 -(Refresh the current line.)144 717.6 Q(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Commands f)87 84 Q -(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108 -96 Q(n\))-.15 E F0 .158(Accept the line re)144 108 R -.05(ga)-.15 G .158 -(rdless of where the cursor is.).05 F .158(If this line is non-empty) -5.158 F 2.659(,a)-.65 G .159(dd it to the history list)-2.659 F .699 -(according to the state of the)144 120 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 132 Q F1(pr)108 144 -Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 -156 Q(vious command from the history list, mo)-.25 E -(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 168 Q -F0(Fetch the ne)144 180 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 192 Q F0(Mo)144 204 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 216 Q F0(Mo)144 228 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 -240 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47 -(Search backw)144 252 R 1.471(ard starting at the current line and mo) --.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 264 Q F1 -.25(fo)108 276 S -(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132 -(Search forw)144 288 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 300 Q F1(non\255incr)108 -312 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 324 R .164(ar\ -d through the history starting at the current line using a non-incremen\ -tal search for)-.1 F 2.5(as)144 336 S(tring supplied by the user)-2.5 E -(.)-.55 E F1(non\255incr)108 348 Q(emental\255f)-.18 E(orward\255sear) --.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 360 R -1.354(ard through the history using a non-incremental search for a stri\ -ng supplied by the)-.1 F(user)144 372 Q(.)-.55 E F1(history\255sear)108 -384 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 396 R .249(a\ -rd through the history for the string of characters between the start o\ -f the current line)-.1 F(and the point.)144 408 Q -(This is a non-incremental search.)5 E F1(history\255sear)108 420 Q -(ch\255backward)-.18 E F0 .951(Search backw)144 432 R .951(ard through \ -the history for the string of characters between the start of the curre\ -nt)-.1 F(line and the point.)144 444 Q -(This is a non-incremental search.)5 E F1(yank\255nth\255ar)108 456 Q -2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 468 -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 480 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 492 Q .291(vious command be)-.25 F .291 -(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 504 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 516 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 528 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 540 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 552 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 564 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 576 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 588 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 600 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(ar)144 612 Q -(gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.) --.15 E F1(shell\255expand\255line \(M\255C\255e\))108 624 Q F0 .622 -(Expand the line as the shell does.)144 636 R .622 -(This performs alias and history e)5.622 F .623 -(xpansion as well as all of the)-.15 F(shell w)144 648 Q(ord e)-.1 E 2.5 -(xpansions. See)-.15 F F2(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 660 Q F0 .939 -(Perform history e)144 672 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 684 Q(xpansion.)-.15 E F1(magic\255space) -108 696 Q F0 1.626(Perform history e)144 708 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 720 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(alias\255expand\255line)108 84 Q F0 .395 -(Perform alias e)144 96 R .395(xpansion on the current line.)-.15 F(See) -5.395 E/F2 9/Times-Bold@0 SF(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 108 Q F1(history\255and\255alias\255expand\255line)108 120 Q F0 -(Perform history and alias e)144 132 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 144 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 156 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 168 Q F0 .947 -(Accept the current line for e)144 180 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 192 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 204 Q F0(In)144 -216 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 228 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 -244.8 Q(or Changing T)-.25 E(ext)-.92 E(delete\255char \(C\255d\))108 -256.8 Q F0 .357(Delete the character at point.)144 268.8 R .358 -(If point is at the be)5.358 F .358 -(ginning of the line, there are no characters in the)-.15 F -(line, and the last character typed w)144 280.8 Q(as not bound to)-.1 E -F1(delete\255char)2.5 E F0 2.5(,t)C(hen return)-2.5 E F2(EOF)2.5 E F3(.) -A F1(backward\255delete\255char \(Rubout\))108 292.8 Q F0 .553 -(Delete the character behind the cursor)144 304.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 316.8 Q F1 -.25(fo)108 328.8 S -(rward\255backward\255delete\255char).25 E F0 .473 -(Delete the character under the cursor)144 340.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 352.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 364.8 Q F0 .779(Add the ne)144 -376.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 388.8 S(ample.).15 E F1 -(tab\255insert \(C\255v T)108 400.8 Q(AB\))-.9 E F0 -(Insert a tab character)144 412.8 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 424.8 Q F0 -(Insert the character typed.)144 436.8 Q F1 -(transpose\255chars \(C\255t\))108 448.8 Q F0 .321 -(Drag the character before point forw)144 460.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 -472.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 484.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 496.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144 -508.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 520.8 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 532.8 Q -(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 -544.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 556.8 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 568.8 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 580.8 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 592.8 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 604.8 Q -(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 -616.8 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F --.05(ga)-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974 -(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 628.8 S(rd, b) -.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 -640.8 S(rwrite\255mode).1 E F0 -.8(To)144 652.8 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 664.8 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 676.8 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 F4 -.37(re) -4.395 G(adline\(\)).37 E F0 1.895(starts in insert)4.395 F 3.969 -(mode. In)144 688.8 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 700.8 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 712.8 -Q(By def)5 E(ault, this command is unbound.)-.1 E(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Killing and Y)87 84 Q(anking)-.85 E -(kill\255line \(C\255k\))108 96 Q F0(Kill the te)144 108 Q -(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 120 Q F0(Kill backw)144 -132 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 144 Q F0(Kill backw)144 156 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 168 Q F0 -(Kill all characters on the current line, no matter where point is.)144 -180 Q F1(kill\255w)108 192 Q(ord \(M\255d\))-.1 E F0 .729 -(Kill from point to the end of the current w)144 204 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 216 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 228 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 240 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 252 Q -(ord \(M\255d\))-.1 E F0 .728 -(Kill from point to the end of the current w)144 264 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 276 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 288 Q(ord \(M\255Rubout\))-.1 E F0 3.025(Kill the w)144 300 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 312 Q(ord)-.1 E F0(.)A F1(unix\255w)108 324 Q -(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 336 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 -348 Q F1(unix\255\214lename\255rubout)108 360 Q F0 .167(Kill the w)144 -372 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 384 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 396 Q F0 -(Delete all spaces and tabs around point.)144 408 Q F1(kill\255r)108 420 -Q(egion)-.18 E F0(Kill the te)144 432 Q(xt in the current re)-.15 E -(gion.)-.15 E F1(copy\255r)108 444 Q(egion\255as\255kill)-.18 E F0(Cop) -144 456 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 468 Q(ord)-.1 E F0(Cop)144 480 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 492 -Q(ord)-.1 E F0(.)A F1(copy\255f)108 504 Q(orward\255w)-.25 E(ord)-.1 E -F0(Cop)144 516 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 528 Q(ord)-.1 E F0(.)A F1 -(yank \(C\255y\))108 540 Q F0 -1(Ya)144 552 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 564 Q F0 -(Rotate the kill ring, and yank the ne)144 576 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 592.8 Q -(guments)-.1 E(digit\255ar)108 604.8 Q -(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .641 -(Add this digit to the ar)144 616.8 R .641 -(gument already accumulating, or start a ne)-.18 F 3.141(wa)-.25 G -.18 -(rg)-3.141 G 3.142(ument. M\255\255).18 F .642(starts a ne)3.142 F(g-) --.15 E(ati)144 628.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G(ument.).18 E F1 -(uni)108 640.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .779 -(This is another w)144 652.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 -664.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -676.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 688.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 .243 -(neither a digit or minus sign, the ar)144 700.8 R .243 -(gument count for the ne)-.18 F .243(xt command is multiplied by four) --.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 712.8 Q .378 -(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .378 -(cuting this function the \214rst time mak).15 F .378(es the ar)-.1 F -.378(gument count)-.18 F(four)144 724.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 -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(Completing)87 84 Q(complete \(T)108 96 Q -(AB\))-.9 E F0 1.137(Attempt to perform completion on the te)144 108 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 120 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 132 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 144 Q F1 -(possible\255completions \(M\255?\))108 156 Q F0 -(List the possible completions of the te)144 168 Q(xt before point.)-.15 -E F1(insert\255completions \(M\255*\))108 180 Q F0 .783 -(Insert all completions of the te)144 192 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 204 Q F0(.)A F1 -(menu\255complete)108 216 Q F0 .929(Similar to)144 228 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 240 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 252 R .828 -(At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 264 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 276 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 288 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 300 Q F0 .82(Identical to)144 -312 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 324 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 336 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 348 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 360 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 -372 Q(ault.)-.1 E F1(complete\255\214lename \(M\255/\))108 384 Q F0 -(Attempt \214lename completion on the te)144 396 Q(xt before point.)-.15 -E F1(possible\255\214lename\255completions \(C\255x /\))108 408 Q F0 -(List the possible completions of the te)144 420 Q -(xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 432 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 444 Q -(xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 456 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 468 Q -(xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -480 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 492 Q -(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(possible\255v)108 504 Q(ariable\255completions \(C\255x $\))-.1 E F0 -(List the possible completions of the te)144 516 Q -(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 528 Q F0 -(Attempt completion on the te)144 540 Q -(xt before point, treating it as a hostname.)-.15 E F1 -(possible\255hostname\255completions \(C\255x @\))108 552 Q F0 -(List the possible completions of the te)144 564 Q -(xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 576 Q F0 .581 -(Attempt completion on the te)144 588 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 600 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 612 Q -.15(xe)-.15 G -(cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 624 Q F0 -(List the possible completions of the te)144 636 Q -(xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 648 Q(AB\))-.9 E F0 .425 -(Attempt completion on the te)144 660 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 672 Q F1(dab)108 684 Q(br)-.1 E --.15(ev)-.18 G(\255expand).15 E F0 .61 -(Attempt menu completion on the te)144 696 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 708 Q(GNU Bash 4.2)72 -768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(complete\255into\255braces \(M\255{\))108 -84 Q F0 .4(Perform \214lename completion and insert the list of possibl\ -e completions enclosed within braces so)144 96 R(the list is a)144 108 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 124.8 S(yboard Macr) -.25 E(os)-.18 E(start\255kbd\255macr)108 136.8 Q 2.5(o\()-.18 G -(C\255x \()-2.5 E(\)).833 E F0(Be)144 148.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 160.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 172.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 184.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 196.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 .663(typed at the k)144 208.8 R -.15(ey)-.1 G -(board.).15 E F1(print\255last\255kbd\255macr)5.663 E 3.163(o\()-.18 G -(\))-3.163 E F0 .663(Print the last k)3.163 F -.15(ey)-.1 G .663 -(board macro de\214ned in a for).15 F(-)-.2 E(mat suitable for the)144 -220.8 Q/F2 10/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E -F1(Miscellaneous)87 237.6 Q -.18(re)108 249.6 S.18 E -(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 -(Read in the contents of the)144 261.6 R F2(inputr)4.276 E(c)-.37 E F0 -1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777 -(indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144 -273.6 Q F1(abort \(C\255g\))108 285.6 Q F0 3.249 -(Abort the current editing command and ring the terminal')144 297.6 R -5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 -(bell\255style)144 309.6 Q F0(\).)A F1(do\255upper)108 321.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.755(If the meta\214ed character)144 333.6 R F2(x) -4.255 E F0 1.755(is lo)4.255 F 1.756 -(wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 345.6 Q(.)-.55 E F1(pr)108 357.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 369.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 381.6 Q F0 -(Incremental undo, separately remembered for each line.)144 393.6 Q F1 --2.29 -.18(re v)108 405.6 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 417.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 429.6 Q F1 -(tilde\255expand \(M\255&\))108 441.6 Q F0(Perform tilde e)144 453.6 Q -(xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 465.6 Q F0 -(Set the mark to the point.)144 477.6 Q(If a numeric ar)5 E -(gument is supplied, the mark is set to that position.)-.18 E F1 -(exchange\255point\255and\255mark \(C\255x C\255x\))108 489.6 Q F0(Sw) -144 501.6 Q .282(ap the point with the mark.)-.1 F .283 -(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G -2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) -144 513.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 525.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 -537.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G -3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 -(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05 -(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 549.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 561.6 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 573.6 S 1.043 -(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G -3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 -(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E --.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 585.6 Q F1 -(skip\255csi\255sequence)108 597.6 Q F0 1.827 -(Read enough characters to consume a multi-k)144 609.6 R 2.126 -.15 -(ey s)-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey) --.1 G 4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 621.6 R -.791(Such sequences be)5.79 F .791 -(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.332(If this sequence is bound to "\\[", k)144 633.6 R -.15(ey)-.1 G -2.831(sp).15 G .331(roducing such sequences will ha)-2.831 F .631 -.15 -(ve n)-.2 H 2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F -(xplic-)-.15 E .026(itly bound to a readline command, instead of insert\ -ing stray characters into the editing b)144 645.6 R(uf)-.2 E(fer)-.25 E -5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 657.6 Q(ault, b)-.1 E -(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -669.6 Q F0 -.4(Wi)144 681.6 S .481(thout a numeric ar).4 F .481 -(gument, the v)-.18 F .481(alue of the readline)-.25 F F1 -(comment\255begin)2.981 E F0 -.25(va)2.981 G .48 -(riable is inserted at the).25 F(be)144 693.6 Q .097 -(ginning of the current line.)-.15 F .098(If a numeric ar)5.097 F .098 -(gument is supplied, this command acts as a toggle:)-.18 F(if)5.098 E -.322(the characters at the be)144 705.6 R .321 -(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 -(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is) --.25 F .831(inserted, otherwise the characters in)144 717.6 R F1 -(comment\255begin)3.331 E F0 .832(are deleted from the be)3.331 F .832 -(ginning of the line.)-.15 F 2.943 -(In either case, the line is accepted as if a ne)144 729.6 R 2.943 -(wline had been typed.)-.25 F 2.943(The def)7.943 F 2.943(ault v)-.1 F -2.942(alue of)-.25 F(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(comment\255begin)144 84 Q F0 1.303 -(causes this command to mak)3.802 F 3.803(et)-.1 G 1.303 -(he current line a shell comment.)-3.803 F 1.303(If a numeric)6.303 F -(ar)144 96 Q(gument causes the comment character to be remo)-.18 E -.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 108 Q -(ord \(M\255g\))-.1 E F0 .792(The w)144 120 R .791 -(ord before point is treated as a pattern for pathname e)-.1 F .791 -(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 132 -R(pattern is used to generate a list of matching \214lenames for possib\ -le completions.)2.5 E F1(glob\255expand\255w)108 144 Q(ord \(C\255x *\)) --.1 E F0 .175(The w)144 156 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 168 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 180 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 192 Q F0 .923(The list of e)144 204 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 216 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 228 S(pansion.).15 E F1(dump\255functions)108 240 Q F0 .626 -(Print all of the functions and their k)144 252 R .926 -.15(ey b)-.1 H -.627(indings to the readline output stream.).15 F .627(If a numeric ar) -5.627 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 264 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 276 Q(ariables)-.1 E F0 -1.8(Print all of the settable readline v)144 288 R 1.799 -(ariables and their v)-.25 F 1.799(alues to the readline output stream.) --.25 F 1.799(If a)6.799 F .304(numeric ar)144 300 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 312 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 324 Q(os)-.18 E F0 .593 -(Print all of the readline k)144 336 R .893 -.15(ey s)-.1 H .592 -(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G -3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 348 Q -.528(gument is supplied, the output is formatted in such a w)-.18 F .528 -(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 -(\214le.)144 360 Q F1(display\255shell\255v)108 372 Q -(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 384 Q -(ersion information about the current instance of)-.15 E F1(bash)2.5 E -F0(.)A F1(Pr)87 400.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 -412.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 424.8 Q F0 3.828(\)h)C 1.329 -(as been de\214ned using the)-3.828 F F1(complete)3.829 E F0 -.2(bu) -3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 -F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the) --.25 F(programmable completion f)108 436.8 Q(acilities are in)-.1 E -.2 -(vo)-.4 G -.1(ke).2 G(d.).1 E .498 -(First, the command name is identi\214ed.)108 453.6 R .498 -(If the command w)5.498 F .497 -(ord is the empty string \(completion attempted at)-.1 F .233(the be)108 -465.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 -(ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) -2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .234(If a comp-) -5.234 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 477.6 R .822 -(for the w)108 489.6 R 3.322(ord. If)-.1 F .822(the command w)3.322 F -.823(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.867(\214rst. If)108 501.6 R .366(no compspec is found fo\ -r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.867 F(follo)108 513.6 Q .298(wing the \214nal slash.)-.25 F .298 -(If those searches do not result in a compspec, an)5.298 F 2.799(yc)-.15 -G .299(ompspec de\214ned with the)-2.799 F F12.799 E F0(option to) -108 525.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 542.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(found, the def)108 554.4 Q(ault)-.1 E F1(bash) -2.5 E F0(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 -E F1(Completing)2.5 E F0(is performed.)2.5 E .463 -(First, the actions speci\214ed by the compspec are used.)108 571.2 R -.464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F -.464(ord being)-.1 F .596(completed are returned.)108 583.2 R .596 -(When the)5.596 F F13.096 E F0(or)3.095 E F13.095 E F0 .595 -(option is used for \214lename or directory name completion, the)3.095 F -(shell v)108 595.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 -(is used to \214lter the matches.)2.25 E(An)108 612 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 624 S -.555(rds generated by the pattern need not match the w).1 F .554 -(ord being completed.)-.1 F(The)5.554 E F3(GLOBIGNORE)3.054 E F0 .554 -(shell v)2.804 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 636 Q(ut the)-.2 E F3 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 652.8 Q -.32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F -F12.82 E F0 .321(option is considered.)2.821 F .321 -(The string is \214rst split using the)5.321 F .413(characters in the) -108 664.8 R F3(IFS)2.913 E F0 .412(special v)2.663 F .412 -(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F -.412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091 -(using brace e)108 676.8 R .091(xpansion, tilde e)-.15 F .092 -(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .092 -(xpansion, command substitution, and arith-)-.15 F 1.397(metic e)108 -688.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H -(nder).15 E F3(EXP)3.896 E(ANSION)-.666 E/F4 9/Times-Roman@0 SF(.)A F0 -1.396(The results are split using the rules described)5.896 F(abo)108 -700.8 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209 -(rd Splitting).75 F F0 5.209(.T)C .209(he results of the e)-5.209 F .209 -(xpansion are pre\214x-matched ag)-.15 F .21(ainst the w)-.05 F .21 -(ord being com-)-.1 F(pleted, and the matching w)108 712.8 Q -(ords become the possible completions.)-.1 E 1.238 -(After these matches ha)108 729.6 R 1.538 -.15(ve b)-.2 H 1.238 -(een generated, an).15 F 3.738(ys)-.15 G 1.237 -(hell function or command speci\214ed with the)-3.738 F F13.737 E -F0(and)3.737 E F13.737 E F0(GNU Bash 4.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E 3.375(options is in)108 84 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/F1 9/Times-Bold@0 SF(COMP_LINE)5.876 E/F2 -9/Times-Roman@0 SF(,)A F1(COMP_POINT)5.626 E F2(,)A F1(COMP_KEY)108 96 Q -F2(,)A F0(and)2.408 E F1(COMP_TYPE)2.658 E F0 -.25(va)2.408 G .157 -(riables are assigned v).25 F .157(alues as described abo)-.25 F .457 --.15(ve u)-.15 H(nder).15 E/F3 10/Times-Bold@0 SF .157(Shell V)2.657 F -(ariables)-.92 E F0 5.157(.I)C(f)-5.157 E 3.485(as)108 108 S .986 -(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G .986 -(d, the).1 F F1(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F1(COMP_CW) -3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986(riables are also set.).25 F -(When)5.986 E .347(the function or command is in)108 120 R -.2(vo)-.4 G --.1(ke).2 G .347(d, the \214rst ar).1 F .346(gument \()-.18 F F3($1)A F0 -2.846(\)i)C 2.846(st)-2.846 G .346(he name of the command whose ar) --2.846 F(guments)-.18 E .263(are being completed, the second ar)108 132 -R .263(gument \()-.18 F F3($2)A F0 2.763(\)i)C 2.763(st)-2.763 G .264 -(he w)-2.763 F .264(ord being completed, and the third ar)-.1 F .264 -(gument \()-.18 F F3($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 144 R -.629(ord preceding the w)-.1 F .629 -(ord being completed on the current command line.)-.1 F .628 -(No \214ltering of the generated)5.629 F .714(completions ag)108 156 R -.714(ainst the w)-.05 F .714(ord being completed is performed; the func\ -tion or command has complete free-)-.1 F(dom in generating the matches.) -108 168 Q(An)108 184.8 Q 2.938(yf)-.15 G .437(unction speci\214ed with) --2.938 F F32.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G -2.937<648c>.1 G 2.937(rst. The)-2.937 F .437(function may use an)2.937 F -2.937(yo)-.15 G 2.937(ft)-2.937 G .437(he shell f)-2.937 F .437 -(acilities, including)-.1 F(the)108 196.8 Q F3(compgen)2.956 E F0 -.2 -(bu)2.956 G .456(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956 -(og).65 G .456(enerate the matches.)-2.956 F .457 -(It must put the possible completions in the)5.456 F F1(COMPREPL)108 -208.8 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 -E(Ne)108 225.6 Q .081(xt, an)-.15 F 2.581(yc)-.15 G .081 -(ommand speci\214ed with the)-2.581 F F32.581 E F0 .081 -(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.58(na) --2.581 G 2.58(ne)-2.58 G -.4(nv)-2.58 G .08(ironment equi).4 F -.25(va) --.25 G .08(lent to command sub-).25 F 2.858(stitution. It)108 237.6 R -.359(should print a list of completions, one per line, to the standard \ -output.)2.858 F .359(Backslash may be used)5.359 F(to escape a ne)108 -249.6 Q(wline, if necessary)-.25 E(.)-.65 E .377 -(After all of the possible completions are generated, an)108 266.4 R -2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F32.876 -E F0 .376(option is applied to the)2.876 F 3.181(list. The)108 278.4 R -.681(\214lter is a pattern as used for pathname e)3.181 F .681 -(xpansion; a)-.15 F F3(&)3.181 E F0 .682 -(in the pattern is replaced with the te)3.182 F .682(xt of)-.15 F .523 -(the w)108 290.4 R .523(ord being completed.)-.1 F 3.023(Al)5.523 G -(iteral)-3.023 E F3(&)3.023 E F0 .522 -(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 302.4 -R(An)5.849 E 3.349(yc)-.15 G .849 -(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G -3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F3 -(!)3.35 E F0(ne)108 314.4 Q -.05(ga)-.15 G -(tes the pattern; in this case an).05 E 2.5(yc)-.15 G -(ompletion not matching the pattern will be remo)-2.5 E -.15(ve)-.15 G -(d.).15 E(Finally)108 331.2 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H -.587(re\214x and suf).15 F .587(\214x speci\214ed with the)-.25 F F3 -3.087 E F0(and)3.087 E F33.087 E F0 .587 -(options are added to each member of the com-)3.087 F(pletion list, and\ - the result is returned to the readline completion code as the list of \ -possible completions.)108 343.2 Q .246(If the pre)108 360 R .247 -(viously-applied actions do not generate an)-.25 F 2.747(ym)-.15 G .247 -(atches, and the)-2.747 F F3 .247(\255o dir)2.747 F(names)-.15 E F0 .247 -(option w)2.747 F .247(as supplied to)-.1 F F3(complete)108 372 Q F0 -(when the compspec w)2.5 E -(as de\214ned, directory name completion is attempted.)-.1 E .462 -(If the)108 388.8 R F3 .462(\255o plusdirs)2.962 F F0 .462(option w) -2.962 F .462(as supplied to)-.1 F F3(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 400.8 Q 2.5(ym)-.15 G -(atches are added to the results of the other actions.)-2.5 E .559 -(By def)108 417.6 R .559(ault, if a compspec is found, whate)-.1 F -.15 -(ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56 -(enerates is returned to the completion code as the full set)-3.059 F -.632(of possible completions.)108 429.6 R .632(The def)5.632 F(ault)-.1 -E F3(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 441.6 R -.558(If the)5.558 F F3 .559(\255o bashdefault)3.059 F F0 .559(option w) -3.059 F .559(as supplied to)-.1 F F3(complete)3.059 E F0 .559 -(when the compspec)3.059 F -.1(wa)108 453.6 S 3.172(sd).1 G .672 -(e\214ned, the)-3.172 F F3(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 F33.171 E(default)108 465.6 Q F0 1.207 -(option w)3.706 F 1.207(as supplied to)-.1 F F3(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 -477.6 Q(ault)-.1 E F3(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 494.4 R .632(tions force\ - readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 506.4 R 2.762(to the v)108 518.4 R 2.762 -(alue of the)-.25 F F3(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 F3(mark-sym-)5.261 E(link)108 530.4 -Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E -.19(There is some support for dynamically modifying completions.)108 -547.2 R .191(This is most useful when used in combina-)5.191 F 1.33 -(tion with a def)108 559.2 R 1.33(ault completion speci\214ed with)-.1 F -F3 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 571.2 R .93(xit status of 124.)-.15 F .93(If a) -5.93 F .1(shell function returns 124, and changes the compspec associat\ -ed with the command on which completion is)108 583.2 R .665 -(being attempted \(supplied as the \214rst ar)108 595.2 R .666 -(gument when the function is e)-.18 F -.15(xe)-.15 G .666 -(cuted\), programmable completion).15 F .084(restarts from the be)108 -607.2 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc) --.25 G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F -.083(ws a set of)-.25 F(completions to be b)108 619.2 Q(uilt dynamicall\ -y as completion is attempted, rather than being loaded all at once.)-.2 -E -.15(Fo)108 636 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 648 Q(wing def)-.25 E -(ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E/F4 10/Courier@0 SF(_completion_loader\(\))108 664.8 Q({)108 676.8 Q 6 -(.")144 688.8 S -(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -700.8 Q(complete -D -F _completion_loader)108 712.8 Q F0(GNU Bash 4.2)72 -768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10.95/Times-Bold@0 SF(HIST)72 84 Q(OR)-.197 E(Y)-.383 E F0 -.372(When the)108 96 R/F2 10/Times-Bold@0 SF .372(\255o history)2.872 F -F0 .372(option to the)2.872 F F2(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/F3 -10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304 -(the list of commands pre)108 108 R .304(viously typed.)-.25 F .304 -(The v)5.304 F .304(alue of the)-.25 F/F4 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 120 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 F4 -(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 -132 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F4(EXP)2.787 E -(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 144 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 F4(HISTIGNORE)4.065 E F0 -(and)3.815 E F4(HISTCONTR)108 156 Q(OL)-.27 E/F5 9/Times-Roman@0 SF(.)A -F0 .082 -(On startup, the history is initialized from the \214le named by the v) -108 172.8 R(ariable)-.25 E F4(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1 -E F3(~/.bash_history)2.583 E F0(\).)A .315(The \214le named by the v)108 -184.8 R .315(alue of)-.25 F F4(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 196.8 R .658(alue of)-.25 F F4 -(HISTFILESIZE)3.158 E F5(.)A F0(If)5.158 E F2(HISTFILESIZE)3.158 E F0 -.659(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 208.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 220.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 232.8 R .098 -(These timestamps are optionally displayed depending on the v)5.098 F -.098(alue of)-.25 F(the)108 244.8 Q F4(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 F4 -($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159 -(copied from the history list to)108 256.8 R F4($HISTFILE)2.659 E F5(.)A -F0 .159(If the)4.659 F F2(histappend)2.658 E F0 .158 -(shell option is enabled \(see the description of)2.658 F F2(shopt)108 -268.8 Q F0(under)2.581 E F4 .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 280.8 R -.15(ve)-.15 G 2.697(rwritten. If) -.15 F F4(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 292.8 R F4(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 304.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 316.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 328.8 R F4(HISTFILESIZE)3.257 E -F0 3.257(lines. If)3.007 F F4(HISTFILESIZE)3.257 E F0 .757 -(is unset, or set to null, a non-)3.007 F(numeric v)108 340.8 Q -(alue, or a numeric v)-.25 E -(alue less than zero, the history \214le is not truncated.)-.25 E 1.293 -(The b)108 357.6 R 1.293(uiltin command)-.2 F F2(fc)3.793 E F0(\(see) -3.793 E F4 1.293(SHELL B)3.793 F(UIL)-.09 E 1.293(TIN COMMANDS)-.828 F -F0(belo)3.543 E 1.294(w\) may be used to list or edit and re-)-.25 F --.15(exe)108 369.6 S .674(cute a portion of the history list.).15 F(The) -5.673 E F2(history)3.173 E F0 -.2(bu)3.173 G .673 -(iltin may be used to display or modify the history list).2 F .279 -(and manipulate the history \214le.)108 381.6 R .279 -(When using command-line editing, search commands are a)5.279 F -.25(va) --.2 G .28(ilable in each).25 F(editing mode that pro)108 393.6 Q -(vide access to the history list.)-.15 E 1.486(The shell allo)108 410.4 -R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 -(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) --3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F4(HISTCONTR)3.985 -E(OL)-.27 E F0(and)3.735 E F4(HISTIGNORE)108 422.4 Q F0 -.25(va)2.707 G -.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o) --.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F2 -(cmdhist)108 434.4 Q F0 .75 -(shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 --.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 -(the same history entry)108 446.4 R 3.577(,a)-.65 G 1.077 -(dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G -1.077(yntactic correctness.)-3.577 F(The)6.077 E F2(lithist)3.577 E F0 -.374(shell option causes the shell to sa)108 458.4 R .674 -.15(ve t)-.2 -H .374(he command with embedded ne).15 F .373 -(wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318 -(description of the)108 470.4 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 F4 .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 -482.4 Q F1(HIST)72 499.2 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E -(ANSION)-.81 E F0 .611(The shell supports a history e)108 511.2 R .611 -(xpansion feature that is similar to the history e)-.15 F .61 -(xpansion in)-.15 F F2(csh.)3.11 E F0 .61(This section)5.61 F .87 -(describes what syntax features are a)108 523.2 R -.25(va)-.2 G 3.371 -(ilable. This).25 F .871(feature is enabled by def)3.371 F .871 -(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F -2.014(can be disabled using the)108 535.2 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 F4 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013 -(TIN COMMANDS)-.828 F F0(belo)108 547.2 Q 2.5(w\). Non-interacti)-.25 F -.3 -.15(ve s)-.25 H(hells do not perform history e).15 E -(xpansion by def)-.15 E(ault.)-.1 E 1.305(History e)108 564 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 576 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 588 Q(.)-.65 E 1.163(History e)108 -604.8 R 1.163(xpansion is performed immediately after a complete line i\ -s read, before the shell breaks it into)-.15 F -.1(wo)108 616.8 S 3.2 -(rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 -(arts. The)-3.2 F .7 -(\214rst is to determine which line from the history list to use during) -3.2 F 4.367(substitution. The)108 628.8 R 1.868(second is to select por\ -tions of that line for inclusion into the current one.)4.367 F 1.868 -(The line)6.868 F .663(selected from the history is the)108 640.8 R F3 --.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 F3(wor) -3.162 E(ds)-.37 E F0 5.662(.V)C(arious)-6.772 E F3(modi\214er)108 652.8 -Q(s)-.1 E F0 .226(are a)2.726 F -.25(va)-.2 G .226 -(ilable to manipulate the selected w).25 F 2.726(ords. The)-.1 F .227 -(line is brok)2.726 F .227(en into w)-.1 F .227(ords in the same f)-.1 F -(ashion)-.1 E .352(as when reading input, so that se)108 664.8 R -.15 -(ve)-.25 G(ral).15 E F3(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 676.8 R 3.124(ord. History)-.1 F -.15(ex)3.124 G .624 -(pansions are introduced by the appearance of the history e).15 F .625 -(xpansion character)-.15 F 3.125(,w)-.4 G(hich)-3.125 E(is)108 688.8 Q -F2(!)3.333 E F0(by def)3.333 E 2.5(ault. Only)-.1 F(backslash \()2.5 E -F2(\\).833 E F0 2.5(\)a).833 G(nd single quotes can quote the history e) --2.5 E(xpansion character)-.15 E(.)-.55 E(Se)108 705.6 Q -.15(ve)-.25 G -.03(ral characters inhibit history e).15 F .03 -(xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 -F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 717.6 T -3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G -.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 729.6 Q(xpansion.)-.15 E(GNU Bash 4.2)72 768 -Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(Se)108 84 Q -.15(ve)-.25 G .11 -(ral shell options settable with the).15 F/F1 10/Times-Bold@0 SF(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 96 R F1 -(histv)3.643 E(erify)-.1 E F0 1.143 -(shell option is enabled \(see the description of the)3.643 F F1(shopt) -3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F1 --.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 108 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 120 R F1 -.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 F1 -.18(re)4.016 G(adline).18 E F0 1.516 -(is being used, and the)4.016 F F1(histr)108 132 Q(eedit)-.18 E F0 1.202 -(shell option is enabled, a f)3.702 F 1.202 -(ailed history substitution will be reloaded into the)-.1 F F1 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 144 S -.25(ff).2 G -1.16(er for correction.).25 F(The)6.16 E F13.66 E F0 1.16 -(option to the)3.66 F F1(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 156 S -.056(pansion will do before using it.).15 F(The)5.056 E F12.556 E -F0 .056(option to the)2.556 F F1(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 168 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 184.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 -196.8 R F1(histchars)3.647 E F0(abo)3.647 E 1.447 -.15(ve u)-.15 H(nder) -.15 E F1 1.147(Shell V)3.647 F(ariables)-.92 E F0 3.646(\). The)B 1.146 -(shell uses the history comment character to)3.646 F -(mark history timestamps when writing the history \214le.)108 208.8 Q F1 -(Ev)87 225.6 Q(ent Designators)-.1 E F0 .204(An e)108 237.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 249.6 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 -(ot).15 G(he current position in the history list.)-2.5 E F1(!)108 266.4 -Q F0 1.608(Start a history substitution, e)32.67 F 1.608 -(xcept when follo)-.15 F 1.607(wed by a)-.25 F F1(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 278.4 Q F1(extglob)2.5 E F0 -(shell option is enabled using the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G -(iltin\).).2 E F1(!)108 290.4 Q/F2 10/Times-Italic@0 SF(n)A F0 -(Refer to command line)27.67 E F2(n)2.5 E F0(.).24 E F1<21ad>108 302.4 Q -F2(n)A F0(Refer to the current command minus)21.97 E F2(n)2.5 E F0(.).24 -E F1(!!)108 314.4 Q F0(Refer to the pre)29.34 E(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F1(!)108 326.4 Q F2(string) -A F0 .865(Refer to the most recent command preceding the current positi\ -on in the history list starting with)9.33 F F2(string)144 338.4 Q F0(.) -.22 E F1(!?)108 350.4 Q F2(string)A F1([?])A F0 1.503(Refer to the most\ - recent command preceding the current position in the history list cont\ -aining)144 362.4 R F2(string)144 374.4 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 391.4 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3(^)5 I F0 .783 -(Quick substitution.)144 398.4 R .783(Repeat the pre)5.783 F .784 -(vious command, replacing)-.25 F F2(string1)3.624 E F0(with)3.284 E F2 -(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 410.4 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 422.4 Q F0 -(The entire command line typed so f)27.67 E(ar)-.1 E(.)-.55 E F1 -.75 -(Wo)87 439.2 S(rd Designators).75 E F0 -.8(Wo)108 451.2 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 F1(:)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 463.2 R .529(ord designator)-.1 F 5.529(.I)-.55 G -3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 -(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1 -($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F13.029 E F0 3.029(,o)C(r) --3.029 E F1(%)3.029 E F0 5.53(.W)C(ords)-6.33 E 1.301 -(are numbered from the be)108 475.2 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 487.2 Q -F1 2.5(0\()108 504 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 516 Q 2.5 -(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F2 -(n)108.36 528 Q F0(The)30.64 E F2(n)2.5 E F0(th w)A(ord.)-.1 E F1(^)108 -540 Q F0(The \214rst ar)32.67 E 2.5(gument. That)-.18 F(is, w)2.5 E -(ord 1.)-.1 E F1($)108 552 Q F0(The last ar)31 E(gument.)-.18 E F1(%)108 -564 Q F0(The w)26 E(ord matched by the most recent `?)-.1 E F2(string)A -F0(?' search.)A F2(x)108.77 576 Q F1A F2(y)A F0 2.5(Ar)20.65 G -(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C(bbre)-2.5 E -(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 588 Q F0 .315 -(All of the w)31 F .315(ords b)-.1 F .315(ut the zeroth.)-.2 F .315 -(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 -('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316 -(if there is)2.816 F(just one w)144 600 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 -612 Q F0(Abbre)26 E(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1<78ad>108 624 -Q F0(Abbre)25.3 E(viates)-.25 E F2(x\255$)2.5 E F0(lik)2.5 E(e)-.1 E F1 -(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E(ord.)-.1 E(If a w)108 -640.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 657.6 Q F0 .184 -(After the optional w)108 669.6 R .184(ord designator)-.1 F 2.684(,t)-.4 -G .183(here may appear a sequence of one or more of the follo)-2.684 F -.183(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 681.6 Q F1(h) -108 698.4 Q F0(Remo)30.44 E .3 -.15(ve a t)-.15 H -(railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) -108 710.4 Q F0(Remo)32.67 E .3 -.15(ve a)-.15 H -(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(r)108 84 Q F0(Remo)31.56 E .3 -.15(ve a t) --.15 H(railing suf).15 E(\214x of the form)-.25 E/F2 10/Times-Italic@0 -SF(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E(ving the basename.)-.2 E F1(e)108 96 -Q F0(Remo)31.56 E .3 -.15(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 -E(\214x.)-.25 E F1(p)108 108 Q F0(Print the ne)30.44 E 2.5(wc)-.25 G -(ommand b)-2.5 E(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q) -108 120 Q F0(Quote the substituted w)30.44 E -(ords, escaping further substitutions.)-.1 E F1(x)108 132 Q F0 -(Quote the substituted w)31 E(ords as with)-.1 E F1(q)2.5 E F0 2.5(,b)C -(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)2.5 E -(wlines.)-.25 E F1(s/)108 144 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A -F0(Substitute)144 156 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 .617(of /.)144 168 R .617 -(The \214nal delimiter is optional if it is the last character of the e) -5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 -F .666(be quoted in)144 180 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 .275(single backslash will quote the &.)144 192 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 204 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 216 Q F0(Repeat the pre)27.67 E(vious substitution.)-.25 E F1(g)108 -228 Q F0 .397(Cause changes to be applied o)31 F -.15(ve)-.15 G 2.897 -(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.).15 F -.398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898('\()C -(e.g.,)-2.898 E(`)144 240 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 252 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 264 Q F0(.)A -F1(G)108 276 Q F0(Apply the follo)28.22 E(wing `)-.25 E F1(s)A F0 2.5 -('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G -(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 292.8 Q(UIL)-.11 E -(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 304.8 -R .062(uiltin command documented in this section as accepting options p\ -receded by)-.2 F F1108 316.8 Q F0(accepts)2.533 E F12.533 E F0 -.034(to signify the end of the options.)2.533 F(The)5.034 E F1(:)2.534 E -F0(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F1(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) -.2 F .078(do not treat)108 328.8 R F12.577 E F0(specially)2.577 E -5.077(.T)-.65 G(he)-5.077 E F1(exit)2.577 E F0(,)A F1(logout)2.577 E F0 -(,)A F1(br)2.577 E(eak)-.18 E F0(,)A F1(continue)2.577 E F0(,)A F1(let) -2.577 E F0 2.577(,a)C(nd)-2.577 E F1(shift)2.577 E F0 -.2(bu)2.577 G -.077(iltins accept and process ar).2 F(gu-)-.18 E .319(ments be)108 -340.8 R .319(ginning with)-.15 F F12.819 E F0 .319 -(without requiring)2.819 F F12.819 E F0 5.319(.O)C .319(ther b) --5.319 F .319(uiltins that accept ar)-.2 F .32(guments b)-.18 F .32 -(ut are not speci\214ed as)-.2 F 1.144(accepting options interpret ar) -108 352.8 R 1.144(guments be)-.18 F 1.144(ginning with)-.15 F F1 -3.643 E F0 1.143(as in)3.643 F -.25(va)-.4 G 1.143 -(lid options and require).25 F F13.643 E F0 1.143(to pre)3.643 F --.15(ve)-.25 G 1.143(nt this).15 F(interpretation.)108 364.8 Q F1(:)108 -382.8 Q F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .451(No ef)144 394.8 R -.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F -(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an) -3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. A)144 -406.8 R(zero e)2.5 E(xit code is returned.)-.15 E F1(.)110.5 423.6 Q F2 -(\214lename)6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 -435.6 Q(ce)-.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E -F0(])A 1.02(Read and e)144 447.6 R -.15(xe)-.15 G 1.02 -(cute commands from).15 F F2(\214lename)5.43 E F0 1.02 -(in the current shell en)3.7 F 1.02(vironment and return the e)-.4 F -(xit)-.15 E 1.458(status of the last command e)144 459.6 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 471.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 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 .832(need not be e)144 483.6 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 495.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 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 F4 -.666(PA)144 -507.6 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 519.6 Q F0 .342(is e)2.842 F -.15(xe)-.15 G 2.842 -(cuted. Otherwise).15 F .342(the positional parameters are unchanged.) -2.842 F .341(The return status is the)5.341 F .716 -(status of the last command e)144 531.6 R .716 -(xited within the script \(0 if no commands are e)-.15 F -.15(xe)-.15 G -.716(cuted\), and f).15 F .716(alse if)-.1 F F2(\214lename)145.91 543.6 -Q F0(is not found or cannot be read.)2.68 E F1(alias)108 560.4 Q F0([) -2.5 E F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].) -C(..])-2.5 E F1(Alias)144 572.4 Q F0 2.725(with no ar)5.225 F 2.724 -(guments or with the)-.18 F F15.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F1(alias)5.224 E -F2(name)144 584.4 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F -.58(When ar)5.58 F .58 -(guments are supplied, an alias is de\214ned for each)-.18 F F2(name) -3.08 E F0(whose)144 596.4 Q F2(value)2.895 E F0 .395(is gi)2.895 F -.15 -(ve)-.25 G 2.895(n. A).15 F .395(trailing space in)2.895 F F2(value) -5.395 E F0 .395(causes the ne)2.895 F .395(xt w)-.15 F .395 -(ord to be check)-.1 F .395(ed for alias sub-)-.1 F .054 -(stitution when the alias is e)144 608.4 R 2.554(xpanded. F)-.15 F .054 -(or each)-.15 F F2(name)2.554 E F0 .054(in the ar)2.554 F .054 -(gument list for which no)-.18 F F2(value)2.554 E F0 .054(is sup-)2.554 -F 1.314(plied, the name and v)144 620.4 R 1.314 -(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F --.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E -(which no alias has been de\214ned.)144 632.4 Q F1(bg)108 649.2 Q F0([) -2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -661.2 R F2(jobspec)3.244 E F0 .745 -(in the background, as if it had been started with)3.244 F F1(&)3.245 E -F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 673.2 Q F0 .672 -(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) --3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 -(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 -(when job control is disabled or)144 685.2 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 697.2 Q(as started without job control.)-.1 -E(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(bind)108 84 Q F0([)2.5 E F1A/F2 10 -/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1(\255lpsvPSVX) --2.5 E F0(])A F1(bind)108 96 Q F0([)2.5 E F1A 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 108 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 120 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 132 Q -F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G -(yseq)-.2 E F0(:)A F2(function\255name)A F1(bind)108 144 Q F2 -.37(re) -2.5 G(adline\255command).37 E F0 .239(Display current)144 156 R F1 -.18 -(re)2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239 -(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238 -(equence to a).15 F F1 -.18(re)2.738 G(adline).18 E F0 .238(function or) -2.738 F .475(macro, or set a)144 168 R F1 -.18(re)2.975 G(adline).18 E -F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F -.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2 -(.inputr)144 180 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 192 R(if supplied, ha)2.5 E -.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 204 -Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 216 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 228 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193 -(emacs, emacs\255standar)5.693 F 3.192 -(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 240 Q F0 4.429(,a)C(nd)-4.429 E F2(vi\255insert)4.429 -E F0(.).68 E F2(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.929 -(lent to).25 F F2(vi\255command)4.429 E F0(;)A F2(emacs)4.429 E F0 1.929 -(is equi)4.429 F -.25(va)-.25 G 1.93(lent to).25 F F2(emacs\255standar) -180 252 Q(d)-.37 E F0(.)A F1144 264 Q F0(List the names of all) -27.52 E F1 -.18(re)2.5 G(adline).18 E F0(functions.)2.5 E F1144 -276 Q F0(Display)24.74 E F1 -.18(re)2.5 G(adline).18 E F0 -(function names and bindings in such a w)2.5 E(ay that the)-.1 E 2.5(yc) --.15 G(an be re-read.)-2.5 E F1144 288 Q F0(List current)24.19 E -F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F1 -144 300 Q F0(Display)26.41 E 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 312 S 2.5(yt).1 G(hat the)-2.5 -E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 324 Q F0(Display)24.74 -E 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 336 Q F0(Display)25.3 E 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 348 Q F0(List current)23.08 E 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 360 Q F2(\214lename)2.5 E F0(Read k)180 372 Q .3 -.15 -(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A F1144 -384 Q F2(function)2.5 E F0(Query about which k)180 396 Q -.15(ey)-.1 G -2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H(he named).1 E F2 -(function)2.5 E F0(.)A F1144 408 Q F2(function)2.5 E F0 -(Unbind all k)180 420 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 432 Q F2 -.1(ke)2.5 G(yseq) --.2 E F0(Remo)180 444 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 -456 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause) -180 468 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 480 Q F0 1.765(is e)4.265 F -.15(xe)-.15 G 1.765 -(cuted, the shell sets the).15 F/F3 9/Times-Bold@0 SF(READLINE_LINE) -4.265 E F0 -.25(va)4.015 G 1.765(riable to the contents of the).25 F F1 --.18(re)180 492 S(adline).18 E F0 1.353(line b)3.852 F(uf)-.2 E 1.353 -(fer and the)-.25 F F3(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 -(riable to the current location of the).25 F 2.012(insertion point.)180 -504 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 -(cuted command changes the v).15 F 2.011(alue of)-.25 F F3 -(READLINE_LINE)4.511 E F0(or)4.261 E F3(READLINE_POINT)180 516 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 528 -Q F0 .829(List all k)23.08 F 1.129 -.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 540 Q(The return v) -144 556.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 573.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055 -(Exit from within a)144 585.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 F2(n)2.555 E F0 .055 -(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G -(ls.).15 E F2(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 -E F0(1.)2.554 E(If)144 597.6 Q F2(n)3.074 E F0 .215(is greater than the\ - number of enclosing loops, all enclosing loops are e)2.954 F 2.715 -(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144 -609.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 626.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 638.4 Q .793 -(ecute the speci\214ed shell b)-.15 F .793(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 -(when de\214ning a function whose name is the same as a shell b)144 -650.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 -662.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 674.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 691.2 Q F0([)2.5 E F2 -.2(ex)C(pr) -.2 E F0(])A .253(Returns the conte)144 703.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 715.2 Q -(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F2 -.2 -(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324 -(displays the line number and source \214lename of the current)2.824 F -1.68(subroutine call.)144 727.2 R 1.68(If a non-ne)6.68 F -.05(ga)-.15 G -(ti).05 E 1.98 -.15(ve i)-.25 H(nte).15 E 1.68(ger is supplied as)-.15 F -F2 -.2(ex)4.18 G(pr).2 E F0(,)A F1(caller)4.18 E F0 1.68 -(displays the line number)4.18 F(,)-.4 E(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .335(subroutine name, and source \214le corresponding to that po\ -sition in the current e)144 84 R -.15(xe)-.15 G .335(cution call stack.) -.15 F(This e)144 96 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 108 R .52(return v)3.02 F .52 -(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519 -(cuting a subroutine call or).15 F/F1 10/Times-Italic@0 SF -.2(ex)3.019 -G(pr).2 E F0 .519(does not corre-)3.019 F(spond to a v)144 120 Q -(alid position in the call stack.)-.25 E/F2 10/Times-Bold@0 SF(cd)108 -136.8 Q F0([)2.5 E F2A F0(|[)A F2A F0([)2.5 E F2A F0 -(]]] [)A F1(dir)A F0(])A .321(Change the current directory to)144 148.8 -R F1(dir)2.821 E F0 5.321(.i)C(f)-5.321 E F1(dir)2.821 E F0 .322 -(is not supplied, the v)2.821 F .322(alue of the)-.25 F/F3 9 -/Times-Bold@0 SF(HOME)2.822 E F0 .322(shell v)2.572 F .322(ariable is) --.25 F 1.036(the def)144 160.8 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 F1 -(dir)3.535 E F0 1.035(are ignored.)3.535 F 1.035(The v)6.035 F(ariable) --.25 E F3(CDP)3.535 E -.855(AT)-.666 G(H).855 E F0(de\214nes)3.285 E -.849(the search path for the directory containing)144 172.8 R F1(dir) -3.349 E F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F3(CDP)3.35 E --.855(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F1(dir)144 184.8 -Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 -(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 -(ull directory name)-3.165 F(in)144 196.8 Q F3(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(,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F2(.)A F0 -.74('')C 6.662 -(.I).74 G(f)-6.662 E F1(dir)4.513 E F0(be)4.893 E 1.663 -(gins with a slash \(/\), then)-.15 F F3(CDP)144 208.8 Q -.855(AT)-.666 -G(H).855 E F0 .347(is not used. The)2.598 F F22.847 E F0 .347 -(option causes)2.847 F F2(cd)2.847 E F0 .347(to use the ph)2.847 F .347 -(ysical directory structure by resolving)-.05 F 1.12 -(symbolic links while tra)144 220.8 R -.15(ve)-.2 G(rsing).15 E F1(dir) -3.62 E F0 1.12(and before processing instances of)3.62 F F1(..)3.62 E F0 -(in)3.62 E F1(dir)3.62 E F0 1.12(\(see also the)3.62 F F23.62 E F0 -.395(option to the)144 232.8 R F2(set)2.895 E F0 -.2(bu)2.895 G .395 -(iltin command\); the).2 F F22.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 244.8 R F1 -(..)2.943 E F0(in)2.943 E F1(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F1(..) -2.943 E F0 .443(appears in)2.943 F F1(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 256.8 R .744 -(vious pathname component from)-.25 F F1(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 F1(dir)3.244 E -F0(.)A 1.465(If the)144 268.8 R F23.965 E F0 1.465 -(option is supplied with)3.965 F F23.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 .013 -(determined after a successful directory change,)144 280.8 R F2(cd)2.512 -E F0 .012(will return an unsuccessful status.)2.512 F .012(An ar)5.012 F -(gument)-.18 E(of)144 292.8 Q F22.671 E F0 .171(is con)2.671 F -.15 -(ve)-.4 G .171(rted to).15 F F3($OLDPWD)2.671 E F0 .171 -(before the directory change is attempted.)2.421 F .172 -(If a non-empty directory)5.172 F .744(name from)144 304.8 R F3(CDP) -3.244 E -.855(AT)-.666 G(H).855 E F0 .744(is used, or if)2.994 F F2 -3.244 E F0 .744(is the \214rst ar)3.244 F .743 -(gument, and the directory change is successful,)-.18 F .594 -(the absolute pathname of the ne)144 316.8 R 3.094(ww)-.25 G .594 -(orking directory is written to the standard output.)-3.194 F .594 -(The return)5.594 F -.25(va)144 328.8 S(lue is true if the directory w) -.25 E(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command) -108 345.6 Q F0([)2.5 E F2(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E -F1(ar)A(g)-.37 E F0(...])2.5 E(Run)144 357.6 Q F1(command)2.957 E F0 -(with)3.527 E F1(ar)3.087 E(gs)-.37 E F0 .257 -(suppressing the normal shell function lookup. Only b)3.027 F .257 -(uiltin commands or)-.2 F .501(commands found in the)144 369.6 R F3 --.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G 3.002 -(cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi)3.002 -F -.15(ve)-.25 G .502(n, the search for).15 F F1(command)3.202 E F0(is) -3.772 E .4(performed using a def)144 381.6 R .4(ault v)-.1 F .4 -(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 -(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.399 E .174(either the)144 393.6 R F22.674 E F0(or)2.674 E F2 -2.674 E F0 .175(option is supplied, a description of)2.674 F F1 -(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F22.675 E -F0 .175(option causes)2.675 F 3.318(as)144 405.6 S .818(ingle w)-3.318 F -.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) --.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087 -F F2144 417.6 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 429.6 R F1(command)3.705 E F0 -.1 -(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 -(If neither option is supplied and an error occurred or)6.005 F F1 -(command)144.2 441.6 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 453.6 S -(iltin is the e).2 E(xit status of)-.15 E F1(command)2.5 E F0(.).77 E F2 -(compgen)108 470.4 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) --.37 E F0(])A .013(Generate possible completion matches for)144 482.4 R -F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 -E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 -(accepted by the)144 494.4 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 1.415(standard output.)144 506.4 R 1.415(When using the)6.415 F -F23.915 E F0(or)3.915 E F23.915 E F0 1.415(options, the v) -3.915 F 1.415(arious shell v)-.25 F 1.415(ariables set by the pro-)-.25 -F(grammable completion f)144 518.4 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 542.4 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 -554.4 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) -2.52 F(those completions matching)144 566.4 Q F1(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 590.4 Q -(alue is true unless an in)-.25 E -.25(va)-.4 G -(lid option is supplied, or no matches were generated.).25 E F2 -(complete)108 607.2 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C -F2-3.728 E F1(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E -F0 3.728(][)C F2-3.728 E F1(action)3.728 E F0 3.728(][)C F2 --3.728 E F1(globpat)3.728 E F0 3.729(][)C F2-3.729 E F1(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F1(func-)3.729 E(tion)108 -619.2 Q F0 2.5(][)C F2-2.5 E F1(command)2.5 E F0(])A([)144 631.2 Q -F2A F1(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F1(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(]) -A F1(name)2.5 E F0([)2.5 E F1(name ...)A F0(])A F2(complete \255pr)108 -643.2 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E -.633(Specify ho)144 655.2 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 -(uments to each).18 F F1(name)3.133 E F0 .633(should be completed.)3.133 -F .634(If the)5.634 F F23.134 E F0 .634 -(option is supplied, or if no)3.134 F .14(options are supplied, e)144 -667.2 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 679.2 R(The)5.31 E F22.81 E F0 .31 -(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 -(ompletion speci\214cation for each)-2.81 F F1(name)2.81 E F0 2.81(,o)C -1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F1(name)2.81 E F0(s)A 1.347 -(are supplied, all completion speci\214cations.)144 691.2 R(The)6.347 E -F23.847 E F0 1.346(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 703.2 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 -715.2 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 3.009 -(the remaining options and actions should apply to `)144 727.2 R -(`empty')-.74 E 5.509('c)-.74 G 3.01(ommand completion; that is,)-5.509 -F(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(completion attempted on a blank line.)144 84 Q 1.438 -(The process of applying these completion speci\214cations when w)144 -108 R 1.437(ord completion is attempted is)-.1 F(described abo)144 120 Q -.3 -.15(ve u)-.15 H(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E -(ogrammable Completion)-.18 E F0(.)A .555 -(Other options, if speci\214ed, ha)144 144 R .855 -.15(ve t)-.2 H .555 -(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 -(guments to the)-.18 F F13.056 E F0(,)A F13.056 E F0 3.056 -(,a)C(nd)-3.056 E F13.056 E F0 .723(options \(and, if necessary) -144 156 R 3.223(,t)-.65 G(he)-3.223 E F13.223 E F0(and)3.223 E F1 -3.223 E F0 .722(options\) should be quoted to protect them from e) -3.223 F(xpan-)-.15 E(sion before the)144 168 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 -180 Q/F2 10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 192 Q F2 -(comp-option)2.79 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291 -(ral aspects of the compspec').15 F 2.791(sb)-.55 G(eha)-2.791 E .291 -(vior be)-.2 F .291(yond the simple)-.15 F(generation of completions.) -184 204 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 -216 Q F0 .281(Perform the rest of the def)224 228 R(ault)-.1 E F1(bash) -2.781 E F0 .281(completions if the compspec generates no)2.781 F -(matches.)224 240 Q F1(default)184 252 Q F0 2.875(Use readline')10 F -5.375(sd)-.55 G(ef)-5.375 E 2.876 -(ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 264 Q F1(dir)184 276 Q(names)-.15 E F0(Perform directory name compl\ -etion if the compspec generates no matches.)224 288 Q F1(\214lenames)184 -300 Q F0 -.7(Te)224 312 S .137(ll readline that the compspec generates \ -\214lenames, so it can perform an).7 F 2.636<798c>-.15 G(le-)-2.636 E -.134(name\255speci\214c processing \(lik)224 324 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 336 R .45 -(Intended to be used with shell)5.45 F(functions.)224 348 Q F1(noquote) -184 360 Q F0 -.7(Te)5.55 G .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 372 Q(ault\).)-.1 E F1(nospace)184 384 Q F0 --.7(Te)6.11 G .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 -396 Q F1(plusdirs)184 408 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G -1.985(atches de\214ned by the compspec are generated, directory name) --4.485 F .584(completion is attempted and an)224 420 R 3.084(ym)-.15 G -.584(atches are added to the results of the other)-3.084 F(actions.)224 -432 Q F1144 444 Q F2(action)2.5 E F0(The)184 456 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 -468 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(arrayv)184 480 Q(ar)-.1 E F0(Array v)224 492 Q -(ariable names.)-.25 E F1 4.7(binding Readline)184 504 R F0 -.1(ke)2.5 G -2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 516 S(iltin).2 E F0 -(Names of shell b)11.85 E(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 528 -Q F0(Command names.)224 540 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 552 Q(ectory)-.18 E F0(Directory names.)224 564 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 576 -Q F0(Names of disabled shell b)224 588 Q(uiltins.)-.2 E F1(enabled)184 -600 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 -612 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May) --.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -624 Q F0(File names.)27.22 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(function)184 636 Q F0(Names of shell functions.)224 648 Q F1 -(gr)184 660 Q(oup)-.18 E F0(Group names.)14.62 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -672 Q F0(Help topics as accepted by the)224 684 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 696 Q F0(Hostnames, as tak)224 708 -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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(job)184 84 Q F0 -(Job names, if job control is acti)26.11 E -.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 96 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 108 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 -120 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve) --.25 G(.).15 E F1(ser)184 132 Q(vice)-.1 E F0(Service names.)10.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 144 Q -F0 -1.11(Va)14.45 G(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 156 Q F0(Shell option names as accepted by the)16.66 E F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 168 Q F0 -(Signal names.)14.99 E F1(stopped)184 180 Q F0 -(Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.) -.15 E F1(user)184 192 Q F0(User names.)21.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 204 S -(riable).1 E F0(Names of all shell v)5.1 E 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 216 Q/F2 -10/Times-Italic@0 SF(command)2.5 E(command)184 228 Q F0 1.055(is e)3.555 -F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 240 Q F1144 252 Q F2(function)2.5 E F0 .114 -(The shell function)184 264 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 276 R --.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 -($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 -(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 288 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 300 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 312 R -.102(When it \214nishes, the possible completions are retrie)5.102 F --.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) --.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 324 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 336 Q F2(globpat)2.5 E F0 1.007 -(The pathname e)184 348 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 360 Q F1144 372 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 384 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534 -(ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 396 Q F1144 408 Q F2(suf)2.5 E -2.81(\214x suf)-.18 F<8c78>-.18 E F0 -(is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 420 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 432 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 444 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 -(resultant list which match the w)184 456 Q(ord being completed.)-.1 E -F1144 468 Q F2(\214lterpat)2.5 E(\214lterpat)184 480 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 492 R 1.596 -(guments, and each completion)-.18 F(matching)184 504 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 516 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 532.8 R .467 -(alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F12.966 E F0 -(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 -(plied without a)144 544.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 556.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 573.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 585.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 597.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 609.6 Q F2(name) -3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) -5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 621.6 Q F0 -.2(bu) -2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.228(the `)144 633.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ -mmand completion; that is, completion attempted on a command for which \ -no)-3.728 F 2.177(completion has pre)144 645.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 657.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 681.6 R 1.388(alue is true unless an in)-.25 F --.25(va)-.4 G 1.387 -(lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 693.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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(continue)108 84 Q F0([)2.5 E/F2 10 -/Times-Italic@0 SF(n)A F0(])A 1.753(Resume the ne)144 96 R 1.753 -(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 108 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 -/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 120 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 132 Q F1(declar)108 148.8 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 160.8 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 172.8 R 1.265(ariables and/or gi)-.25 F -1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F --.25(va)144 184.8 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 196.8 Q F2(name)3.58 E F0 -(ar)3.58 E 1.079(guments, additional options are ignored.)-.18 F(When) -6.079 E F13.579 E F0 1.079(is supplied without)3.579 F F2(name) -3.579 E F0(ar)3.579 E(gu-)-.18 E .15(ments, it will display the attrib) -144 208.8 R .15(utes and v)-.2 F .151(alues of all v)-.25 F .151 -(ariables ha)-.25 F .151(ving the attrib)-.2 F .151 -(utes speci\214ed by the)-.2 F .047(additional options.)144 220.8 R .047 -(If no other options are supplied with)5.047 F F12.547 E F0(,)A F1 -(declar)2.547 E(e)-.18 E F0 .046(will display the attrib)2.546 F .046 -(utes and)-.2 F -.25(va)144 232.8 S 1.362(lues of all shell v).25 F -3.862(ariables. The)-.25 F F13.862 E F0 1.363 -(option will restrict the display to shell functions.)3.862 F(The)6.363 -E F13.863 E F0 2.422(option inhibits the display of function de\ -\214nitions; only the function name and attrib)144 244.8 R 2.422 -(utes are)-.2 F 2.663(printed. If)144 256.8 R(the)2.663 E F1(extdeb) -2.663 E(ug)-.2 E F0 .164(shell option is enabled using)2.663 F F1(shopt) -2.664 E F0 2.664(,t)C .164(he source \214le name and line number)-2.664 -F 1.288(where the function is de\214ned are displayed as well.)144 268.8 -R(The)6.288 E F13.788 E F0 1.288(option implies)3.788 F F1 -3.788 E F0 6.288(.T)C(he)-6.288 E F13.788 E F0(option)3.788 E .49 -(forces v)144 280.8 R .49 -(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G 2.991(nw).15 G(hen)-2.991 E F1(declar)2.991 E(e)-.18 E F0 -.491(is e)2.991 F -.15(xe)-.15 G .491(cuted in a).15 F .125 -(shell function.)144 292.8 R .125(It is ignored in all other cases.) -5.125 F .125(The follo)5.125 F .124 -(wing options can be used to restrict output)-.25 F(to v)144 304.8 Q -(ariables with the speci\214ed attrib)-.25 E(ute or to gi)-.2 E .3 -.15 -(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 316.8 Q F0 -(Each)25.3 E 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 328.8 Q F0(Each)23.08 E 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 -340.8 Q F0(Use function names only)26.97 E(.)-.65 E F1144 352.8 Q -F0 .557(The v)27.52 F .558(ariable is treated as an inte)-.25 F .558 -(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F4 9 -/Times-Bold@0 SF .558(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION) -180 364.8 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 376.8 Q F0 .91(When the v)27.52 F .909 -(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to lo).15 F(wer) --.25 E(-)-.2 E 2.5(case. The)180 388.8 R(upper)2.5 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 400.8 Q F0(Gi)24.74 E 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.033(That other v)180 412.8 R 1.033(ariable is de\214ned by the v)-.25 -F 1.033(alue of)-.25 F F2(name)3.533 E F0 6.033(.A)C 1.033 -(ll references and assignments to)-6.033 F F2(name)180 424.8 Q F0 4.032 -(,e)C 1.532(xcept for changing the)-4.182 F F14.032 E F0(attrib) -4.032 E 1.532(ute itself, are performed on the v)-.2 F 1.533 -(ariable refer)-.25 F(-)-.2 E(enced by)180 436.8 Q F2(name)2.5 E F0 1.1 --.55('s v)D 2.5(alue. The).3 F F12.5 E F0(attrib)2.5 E -(ute cannot be applied to array v)-.2 E(ariables.)-.25 E F1144 -448.8 Q F0(Mak)25.86 E(e)-.1 E F2(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 460.8 Q F1144 472.8 Q F0(Gi) -26.97 E .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 484.8 Q -(The trace attrib)5 E(ute has no special meaning for v)-.2 E(ariables.) --.25 E F1144 496.8 Q F0 .91(When the v)24.74 F .909 -(ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 -(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to upper).15 F -(-)-.2 E 2.5(case. The)180 508.8 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 -E(ute is disabled.)-.2 E F1144 520.8 Q F0(Mark)25.3 E 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 537.6 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 549.6 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 561.6 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 .134 -(is supplied.)144 573.6 R .134(If a v)5.134 F .134 -(ariable name is follo)-.25 F .134(wed by =)-.25 F F2(value)A F0 2.634 -(,t)C .134(he v)-2.634 F .134(alue of the v)-.25 F .133 -(ariable is set to)-.25 F F2(value)2.633 E F0 5.133(.T)C(he)-5.133 E .8 -(return v)144 585.6 R .8(alue is 0 unless an in)-.25 F -.25(va)-.4 G -.801 -(lid option is encountered, an attempt is made to de\214ne a function) -.25 F(using)144 597.6 Q/F5 10/Courier@0 SF 1.039(\255f foo=bar)3.539 F -F0 3.539(,a)C 3.539(na)-3.539 G 1.038(ttempt is made to assign a v) --3.539 F 1.038(alue to a readonly v)-.25 F 1.038(ariable, an attempt is) --.25 F .974(made to assign a v)144 609.6 R .974(alue to an array v)-.25 -F .974(ariable without using the compound assignment syntax \(see)-.25 F -F1(Arrays)144 621.6 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the) -.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F -.36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .056 -(readonly status for a readonly v)144 633.6 R .057 -(ariable, an attempt is made to turn of)-.25 F 2.557(fa)-.25 G .057 -(rray status for an array v)-2.557 F(ari-)-.25 E -(able, or an attempt is made to display a non-e)144 645.6 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 662.4 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 674.4 S .329 -(thout options, displays the list of currently remembered directories.) -.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 686.4 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 698.4 Q -F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G -2.5(se).15 G(ntries from the list.)-2.5 E F1144 710.4 Q F0 -(Clears the directory stack by deleting all of the entries.)25.86 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF144 84 Q F0 .882 -(Produces a listing using full pathnames; the def)27.52 F .881 -(ault listing format uses a tilde to denote)-.1 F(the home directory)180 -96 Q(.)-.65 E F1144 108 Q F0 -(Print the directory stack with one entry per line.)24.74 E F1144 -120 Q F0 .272(Print the directory stack with one entry per line, pre\ -\214xing each entry with its inde)25.3 F 2.773(xi)-.15 G 2.773(nt)-2.773 -G(he)-2.773 E(stack.)180 132 Q F1(+)144 144 Q/F2 10/Times-Italic@0 SF(n) -A F0 1.565(Displays the)25.3 F 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 156 Q F1144 168 Q F2(n)A -F0 1.194(Displays the)25.3 F 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 180 Q .258(The return v)144 -196.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 208.8 Q F1(diso)108 225.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 -.4(Wi)144 237.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(neither)144 -249.6 Q F13.837 E F0(nor)3.837 E F13.837 E F0 1.337 -(is supplied, the shell')3.837 F 3.836(sn)-.55 G 1.336(otion of the) --3.836 F F2(curr)3.836 E 1.336(ent job)-.37 F F0 1.336(is used.)3.836 F -1.336(If the)6.336 F F13.836 E F0 1.336(option is)3.836 F(gi)144 -261.6 Q -.15(ve)-.25 G .14(n, each).15 F F2(jobspec)4.38 E F0 .14 -(is not remo)2.95 F -.15(ve)-.15 G 2.641(df).15 G .141(rom the table, b) --2.641 F .141(ut is mark)-.2 F .141(ed so that)-.1 F/F3 9/Times-Bold@0 -SF(SIGHUP)2.641 E F0 .141(is not sent to the)2.391 F .005 -(job if the shell recei)144 273.6 R -.15(ve)-.25 G 2.504(sa).15 G F3 -(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .004(If no)4.504 F F2(jobspec) -4.244 E F0 .004(is present, and neither the)2.814 F F12.504 E F0 -.004(nor the)2.504 F F12.504 E F0 .004(option is)2.504 F 1.228 -(supplied, the)144 285.6 R F2(curr)3.728 E 1.228(ent job)-.37 F F0 1.229 -(is used.)3.729 F 1.229(If no)6.229 F F2(jobspec)5.469 E F0 1.229 -(is supplied, the)4.039 F F13.729 E F0 1.229(option means to remo) -3.729 F 1.529 -.15(ve o)-.15 H(r).15 E .657(mark all jobs; the)144 297.6 -R F13.157 E F0 .657(option without a)3.157 F F2(jobspec)4.897 E F0 -(ar)3.467 E .656(gument restricts operation to running jobs.)-.18 F(The) -5.656 E(return v)144 309.6 Q(alue is 0 unless a)-.25 E F2(jobspec)4.24 E -F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F1(echo)108 326.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 .424(Output the)144 338.4 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 350.4 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 -362.4 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 374.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.554 -(ya)-.15 G 1.054(re interpreted by def)-3.554 F(ault.)-.1 E(The)144 -386.4 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 398.4 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 410.4 Q(wing escape sequences:)-.25 E F1(\\a) -144 422.4 Q F0(alert \(bell\))28.22 E F1(\\b)144 434.4 Q F0(backspace) -27.66 E F1(\\c)144 446.4 Q F0(suppress further output)28.78 E F1(\\e)144 -458.4 Q(\\E)144 470.4 Q F0(an escape character)26.55 E F1(\\f)144 482.4 -Q F0(form feed)29.89 E F1(\\n)144 494.4 Q F0(ne)27.66 E 2.5(wl)-.25 G -(ine)-2.5 E F1(\\r)144 506.4 Q F0(carriage return)28.78 E F1(\\t)144 -518.4 Q F0(horizontal tab)29.89 E F1(\\v)144 530.4 Q F0 -.15(ve)28.22 G -(rtical tab).15 E F1(\\\\)144 542.4 Q F0(backslash)30.44 E F1(\\0)144 -554.4 Q F2(nnn)A F0(the eight-bit character whose v)13.22 E -(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 566.4 Q F2(HH)A F0 -(the eight-bit character whose v)13.78 E(alue is the he)-.25 E -(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh) --.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 578.4 Q F2(HHHH)A F0 -1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 590.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 602.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 614.4 Q F2(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 626.4 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) -3.047 E(HHH)180 638.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 655.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 .277(Enable and disable b)144 667.2 R -.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 -(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834 -(the same name as a shell b)144 679.2 R .834(uiltin to be e)-.2 F -.15 -(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 -(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989 -(the shell normally searches for b)144 691.2 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 703.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.081 -G(TH)-.189 E F0 .08(instead of the shell b)144 715.2 R .08(uiltin v)-.2 -F .08(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test)2.58 F -F0 5.081(.T)C(he)-5.081 E F12.581 E F0 .081 -(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 727.2 S 1.525 -(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F -F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(The)144 84 Q/F1 10/Times-Bold@0 SF2.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 10/Times-Italic@0 SF(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 96 R F12.899 E F0 .399(option is supplied, a list of shell b) -2.899 F .399(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399 -(th no other option ar).4 F .398(guments, the)-.18 F .098 -(list consists of all enabled shell b)144 108 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 120 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.878 -(enabled. If)144 132 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 144 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 156 -Q F1 -2.3 -.15(ev a)108 172.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0 -(...])2.5 E(The)144 184.8 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 196.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 208.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 225.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 237.6 Q F2(command)3.005 E F0 .305 -(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805 -(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E -(guments)-.37 E F0(become)3.076 E .177(the ar)144 249.6 R .177 -(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G -(he)-2.676 E 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 261.6 R .499(gument passed to) --.18 F F2(command)2.999 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2 -(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E F13 E F0 -.5(option causes)3 F F2(com-)3.2 E(mand)144 273.6 Q F0 .639(to be e) -3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 -(vironment. If)-.4 F 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 285.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 297.6 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 309.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 321.6 Q 3.037(yr)-.15 G .537 -(edirections tak)-3.037 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 -(ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 333.6 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 350.4 Q F0([)2.5 E F2(n)A F0 -6.29(]C)C .095(ause the shell to e)-6.29 F .095(xit with a status of) --.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096 -(is omitted, the e)2.835 F .096(xit status is that of the last command) --.15 F -.15(exe)144 362.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 379.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 391.2 Q F0 .257(The supplied)144 403.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.626(commands. If)144 415.2 R(the)2.626 E F1 -2.626 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) -.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .127 -(n, or if the).15 F F1144 427.2 Q F0 .048 -(option is supplied, a list of names of all e)2.548 F .048(xported v) --.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.547 E F0 -.047(option causes the)2.547 F -.15(ex)144 439.2 S 1.446 -(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 451.2 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 463.2 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 475.2 Q F1(fc)108 492 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 -504 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 516 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 -528 R -.15(xe)-.15 G .141(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 540 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 552 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 564 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 576 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 600 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 612 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 624 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E F2 -(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) -.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F -(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G -(n,).15 E .631(the v)144 636 R .631(alue of the)-.25 F F3(FCEDIT)3.131 E -F0 -.25(va)2.881 G .631(riable is used, and the v).25 F .631(alue of) --.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.13 E F0 .63 -(is not set.)2.88 F .63(If nei-)5.63 F .95(ther v)144 648 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 660 S(cuted.).15 E .789(In the second form,)144 684 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 696 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 F4 .347(r='fc \255s')2.847 F F0 -2.847(,s)C 2.847(ot)-2.847 G(hat)-2.847 E(typing)144 708 Q F4 7.166(rc) -3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 -(ginning with)-.15 F F4(cc)3.666 E F0 1.165(and typing)3.666 F F4(r) -3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F -(mand.)144 720 Q(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .142(If the \214rst form is used, the return v)144 84 R .142 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 -(lid option is encountered or).25 F/F1 10/Times-Italic@0 SF<8c72>4.552 E -(st)-.1 E F0(or)3.322 E F1(last)2.732 E F0 .455 -(specify history lines out of range.)144 96 R .454(If the)5.454 F/F2 10 -/Times-Bold@0 SF2.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 108 R -.15(xe)-.15 G .787(cuted or f).15 F .788 -(ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F 1.136 -(second form is used, the return status is that of the command re-e)144 -120 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F1(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 132 Q -(alid history line, in which case)-.25 E F2(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F2(fg)108 148.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) -144 160.8 Q F1(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 172.8 Q 3.117(sn)-.55 G -.617(otion of the)-3.117 F F1(curr)3.117 E .617(ent job)-.37 F F0 .617 -(is used.)3.117 F .617(The return v)5.617 F .616 -(alue is that of the command placed into the)-.25 F(fore)144 184.8 Q -.362(ground, or f)-.15 F .362 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 -(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 196.8 Q -F0 .004(does not specify a v)2.815 F .004(alid job or)-.25 F F1(jobspec) -4.244 E F0 .004(speci\214es a job that w)2.814 F .004 -(as started without job control.)-.1 F F2(getopts)108 213.6 Q F1 -(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F2(getopts)144 -225.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 237.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 249.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 261.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 273.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 285.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 297.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 309.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 321.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 333.6 -Q 2.044(When the end of options is encountered,)144 357.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 369.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 F1(name)2.5 E F0 -(is set to ?.)2.5 E F2(getopts)144 393.6 Q F0 2.392 -(normally parses the positional parameters, b)4.892 F 2.392 -(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144 -405.6 Q F0(parses those instead.)2.5 E F2(getopts)144 429.6 Q F0 1.166 -(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07 -(reporting is used.)144 441.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 -453.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 465.6 Q --.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 489.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 -501.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 513.6 Q 1.241(If a required ar)144 -537.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 549.6 -Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2 -(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E -F0(\)).833 E(is placed in)144 561.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 585.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 597.6 Q F2(hash)108 -614.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 626.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 638.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 650.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 662.4 R(The)6.711 E F24.211 E F0 1.711 -(option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F24.212 E F0 -.833(option causes the shell to for)144 674.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 686.4 R F1(name) -3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F -F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -698.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 -710.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 722.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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(unless a)144 84 Q/F1 10/Times-Italic@0 SF(name)2.86 E F0 -(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25 -E/F2 10/Times-Bold@0 SF(help)108 100.8 Q F0([)2.5 E F2(\255dms)A F0 2.5 -(][)C F1(pattern)-2.5 E F0(])A .866(Display helpful information about b) -144 112.8 R .867(uiltin commands.)-.2 F(If)5.867 E F1(pattern)4.617 E F0 -.867(is speci\214ed,)3.607 F F2(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 -124.8 R F1(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 136.8 Q F2 -144 148.8 Q F0(Display a short description of each)24.74 E F1 -(pattern)2.5 E F2144 160.8 Q F0(Display the description of each) -21.97 E F1(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat) --2.5 E F2144 172.8 Q F0 -(Display only a short usage synopsis for each)26.41 E F1(pattern)2.5 E -F0(The return status is 0 unless no command matches)144 189.6 Q F1 -(pattern)2.5 E F0(.).24 E F2(history [)108 206.4 Q F1(n)A F2(])A -(history \255c)108 218.4 Q(history \255d)108 230.4 Q F1(of)2.5 E(fset) --.18 E F2(history \255anrw)108 242.4 Q F0([)2.5 E F1(\214lename)A F0(])A -F2(history \255p)108 254.4 Q F1(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A 2.5 -(g.)-.37 G(..)-2.5 E F0(])A F2(history \255s)108 266.4 Q F1(ar)2.5 E(g) --.37 E F0([)2.5 E F1(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 -278.4 S .752 -(th no options, display the command history list with line numbers.).4 F -.752(Lines listed with a)5.752 F F2(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 290.4 R .38(An ar)5.38 F .38(gument of)-.18 -F F1(n)3.24 E F0 .38(lists only the last)3.12 F F1(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 302.4 Q(T)-.855 E F0 .264 -(is set and not null, it is used as a format string for)2.514 F F1 -(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 314.4 R 6.019(.N)-.65 G -3.519(oi)-6.019 G(nterv)-3.519 E 1.019 -(ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 326.4 R(If)5.176 E F1(\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 338.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) -2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 350.4 Q F0 -(Clear the history list by deleting all the entries.)25.86 E F2144 -362.4 Q F1(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) -180 374.4 Q F1(of)2.5 E(fset)-.18 E F0(.)A F2144 386.4 Q F0 .599 -(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.099('h)-.74 G .598 -(istory lines \(history lines entered since the be)-3.099 F .598 -(ginning of the current)-.15 F F2(bash)180 398.4 Q F0 -(session\) to the history \214le.)2.5 E F2144 410.4 Q F0 .854(Rea\ -d the history lines not already read from the history \214le into the c\ -urrent history list.)24.74 F .773 -(These are lines appended to the history \214le since the be)180 422.4 R -.772(ginning of the current)-.15 F F2(bash)3.272 E F0(ses-)3.272 E -(sion.)180 434.4 Q F2144 446.4 Q F0(Read the contents of the hist\ -ory \214le and append them to the current history list.)25.86 E F2 -144 458.4 Q F0(Write the current history list to the history \214le, o) -23.08 E -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F2144 470.4 Q F0 .625 -(Perform history substitution on the follo)24.74 F(wing)-.25 E F1(ar) -3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F -2.975(output. Does)180 482.4 R .475 -(not store the results in the history list.)2.975 F(Each)5.475 E F1(ar) -2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 494.4 Q(xpansion.)-.15 E F2144 506.4 Q F0 -.362(Store the)26.41 F F1(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 518.4 Q -.15 -(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F1(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 535.2 R F3(HISTTIMEFORMA)2.645 E(T) --.855 E F0 -.25(va)2.395 G .145 -(riable is set, the time stamp information associated with each history) -.25 F .668(entry is written to the history \214le, mark)144 547.2 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 559.2 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F .415 -(are interpreted as timestamps for the pre)144 571.2 R .416 -(vious history line.)-.25 F .416(The return v)5.416 F .416 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ -ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 583.2 R -.25(va)-.4 G(lid).25 E F1(of)2.999 E(fset)-.18 E F0 -(is)2.999 E(supplied as an ar)144 595.2 Q(gument to)-.18 E F22.5 E -F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E -(xpansion supplied as an ar)-.15 E(gument to)-.18 E F22.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F2(jobs)108 612 Q F0([)2.5 E F2(\255lnprs)A F0 2.5 -(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108 624 Q F1(command)2.5 -E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E -(The \214rst form lists the acti)144 636 Q .3 -.15(ve j)-.25 H 2.5 -(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 648 Q F0 -(List process IDs in addition to the normal information.)27.52 E F2 -144 660 Q F0 .193(Display information only about jobs that ha) -24.74 F .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 F -.194(as last noti-)-.1 F(\214ed of their status.)180 672 Q F2144 -684 Q F0(List only the process ID of the job')24.74 E 2.5(sp)-.55 G -(rocess group leader)-2.5 E(.)-.55 E F2144 696 Q F0 -(Display only running jobs.)25.86 E F2144 708 Q F0 -(Display only stopped jobs.)26.41 E(If)144 724.8 Q F1(jobspec)4.554 E F0 -.314(is gi)3.124 F -.15(ve)-.25 G .314 -(n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(an in)144 84 Q -.25(va)-.4 G(lid option is encountered or an in) -.25 E -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(jobspec)4.24 E F0 -(is supplied.)2.81 E .394(If the)144 100.8 R/F2 10/Times-Bold@0 SF -2.894 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0 .394 -(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in)3.204 -F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 112.8 Q --.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar) -2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F2(kill)108 129.6 Q F0([)2.5 E F2A F1(sigspec)2.5 E F0(|)2.5 E F2 -2.5 E F1(signum)2.5 E F0(|)2.5 E F22.5 E F1(sigspec)A F0 2.5 -(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2 -(kill \255l)108 141.6 Q F0([)2.5 E F1(sigspec)A F0(|)2.5 E F1 -.2(ex)2.5 -G(it_status).2 E F0(])A .12(Send the signal named by)144 153.6 R F1 -(sigspec)2.96 E F0(or)2.93 E F1(signum)2.96 E F0 .119 -(to the processes named by)2.939 F F1(pid)3.869 E F0(or)3.389 E F1 -(jobspec)2.619 E F0(.).31 E F1(sigspec)5.459 E F0(is)2.929 E .318 -(either a case-insensiti)144 165.6 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 177.6 Q F1(signum)4.189 E F0 -1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F1(sigspec) -4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 189.6 Q .522(gument of)-.18 -F F23.023 E F0 .523(lists the signal names.)3.023 F .523(If an) -5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) -.18 F F23.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 -(n, the names).15 F .28(of the signals corresponding to the ar)144 201.6 -R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E -F1 -.2(ex)2.78 G(it_status).2 E F0(ar)144 213.6 Q .377(gument to)-.18 F -F22.877 E F0 .378 -(is a number specifying either a signal number or the e)2.877 F .378 -(xit status of a process termi-)-.15 F .594(nated by a signal.)144 225.6 -R F2(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F -.593(as successfully sent, or f)-.1 F .593(alse if an error)-.1 F -(occurs or an in)144 237.6 Q -.25(va)-.4 G(lid option is encountered.) -.25 E F2(let)108 254.4 Q F1(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 -E F0(...])2.5 E(Each)144 266.4 Q F1(ar)3.026 E(g)-.37 E F0 .196 -(is an arithmetic e)2.916 F .197(xpression to be e)-.15 F -.25(va)-.25 G -.197(luated \(see).25 F F3 .197(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855 -(AT)-.54 G(ION).855 E F0(abo)2.447 E -.15(ve)-.15 G 2.697(\). If).15 F -(the last)144 278.4 Q F1(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G -(luates to 0,).25 E F2(let)2.5 E F0(returns 1; 0 is returned otherwise.) -2.5 E F2(local)108 295.2 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(name) --2.5 E F0([=)A F1(value)A F0 2.5(].)C(..])-2.5 E -.15(Fo)144 307.2 S -2.56(re).15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06 -(ariable named)-.25 F F1(name)2.92 E F0 .06(is created, and assigned) -2.74 F F1(value)2.56 E F0 5.06(.T).18 G(he)-5.06 E F1(option)2.56 E F0 -.06(can be)2.56 F(an)144 319.2 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652 -(he options accepted by)-3.152 F F2(declar)3.152 E(e)-.18 E F0 5.652(.W) -C(hen)-5.652 E F2(local)3.152 E F0 .653 -(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 -331.2 Q F1(name)3.721 E F0 .861(to ha)3.541 F 1.161 -.15(ve a v)-.2 H -.861(isible scope restricted to that function and its children.).15 F --.4(Wi)5.86 G .86(th no operands,).4 F F2(local)144 343.2 Q F0 1.164 -(writes a list of local v)3.664 F 1.165 -(ariables to the standard output.)-.25 F 1.165(It is an error to use) -6.165 F F2(local)3.665 E F0 1.165(when not)3.665 F .233 -(within a function.)144 355.2 R .233(The return status is 0 unless)5.233 -F F2(local)2.733 E F0 .233(is used outside a function, an in)2.733 F --.25(va)-.4 G(lid).25 E F1(name)3.092 E F0(is)2.912 E(supplied, or)144 -367.2 Q F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2 -(logout)108 384 Q F0(Exit a login shell.)9.33 E F2(map\214le)108 400.8 Q -F0([)2.5 E F2A F1(count)2.5 E F0 2.5(][)C F2-2.5 E F1 -(origin)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5(][)C F2 --2.5 E F0 2.5(][)C F2-2.5 E F1(fd)2.5 E F0 2.5(][)C F2 --2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][)C F2-2.5 E F1(quantum) -2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0(])A F2 -.18(re)108 412.8 S -(adarray).18 E F0([)2.5 E F2A F1(count)2.5 E F0 2.5(][)C F2 --2.5 E F1(origin)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5 -(][)C F2-2.5 E F0 2.5(][)C F2-2.5 E F1(fd)2.5 E F0 2.5(][)C -F2-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][)C F2-2.5 E F1 -(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0(])A .35 -(Read lines from the standard input into the inde)144 424.8 R -.15(xe) --.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F1(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 F1(fd)2.851 E F0 1.249(if the)144 436.8 -R F23.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 -F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 -E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) --6.248 F(ha)144 448.8 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 460.8 Q F0(Cop)24.74 E 2.5(ya)-.1 G -2.5(tm)-2.5 G(ost)-2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1 -(count)2.5 E F0(is 0, all lines are copied.)2.5 E F2144 472.8 Q F0 -(Be)22.52 E(gin assigning to)-.15 E F1(arr)2.83 E(ay)-.15 E F0(at inde) -2.82 E(x)-.15 E F1(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 F2144 484.8 Q F0 -(Discard the \214rst)26.41 E F1(count)2.5 E F0(lines read.)2.5 E F2 -144 496.8 Q F0(Remo)26.97 E .3 -.15(ve a t)-.15 H(railing ne).15 E -(wline from each line read.)-.25 E F2144 508.8 Q F0 -(Read lines from \214le descriptor)24.74 E F1(fd)2.5 E F0 -(instead of the standard input.)2.5 E F2144 520.8 Q F0(Ev)23.08 E -(aluate)-.25 E F1(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F1(quantum) -2.5 E F0(lines are read.)2.5 E(The)5 E F22.5 E F0 -(option speci\214es)2.5 E F1(quantum)2.5 E F0(.).32 E F2144 532.8 -Q F0(Specify the number of lines read between each call to)25.86 E F1 -(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 549.6 Q F22.967 E F0 .467 -(is speci\214ed without)2.967 F F22.967 E F0 2.967(,t)C .467 -(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F1 -(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 561.6 R 2.762(xo)-.15 -G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\ -igned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 573.6 R(guments.)-.18 E F1(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 585.6 Q -(If not supplied with an e)144 602.4 Q(xplicit origin,)-.15 E F2 -(map\214le)2.5 E F0(will clear)2.5 E F1(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F2(map\214le)144 619.2 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 F1(arr) -4.405 E(ay)-.15 E F0(is)4.405 E(in)144 631.2 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F1(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 -F2(popd)108 648 Q F0<5bad>2.5 E F2(n)A F0 2.5(][)C(+)-2.5 E F1(n)A F0 -2.5(][)C-2.5 E F1(n)A F0(])A(Remo)144 660 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 -672 R F2(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 684 Q F2144 696 Q F0 .551 -(Suppresses the normal change of directory when remo)24.74 F .551 -(ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 708 Q(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 -(Remo)25.3 E -.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) -25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 1.259 -(th entry counting from the right of the list sho)B 1.26(wn by)-.25 F F1 -(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 120 -R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15(ve)-.15 -G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0 -(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 136.8 R F1(popd)3.144 E -F0 .644(command is successful, a)3.144 F F1(dirs)3.143 E F0 .643 -(is performed as well, and the return status is 0.)3.143 F F1(popd)5.643 -E F0 .415(returns f)144 148.8 R .415(alse if an in)-.1 F -.25(va)-.4 G -.415(lid option is encountered, the directory stack is empty).25 F 2.916 -(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 160.8 Q -(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 -(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 -(Write the formatted)144 189.6 R F2(ar)3.937 E(guments)-.37 E F0 1.437 -(to the standard output under the control of the)3.937 F F2(format)3.936 -E F0 6.436(.T)C(he)-6.436 E F13.936 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 213.6 Q(The)144 237.6 Q F2(format)3.018 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 249.6 R -.15(ve)-.4 G .704 -(rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 261.6 R .036 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.6 Q(gument)-.37 E F0 -5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 -(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 -E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 285.6 Q -(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)20.44 E F1(printf)5.115 E -F0 2.615(to e)5.115 F 2.615 -(xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -5.115 E(gument)-.37 E F0(\(e)180 309.6 Q .608(xcept that)-.15 F F1(\\c) -3.108 E F0 .608(terminates output, backslashes in)3.108 F F1<5c08>3.108 -E F0(,)A F1(\\")3.108 E F0 3.108(,a)C(nd)-3.108 E F1(\\?)3.108 E F0 .608 -(are not remo)3.108 F -.15(ve)-.15 G .608(d, and octal).15 F(escapes be) -180 321.6 Q(ginning with)-.15 E F1(\\0)2.5 E F0 -(may contain up to four digits\).)2.5 E F1(%q)144 333.6 Q F0(causes) -20.44 E F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2 -(ar)2.51 E(gument)-.37 E F0 .01(in a format that can be reused as shell) -2.51 F(input.)180 345.6 Q F1(%\()144 357.6 Q F2(datefmt)A F1(\)T)A F0 -(causes)180 369.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 381.6 R F2 -(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) -2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 -(ger representing the number)-.15 F .457(of seconds since the epoch.)180 -393.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 405.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 417.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 429.6 Q -(vior)-.2 E(.)-.55 E(Ar)144 446.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 458.4 -R 1.259 -(wed, and if the leading character is a single or double quote, the v) --.25 F 1.259(alue is the)-.25 F(ASCII v)144 470.4 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 487.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 499.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 .034(alue or null string,) --.25 F(as appropriate, had been supplied.)144 511.2 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 528 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 540 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 552 R 3.139(wt)-.25 -G .639(op of the)-3.139 F 1.315(stack the current w)144 564 R 1.315 -(orking directory)-.1 F 6.315(.W)-.65 G 1.315(ith no ar)-6.715 F 1.315 -(guments, e)-.18 F 1.316(xchanges the top tw)-.15 F 3.816(od)-.1 G 1.316 -(irectories and)-3.816 F .872 -(returns 0, unless the directory stack is empty)144 576 R 5.871(.A)-.65 -G -.18(rg)-5.871 G .871(uments, if supplied, ha).18 F 1.171 -.15(ve t) --.2 H .871(he follo).15 F .871(wing mean-)-.25 F(ings:)144 588 Q F1 -144 600 Q F0 .902(Suppresses the normal change of directory when \ -adding directories to the stack, so that)24.74 F -(only the stack is manipulated.)180 612 Q F1(+)144 624 Q F2(n)A F0 1.268 -(Rotates the stack so that the)25.3 F F2(n)3.768 E F0 1.267 -(th directory \(counting from the left of the list sho)B 1.267(wn by) --.25 F F1(dirs)180 636 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1144 648 Q F2(n)A F0 .92(Rotates the stack so that the)25.3 -F 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 660 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 672 Q F0(Adds)23.98 E 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 684 Q(gument to the)-.18 E F1(cd) -2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 700.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 712.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 724.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(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(speci\214ed ne)144 84 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E -(ails.)-.1 E/F1 10/Times-Bold@0 SF(pwd)108 100.8 Q F0([)2.5 E F1(\255LP) -A F0(])A .845(Print the absolute pathname of the current w)144 112.8 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 -124.8 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 136.8 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 148.8 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 160.8 Q F1 -.18(re)108 177.6 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 189.6 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ -tandard input, or from the \214le descriptor)144 201.6 R F2(fd)3.016 E -F0 .516(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 213.6 Q -F12.538 E F0 .038(option, and the \214rst w)2.538 F .038 -(ord is assigned to the \214rst)-.1 F F2(name)2.539 E F0 2.539(,t).18 G -.039(he second w)-2.539 F .039(ord to the second)-.1 F F2(name)2.539 E -F0(,).18 E .42(and so on, with lefto)144 225.6 R -.15(ve)-.15 G 2.92(rw) -.15 G .42(ords and their interv)-3.02 F .42 -(ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 237.6 R .54(wer w)-.25 -F .541(ords read from the input stream than names, the remaining names \ -are assigned empty)-.1 F -.25(va)144 249.6 S 2.511(lues. The).25 F .011 -(characters in)2.511 F/F3 9/Times-Bold@0 SF(IFS)2.511 E F0 .011 -(are used to split the line into w)2.261 F 2.511(ords. The)-.1 F .011 -(backslash character \()2.511 F F1(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89 -(be used to remo)144 261.6 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H -1.891(pecial meaning for the ne).15 F 1.891 -(xt character read and for line continuation.)-.15 F -(Options, if supplied, ha)144 273.6 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 285.6 Q F2(aname)2.5 E F0 1.05(The w) -180 297.6 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 309.6 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 --.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0 -(ar)2.5 E(guments are ignored.)-.18 E F1144 321.6 Q F2(delim)2.5 E -F0(The \214rst character of)180 333.6 Q F2(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 345.6 Q F0 .372 -(If the standard input is coming from a terminal,)25.86 F F1 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.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 357.6 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 369.6 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E -F1144 381.6 Q F2(te)2.5 E(xt)-.2 E F0(If)10.78 E F1 -.18(re)2.715 -G(adline).18 E F0 .216(is being used to read the line,)2.715 F F2(te) -2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 E -.216(fer before edit-)-.25 F(ing be)180 393.6 Q(gins.)-.15 E F1144 -405.6 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 417.6 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 429.6 Q -(ut honor a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 E -(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 -144 441.6 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 453.6 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 465.6 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 477.6 -R F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc) -3.503 E(har)-.15 E(s)-.1 E F0(characters are read.)180 489.6 Q F1 -144 501.6 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)180 513.6 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 525.6 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 537.6 Q F0 .543(Backslash does not act as an escape character) -25.86 F 5.543(.T)-.55 G .544(he backslash is considered to be part of) --5.543 F(the line.)180 549.6 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 561.6 Q F0(Silent mode.)26.41 E -(If input is coming from a terminal, characters are not echoed.)5 E F1 -144 573.6 Q F2(timeout)2.5 E F0(Cause)180 585.6 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 597.6 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 609.6 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 -621.6 R .506(fect when reading)-.25 F .59(from re)180 633.6 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 645.6 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 657.6 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 669.6 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -F1144 681.6 Q F2(fd)2.5 E F0(Read input from \214le descriptor) -14.46 E F2(fd)2.5 E F0(.)A .191(If no)144 698.4 R F2(names)3.051 E F0 -.191(are supplied, the line read is assigned to the v)2.961 F(ariable) --.25 E F3(REPL)2.692 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .192 -(The return code is zero,)4.692 F 1.344 -(unless end-of-\214le is encountered,)144 710.4 R F1 -.18(re)3.844 G(ad) -.18 E F0 1.343 -(times out \(in which case the return code is greater than)3.844 F .871 -(128\), a v)144 722.4 R .871 -(ariable assignment error \(such as assigning to a readonly v)-.25 F -.872(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G(lid).25 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(\214le descriptor is supplied as the ar)144 84 Q(gument to)-.18 E -/F1 10/Times-Bold@0 SF2.5 E F0(.)A F1 -.18(re)108 100.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 112.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.096(quent assignment.)144 124.8 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 136.8 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 148.8 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 160.8 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 172.8 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 184.8 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -196.8 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 208.8 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 220.8 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 237.6 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 249.6 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 .469 -(the return status is that of the last command e)144 261.6 R -.15(xe) --.15 G .469(cuted in the function body).15 F 5.469(.I)-.65 G(f)-5.469 E -F1 -.18(re)2.969 G(tur).18 E(n)-.15 E F0 .468(is used out-)2.969 F .466 -(side a function, b)144 273.6 R .466(ut during e)-.2 F -.15(xe)-.15 G -.467(cution of a script by the).15 F F1(.)2.967 E F0(\()5.467 E F1(sour) -A(ce)-.18 E F0 2.967(\)c)C .467(ommand, it causes the shell to)-2.967 F -.088(stop e)144 285.6 R -.15(xe)-.15 G .087 -(cuting that script and return either).15 F F2(n)2.947 E F0 .087 -(or the e)2.827 F .087(xit status of the last command e)-.15 F -.15(xe) --.15 G .087(cuted within).15 F .613(the script as the e)144 297.6 R .613 -(xit status of the script.)-.15 F(If)5.613 E F2(n)3.113 E F0 .613 -(is supplied, the return v)3.113 F .613 -(alue is its least signi\214cant 8)-.25 F 2.511(bits. The)144 309.6 R -.011(return status is non-zero if)2.511 F F1 -.18(re)2.511 G(tur).18 E -(n)-.15 E F0 .011(is supplied a non-numeric ar)2.511 F .01 -(gument, or is used outside)-.18 F 2.909(af)144 321.6 S .409 -(unction and not during e)-2.909 F -.15(xe)-.15 G .41 -(cution of a script by).15 F F1(.)2.91 E F0(or)3.743 E F1(sour)2.91 E -(ce)-.18 E F0 5.41(.A)C .71 -.15(ny c)-5.41 H .41 -(ommand associated with the).15 F F1(RETURN)144 333.6 Q F0(trap is e)2.5 -E -.15(xe)-.15 G(cuted before e).15 E -.15(xe)-.15 G -(cution resumes after the function or script.).15 E F1(set)108 350.4 Q -F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E -F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -F1(set)108 362.4 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 374.4 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 386.4 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.947(reset. In)144 398.4 R F2 .447(posix mode) -2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 -(ariables are listed.)-.25 F .447 -(The output is sorted according to the current)5.447 F 3.53 -(locale. When)144 410.4 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 422.4 R 1.623 -(alues for the positional parameters and are assigned, in)-.25 F(order) -144 434.4 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A -F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 446.4 Q -F0 .539(Automatically mark v)29.3 F .539 -(ariables and functions which are modi\214ed or created for e)-.25 F .54 -(xport to)-.15 F(the en)184 458.4 Q(vironment of subsequent commands.) --.4 E F1144 470.4 Q F0 .132 -(Report the status of terminated background jobs immediately)28.74 F -2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 482.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 494.4 Q F0 -.087(Exit immediately if a)29.86 F 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 506.4 Q -F2 1.294(compound command)3.794 F F0(\(see)3.794 E/F3 9/Times-Bold@0 SF -1.294(SHELL GRAMMAR)3.794 F F0(abo)3.544 E -.15(ve)-.15 G 3.793(\), e) -.15 F 1.293(xits with a non-zero status.)-.15 F .079 -(The shell does not e)184 518.4 R .079(xit if the command that f)-.15 F -.08(ails is part of the command list immediately)-.1 F(follo)184 530.4 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 542.4 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 554.4 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 566.4 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 578.4 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 590.4 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 602.4 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 614.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 .643(cuting all).15 F(the commands in the subshell.)184 626.4 -Q 2.042(If a compound command or shell function e)184 644.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.042(is being)4.542 F 1.435(ignored, none of the commands e)184 -656.4 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 668.4 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 680.4 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 692.4 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 704.4 Q F1 -144 716.4 Q F0(Disable pathname e)30.97 E(xpansion.)-.15 E -(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF144 84 Q F0 2.238 -(Remember the location of commands as the)28.74 F 4.738(ya)-.15 G 2.239 -(re look)-4.738 F 2.239(ed up for e)-.1 F -.15(xe)-.15 G 4.739 -(cution. This).15 F(is)4.739 E(enabled by def)184 96 Q(ault.)-.1 E F1 -144 108 Q F0 .514(All ar)28.74 F .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 120 Q F1 -144 132 Q F0 .148(Monitor mode.)25.97 F .148 -(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F -.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 144 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 156 R .679(When a background job completes, the she\ -ll prints a line containing its)5.678 F -.15(ex)184 168 S(it status.).15 -E F1144 180 Q F0 .653(Read commands b)28.74 F .653(ut do not e)-.2 -F -.15(xe)-.15 G .653(cute them.).15 F .652 -(This may be used to check a shell script for)5.653 F(syntax errors.)184 -192 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1144 204 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) -184 216 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E -(wing:)-.25 E F1(allexport)184 228 Q F0(Same as)224 240 Q F12.5 E -F0(.)A F1(braceexpand)184 252 Q F0(Same as)224 264 Q F12.5 E F0(.) -A F1(emacs)184 276 Q F0 .089 -(Use an emacs-style command line editing interf)13.9 F 2.589(ace. This) --.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 288 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 300 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 312 Q(exit)-.18 E F0(Same as)11.31 E F12.5 E F0(.)A F1 -(errtrace)184 324 Q F0(Same as)5.03 E F12.5 E F0(.)A F1(functrace) -184 336 Q F0(Same as)224 348 Q F12.5 E F0(.)A F1(hashall)184 360 Q -F0(Same as)9.43 E F12.5 E F0(.)A F1(histexpand)184 372 Q F0 -(Same as)224 384 Q F12.5 E F0(.)A F1(history)184 396 Q F0 .586 -(Enable command history)10 F 3.087(,a)-.65 G 3.087(sd)-3.087 G .587 -(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E F2(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 408 Q(ault in interacti)-.1 E .3 -.15(ve s)-.25 H -(hells.).15 E F1(ignor)184 420 Q(eeof)-.18 E F0 1.657(The ef)224 432 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 444 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 456 S(yw).1 E(ord)-.1 E F0(Same as) -224 468 Q F12.5 E F0(.)A F1(monitor)184 480 Q F0(Same as)5.56 E F1 -2.5 E F0(.)A F1(noclob)184 492 Q(ber)-.1 E F0(Same as)224 504 Q F1 -2.5 E F0(.)A F1(noexec)184 516 Q F0(Same as)11.12 E F12.5 E -F0(.)A F1(noglob)184 528 Q F0(Same as)11.1 E F12.5 E F0(.)A F1 -(nolog)184 540 Q F0(Currently ignored.)16.66 E F1(notify)184 552 Q F0 -(Same as)15 E F12.5 E F0(.)A F1(nounset)184 564 Q F0(Same as)6.66 -E F12.5 E F0(.)A F1(onecmd)184 576 Q F0(Same as)6.67 E F12.5 -E F0(.)A F1(ph)184 588 Q(ysical)-.15 E F0(Same as)5.14 E F12.5 E -F0(.)A F1(pipefail)184 600 Q F0 1.029(If set, the return v)7.77 F 1.029 -(alue of a pipeline is the v)-.25 F 1.03 -(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 612 R -1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 624 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 636 Q F0 -2.09(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 -2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F(POSIX standard to match the standard \()224 648 Q -F3(posix mode)A F0(\).)A F1(pri)184 660 Q(vileged)-.1 E F0(Same as)224 -672 Q F12.5 E F0(.)A F1 -.1(ve)184 684 S(rbose).1 E F0(Same as) -7.33 E F12.5 E F0(.)A F1(vi)184 696 Q F0 1.466 -(Use a vi-style command line editing interf)32.22 F 3.965(ace. This)-.1 -F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 708 Q -(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A(GNU Bash 4.2) -72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(xtrace)184 84 Q F0(Same as)13.35 E F1 -2.5 E F0(.)A(If)184 102 Q F13.052 E F0 .552(is supplied with no) -3.052 F/F2 10/Times-Italic@0 SF(option\255name)3.053 E F0 3.053(,t)C -.553(he v)-3.053 F .553(alues of the current options are printed.)-.25 F -(If)5.553 E F1(+o)184 114 Q F0 1.072(is supplied with no)3.572 F F2 -(option\255name)3.572 E F0 3.572(,a)C 1.071(series of)-.001 F F1(set) -3.571 E F0 1.071(commands to recreate the current)3.571 F -(option settings is displayed on the standard output.)184 126 Q F1 -144 138 Q F0 -.45(Tu)28.74 G 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 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) --.27 E F0 1.072(\214les are not pro-)3.322 F 1.501 -(cessed, shell functions are not inherited from the en)184 150 R 1.5 -(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 --.27(BA)184 162 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) -.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G -.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F -(vironment,)-.4 E .38(are ignored.)184 174 R .38 -(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) --.25 H .379(ser \(group\) id not equal to the real).15 F .461 -(user \(group\) id, and the)184 186 R F12.961 E F0 .461 -(option is not supplied, these actions are tak)2.961 F .462 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 198 Q .695 -.15(ve u)-.25 H .395 -(ser id is set to the real user id.).15 F .395(If the)5.395 F F1 -2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .386(user id is not reset.)184 210 R -.45(Tu)5.386 G -.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 -F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F -(set to the real user and group ids.)184 222 Q F1144 234 Q F0 -(Exit after reading and e)30.97 E -.15(xe)-.15 G(cuting one command.).15 -E F1144 246 Q F0 -.35(Tr)28.74 G .044(eat unset v).35 F .044(aria\ -bles and parameters other than the special parameters "@" and "*" as an) --.25 F .182(error when performing parameter e)184 258 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 270 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 -282 Q F1144 294 Q F0(Print shell input lines as the)29.3 E 2.5(ya) --.15 G(re read.)-2.5 E F1144 306 Q F0 .315(After e)29.3 F .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 318 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 330 Q -(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 342 Q F0 2.578(The shell performs brace e)27.63 F 2.578 -(xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 354 Q -(ault.)-.1 E F1144 366 Q F0 .214(If set,)27.08 F F1(bash)2.714 E -F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 -(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F -3.053(tors. This)184 378 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 390 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 402 Q F0 .104(If set, an)27.63 F 2.604(yt)-.15 G .104(rap on) --2.604 F F1(ERR)2.604 E F0 .103 -(is inherited by shell functions, command substitutions, and com-)2.604 -F .838(mands e)184 414 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 426 Q F1 -144 438 Q F0(Enable)26.52 E F1(!)3.032 E F0 .532 -(style history substitution.)5.532 F .531(This option is on by def)5.532 -F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 450 Q -.15 -(ve)-.25 G(.).15 E F1144 462 Q F0 .959 -(If set, the shell does not resolv)28.19 F 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 474 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 486 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 498 Q(.)-.65 E F1144 -510 Q F0 .89(If set, an)27.63 F 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 522 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 534 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 546 Q -F0 .401(If no ar)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 -(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 558 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 -570 Q F0 1.944(Signal the end of options, cause all remaining)34.3 F F2 -(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G -1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 582 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 594 Q .425(The options are of)144 -610.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 622.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 634.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 646.8 Q F1(shift)108 663.6 Q F0([)2.5 E F2(n)A F0 -(])A .429(The positional parameters from)144 675.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 687.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 699.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 711.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 723.6 Q(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(shopt)108 84 Q F0([)2.5 E F1(\255pqsu)A F0 -2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(optname)-2.5 -E F0(...])2.5 E -.8(To)144 96 S .222(ggle the v).8 F .222(alues of v) --.25 F .222(ariables controlling optional shell beha)-.25 F(vior)-.2 E -5.222(.W)-.55 G .222(ith no options, or with the)-5.622 F F12.722 -E F0 .721(option, a list of all settable options is displayed, with an \ -indication of whether or not each is set.)144 108 R(The)144 120 Q F1 -2.828 E F0 .327(option causes output to be displayed in a form th\ -at may be reused as input.)2.828 F .327(Other options)5.327 F(ha)144 132 -Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 -144 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 E F0(.)A F1144 -156 Q F0(Disable \(unset\) each)24.74 E F2(optname)2.5 E F0(.)A F1 -144 168 Q F0 .003(Suppresses normal output \(quiet mode\); the return s\ -tatus indicates whether the)24.74 F F2(optname)2.504 E F0(is)2.504 E -.256(set or unset.)180 180 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 192 Q F2(optnames)2.5 E F0 -(are enabled; non-zero otherwise.)2.5 E F1144 204 Q F0 -(Restricts the v)25.3 E(alues of)-.25 E F2(optname)2.5 E F0 -(to be those de\214ned for the)2.5 E 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 220.8 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 232.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 244.8 Q(ault.) --.1 E 1.544(The return status when listing options is zero if all)144 -261.6 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 273.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 285.6 Q(The list of)144 302.4 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 320.4 Q F0 .199 -(If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 332.4 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 344.4 Q(ars)-.1 E F0 .156(If set, an ar)184 356.4 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 368.4 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 380.4 Q F0 -1.055 -(If set, minor errors in the spelling of a directory component in a) -10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 392.4 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 404.4 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 416.4 Q -(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 428.4 Q F0 2.08(If set,)184 440.4 R F1(bash)4.58 -E F0 2.079(checks that a command found in the hash table e)4.58 F 2.079 -(xists before trying to)-.15 F -.15(exe)184 452.4 S(cute it.).15 E -(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 464.4 -Q F0 .448(If set,)184 476.4 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 488.4 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 500.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.704 E(al)184 512.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 524.4 Q F0 .797(If set,)184 -536.4 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 548.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 560.4 Q F0 1.202(If set,)6.11 F F1(bash)3.702 E F0 1.202 -(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 -(ll lines of a multiple-line command in the same history).15 F(entry)184 -572.4 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 584.4 -Q F0 .42(If set,)184 596.4 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 608.4 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 620.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 .82 -(use ASCII collation and)184 632.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.321(sc)-.55 G -(ollation)-3.321 E(sequence and)184 644.4 Q F2(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat32)144 656.4 Q F0 1.41(If set,)184 668.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 3.2 with respect to locale-speci\214c)-.15 F .422 -(string comparison when using the)184 680.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.923 E F0 .423(operators \(see pre-)2.923 F(vious item\).)184 692.4 Q -F1(compat40)144 704.4 Q F0 1.41(If set,)184 716.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 728.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(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E .77(description of)184 84 R/F1 10/Times-Bold@0 SF(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 96 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 108 Q -(xt command in the list.)-.15 E F1(compat41)144 120 Q F0 1.444(If set,) -184 132 R F1(bash)3.944 E F0 3.944(,w)C 1.443 -(hen in posix mode, treats a single quote in a double-quoted parameter) --3.944 F -.15(ex)184 144 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 156 -R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 -(posix mode through v)184 168 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 180 Q F1(compat42)144 192 Q -F0 1.797(If set,)184 204 R F1(bash)4.297 E F0 1.796 -(does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 216 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(complete_fullquote)144 228 Q F0 .653(If set,)184 -240 R F1(bash)3.153 E F0 .653(quotes all shell metacharacters in \214le\ -names and directory names when per)3.153 F(-)-.2 E 1.525 -(forming completion.)184 252 R 1.524(If not set,)6.525 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 -264 R .029(metacharacters appear in shell v)184 276 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 288 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 300 T 1.923 -.4(r, a).25 H 1.423 -.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 -(only when bash is using backslashes to quote completed \214lenames.)184 -312 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 324 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 336 Q(expand)-.18 E F0 .487 -(If set,)184 348 R F1(bash)2.987 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 -360 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 -372 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 384 Q F0 .859(If set,)7.77 F -F1(bash)3.359 E F0 .858 -(attempts spelling correction on directory names during w)3.359 F .858 -(ord completion if)-.1 F -(the directory name initially supplied does not e)184 396 Q(xist.)-.15 E -F1(dotglob)144 408 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165 -(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) --.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E F1(execfail)144 420 Q F0 1.387 -(If set, a non-interacti)7.79 F 1.687 -.15(ve s)-.25 H 1.386 -(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G -1.386(cute the \214le speci\214ed as an).15 F(ar)184 432 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 444 Q F0 -.716(If set, aliases are e)184 456 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 468 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 480 Q(ug)-.2 E F0(If set, beha)184 492 Q -(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 -504 Q F0(The)28.5 E F14.251 E F0 1.751(option to the)4.251 F F1 -(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 -(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 516 Q -(gument.)-.18 E F1(2.)184 528 Q F0 1.667(If the command run by the)28.5 -F F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 540 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 552 Q F0 .841 -(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 -(exe)220 564 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(iltins\), a call to).2 E F1 --.18(re)2.5 G(tur).18 E(n)-.15 E F0(is simulated.)2.5 E F1(4.)184 588 Q -F2 -.27(BA)28.5 G(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.359 -(Function tracing is enabled:)28.5 F 1.359 -(command substitution, shell functions, and sub-)6.359 F(shells in)220 -624 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 .805(Error tracing is enabled:)28.5 F .804 -(command substitution, shell functions, and subshells)5.805 F(in)220 648 -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)8.89 F .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 -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.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(failglob)144 84 Q F0 1.424 -(If set, patterns which f)7.77 F 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.425 -(xpansion result in an)-.15 F -.15(ex)184 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 .805(If set, range e) -184 180 R .806(xpressions used in pattern matching \(see)-.15 F F2 -.09 -(Pa)3.306 G(tter).09 E 3.056(nM)-.135 G(atching)-3.056 E F0(abo)3.056 E --.15(ve)-.15 G 3.306(\)b).15 G(eha)-3.306 E -.15(ve)-.2 G 2.089 -(as if in the traditional C locale when performing comparisons.)184 192 -R 2.089(That is, the current)7.089 F(locale')184 204 Q 2.613(sc)-.55 G -.113(ollating sequence is not tak)-2.613 F .113(en into account, so)-.1 -F F1(b)2.613 E F0 .114(will not collate between)2.613 F F1(A)2.614 E F0 -(and)2.614 E F1(B)184 216 Q F0 2.5(,a)C(nd upper)-2.5 E(-case and lo)-.2 -E(wer)-.25 E(-case ASCII characters will collate together)-.2 E(.)-.55 E -F1(globstar)144 228 Q F0 .519(If set, the pattern)5 F 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 240 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 -252 Q F1(gnu_errfmt)144 264 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 276 Q F1(histappend)144 -288 Q F0 .676 -(If set, the history list is appended to the \214le named by the v)184 -300 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 312 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 324 Q(eedit)-.18 -E F0 .575(If set, and)184 336 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 348 Q F1(histv)144 360 Q(erify)-.1 E F0 .403 -(If set, and)184 372 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 384 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 396 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 408 Q F0 1.182(If set, and)184 420 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 -432 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 444 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 456 Q F0(If set,) -184 468 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(interacti)144 480 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 492 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 504 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 516 Q -(ault.)-.1 E F1(lastpipe)144 528 Q F0 1.212 -(If set, and job control is not acti)6.66 F -.15(ve)-.25 G 3.712(,t).15 -G 1.212(he shell runs the last command of a pipeline not)-3.712 F -.15 -(exe)184 540 S(cuted in the background in the current shell en).15 E -(vironment.)-.4 E F1(lithist)144 552 Q F0 .654(If set, and the)15.55 F -F1(cmdhist)3.154 E F0 .654 -(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F -(with embedded ne)184 564 Q -(wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 576 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -588 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 600 S(lue may not be changed.).25 -E F1(mailwar)144 612 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -624 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 636 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E/F4 10/Times-Italic@0 SF(mail\214le)2.5 E F0 -(has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1 -(no_empty_cmd_completion)144 648 Q F0 .325(If set, and)184 660 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 672 Q F1 -(nocaseglob)144 684 Q F0 .436(If set,)184 696 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 708 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(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Bold@0 SF(nocasematch)144 84 Q F0 1.194(If set,)184 -96 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(while e)184 108 Q -.15(xe)-.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5 -E F1([[)2.5 E F0(conditional commands.)2.5 E F1(nullglob)144 120 Q F0 -.854(If set,)184 132 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 144 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 156 Q(ogcomp)-.18 E F0 .677 -(If set, the programmable completion f)184 168 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 180 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 192 Q(omptv) --.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 204 R 1.448 -(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 216 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 228 Q(ault.)-.1 E -F1 -.18(re)144 240 S(stricted_shell).18 E F0 1.069 -(The shell sets this option if it is started in restricted mode \(see) -184 252 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 264 Q 4.178 -(w\). The)-.25 F -.25(va)4.178 G 1.678(lue may not be changed.).25 F -1.678(This is not reset when the startup \214les are)6.678 F -.15(exe) -184 276 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E --.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 288 Q(erbose)-.1 E F0 .501(If set, the)184 300 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 312 Q F1(sour) -144 324 Q(cepath)-.18 E F0 .771(If set, the)184 336 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 348 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 360 Q F0(If set, the)184 372 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 388.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 400.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 412.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 424.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 441.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 453.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)6.77 F .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 465.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 477.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 489.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 507.6 R .785 -(wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 519.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 531.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 543.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)12.6 G(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E -(alse.)-.1 E F1(\()144 555.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)6.77 F .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 567.6 Q F3 -.2 -(ex)144 579.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 591.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 603.6 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -615.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 632.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 650.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 662.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 674.4 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 686.4 Q -(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 698.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 710.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 3.14(If the \214rst ar)180 722.4 R 3.139 -(gument is one of the unary conditional operators listed abo)-.18 F -3.439 -.15(ve u)-.15 H(nder).15 E(GNU Bash 4.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 9/Times-Bold@0 SF(CONDITION)180 84 Q .121(AL EXPRESSIONS)-.18 -F/F2 9/Times-Roman@0 SF(,)A F0 .121(the e)2.371 F .122 -(xpression is true if the unary test is true.)-.15 F .122 -(If the \214rst)5.122 F(ar)180 96 Q(gument is not a v)-.18 E -(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 108 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 120 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 132 R 1.155 -.15(ve u) --.15 H(nder).15 E F1(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F F2(,)A -F0(the)3.105 E .579(result of the e)180 144 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 156 R(The)6.332 E/F3 10/Times-Bold@0 SF -3.832 E F0(and)3.832 E F33.832 E F0 1.333 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 168 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 .52(test using the second and third ar)180 180 R 3.021 -(guments. If)-.18 F .521(the \214rst ar)3.021 F .521(gument is e)-.18 F -(xactly)-.15 E F3(\()3.021 E F0 .521(and the third)3.021 F(ar)180 192 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 204 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 216 S -.18(rg)-2.5 G -(uments).18 E .384(If the \214rst ar)180 228 R .384(gument is)-.18 F F3 -(!)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 240 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 252 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 264 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 -E 1.635(The e)180 276 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 288 Q -.15(ve)-.15 G(.).15 E(When used with)144 306 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 322.8 Q F0 -1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)13.23 F(The return status is 0.)144 334.8 -Q F3(trap)108 351.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 -.702(The command)144 363.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 375.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 -.658(\(the v)144 387.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 399.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 F33.08 E F0(has)3.08 E 1.214 -(been supplied, then the trap commands associated with each)144 411.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 423.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 435.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.311(bers. Each)144 447.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 459.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.648(If a)144 477.6 R F4 -(sigspec)4.488 E F0(is)4.458 E F1(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 F1(DEB)144 489.6 Q -(UG)-.09 E F2(,)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 501.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 513.6 R F1 .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 F3(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 525.6 Q F3(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 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 .701(the com-)2.951 F(mand)144 537.6 Q F4(ar) -3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 -(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.643(cuted with the).15 F F3(.)3.143 E F0(or)3.143 E F3(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 549.6 Q -.15(xe) --.15 G(cuting.).15 E .521(If a)144 567.6 R F4(sigspec)3.361 E F0(is) -3.331 E F1(ERR)3.021 E F2(,)A F0 .522(the command)2.771 F F4(ar)3.352 E -(g)-.37 E F0 .522(is e)3.242 F -.15(xe)-.15 G .522(cuted whene).15 F --.15(ve)-.25 G 3.022(raap).15 G .522(ipeline \(which may consist of a) --3.022 F .185(single simple command\), a list, or a compound command re\ -turns a non\255zero e)144 579.6 R .184(xit status, subject to)-.15 F -.451(the follo)144 591.6 R .451(wing conditions.)-.25 F(The)5.451 E F1 -(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 603.6 R .388(wing a)-.25 F F3(while) -2.888 E F0(or)2.888 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.897 E F0 .387 -(statement, part)4.847 F .777(of a command e)144 615.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 F3(&&)3.278 E F0(or)3.278 E F3(||)3.278 E F0 -3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 627.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 639.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 -657.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 669.6 R .662 -(alues in a subshell or subshell en)-.25 F .661(vironment when one is) --.4 F 2.5(created. The)144 681.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 -698.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 710.4 S .173 -(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F4(name) -3.033 E F0 -.1(wo)2.853 G .174 -(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F3144 722.4 Q F0 .843(option is used,)3.343 F F3(type)3.343 E F0 -.843(prints a string which is one of)3.343 F F4(alias)3.343 E F0(,).27 E -F4 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F4(function)3.343 E F0 -(,).24 E F4 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F4 -(\214le)5.252 E F0(if)3.522 E(GNU Bash 4.2)72 768 Q(2013 January 8) -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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Italic@0 SF(name)144.36 84 Q F0 .086 -(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 -(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1 -(name)2.947 E F0 .087(is not)2.767 F .119 -(found, then nothing is printed, and an e)144 96 R .118(xit status of f) --.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F/F2 10 -/Times-Bold@0 SF2.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 -108 R .855(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name) -3.715 E F0 .855(were speci\214ed as a com-)3.535 F .641 -(mand name, or nothing if)144 120 R/F3 10/Courier@0 SF .641 -(type -t name)3.141 F F0 -.1(wo)3.141 G .641(uld not return).1 F F1 -(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E 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 132 R F1(name)2.612 E F0 2.612(,e)C -.15(ve) --2.862 G 2.613(ni).15 G(f)-2.613 E F3 .113(type -t name)2.613 F F0 -.1 -(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113(.I).18 G -2.613(fac)-5.113 G .113(ommand is hashed,)-2.613 F F22.613 E F0 -(and)144 144 Q F23.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 156 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 168 -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 180 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 192 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 204 Q F2(ulimit)108 220.8 Q F0([)2.5 E F2 -(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F1(limit)A F0(]])A -(Pro)144 232.8 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743(rt).15 -G .243(he resources a)-2.743 F -.25(va)-.2 G .244 -(ilable to the shell and to processes started by it, on systems).25 F -.944(that allo)144 244.8 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 -(options specify that the hard or soft limit is set for the)3.444 F(gi) -144 256.8 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208 -(hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.708 F .426(be increased up to the v)144 268.8 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 -280.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 -.742(of the special v)144 292.8 R(alues)-.25 E F2(hard)3.242 E F0(,)A F2 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) -C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 304.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 .499(resource is printed, unless the)144 316.8 R F22.999 E F0 -.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 -(more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 328.8 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 -144 340.8 Q F0(All current limits are reported)25.3 E F2144 -352.8 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E -F2144 364.8 Q F0(The maximum size of core \214les created)25.86 E -F2144 376.8 Q F0(The maximum size of a process')24.74 E 2.5(sd) --.55 G(ata se)-2.5 E(gment)-.15 E F2144 388.8 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F2144 400.8 Q -F0(The maximum size of \214les written by the shell and its children) -26.97 E F2144 412.8 Q F0(The maximum number of pending signals) -27.52 E F2144 424.8 Q F0(The maximum size that may be lock)27.52 E -(ed into memory)-.1 E F2144 436.8 Q F0 -(The maximum resident set size \(man)21.97 E 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F2144 448.8 Q F0 .791(Th\ -e maximum number of open \214le descriptors \(most systems do not allo) -24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 460.8 Q F2144 472.8 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F2 -144 484.8 Q F0 -(The maximum number of bytes in POSIX message queues)24.74 E F2144 -496.8 Q F0(The maximum real-time scheduling priority)25.86 E F2144 -508.8 Q F0(The maximum stack size)26.41 E F2144 520.8 Q F0 -(The maximum amount of cpu time in seconds)26.97 E F2144 532.8 Q -F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F2144 544.8 Q F0 .47 -(The maximum amount of virtual memory a)25.3 F -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 -556.8 Q F2144 568.8 Q F0(The maximum number of \214le locks)25.3 E -F2144 580.8 Q F0(The maximum number of threads)23.63 E(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 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 609.6 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 .402(in seconds;)144 -621.6 R F22.902 E F0 2.902(,w)C .402 -(hich is in units of 512-byte blocks; and)-2.902 F F22.902 E F0(,) -A F22.902 E F0(,)A F22.902 E F0 2.902(,a)C(nd)-2.902 E F2 -2.903 E F0 2.903(,w)C .403(hich are unscaled)-2.903 F -.25(va)144 -633.6 S 3.083(lues. The).25 F .583(return status is 0 unless an in)3.083 -F -.25(va)-.4 G .583(lid option or ar).25 F .583 -(gument is supplied, or an error occurs)-.18 F(while setting a ne)144 -645.6 Q 2.5(wl)-.25 G(imit.)-2.5 E F2(umask)108 662.4 Q F0([)2.5 E F2 -A F0 2.5(][)C F2-2.5 E F0 2.5(][)C F1(mode)-2.5 E F0(])A .2 -(The user \214le-creation mask is set to)144 674.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 686.4 R F1 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -698.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 F22.882 E F0 .382 -(option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 710.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 F23.047 E F0 .547(option is supplied, and)3.047 F F1 -(mode)144.38 722.4 Q F0 .551 -(is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(GNU Bash 4.2)72 768 Q -(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(mode w)144 84 Q(as successfully changed or if no)-.1 E/F1 10 -/Times-Italic@0 SF(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 100.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 112.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 124.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 141.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 153.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 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 165.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 177.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 189.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 201.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 213.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 225.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 237.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 249.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 -261.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 -G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F1(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F2(wait)108 278.4 Q -F0([)2.5 E F2(\255-n)A F0 2.5(][)C F1 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 290.4 S .288 -(it for each speci\214ed process and return its termination status.).8 F -(Each)5.288 E F1(n)3.148 E F0 .287(may be a process ID or a)3.028 F .722 -(job speci\214cation; if a job spec is gi)144 302.4 R -.15(ve)-.25 G -.722(n, all processes in that job').15 F 3.222(sp)-.55 G .722 -(ipeline are w)-3.222 F .722(aited for)-.1 F 5.722(.I)-.55 G(f)-5.722 E -F1(n)3.583 E F0(is)3.463 E .876(not gi)144 314.4 R -.15(ve)-.25 G .876 -(n, all currently acti).15 F 1.176 -.15(ve c)-.25 H .876 -(hild processes are w).15 F .876(aited for)-.1 F 3.376(,a)-.4 G .876 -(nd the return status is zero.)-3.376 F .875(If the)5.875 F F2(\255-n) -144 326.4 Q F0 .176(option is supplied,)2.676 F F2(wait)2.676 E F0 -.1 -(wa)2.676 G .176(its for an).1 F 2.677(yj)-.15 G .177 -(ob to terminate and returns its e)-2.677 F .177(xit status.)-.15 F(If) -5.177 E F1(n)3.037 E F0(speci\214es)2.917 E 2.596(an)144 338.4 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 350.4 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 367.2 Q F0(If)108 379.2 Q F2 -(bash)4.396 E F0 1.896(is started with the name)4.396 F F2(rbash)4.397 E -F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F24.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 391.2 R .945 -(restricted shell is used to set up an en)3.446 F .945 -(vironment more controlled than the standard shell.)-.4 F(It)5.945 E -(beha)108 403.2 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 -(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E 32.5<8363>108 420 -S(hanging directories with)-32.5 E F2(cd)2.5 E F0 32.5<8373>108 436.8 S -(etting or unsetting the v)-32.5 E(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 32.5<8373>108 453.6 S -(pecifying command names containing)-32.5 E F2(/)2.5 E F0 32.5<8373>108 -470.4 S(pecifying a \214lename containing a)-32.5 E F2(/)2.5 E F0 -(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E 32.5<8373>108 487.2 S .449 -(pecifying a \214lename containing a slash as an ar)-32.5 F .449 -(gument to the)-.18 F F22.95 E F0 .45(option to the)2.95 F F2 -(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 499.2 Q 32.5 -<8369>108 516 S(mporting function de\214nitions from the shell en)-32.5 -E(vironment at startup)-.4 E 32.5<8370>108 532.8 S(arsing the v)-32.5 E -(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E 32.5<8372>108 549.6 S(edirecting output usi\ -ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 -<8375>108 566.4 S(sing the)-32.5 E F2(exec)2.5 E F0 -.2(bu)2.5 G -(iltin command to replace the shell with another command).2 E 32.5<8361> -108 583.2 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E -F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 600 S -(sing the)-32.5 E F2(enable)2.5 E F0 -.2(bu)2.5 G -(iltin command to enable disabled shell b).2 E(uiltins)-.2 E 32.5<8373> -108 616.8 S(pecifying the)-32.5 E F22.5 E F0(option to the)2.5 E -F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 633.6 -S(urning of)-32.5 E 2.5(fr)-.25 G(estricted mode with)-2.5 E F2(set +r) -2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 650.4 Q 2.5(ys)-.15 G -(tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 667.2 R -.15 -(xe)-.15 G 1.566(cuted \(see).15 F F3 1.566(COMMAND EXECUTION)4.066 F F0 -(abo)3.816 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 679.2 Q F0(turns of) -2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 -E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F5(SEE ALSO)72 -696 Q F0(GNU Bash 4.2)72 768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E/F1 10/Times-Italic@0 SF(Bash Refer)108 84 Q(ence Manual)-.37 E F0 -2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F1 -(The Gnu Readline Libr)108 96 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F1(The Gnu History Libr)108 108 Q(ary) --.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F1 -.8 -(Po)108 120 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 F1(sh)108 132 Q -F0(\(1\),)A F1(ksh)2.5 E F0(\(1\),)A F1(csh)2.5 E F0(\(1\))A F1(emacs) -108 144 Q F0(\(1\),)A F1(vi)2.5 E F0(\(1\))A F1 -.37(re)108 156 S -(adline).37 E F0(\(3\))A/F2 10.95/Times-Bold@0 SF(FILES)72 172.8 Q F1 -(/bin/bash)109.666 184.8 Q F0(The)144 196.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 208.8 Q -(o\214le)-.45 E F0(The systemwide initialization \214le, e)144 220.8 Q --.15(xe)-.15 G(cuted for login shells).15 E F1(~/.bash_pr)109.666 232.8 -Q(o\214le)-.45 E F0(The personal initialization \214le, e)144 244.8 Q --.15(xe)-.15 G(cuted for login shells).15 E F1(~/.bashr)109.666 256.8 Q -(c)-.37 E F0(The indi)144 268.8 Q(vidual per)-.25 E(-interacti)-.2 E --.15(ve)-.25 G(-shell startup \214le).15 E F1(~/.bash_lo)109.666 280.8 Q -(gout)-.1 E F0(The indi)144 292.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 304.8 -Q(c)-.37 E F0(Indi)144 316.8 Q(vidual)-.25 E F1 -.37(re)2.5 G(adline).37 -E F0(initialization \214le)2.5 E F2 -.548(AU)72 333.6 S(THORS).548 E F0 -(Brian F)108 345.6 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E -(bfox@gnu.or)108 357.6 Q(g)-.18 E(Chet Rame)108 374.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 386.4 Q(y@case.edu)-.15 E F2 -.11(BU)72 -403.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 -(If you \214nd a b)108 415.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 -(you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F -3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 -F 5.626(that it appears in the latest v)108 427.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 439.2 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .41(Once you ha)108 456 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 468 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 480 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 496.8 Q(ug reports should include:)-.2 E(The v) -108 513.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 525.6 -Q(are and operating system)-.1 E(The compiler used to compile)108 537.6 -Q 2.5(Ad)108 549.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 -E 2.5(As)108 561.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 578.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 -595.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 612 S(GS).11 E F0(It')108 624 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 640.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 652.8 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 669.6 Q(Shell b)108 686.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 703.2 R .389 -(process suspension is attempted.)108 715.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 727.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(GNU Bash 4.2)72 -768 Q(2013 January 8)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 389.54(SH\(1\) B).35 F(ASH\(1\)) --.35 E(subshell, which may be stopped as a unit.)108 84 Q(Array v)108 -100.8 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 117.6 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 4.2)72 768 Q(2013 January 8)144.29 E -(75)193.45 E 0 Cg EP -%%Trailer -end -%%EOF diff --git a/doc/bashbug.0 b/doc/bashbug.0 deleted file mode 100644 index 41fc1edbb..000000000 --- a/doc/bashbug.0 +++ /dev/null @@ -1,50 +0,0 @@ -BASHBUG(1) BASHBUG(1) - - - -NNAAMMEE - bashbug - report a bug in bash - -SSYYNNOOPPSSIISS - bbaasshhbbuugg [_-_-_v_e_r_s_i_o_n] [_-_-_h_e_l_p] [_e_m_a_i_l_-_a_d_d_r_e_s_s] - -DDEESSCCRRIIPPTTIIOONN - bbaasshhbbuugg is a shell script to help the user compose and mail bug reports - concerning bash in a standard format. bbaasshhbbuugg invokes the editor spec- - ified by the environment variable EEDDIITTOORR on a temporary copy of the bug - report format outline. The user must fill in the appropriate fields and - exit the editor. bbaasshhbbuugg then mails the completed report to _b_u_g_- - _b_a_s_h_@_g_n_u_._o_r_g, or _e_m_a_i_l_-_a_d_d_r_e_s_s. If the report cannot be mailed, it is - saved in the file _d_e_a_d_._b_a_s_h_b_u_g in the invoking user's home directory. - - The bug report format outline consists of several sections. The first - section provides information about the machine, operating system, the - bash version, and the compilation environment. The second section - should be filled in with a description of the bug. The third section - should be a description of how to reproduce the bug. The optional - fourth section is for a proposed fix. Fixes are encouraged. - -EENNVVIIRROONNMMEENNTT - bbaasshhbbuugg will utilize the following environment variables if they exist: - - EEDDIITTOORR Specifies the preferred editor. If EEDDIITTOORR is not set, bbaasshhbbuugg - defaults to eemmaaccss. - - HHOOMMEE Directory in which the failed bug report is saved if the mail - fails. - - TTMMPPDDIIRR Directory in which to create temporary files and directories. - -SSEEEE AALLSSOO - _b_a_s_h(1) - -AAUUTTHHOORRSS - Brian Fox, Free Software Foundation - bfox@gnu.org - - Chet Ramey, Case Western Reserve University - chet@po.cwru.edu - - - -GNU Bash-4.0 1998 July 30 BASHBUG(1) diff --git a/doc/bashbug.ps b/doc/bashbug.ps deleted file mode 100644 index efbcdda14..000000000 --- a/doc/bashbug.ps +++ /dev/null @@ -1,284 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Mon Nov 17 17:38:06 2008 -%%DocumentNeededResources: font Times-Roman -%%+ font Times-Bold -%%+ font Times-Italic -%%DocumentSuppliedResources: procset grops 1.19 2 -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () -%%Orientation: Portrait -%%EndComments -%%BeginDefaults -%%PageMedia: Default -%%EndDefaults -%%BeginProlog -%%BeginResource: procset grops 1.19 2 -%!PS-Adobe-3.0 Resource-ProcSet -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/Fr{ -setrgbcolor fill -}bind def -/setcmykcolor where{ -pop -/Fk{ -setcmykcolor fill -}bind def -}if -/Fg{ -setgray fill -}bind def -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/setcmykcolor where{ -pop -/Ck/setcmykcolor load def -}if -/Cg/setgray load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -/setpagedevice{}def -}bind def -/PEND{ -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%EndProlog -%%BeginSetup -%%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice -%%EndFeature -%%IncludeResource: font Times-Roman -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron -/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE -/Times-Roman@0 ENC0/Times-Roman RE -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SHB).35 E 347.52(UG\(1\) B)-.1 F -(ASHB)-.35 E(UG\(1\))-.1 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME) -.219 E F0(bashb)108 96 Q(ug \255 report a b)-.2 E(ug in bash)-.2 E F1 -(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF(bashb)108 124.8 Q(ug)-.2 E F0 -([)2.5 E/F3 10/Times-Italic@0 SF(--ver)A(sion)-.1 E F0 2.5(][)C F3 -(--help)-2.5 E F0 2.5(][)C F3(email-addr)-2.5 E(ess)-.37 E F0(])A F1 -(DESCRIPTION)72 141.6 Q F2(bashb)108 153.6 Q(ug)-.2 E F0 .446 -(is a shell script to help the user compose and mail b)2.947 F .446 -(ug reports concerning bash in a standard for)-.2 F(-)-.2 E(mat.)108 -165.6 Q F2(bashb)5.961 E(ug)-.2 E F0(in)3.461 E -.2(vo)-.4 G -.1(ke).2 G -3.461(st).1 G .962(he editor speci\214ed by the en)-3.461 F .962 -(vironment v)-.4 F(ariable)-.25 E/F4 9/Times-Bold@0 SF(EDIT)3.462 E(OR) --.162 E F0 .962(on a temporary cop)3.212 F 3.462(yo)-.1 G(f)-3.462 E -.374(the b)108 177.6 R .374(ug report format outline. The user must \ -\214ll in the appropriate \214elds and e)-.2 F .374(xit the editor)-.15 -F(.)-.55 E F2(bashb)5.373 E(ug)-.2 E F0(then)2.873 E 1.141 -(mails the completed report to)108 189.6 R F3 -.2(bu)3.641 G -(g-bash@gnu.or).2 E(g)-.37 E F0 3.641(,o)C(r)-3.641 E F3(email-addr) -3.641 E(ess)-.37 E F0 6.141(.I)C 3.641(ft)-6.141 G 1.142 -(he report cannot be mailed, it is)-3.641 F(sa)108 201.6 Q -.15(ve)-.2 G -2.5(di).15 G 2.5(nt)-2.5 G(he \214le)-2.5 E F3(dead.bashb)2.5 E(ug)-.2 E -F0(in the in)2.5 E -.2(vo)-.4 G(king user').2 E 2.5(sh)-.55 G -(ome directory)-2.5 E(.)-.65 E .354(The b)108 218.4 R .354 -(ug report format outline consists of se)-.2 F -.15(ve)-.25 G .353 -(ral sections.).15 F .353(The \214rst section pro)5.353 F .353 -(vides information about the)-.15 F .37 -(machine, operating system, the bash v)108 230.4 R .371 -(ersion, and the compilation en)-.15 F 2.871(vironment. The)-.4 F .371 -(second section should)2.871 F .209 -(be \214lled in with a description of the b)108 242.4 R 2.709(ug. The) --.2 F .208(third section should be a description of ho)2.709 F 2.708(wt) --.25 G 2.708(or)-2.708 G .208(eproduce the)-2.708 F -.2(bu)108 254.4 S -2.5(g. The).2 F(optional fourth section is for a proposed \214x.)2.5 E -(Fix)5 E(es are encouraged.)-.15 E F1(ENVIR)72 271.2 Q(ONMENT)-.329 E F2 -(bashb)108 283.2 Q(ug)-.2 E F0(will utilize the follo)2.5 E(wing en)-.25 -E(vironment v)-.4 E(ariables if the)-.25 E 2.5(ye)-.15 G(xist:)-2.65 E -F2(EDIT)108 300 Q(OR)-.18 E F0(Speci\214es the preferred editor)144 312 -Q 2.5(.I)-.55 G(f)-2.5 E F4(EDIT)2.5 E(OR)-.162 E F0(is not set,)2.25 E -F2(bashb)2.5 E(ug)-.2 E F0(def)2.5 E(aults to)-.1 E F2(emacs)2.5 E F0(.) -A F2(HOME)108 328.8 Q F0(Directory in which the f)144 340.8 Q(ailed b) --.1 E(ug report is sa)-.2 E -.15(ve)-.2 G 2.5(di).15 G 2.5(ft)-2.5 G -(he mail f)-2.5 E(ails.)-.1 E F2(TMPDIR)108 357.6 Q F0 -(Directory in which to create temporary \214les and directories.)144 -369.6 Q F1(SEE ALSO)72 386.4 Q F3(bash)108 398.4 Q F0(\(1\))A F1 -.548 -(AU)72 415.2 S(THORS).548 E F0(Brian F)108 427.2 Q(ox, Free Softw)-.15 E -(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 439.2 Q(g)-.18 E -(Chet Rame)108 456 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8 -E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet@po.cwru.edu) -108 468 Q(GNU Bash-4.0)72 768 Q(1998 July 30)148.175 E(1)203.165 E 0 Cg -EP -%%Trailer -end -%%EOF diff --git a/doc/bashman.html b/doc/bashman.html deleted file mode 120000 index 0cf709798..000000000 --- a/doc/bashman.html +++ /dev/null @@ -1 +0,0 @@ -bash.html \ No newline at end of file diff --git a/doc/bashref.aux b/doc/bashref.aux deleted file mode 100644 index 8f6f3f076..000000000 --- a/doc/bashref.aux +++ /dev/null @@ -1,384 +0,0 @@ -@xrdef{Introduction-title}{Introduction} -@xrdef{Introduction-snt}{Chapter@tie 1} -@xrdef{What is Bash?-title}{What is Bash?} -@xrdef{What is Bash?-snt}{Section@tie 1.1} -@xrdef{What is a shell?-title}{What is a shell?} -@xrdef{What is a shell?-snt}{Section@tie 1.2} -@xrdef{Introduction-pg}{1} -@xrdef{What is Bash?-pg}{1} -@xrdef{What is a shell?-pg}{1} -@xrdef{Definitions-title}{Definitions} -@xrdef{Definitions-snt}{Chapter@tie 2} -@xrdef{Definitions-pg}{3} -@xrdef{Basic Shell Features-title}{Basic Shell Features} -@xrdef{Basic Shell Features-snt}{Chapter@tie 3} -@xrdef{Shell Syntax-title}{Shell Syntax} -@xrdef{Shell Syntax-snt}{Section@tie 3.1} -@xrdef{Shell Operation-title}{Shell Operation} -@xrdef{Shell Operation-snt}{Section@tie 3.1.1} -@xrdef{Quoting-title}{Quoting} -@xrdef{Quoting-snt}{Section@tie 3.1.2} -@xrdef{Basic Shell Features-pg}{5} -@xrdef{Shell Syntax-pg}{5} -@xrdef{Shell Operation-pg}{5} -@xrdef{Escape Character-title}{Escape Character} -@xrdef{Escape Character-snt}{Section@tie 3.1.2.1} -@xrdef{Single Quotes-title}{Single Quotes} -@xrdef{Single Quotes-snt}{Section@tie 3.1.2.2} -@xrdef{Double Quotes-title}{Double Quotes} -@xrdef{Double Quotes-snt}{Section@tie 3.1.2.3} -@xrdef{ANSI-C Quoting-title}{ANSI-C Quoting} -@xrdef{ANSI-C Quoting-snt}{Section@tie 3.1.2.4} -@xrdef{Quoting-pg}{6} -@xrdef{Escape Character-pg}{6} -@xrdef{Single Quotes-pg}{6} -@xrdef{Double Quotes-pg}{6} -@xrdef{ANSI-C Quoting-pg}{6} -@xrdef{Locale Translation-title}{Locale-Specific Translation} -@xrdef{Locale Translation-snt}{Section@tie 3.1.2.5} -@xrdef{Comments-title}{Comments} -@xrdef{Comments-snt}{Section@tie 3.1.3} -@xrdef{Shell Commands-title}{Shell Commands} -@xrdef{Shell Commands-snt}{Section@tie 3.2} -@xrdef{Locale Translation-pg}{7} -@xrdef{Comments-pg}{7} -@xrdef{Simple Commands-title}{Simple Commands} -@xrdef{Simple Commands-snt}{Section@tie 3.2.1} -@xrdef{Pipelines-title}{Pipelines} -@xrdef{Pipelines-snt}{Section@tie 3.2.2} -@xrdef{Shell Commands-pg}{8} -@xrdef{Simple Commands-pg}{8} -@xrdef{Pipelines-pg}{8} -@xrdef{Lists-title}{Lists of Commands} -@xrdef{Lists-snt}{Section@tie 3.2.3} -@xrdef{Compound Commands-title}{Compound Commands} -@xrdef{Compound Commands-snt}{Section@tie 3.2.4} -@xrdef{Lists-pg}{9} -@xrdef{Compound Commands-pg}{9} -@xrdef{Looping Constructs-title}{Looping Constructs} -@xrdef{Looping Constructs-snt}{Section@tie 3.2.4.1} -@xrdef{Conditional Constructs-title}{Conditional Constructs} -@xrdef{Conditional Constructs-snt}{Section@tie 3.2.4.2} -@xrdef{Looping Constructs-pg}{10} -@xrdef{Conditional Constructs-pg}{10} -@xrdef{Command Grouping-title}{Grouping Commands} -@xrdef{Command Grouping-snt}{Section@tie 3.2.4.3} -@xrdef{Command Grouping-pg}{14} -@xrdef{Coprocesses-title}{Coprocesses} -@xrdef{Coprocesses-snt}{Section@tie 3.2.5} -@xrdef{GNU Parallel-title}{GNU Parallel} -@xrdef{GNU Parallel-snt}{Section@tie 3.2.6} -@xrdef{Coprocesses-pg}{15} -@xrdef{GNU Parallel-pg}{15} -@xrdef{Shell Functions-title}{Shell Functions} -@xrdef{Shell Functions-snt}{Section@tie 3.3} -@xrdef{Shell Functions-pg}{16} -@xrdef{Shell Parameters-title}{Shell Parameters} -@xrdef{Shell Parameters-snt}{Section@tie 3.4} -@xrdef{Shell Parameters-pg}{18} -@xrdef{Positional Parameters-title}{Positional Parameters} -@xrdef{Positional Parameters-snt}{Section@tie 3.4.1} -@xrdef{Special Parameters-title}{Special Parameters} -@xrdef{Special Parameters-snt}{Section@tie 3.4.2} -@xrdef{Positional Parameters-pg}{19} -@xrdef{Special Parameters-pg}{19} -@xrdef{Shell Expansions-title}{Shell Expansions} -@xrdef{Shell Expansions-snt}{Section@tie 3.5} -@xrdef{Brace Expansion-title}{Brace Expansion} -@xrdef{Brace Expansion-snt}{Section@tie 3.5.1} -@xrdef{Shell Expansions-pg}{20} -@xrdef{Tilde Expansion-title}{Tilde Expansion} -@xrdef{Tilde Expansion-snt}{Section@tie 3.5.2} -@xrdef{Brace Expansion-pg}{21} -@xrdef{Tilde Expansion-pg}{21} -@xrdef{Shell Parameter Expansion-title}{Shell Parameter Expansion} -@xrdef{Shell Parameter Expansion-snt}{Section@tie 3.5.3} -@xrdef{Shell Parameter Expansion-pg}{22} -@xrdef{Command Substitution-title}{Command Substitution} -@xrdef{Command Substitution-snt}{Section@tie 3.5.4} -@xrdef{Command Substitution-pg}{27} -@xrdef{Arithmetic Expansion-title}{Arithmetic Expansion} -@xrdef{Arithmetic Expansion-snt}{Section@tie 3.5.5} -@xrdef{Process Substitution-title}{Process Substitution} -@xrdef{Process Substitution-snt}{Section@tie 3.5.6} -@xrdef{Word Splitting-title}{Word Splitting} -@xrdef{Word Splitting-snt}{Section@tie 3.5.7} -@xrdef{Arithmetic Expansion-pg}{28} -@xrdef{Process Substitution-pg}{28} -@xrdef{Word Splitting-pg}{28} -@xrdef{Filename Expansion-title}{Filename Expansion} -@xrdef{Filename Expansion-snt}{Section@tie 3.5.8} -@xrdef{Pattern Matching-title}{Pattern Matching} -@xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1} -@xrdef{Filename Expansion-pg}{29} -@xrdef{Pattern Matching-pg}{29} -@xrdef{Quote Removal-title}{Quote Removal} -@xrdef{Quote Removal-snt}{Section@tie 3.5.9} -@xrdef{Redirections-title}{Redirections} -@xrdef{Redirections-snt}{Section@tie 3.6} -@xrdef{Quote Removal-pg}{31} -@xrdef{Redirections-pg}{31} -@xrdef{Executing Commands-title}{Executing Commands} -@xrdef{Executing Commands-snt}{Section@tie 3.7} -@xrdef{Simple Command Expansion-title}{Simple Command Expansion} -@xrdef{Simple Command Expansion-snt}{Section@tie 3.7.1} -@xrdef{Executing Commands-pg}{34} -@xrdef{Simple Command Expansion-pg}{34} -@xrdef{Command Search and Execution-title}{Command Search and Execution} -@xrdef{Command Search and Execution-snt}{Section@tie 3.7.2} -@xrdef{Command Search and Execution-pg}{35} -@xrdef{Command Execution Environment-title}{Command Execution Environment} -@xrdef{Command Execution Environment-snt}{Section@tie 3.7.3} -@xrdef{Command Execution Environment-pg}{36} -@xrdef{Environment-title}{Environment} -@xrdef{Environment-snt}{Section@tie 3.7.4} -@xrdef{Exit Status-title}{Exit Status} -@xrdef{Exit Status-snt}{Section@tie 3.7.5} -@xrdef{Environment-pg}{37} -@xrdef{Exit Status-pg}{37} -@xrdef{Signals-title}{Signals} -@xrdef{Signals-snt}{Section@tie 3.7.6} -@xrdef{Shell Scripts-title}{Shell Scripts} -@xrdef{Shell Scripts-snt}{Section@tie 3.8} -@xrdef{Signals-pg}{38} -@xrdef{Shell Scripts-pg}{38} -@xrdef{Shell Builtin Commands-title}{Shell Builtin Commands} -@xrdef{Shell Builtin Commands-snt}{Chapter@tie 4} -@xrdef{Bourne Shell Builtins-title}{Bourne Shell Builtins} -@xrdef{Bourne Shell Builtins-snt}{Section@tie 4.1} -@xrdef{Shell Builtin Commands-pg}{40} -@xrdef{Bourne Shell Builtins-pg}{40} -@xrdef{Bash Builtins-title}{Bash Builtin Commands} -@xrdef{Bash Builtins-snt}{Section@tie 4.2} -@xrdef{Bash Builtins-pg}{47} -@xrdef{Modifying Shell Behavior-title}{Modifying Shell Behavior} -@xrdef{Modifying Shell Behavior-snt}{Section@tie 4.3} -@xrdef{The Set Builtin-title}{The Set Builtin} -@xrdef{The Set Builtin-snt}{Section@tie 4.3.1} -@xrdef{Modifying Shell Behavior-pg}{57} -@xrdef{The Set Builtin-pg}{57} -@xrdef{The Shopt Builtin-title}{The Shopt Builtin} -@xrdef{The Shopt Builtin-snt}{Section@tie 4.3.2} -@xrdef{The Shopt Builtin-pg}{61} -@xrdef{Special Builtins-title}{Special Builtins} -@xrdef{Special Builtins-snt}{Section@tie 4.4} -@xrdef{Special Builtins-pg}{67} -@xrdef{Shell Variables-title}{Shell Variables} -@xrdef{Shell Variables-snt}{Chapter@tie 5} -@xrdef{Bourne Shell Variables-title}{Bourne Shell Variables} -@xrdef{Bourne Shell Variables-snt}{Section@tie 5.1} -@xrdef{Bash Variables-title}{Bash Variables} -@xrdef{Bash Variables-snt}{Section@tie 5.2} -@xrdef{Shell Variables-pg}{68} -@xrdef{Bourne Shell Variables-pg}{68} -@xrdef{Bash Variables-pg}{68} -@xrdef{Bash Features-title}{Bash Features} -@xrdef{Bash Features-snt}{Chapter@tie 6} -@xrdef{Invoking Bash-title}{Invoking Bash} -@xrdef{Invoking Bash-snt}{Section@tie 6.1} -@xrdef{Bash Features-pg}{79} -@xrdef{Invoking Bash-pg}{79} -@xrdef{Bash Startup Files-title}{Bash Startup Files} -@xrdef{Bash Startup Files-snt}{Section@tie 6.2} -@xrdef{Bash Startup Files-pg}{81} -@xrdef{Interactive Shells-title}{Interactive Shells} -@xrdef{Interactive Shells-snt}{Section@tie 6.3} -@xrdef{What is an Interactive Shell?-title}{What is an Interactive Shell?} -@xrdef{What is an Interactive Shell?-snt}{Section@tie 6.3.1} -@xrdef{Interactive Shells-pg}{82} -@xrdef{Is this Shell Interactive?-title}{Is this Shell Interactive?} -@xrdef{Is this Shell Interactive?-snt}{Section@tie 6.3.2} -@xrdef{Interactive Shell Behavior-title}{Interactive Shell Behavior} -@xrdef{Interactive Shell Behavior-snt}{Section@tie 6.3.3} -@xrdef{What is an Interactive Shell?-pg}{83} -@xrdef{Is this Shell Interactive?-pg}{83} -@xrdef{Interactive Shell Behavior-pg}{83} -@xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions} -@xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4} -@xrdef{Bash Conditional Expressions-pg}{84} -@xrdef{Shell Arithmetic-title}{Shell Arithmetic} -@xrdef{Shell Arithmetic-snt}{Section@tie 6.5} -@xrdef{Shell Arithmetic-pg}{86} -@xrdef{Aliases-title}{Aliases} -@xrdef{Aliases-snt}{Section@tie 6.6} -@xrdef{Aliases-pg}{87} -@xrdef{Arrays-title}{Arrays} -@xrdef{Arrays-snt}{Section@tie 6.7} -@xrdef{Arrays-pg}{88} -@xrdef{The Directory Stack-title}{The Directory Stack} -@xrdef{The Directory Stack-snt}{Section@tie 6.8} -@xrdef{Directory Stack Builtins-title}{Directory Stack Builtins} -@xrdef{Directory Stack Builtins-snt}{Section@tie 6.8.1} -@xrdef{The Directory Stack-pg}{90} -@xrdef{Directory Stack Builtins-pg}{90} -@xrdef{Controlling the Prompt-title}{Controlling the Prompt} -@xrdef{Controlling the Prompt-snt}{Section@tie 6.9} -@xrdef{Controlling the Prompt-pg}{91} -@xrdef{The Restricted Shell-title}{The Restricted Shell} -@xrdef{The Restricted Shell-snt}{Section@tie 6.10} -@xrdef{The Restricted Shell-pg}{92} -@xrdef{Bash POSIX Mode-title}{Bash POSIX Mode} -@xrdef{Bash POSIX Mode-snt}{Section@tie 6.11} -@xrdef{Bash POSIX Mode-pg}{93} -@xrdef{Job Control-title}{Job Control} -@xrdef{Job Control-snt}{Chapter@tie 7} -@xrdef{Job Control Basics-title}{Job Control Basics} -@xrdef{Job Control Basics-snt}{Section@tie 7.1} -@xrdef{Job Control-pg}{97} -@xrdef{Job Control Basics-pg}{97} -@xrdef{Job Control Builtins-title}{Job Control Builtins} -@xrdef{Job Control Builtins-snt}{Section@tie 7.2} -@xrdef{Job Control Builtins-pg}{98} -@xrdef{Job Control Variables-title}{Job Control Variables} -@xrdef{Job Control Variables-snt}{Section@tie 7.3} -@xrdef{Job Control Variables-pg}{100} -@xrdef{Command Line Editing-title}{Command Line Editing} -@xrdef{Command Line Editing-snt}{Chapter@tie 8} -@xrdef{Introduction and Notation-title}{Introduction to Line Editing} -@xrdef{Introduction and Notation-snt}{Section@tie 8.1} -@xrdef{Readline Interaction-title}{Readline Interaction} -@xrdef{Readline Interaction-snt}{Section@tie 8.2} -@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials} -@xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1} -@xrdef{Command Line Editing-pg}{101} -@xrdef{Introduction and Notation-pg}{101} -@xrdef{Readline Interaction-pg}{101} -@xrdef{Readline Movement Commands-title}{Readline Movement Commands} -@xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2} -@xrdef{Readline Killing Commands-title}{Readline Killing Commands} -@xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3} -@xrdef{Readline Bare Essentials-pg}{102} -@xrdef{Readline Movement Commands-pg}{102} -@xrdef{Readline Arguments-title}{Readline Arguments} -@xrdef{Readline Arguments-snt}{Section@tie 8.2.4} -@xrdef{Searching-title}{Searching for Commands in the History} -@xrdef{Searching-snt}{Section@tie 8.2.5} -@xrdef{Readline Killing Commands-pg}{103} -@xrdef{Readline Arguments-pg}{103} -@xrdef{Searching-pg}{103} -@xrdef{Readline Init File-title}{Readline Init File} -@xrdef{Readline Init File-snt}{Section@tie 8.3} -@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax} -@xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1} -@xrdef{Readline Init File-pg}{104} -@xrdef{Readline Init File Syntax-pg}{104} -@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs} -@xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2} -@xrdef{Conditional Init Constructs-pg}{111} -@xrdef{Sample Init File-title}{Sample Init File} -@xrdef{Sample Init File-snt}{Section@tie 8.3.3} -@xrdef{Sample Init File-pg}{112} -@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands} -@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4} -@xrdef{Commands For Moving-title}{Commands For Moving} -@xrdef{Commands For Moving-snt}{Section@tie 8.4.1} -@xrdef{Commands For History-title}{Commands For Manipulating The History} -@xrdef{Commands For History-snt}{Section@tie 8.4.2} -@xrdef{Bindable Readline Commands-pg}{115} -@xrdef{Commands For Moving-pg}{115} -@xrdef{Commands For History-pg}{116} -@xrdef{Commands For Text-title}{Commands For Changing Text} -@xrdef{Commands For Text-snt}{Section@tie 8.4.3} -@xrdef{Commands For Text-pg}{117} -@xrdef{Commands For Killing-title}{Killing And Yanking} -@xrdef{Commands For Killing-snt}{Section@tie 8.4.4} -@xrdef{Commands For Killing-pg}{118} -@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments} -@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5} -@xrdef{Numeric Arguments-pg}{119} -@xrdef{Commands For Completion-title}{Letting Readline Type For You} -@xrdef{Commands For Completion-snt}{Section@tie 8.4.6} -@xrdef{Commands For Completion-pg}{120} -@xrdef{Keyboard Macros-title}{Keyboard Macros} -@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7} -@xrdef{Keyboard Macros-pg}{121} -@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands} -@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8} -@xrdef{Miscellaneous Commands-pg}{122} -@xrdef{Readline vi Mode-title}{Readline vi Mode} -@xrdef{Readline vi Mode-snt}{Section@tie 8.5} -@xrdef{Programmable Completion-title}{Programmable Completion} -@xrdef{Programmable Completion-snt}{Section@tie 8.6} -@xrdef{Readline vi Mode-pg}{124} -@xrdef{Programmable Completion-pg}{124} -@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins} -@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7} -@xrdef{Programmable Completion Builtins-pg}{126} -@xrdef{A Programmable Completion Example-title}{A Programmable Completion Example} -@xrdef{A Programmable Completion Example-snt}{Section@tie 8.8} -@xrdef{A Programmable Completion Example-pg}{130} -@xrdef{Using History Interactively-title}{Using History Interactively} -@xrdef{Using History Interactively-snt}{Chapter@tie 9} -@xrdef{Bash History Facilities-title}{Bash History Facilities} -@xrdef{Bash History Facilities-snt}{Section@tie 9.1} -@xrdef{Bash History Builtins-title}{Bash History Builtins} -@xrdef{Bash History Builtins-snt}{Section@tie 9.2} -@xrdef{Using History Interactively-pg}{133} -@xrdef{Bash History Facilities-pg}{133} -@xrdef{Bash History Builtins-pg}{133} -@xrdef{History Interaction-title}{History Expansion} -@xrdef{History Interaction-snt}{Section@tie 9.3} -@xrdef{Event Designators-title}{Event Designators} -@xrdef{Event Designators-snt}{Section@tie 9.3.1} -@xrdef{History Interaction-pg}{135} -@xrdef{Word Designators-title}{Word Designators} -@xrdef{Word Designators-snt}{Section@tie 9.3.2} -@xrdef{Event Designators-pg}{136} -@xrdef{Word Designators-pg}{136} -@xrdef{Modifiers-title}{Modifiers} -@xrdef{Modifiers-snt}{Section@tie 9.3.3} -@xrdef{Modifiers-pg}{137} -@xrdef{Installing Bash-title}{Installing Bash} -@xrdef{Installing Bash-snt}{Chapter@tie 10} -@xrdef{Basic Installation-title}{Basic Installation} -@xrdef{Basic Installation-snt}{Section@tie 10.1} -@xrdef{Compilers and Options-title}{Compilers and Options} -@xrdef{Compilers and Options-snt}{Section@tie 10.2} -@xrdef{Installing Bash-pg}{138} -@xrdef{Basic Installation-pg}{138} -@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures} -@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3} -@xrdef{Installation Names-title}{Installation Names} -@xrdef{Installation Names-snt}{Section@tie 10.4} -@xrdef{Specifying the System Type-title}{Specifying the System Type} -@xrdef{Specifying the System Type-snt}{Section@tie 10.5} -@xrdef{Compilers and Options-pg}{139} -@xrdef{Compiling For Multiple Architectures-pg}{139} -@xrdef{Installation Names-pg}{139} -@xrdef{Specifying the System Type-pg}{139} -@xrdef{Sharing Defaults-title}{Sharing Defaults} -@xrdef{Sharing Defaults-snt}{Section@tie 10.6} -@xrdef{Operation Controls-title}{Operation Controls} -@xrdef{Operation Controls-snt}{Section@tie 10.7} -@xrdef{Optional Features-title}{Optional Features} -@xrdef{Optional Features-snt}{Section@tie 10.8} -@xrdef{Sharing Defaults-pg}{140} -@xrdef{Operation Controls-pg}{140} -@xrdef{Optional Features-pg}{140} -@xrdef{Reporting Bugs-title}{Reporting Bugs} -@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}} -@xrdef{Reporting Bugs-pg}{145} -@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell} -@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}} -@xrdef{Major Differences From The Bourne Shell-pg}{146} -@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License} -@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}} -@xrdef{GNU Free Documentation License-pg}{152} -@xrdef{Indexes-title}{Indexes} -@xrdef{Indexes-snt}{Appendix@tie @char68{}} -@xrdef{Builtin Index-title}{Index of Shell Builtin Commands} -@xrdef{Builtin Index-snt}{Section@tie @char68.1} -@xrdef{Indexes-pg}{160} -@xrdef{Builtin Index-pg}{160} -@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words} -@xrdef{Reserved Word Index-snt}{Section@tie @char68.2} -@xrdef{Variable Index-title}{Parameter and Variable Index} -@xrdef{Variable Index-snt}{Section@tie @char68.3} -@xrdef{Reserved Word Index-pg}{161} -@xrdef{Variable Index-pg}{161} -@xrdef{Function Index-title}{Function Index} -@xrdef{Function Index-snt}{Section@tie @char68.4} -@xrdef{Function Index-pg}{163} -@xrdef{Concept Index-title}{Concept Index} -@xrdef{Concept Index-snt}{Section@tie @char68.5} -@xrdef{Concept Index-pg}{165} diff --git a/doc/bashref.bt b/doc/bashref.bt deleted file mode 100644 index 34c29d187..000000000 --- a/doc/bashref.bt +++ /dev/null @@ -1,59 +0,0 @@ -\entry{:}{40}{\code {:}} -\entry{.}{40}{\code {.}} -\entry{break}{40}{\code {break}} -\entry{cd}{41}{\code {cd}} -\entry{continue}{41}{\code {continue}} -\entry{eval}{41}{\code {eval}} -\entry{exec}{41}{\code {exec}} -\entry{exit}{42}{\code {exit}} -\entry{export}{42}{\code {export}} -\entry{getopts}{42}{\code {getopts}} -\entry{hash}{43}{\code {hash}} -\entry{pwd}{43}{\code {pwd}} -\entry{readonly}{43}{\code {readonly}} -\entry{return}{44}{\code {return}} -\entry{shift}{44}{\code {shift}} -\entry{test}{44}{\code {test}} -\entry{[}{44}{\code {[}} -\entry{times}{45}{\code {times}} -\entry{trap}{45}{\code {trap}} -\entry{umask}{46}{\code {umask}} -\entry{unset}{47}{\code {unset}} -\entry{alias}{47}{\code {alias}} -\entry{bind}{47}{\code {bind}} -\entry{builtin}{48}{\code {builtin}} -\entry{caller}{48}{\code {caller}} -\entry{command}{49}{\code {command}} -\entry{declare}{49}{\code {declare}} -\entry{echo}{50}{\code {echo}} -\entry{enable}{51}{\code {enable}} -\entry{help}{52}{\code {help}} -\entry{let}{52}{\code {let}} -\entry{local}{52}{\code {local}} -\entry{logout}{52}{\code {logout}} -\entry{mapfile}{52}{\code {mapfile}} -\entry{printf}{53}{\code {printf}} -\entry{read}{54}{\code {read}} -\entry{readarray}{55}{\code {readarray}} -\entry{source}{55}{\code {source}} -\entry{type}{55}{\code {type}} -\entry{typeset}{56}{\code {typeset}} -\entry{ulimit}{56}{\code {ulimit}} -\entry{unalias}{57}{\code {unalias}} -\entry{set}{57}{\code {set}} -\entry{shopt}{61}{\code {shopt}} -\entry{dirs}{90}{\code {dirs}} -\entry{popd}{90}{\code {popd}} -\entry{pushd}{90}{\code {pushd}} -\entry{bg}{98}{\code {bg}} -\entry{fg}{98}{\code {fg}} -\entry{jobs}{98}{\code {jobs}} -\entry{kill}{99}{\code {kill}} -\entry{wait}{99}{\code {wait}} -\entry{disown}{99}{\code {disown}} -\entry{suspend}{99}{\code {suspend}} -\entry{compgen}{126}{\code {compgen}} -\entry{complete}{127}{\code {complete}} -\entry{compopt}{130}{\code {compopt}} -\entry{fc}{133}{\code {fc}} -\entry{history}{134}{\code {history}} diff --git a/doc/bashref.bts b/doc/bashref.bts deleted file mode 100644 index 5f7d68504..000000000 --- a/doc/bashref.bts +++ /dev/null @@ -1,80 +0,0 @@ -\initial {.} -\entry {\code {.}}{40} -\initial {:} -\entry {\code {:}}{40} -\initial {[} -\entry {\code {[}}{44} -\initial {A} -\entry {\code {alias}}{47} -\initial {B} -\entry {\code {bg}}{98} -\entry {\code {bind}}{47} -\entry {\code {break}}{40} -\entry {\code {builtin}}{48} -\initial {C} -\entry {\code {caller}}{48} -\entry {\code {cd}}{41} -\entry {\code {command}}{49} -\entry {\code {compgen}}{126} -\entry {\code {complete}}{127} -\entry {\code {compopt}}{130} -\entry {\code {continue}}{41} -\initial {D} -\entry {\code {declare}}{49} -\entry {\code {dirs}}{90} -\entry {\code {disown}}{99} -\initial {E} -\entry {\code {echo}}{50} -\entry {\code {enable}}{51} -\entry {\code {eval}}{41} -\entry {\code {exec}}{41} -\entry {\code {exit}}{42} -\entry {\code {export}}{42} -\initial {F} -\entry {\code {fc}}{133} -\entry {\code {fg}}{98} -\initial {G} -\entry {\code {getopts}}{42} -\initial {H} -\entry {\code {hash}}{43} -\entry {\code {help}}{52} -\entry {\code {history}}{134} -\initial {J} -\entry {\code {jobs}}{98} -\initial {K} -\entry {\code {kill}}{99} -\initial {L} -\entry {\code {let}}{52} -\entry {\code {local}}{52} -\entry {\code {logout}}{52} -\initial {M} -\entry {\code {mapfile}}{52} -\initial {P} -\entry {\code {popd}}{90} -\entry {\code {printf}}{53} -\entry {\code {pushd}}{90} -\entry {\code {pwd}}{43} -\initial {R} -\entry {\code {read}}{54} -\entry {\code {readarray}}{55} -\entry {\code {readonly}}{43} -\entry {\code {return}}{44} -\initial {S} -\entry {\code {set}}{57} -\entry {\code {shift}}{44} -\entry {\code {shopt}}{61} -\entry {\code {source}}{55} -\entry {\code {suspend}}{99} -\initial {T} -\entry {\code {test}}{44} -\entry {\code {times}}{45} -\entry {\code {trap}}{45} -\entry {\code {type}}{55} -\entry {\code {typeset}}{56} -\initial {U} -\entry {\code {ulimit}}{56} -\entry {\code {umask}}{46} -\entry {\code {unalias}}{57} -\entry {\code {unset}}{47} -\initial {W} -\entry {\code {wait}}{99} diff --git a/doc/bashref.cp b/doc/bashref.cp deleted file mode 100644 index 5d51cc342..000000000 --- a/doc/bashref.cp +++ /dev/null @@ -1,118 +0,0 @@ -\entry{POSIX}{3}{POSIX} -\entry{builtin}{3}{builtin} -\entry{control operator}{3}{control operator} -\entry{exit status}{3}{exit status} -\entry{field}{3}{field} -\entry{filename}{3}{filename} -\entry{job}{3}{job} -\entry{job control}{3}{job control} -\entry{metacharacter}{3}{metacharacter} -\entry{name}{3}{name} -\entry{identifier}{3}{identifier} -\entry{operator, shell}{3}{operator, shell} -\entry{process group}{3}{process group} -\entry{process group ID}{3}{process group ID} -\entry{reserved word}{3}{reserved word} -\entry{return status}{4}{return status} -\entry{signal}{4}{signal} -\entry{special builtin}{4}{special builtin} -\entry{token}{4}{token} -\entry{word}{4}{word} -\entry{Bourne shell}{5}{Bourne shell} -\entry{quoting}{6}{quoting} -\entry{quoting, ANSI}{6}{quoting, ANSI} -\entry{localization}{7}{localization} -\entry{internationalization}{7}{internationalization} -\entry{native languages}{7}{native languages} -\entry{translation, native languages}{7}{translation, native languages} -\entry{comments, shell}{7}{comments, shell} -\entry{commands, shell}{8}{commands, shell} -\entry{commands, simple}{8}{commands, simple} -\entry{pipeline}{8}{pipeline} -\entry{commands, pipelines}{8}{commands, pipelines} -\entry{command timing}{8}{command timing} -\entry{commands, lists}{9}{commands, lists} -\entry{commands, compound}{9}{commands, compound} -\entry{commands, looping}{10}{commands, looping} -\entry{commands, conditional}{10}{commands, conditional} -\entry{commands, grouping}{14}{commands, grouping} -\entry{coprocess}{15}{coprocess} -\entry{shell function}{16}{shell function} -\entry{functions, shell}{16}{functions, shell} -\entry{parameters}{18}{parameters} -\entry{variable, shell}{18}{variable, shell} -\entry{shell variable}{18}{shell variable} -\entry{parameters, positional}{19}{parameters, positional} -\entry{parameters, special}{19}{parameters, special} -\entry{expansion}{20}{expansion} -\entry{brace expansion}{21}{brace expansion} -\entry{expansion, brace}{21}{expansion, brace} -\entry{tilde expansion}{21}{tilde expansion} -\entry{expansion, tilde}{21}{expansion, tilde} -\entry{parameter expansion}{22}{parameter expansion} -\entry{expansion, parameter}{22}{expansion, parameter} -\entry{command substitution}{27}{command substitution} -\entry{expansion, arithmetic}{28}{expansion, arithmetic} -\entry{arithmetic expansion}{28}{arithmetic expansion} -\entry{process substitution}{28}{process substitution} -\entry{word splitting}{28}{word splitting} -\entry{expansion, filename}{29}{expansion, filename} -\entry{expansion, pathname}{29}{expansion, pathname} -\entry{filename expansion}{29}{filename expansion} -\entry{pathname expansion}{29}{pathname expansion} -\entry{pattern matching}{29}{pattern matching} -\entry{matching, pattern}{29}{matching, pattern} -\entry{redirection}{31}{redirection} -\entry{command expansion}{34}{command expansion} -\entry{command execution}{35}{command execution} -\entry{command search}{35}{command search} -\entry{execution environment}{36}{execution environment} -\entry{environment}{37}{environment} -\entry{exit status}{37}{exit status} -\entry{signal handling}{38}{signal handling} -\entry{shell script}{38}{shell script} -\entry{special builtin}{67}{special builtin} -\entry{login shell}{81}{login shell} -\entry{interactive shell}{81}{interactive shell} -\entry{startup files}{81}{startup files} -\entry{interactive shell}{82}{interactive shell} -\entry{shell, interactive}{82}{shell, interactive} -\entry{expressions, conditional}{84}{expressions, conditional} -\entry{arithmetic, shell}{86}{arithmetic, shell} -\entry{shell arithmetic}{86}{shell arithmetic} -\entry{expressions, arithmetic}{86}{expressions, arithmetic} -\entry{evaluation, arithmetic}{86}{evaluation, arithmetic} -\entry{arithmetic evaluation}{86}{arithmetic evaluation} -\entry{alias expansion}{87}{alias expansion} -\entry{arrays}{88}{arrays} -\entry{directory stack}{90}{directory stack} -\entry{prompting}{91}{prompting} -\entry{restricted shell}{92}{restricted shell} -\entry{POSIX Mode}{93}{POSIX Mode} -\entry{job control}{97}{job control} -\entry{foreground}{97}{foreground} -\entry{background}{97}{background} -\entry{suspending jobs}{97}{suspending jobs} -\entry{Readline, how to use}{100}{Readline, how to use} -\entry{interaction, readline}{101}{interaction, readline} -\entry{notation, readline}{102}{notation, readline} -\entry{command editing}{102}{command editing} -\entry{editing command lines}{102}{editing command lines} -\entry{killing text}{103}{killing text} -\entry{yanking text}{103}{yanking text} -\entry{kill ring}{103}{kill ring} -\entry{initialization file, readline}{104}{initialization file, readline} -\entry{variables, readline}{105}{variables, readline} -\entry{programmable completion}{124}{programmable completion} -\entry{completion builtins}{126}{completion builtins} -\entry{History, how to use}{132}{History, how to use} -\entry{command history}{133}{command history} -\entry{history list}{133}{history list} -\entry{history builtins}{133}{history builtins} -\entry{history expansion}{135}{history expansion} -\entry{event designators}{136}{event designators} -\entry{history events}{136}{history events} -\entry{installation}{138}{installation} -\entry{configuration}{138}{configuration} -\entry{Bash installation}{138}{Bash installation} -\entry{Bash configuration}{138}{Bash configuration} diff --git a/doc/bashref.cps b/doc/bashref.cps deleted file mode 100644 index 13266bbae..000000000 --- a/doc/bashref.cps +++ /dev/null @@ -1,136 +0,0 @@ -\initial {A} -\entry {alias expansion}{87} -\entry {arithmetic evaluation}{86} -\entry {arithmetic expansion}{28} -\entry {arithmetic, shell}{86} -\entry {arrays}{88} -\initial {B} -\entry {background}{97} -\entry {Bash configuration}{138} -\entry {Bash installation}{138} -\entry {Bourne shell}{5} -\entry {brace expansion}{21} -\entry {builtin}{3} -\initial {C} -\entry {command editing}{102} -\entry {command execution}{35} -\entry {command expansion}{34} -\entry {command history}{133} -\entry {command search}{35} -\entry {command substitution}{27} -\entry {command timing}{8} -\entry {commands, compound}{9} -\entry {commands, conditional}{10} -\entry {commands, grouping}{14} -\entry {commands, lists}{9} -\entry {commands, looping}{10} -\entry {commands, pipelines}{8} -\entry {commands, shell}{8} -\entry {commands, simple}{8} -\entry {comments, shell}{7} -\entry {completion builtins}{126} -\entry {configuration}{138} -\entry {control operator}{3} -\entry {coprocess}{15} -\initial {D} -\entry {directory stack}{90} -\initial {E} -\entry {editing command lines}{102} -\entry {environment}{37} -\entry {evaluation, arithmetic}{86} -\entry {event designators}{136} -\entry {execution environment}{36} -\entry {exit status}{3, 37} -\entry {expansion}{20} -\entry {expansion, arithmetic}{28} -\entry {expansion, brace}{21} -\entry {expansion, filename}{29} -\entry {expansion, parameter}{22} -\entry {expansion, pathname}{29} -\entry {expansion, tilde}{21} -\entry {expressions, arithmetic}{86} -\entry {expressions, conditional}{84} -\initial {F} -\entry {field}{3} -\entry {filename}{3} -\entry {filename expansion}{29} -\entry {foreground}{97} -\entry {functions, shell}{16} -\initial {H} -\entry {history builtins}{133} -\entry {history events}{136} -\entry {history expansion}{135} -\entry {history list}{133} -\entry {History, how to use}{132} -\initial {I} -\entry {identifier}{3} -\entry {initialization file, readline}{104} -\entry {installation}{138} -\entry {interaction, readline}{101} -\entry {interactive shell}{81, 82} -\entry {internationalization}{7} -\initial {J} -\entry {job}{3} -\entry {job control}{3, 97} -\initial {K} -\entry {kill ring}{103} -\entry {killing text}{103} -\initial {L} -\entry {localization}{7} -\entry {login shell}{81} -\initial {M} -\entry {matching, pattern}{29} -\entry {metacharacter}{3} -\initial {N} -\entry {name}{3} -\entry {native languages}{7} -\entry {notation, readline}{102} -\initial {O} -\entry {operator, shell}{3} -\initial {P} -\entry {parameter expansion}{22} -\entry {parameters}{18} -\entry {parameters, positional}{19} -\entry {parameters, special}{19} -\entry {pathname expansion}{29} -\entry {pattern matching}{29} -\entry {pipeline}{8} -\entry {POSIX}{3} -\entry {POSIX Mode}{93} -\entry {process group}{3} -\entry {process group ID}{3} -\entry {process substitution}{28} -\entry {programmable completion}{124} -\entry {prompting}{91} -\initial {Q} -\entry {quoting}{6} -\entry {quoting, ANSI}{6} -\initial {R} -\entry {Readline, how to use}{100} -\entry {redirection}{31} -\entry {reserved word}{3} -\entry {restricted shell}{92} -\entry {return status}{4} -\initial {S} -\entry {shell arithmetic}{86} -\entry {shell function}{16} -\entry {shell script}{38} -\entry {shell variable}{18} -\entry {shell, interactive}{82} -\entry {signal}{4} -\entry {signal handling}{38} -\entry {special builtin}{4, 67} -\entry {startup files}{81} -\entry {suspending jobs}{97} -\initial {T} -\entry {tilde expansion}{21} -\entry {token}{4} -\entry {translation, native languages}{7} -\initial {V} -\entry {variable, shell}{18} -\entry {variables, readline}{105} -\initial {W} -\entry {word}{4} -\entry {word splitting}{28} -\initial {Y} -\entry {yanking text}{103} diff --git a/doc/bashref.dvi b/doc/bashref.dvi deleted file mode 100644 index 595363d71..000000000 Binary files a/doc/bashref.dvi and /dev/null differ diff --git a/doc/bashref.fn b/doc/bashref.fn deleted file mode 100644 index 67d14b9cc..000000000 --- a/doc/bashref.fn +++ /dev/null @@ -1,106 +0,0 @@ -\entry{beginning-of-line (C-a)}{115}{\code {beginning-of-line (C-a)}} -\entry{end-of-line (C-e)}{115}{\code {end-of-line (C-e)}} -\entry{forward-char (C-f)}{115}{\code {forward-char (C-f)}} -\entry{backward-char (C-b)}{115}{\code {backward-char (C-b)}} -\entry{forward-word (M-f)}{115}{\code {forward-word (M-f)}} -\entry{backward-word (M-b)}{115}{\code {backward-word (M-b)}} -\entry{shell-forward-word ()}{115}{\code {shell-forward-word ()}} -\entry{shell-backward-word ()}{115}{\code {shell-backward-word ()}} -\entry{clear-screen (C-l)}{115}{\code {clear-screen (C-l)}} -\entry{redraw-current-line ()}{115}{\code {redraw-current-line ()}} -\entry{accept-line (Newline or Return)}{116}{\code {accept-line (Newline or Return)}} -\entry{previous-history (C-p)}{116}{\code {previous-history (C-p)}} -\entry{next-history (C-n)}{116}{\code {next-history (C-n)}} -\entry{beginning-of-history (M-<)}{116}{\code {beginning-of-history (M-<)}} -\entry{end-of-history (M->)}{116}{\code {end-of-history (M->)}} -\entry{reverse-search-history (C-r)}{116}{\code {reverse-search-history (C-r)}} -\entry{forward-search-history (C-s)}{116}{\code {forward-search-history (C-s)}} -\entry{non-incremental-reverse-search-history (M-p)}{116}{\code {non-incremental-reverse-search-history (M-p)}} -\entry{non-incremental-forward-search-history (M-n)}{116}{\code {non-incremental-forward-search-history (M-n)}} -\entry{history-search-forward ()}{116}{\code {history-search-forward ()}} -\entry{history-search-backward ()}{116}{\code {history-search-backward ()}} -\entry{history-substr-search-forward ()}{116}{\code {history-substr-search-forward ()}} -\entry{history-substr-search-backward ()}{117}{\code {history-substr-search-backward ()}} -\entry{yank-nth-arg (M-C-y)}{117}{\code {yank-nth-arg (M-C-y)}} -\entry{yank-last-arg (M-. or M-_)}{117}{\code {yank-last-arg (M-. or M-_)}} -\entry{delete-char (C-d)}{117}{\code {delete-char (C-d)}} -\entry{backward-delete-char (Rubout)}{117}{\code {backward-delete-char (Rubout)}} -\entry{forward-backward-delete-char ()}{117}{\code {forward-backward-delete-char ()}} -\entry{quoted-insert (C-q or C-v)}{117}{\code {quoted-insert (C-q or C-v)}} -\entry{self-insert (a, b, A, 1, !, ...{})}{117}{\code {self-insert (a, b, A, 1, !, \dots {})}} -\entry{transpose-chars (C-t)}{118}{\code {transpose-chars (C-t)}} -\entry{transpose-words (M-t)}{118}{\code {transpose-words (M-t)}} -\entry{upcase-word (M-u)}{118}{\code {upcase-word (M-u)}} -\entry{downcase-word (M-l)}{118}{\code {downcase-word (M-l)}} -\entry{capitalize-word (M-c)}{118}{\code {capitalize-word (M-c)}} -\entry{overwrite-mode ()}{118}{\code {overwrite-mode ()}} -\entry{kill-line (C-k)}{118}{\code {kill-line (C-k)}} -\entry{backward-kill-line (C-x Rubout)}{118}{\code {backward-kill-line (C-x Rubout)}} -\entry{unix-line-discard (C-u)}{118}{\code {unix-line-discard (C-u)}} -\entry{kill-whole-line ()}{118}{\code {kill-whole-line ()}} -\entry{kill-word (M-d)}{118}{\code {kill-word (M-d)}} -\entry{backward-kill-word (M-DEL)}{119}{\code {backward-kill-word (M-\key {DEL})}} -\entry{shell-kill-word ()}{119}{\code {shell-kill-word ()}} -\entry{shell-backward-kill-word ()}{119}{\code {shell-backward-kill-word ()}} -\entry{unix-word-rubout (C-w)}{119}{\code {unix-word-rubout (C-w)}} -\entry{unix-filename-rubout ()}{119}{\code {unix-filename-rubout ()}} -\entry{delete-horizontal-space ()}{119}{\code {delete-horizontal-space ()}} -\entry{kill-region ()}{119}{\code {kill-region ()}} -\entry{copy-region-as-kill ()}{119}{\code {copy-region-as-kill ()}} -\entry{copy-backward-word ()}{119}{\code {copy-backward-word ()}} -\entry{copy-forward-word ()}{119}{\code {copy-forward-word ()}} -\entry{yank (C-y)}{119}{\code {yank (C-y)}} -\entry{yank-pop (M-y)}{119}{\code {yank-pop (M-y)}} -\entry{digit-argument (M-0, M-1, ...{} M--)}{119}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}} -\entry{universal-argument ()}{119}{\code {universal-argument ()}} -\entry{complete (TAB)}{120}{\code {complete (\key {TAB})}} -\entry{possible-completions (M-?)}{120}{\code {possible-completions (M-?)}} -\entry{insert-completions (M-*)}{120}{\code {insert-completions (M-*)}} -\entry{menu-complete ()}{120}{\code {menu-complete ()}} -\entry{menu-complete-backward ()}{120}{\code {menu-complete-backward ()}} -\entry{delete-char-or-list ()}{120}{\code {delete-char-or-list ()}} -\entry{complete-filename (M-/)}{120}{\code {complete-filename (M-/)}} -\entry{possible-filename-completions (C-x /)}{120}{\code {possible-filename-completions (C-x /)}} -\entry{complete-username (M-~)}{121}{\code {complete-username (M-~)}} -\entry{possible-username-completions (C-x ~)}{121}{\code {possible-username-completions (C-x ~)}} -\entry{complete-variable (M-$)}{121}{\code {complete-variable (M-$)}} -\entry{possible-variable-completions (C-x $)}{121}{\code {possible-variable-completions (C-x $)}} -\entry{complete-hostname (M-@)}{121}{\code {complete-hostname (M-@)}} -\entry{possible-hostname-completions (C-x @)}{121}{\code {possible-hostname-completions (C-x @)}} -\entry{complete-command (M-!)}{121}{\code {complete-command (M-!)}} -\entry{possible-command-completions (C-x !)}{121}{\code {possible-command-completions (C-x !)}} -\entry{dynamic-complete-history (M-TAB)}{121}{\code {dynamic-complete-history (M-\key {TAB})}} -\entry{dabbrev-expand ()}{121}{\code {dabbrev-expand ()}} -\entry{complete-into-braces (M-{\tt \char 123})}{121}{\code {complete-into-braces (M-{\tt \char 123})}} -\entry{start-kbd-macro (C-x ()}{121}{\code {start-kbd-macro (C-x ()}} -\entry{end-kbd-macro (C-x ))}{121}{\code {end-kbd-macro (C-x ))}} -\entry{call-last-kbd-macro (C-x e)}{121}{\code {call-last-kbd-macro (C-x e)}} -\entry{print-last-kbd-macro ()}{122}{\code {print-last-kbd-macro ()}} -\entry{re-read-init-file (C-x C-r)}{122}{\code {re-read-init-file (C-x C-r)}} -\entry{abort (C-g)}{122}{\code {abort (C-g)}} -\entry{do-uppercase-version (M-a, M-b, M-x, ...{})}{122}{\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}} -\entry{prefix-meta (ESC)}{122}{\code {prefix-meta (\key {ESC})}} -\entry{undo (C-_ or C-x C-u)}{122}{\code {undo (C-_ or C-x C-u)}} -\entry{revert-line (M-r)}{122}{\code {revert-line (M-r)}} -\entry{tilde-expand (M-&)}{122}{\code {tilde-expand (M-&)}} -\entry{set-mark (C-@)}{122}{\code {set-mark (C-@)}} -\entry{exchange-point-and-mark (C-x C-x)}{122}{\code {exchange-point-and-mark (C-x C-x)}} -\entry{character-search (C-])}{122}{\code {character-search (C-])}} -\entry{character-search-backward (M-C-])}{122}{\code {character-search-backward (M-C-])}} -\entry{skip-csi-sequence ()}{122}{\code {skip-csi-sequence ()}} -\entry{insert-comment (M-#)}{123}{\code {insert-comment (M-#)}} -\entry{dump-functions ()}{123}{\code {dump-functions ()}} -\entry{dump-variables ()}{123}{\code {dump-variables ()}} -\entry{dump-macros ()}{123}{\code {dump-macros ()}} -\entry{glob-complete-word (M-g)}{123}{\code {glob-complete-word (M-g)}} -\entry{glob-expand-word (C-x *)}{123}{\code {glob-expand-word (C-x *)}} -\entry{glob-list-expansions (C-x g)}{123}{\code {glob-list-expansions (C-x g)}} -\entry{display-shell-version (C-x C-v)}{123}{\code {display-shell-version (C-x C-v)}} -\entry{shell-expand-line (M-C-e)}{123}{\code {shell-expand-line (M-C-e)}} -\entry{history-expand-line (M-^)}{123}{\code {history-expand-line (M-^)}} -\entry{magic-space ()}{124}{\code {magic-space ()}} -\entry{alias-expand-line ()}{124}{\code {alias-expand-line ()}} -\entry{history-and-alias-expand-line ()}{124}{\code {history-and-alias-expand-line ()}} -\entry{insert-last-argument (M-. or M-_)}{124}{\code {insert-last-argument (M-. or M-_)}} -\entry{operate-and-get-next (C-o)}{124}{\code {operate-and-get-next (C-o)}} -\entry{edit-and-execute-command (C-xC-e)}{124}{\code {edit-and-execute-command (C-xC-e)}} diff --git a/doc/bashref.fns b/doc/bashref.fns deleted file mode 100644 index 3136d52e4..000000000 --- a/doc/bashref.fns +++ /dev/null @@ -1,126 +0,0 @@ -\initial {A} -\entry {\code {abort (C-g)}}{122} -\entry {\code {accept-line (Newline or Return)}}{116} -\entry {\code {alias-expand-line ()}}{124} -\initial {B} -\entry {\code {backward-char (C-b)}}{115} -\entry {\code {backward-delete-char (Rubout)}}{117} -\entry {\code {backward-kill-line (C-x Rubout)}}{118} -\entry {\code {backward-kill-word (M-\key {DEL})}}{119} -\entry {\code {backward-word (M-b)}}{115} -\entry {\code {beginning-of-history (M-<)}}{116} -\entry {\code {beginning-of-line (C-a)}}{115} -\initial {C} -\entry {\code {call-last-kbd-macro (C-x e)}}{121} -\entry {\code {capitalize-word (M-c)}}{118} -\entry {\code {character-search (C-])}}{122} -\entry {\code {character-search-backward (M-C-])}}{122} -\entry {\code {clear-screen (C-l)}}{115} -\entry {\code {complete (\key {TAB})}}{120} -\entry {\code {complete-command (M-!)}}{121} -\entry {\code {complete-filename (M-/)}}{120} -\entry {\code {complete-hostname (M-@)}}{121} -\entry {\code {complete-into-braces (M-{\tt \char 123})}}{121} -\entry {\code {complete-username (M-~)}}{121} -\entry {\code {complete-variable (M-$)}}{121} -\entry {\code {copy-backward-word ()}}{119} -\entry {\code {copy-forward-word ()}}{119} -\entry {\code {copy-region-as-kill ()}}{119} -\initial {D} -\entry {\code {dabbrev-expand ()}}{121} -\entry {\code {delete-char (C-d)}}{117} -\entry {\code {delete-char-or-list ()}}{120} -\entry {\code {delete-horizontal-space ()}}{119} -\entry {\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{119} -\entry {\code {display-shell-version (C-x C-v)}}{123} -\entry {\code {do-uppercase-version (M-a, M-b, M-\var {x}, \dots {})}}{122} -\entry {\code {downcase-word (M-l)}}{118} -\entry {\code {dump-functions ()}}{123} -\entry {\code {dump-macros ()}}{123} -\entry {\code {dump-variables ()}}{123} -\entry {\code {dynamic-complete-history (M-\key {TAB})}}{121} -\initial {E} -\entry {\code {edit-and-execute-command (C-xC-e)}}{124} -\entry {\code {end-kbd-macro (C-x ))}}{121} -\entry {\code {end-of-history (M->)}}{116} -\entry {\code {end-of-line (C-e)}}{115} -\entry {\code {exchange-point-and-mark (C-x C-x)}}{122} -\initial {F} -\entry {\code {forward-backward-delete-char ()}}{117} -\entry {\code {forward-char (C-f)}}{115} -\entry {\code {forward-search-history (C-s)}}{116} -\entry {\code {forward-word (M-f)}}{115} -\initial {G} -\entry {\code {glob-complete-word (M-g)}}{123} -\entry {\code {glob-expand-word (C-x *)}}{123} -\entry {\code {glob-list-expansions (C-x g)}}{123} -\initial {H} -\entry {\code {history-and-alias-expand-line ()}}{124} -\entry {\code {history-expand-line (M-^)}}{123} -\entry {\code {history-search-backward ()}}{116} -\entry {\code {history-search-forward ()}}{116} -\entry {\code {history-substr-search-backward ()}}{117} -\entry {\code {history-substr-search-forward ()}}{116} -\initial {I} -\entry {\code {insert-comment (M-#)}}{123} -\entry {\code {insert-completions (M-*)}}{120} -\entry {\code {insert-last-argument (M-. or M-_)}}{124} -\initial {K} -\entry {\code {kill-line (C-k)}}{118} -\entry {\code {kill-region ()}}{119} -\entry {\code {kill-whole-line ()}}{118} -\entry {\code {kill-word (M-d)}}{118} -\initial {M} -\entry {\code {magic-space ()}}{124} -\entry {\code {menu-complete ()}}{120} -\entry {\code {menu-complete-backward ()}}{120} -\initial {N} -\entry {\code {next-history (C-n)}}{116} -\entry {\code {non-incremental-forward-search-history (M-n)}}{116} -\entry {\code {non-incremental-reverse-search-history (M-p)}}{116} -\initial {O} -\entry {\code {operate-and-get-next (C-o)}}{124} -\entry {\code {overwrite-mode ()}}{118} -\initial {P} -\entry {\code {possible-command-completions (C-x !)}}{121} -\entry {\code {possible-completions (M-?)}}{120} -\entry {\code {possible-filename-completions (C-x /)}}{120} -\entry {\code {possible-hostname-completions (C-x @)}}{121} -\entry {\code {possible-username-completions (C-x ~)}}{121} -\entry {\code {possible-variable-completions (C-x $)}}{121} -\entry {\code {prefix-meta (\key {ESC})}}{122} -\entry {\code {previous-history (C-p)}}{116} -\entry {\code {print-last-kbd-macro ()}}{122} -\initial {Q} -\entry {\code {quoted-insert (C-q or C-v)}}{117} -\initial {R} -\entry {\code {re-read-init-file (C-x C-r)}}{122} -\entry {\code {redraw-current-line ()}}{115} -\entry {\code {reverse-search-history (C-r)}}{116} -\entry {\code {revert-line (M-r)}}{122} -\initial {S} -\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{117} -\entry {\code {set-mark (C-@)}}{122} -\entry {\code {shell-backward-kill-word ()}}{119} -\entry {\code {shell-backward-word ()}}{115} -\entry {\code {shell-expand-line (M-C-e)}}{123} -\entry {\code {shell-forward-word ()}}{115} -\entry {\code {shell-kill-word ()}}{119} -\entry {\code {skip-csi-sequence ()}}{122} -\entry {\code {start-kbd-macro (C-x ()}}{121} -\initial {T} -\entry {\code {tilde-expand (M-&)}}{122} -\entry {\code {transpose-chars (C-t)}}{118} -\entry {\code {transpose-words (M-t)}}{118} -\initial {U} -\entry {\code {undo (C-_ or C-x C-u)}}{122} -\entry {\code {universal-argument ()}}{119} -\entry {\code {unix-filename-rubout ()}}{119} -\entry {\code {unix-line-discard (C-u)}}{118} -\entry {\code {unix-word-rubout (C-w)}}{119} -\entry {\code {upcase-word (M-u)}}{118} -\initial {Y} -\entry {\code {yank (C-y)}}{119} -\entry {\code {yank-last-arg (M-. or M-_)}}{117} -\entry {\code {yank-nth-arg (M-C-y)}}{117} -\entry {\code {yank-pop (M-y)}}{119} diff --git a/doc/bashref.html b/doc/bashref.html deleted file mode 100644 index 217193e4a..000000000 --- a/doc/bashref.html +++ /dev/null @@ -1,17372 +0,0 @@ - - - - - -Bash Reference Manual: - - - - - - - - - - - - - - - - - -
[Top][Contents][Index][ ? ]
-

Bash Reference Manual

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

- -This is Edition 4.2, last updated 8 January 2013 , -of The GNU Bash Reference Manual, -for Bash, Version 4.2. -

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

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

- -

- - - - - - - - - - - - - - -
1. Introduction  An introduction to the shell.
2. Definitions  Some definitions used in the rest of this - manual.
3. Basic Shell Features  The shell "building blocks".
4. Shell Builtin Commands  Commands that are a part of the shell.
5. Shell Variables  Variables used or set by Bash.
6. Bash Features  Features found only in Bash.
7. Job Control  What job control is and how Bash allows you - to use it.
8. Command Line Editing  Chapter describing the command line - editing features.
9. Using History Interactively  Command History Expansion
10. Installing Bash  How to build and install Bash on your system.
A. Reporting Bugs  How to report bugs in Bash.
B. Major Differences From The Bourne Shell  A terse list of the differences - between Bash and historical - versions of /bin/sh.
C. GNU Free Documentation License  Copying and sharing this documentation.
D. Indexes  Various indexes for this manual.
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
- -

1. Introduction

- -
- - -
1.1 What is Bash?  A short description of Bash.
1.2 What is a shell?  A brief introduction to shells.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1 What is Bash?

- -

- -Bash is the shell, or command language interpreter, -for the GNU operating system. -The name is an acronym for the `Bourne-Again SHell', -a pun on Stephen Bourne, the author of the direct ancestor of -the current Unix shell sh, -which appeared in the Seventh Edition Bell Labs Research version -of Unix. -

- -Bash is largely compatible with sh and incorporates useful -features from the Korn shell ksh and the C shell csh. -It is intended to be a conformant implementation of the IEEE -POSIX Shell and Tools portion of the IEEE POSIX -specification (IEEE Standard 1003.1). -It offers functional improvements over sh for both interactive and -programming use. -

- -While the GNU operating system provides other shells, including -a version of csh, Bash is the default shell. -Like other GNU software, Bash is quite portable. It currently runs -on nearly every version of Unix and a few other operating systems - -independently-supported ports exist for MS-DOS, OS/2, -and Windows platforms. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2 What is a shell?

- -

- -At its base, a shell is simply a macro processor that executes -commands. The term macro processor means functionality where text -and symbols are expanded to create larger expressions. -

- -A Unix shell is both a command interpreter and a programming -language. As a command interpreter, the shell provides the user -interface to the rich set of GNU utilities. The programming -language features allow these utilities to be combined. -Files containing commands can be created, and become -commands themselves. These new commands have the same status as -system commands in directories such as `/bin', allowing users -or groups to establish custom environments to automate their common -tasks. -

- -Shells may be used interactively or non-interactively. In -interactive mode, they accept input typed from the keyboard. -When executing non-interactively, shells execute commands read -from a file. -

- -A shell allows execution of GNU commands, both synchronously and -asynchronously. -The shell waits for synchronous commands to complete before accepting -more input; asynchronous commands continue to execute in parallel -with the shell while it reads and executes additional commands. -The redirection constructs permit -fine-grained control of the input and output of those commands. -Moreover, the shell allows control over the contents of commands' -environments. -

- -Shells also provide a small set of built-in -commands (builtins) implementing functionality impossible -or inconvenient to obtain via separate utilities. -For example, cd, break, continue, and -exec cannot be implemented outside of the shell because -they directly manipulate the shell itself. -The history, getopts, kill, or pwd -builtins, among others, could be implemented in separate utilities, -but they are more convenient to use as builtin commands. -All of the shell builtins are described in -subsequent sections. -

- -While executing commands is essential, most of the power (and -complexity) of shells is due to their embedded programming -languages. Like any high-level language, the shell provides -variables, flow control constructs, quoting, and functions. -

- -Shells offer features geared specifically for -interactive use rather than to augment the programming language. -These interactive features include job control, command line -editing, command history and aliases. Each of these features is -described in this manual. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2. Definitions

- -These definitions are used throughout the remainder of this manual. -

- -

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

- -

blank -
A space or tab character. -

- -

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

- -

control operator -
-A token that performs a control function. It is a newline -or one of the following: -`||', `&&', `&', `;', `;;', -`|', `|&', `(', or `)'. -

- -

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

- -

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

- -

filename -
-A string of characters used to identify a file. -

- -

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

- -

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

- -

metacharacter -
-A character that, when unquoted, separates words. A metacharacter is -a blank or one of the following characters: -`|', `&', `;', `(', `)', `<', or -`>'. -

- -

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

- -

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

- -

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

- -

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

- -

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

- -

return status -
-A synonym for exit status. -

- -

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

- -

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

- -

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

- -

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3. Basic Shell Features

- -

- -Bash is an acronym for `Bourne-Again SHell'. -The Bourne shell is -the traditional Unix shell originally written by Stephen Bourne. -All of the Bourne shell builtin commands are available in Bash, -The rules for evaluation and quoting are taken from the POSIX -specification for the `standard' Unix shell. -

- -This chapter briefly summarizes the shell's `building blocks': -commands, control structures, shell functions, shell parameters, -shell expansions, -redirections, which are a way to direct input and output from -and to named files, and how the shell executes commands. -

- -

- - - - - - - - -
3.1 Shell Syntax  What your input means to the shell.
3.2 Shell Commands  The types of commands you can use.
3.3 Shell Functions  Grouping commands by name.
3.4 Shell Parameters  How the shell stores values.
3.5 Shell Expansions  How Bash expands parameters and the various - expansions available.
3.6 Redirections  A way to control where input and output go.
3.7 Executing Commands  What happens when you run a command.
3.8 Shell Scripts  Executing files of shell commands.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1 Shell Syntax

- -
- - - -
3.1.1 Shell Operation  The basic operation of the shell.
3.1.2 Quoting  How to remove the special meaning from characters.
3.1.3 Comments  How to specify comments.
-

- -When the shell reads input, it proceeds through a -sequence of operations. If the input indicates the beginning of a -comment, the shell ignores the comment symbol (`#'), and the rest -of that line. - -Otherwise, roughly speaking, the shell reads its input and -divides the input into words and operators, employing the quoting rules -to select which meanings to assign various words and characters. -

- -The shell then parses these tokens into commands and other constructs, -removes the special meaning of certain words or characters, expands -others, redirects input and output as needed, executes the specified -command, waits for the command's exit status, and makes that exit status -available for further inspection or processing. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.1 Shell Operation

- -

- -The following is a brief description of the shell's operation when it -reads and executes a command. Basically, the shell does the -following: -

- -

    -
  1. -Reads its input from a file (see section 3.8 Shell Scripts), from a string -supplied as an argument to the `-c' invocation option -(see section 6.1 Invoking Bash), or from the user's terminal. -

    - -

  2. -Breaks the input into words and operators, obeying the quoting rules -described in 3.1.2 Quoting. These tokens are separated by -metacharacters. Alias expansion is performed by this step -(see section 6.6 Aliases). -

    - -

  3. -Parses the tokens into simple and compound commands -(see section 3.2 Shell Commands). -

    - -

  4. -Performs the various shell expansions (see section 3.5 Shell Expansions), breaking -the expanded tokens into lists of filenames (see section 3.5.8 Filename Expansion) -and commands and arguments. -

    - -

  5. -Performs any necessary redirections (see section 3.6 Redirections) and removes -the redirection operators and their operands from the argument list. -

    - -

  6. -Executes the command (see section 3.7 Executing Commands). -

    - -

  7. -Optionally waits for the command to complete and collects its exit -status (see section 3.7.5 Exit Status). -

    - -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2 Quoting

- -
- - - - - -
3.1.2.1 Escape Character  How to remove the special meaning from a single - character.
3.1.2.2 Single Quotes  How to inhibit all interpretation of a sequence - of characters.
3.1.2.3 Double Quotes  How to suppress most of the interpretation of a - sequence of characters.
3.1.2.4 ANSI-C Quoting  How to expand ANSI-C sequences in quoted strings.
3.1.2.5 Locale-Specific Translation  How to translate strings into different languages.
-

- -Quoting 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 shell metacharacters (see section 2. Definitions) -has special meaning to the shell and must be quoted if it is to -represent itself. -When the command history expansion facilities are being used -(see section 9.3 History Expansion), the -history expansion character, usually `!', must be quoted -to prevent history expansion. See section 9.1 Bash History Facilities, for -more details concerning history expansion. -

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.1 Escape Character

- -A non-quoted backslash `\' is the Bash escape character. -It preserves the literal value of the next character that follows, -with the exception of newline. If a \newline pair -appears, and the backslash itself is not quoted, the \newline -is treated as a line continuation (that is, it is removed from -the input stream and effectively ignored). -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.2 Single Quotes

- -

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.3 Double Quotes

- -

- -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, `!'. -The characters `$' and ``' -retain their special meaning within double quotes (see section 3.5 Shell Expansions). -The backslash retains its special meaning only when followed by one of -the following characters: -`$', ``', `"', `\', or newline. -Within double quotes, backslashes that are followed by one of these -characters are removed. Backslashes preceding characters without a -special meaning are left unmodified. -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 quotes (see section 3.5.3 Shell Parameter Expansion). -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.4 ANSI-C Quoting

- -

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

- -

-
\a -
alert (bell) -
\b -
backspace -
\e -
\E -
an escape character (not ANSI C) -
\f -
form feed -
\n -
newline -
\r -
carriage return -
\t -
horizontal tab -
\v -
vertical tab -
\\ -
backslash -
\' -
single quote -
\" -
double quote -
\nnn -
the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH -
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
\uHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHH (one to four hex digits) -
\UHHHHHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHHHHHH (one to eight hex digits) -
\cx -
a control-x character -
-

- -The expanded result is single-quoted, as if the dollar sign had not -been present. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.5 Locale-Specific Translation

- -

- -A double-quoted string preceded by a dollar sign (`$') will cause -the string to be translated according to the current locale. -If the current locale is C or POSIX, the dollar sign -is ignored. -If the string is translated and replaced, the replacement is -double-quoted. -

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.3 Comments

- -

- -In a non-interactive shell, or an interactive shell in which the -interactive_comments option to the shopt -builtin is enabled (see section 4.3.2 The Shopt Builtin), -a word beginning with `#' -causes that word and all remaining characters on that line to -be ignored. An interactive shell without the interactive_comments -option enabled does not allow comments. The interactive_comments -option is on by default in interactive shells. -See section 6.3 Interactive Shells, for a description of what makes -a shell interactive. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2 Shell Commands

- -

- -A simple shell command such as echo a b c consists of the command -itself followed by arguments, separated by spaces. -

- -More complex shell commands are composed of simple commands arranged together -in a variety of ways: in a pipeline in which the output of one command -becomes the input of a second, in a loop or conditional construct, or in -some other grouping. -

- -

- - - - - - -
3.2.1 Simple Commands  The most common type of command.
3.2.2 Pipelines  Connecting the input and output of several - commands.
3.2.3 Lists of Commands  How to execute commands sequentially.
3.2.4 Compound Commands  Shell commands for control flow.
3.2.5 Coprocesses  Two-way communication between commands.
3.2.6 GNU Parallel  Running commands in parallel.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.1 Simple Commands

- -

- -A simple command is the kind of command encountered most often. -It's just a sequence of words separated by blanks, terminated -by one of the shell's control operators (see section 2. Definitions). The -first word generally specifies a command to be executed, with the -rest of the words being that command's arguments. -

- -The return status (see section 3.7.5 Exit Status) of a simple command is -its exit status as provided -by the POSIX 1003.1 waitpid function, or 128+n if -the command was terminated by signal n. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.2 Pipelines

- -

- -A pipeline is a sequence of simple commands separated by one of -the control operators `|' or `|&'. -

- - - - -The format for a pipeline is -
 
[time [-p]] [!] command1 [ | or |& command2 ] ...
-

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

- -If `|&' is used, command1's standard output and standard error -are connected to -command2's standard input through the pipe; -it is shorthand for 2>&1 |. -This implicit redirection of the standard error is -performed after any redirections specified by the command. -

- -The reserved word time causes timing statistics -to be printed for the pipeline once it finishes. -The statistics currently consist of elapsed (wall-clock) time and -user and system time consumed by the command's execution. -The `-p' option changes the output format to that specified -by POSIX. -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), -it does not recognize time as a reserved word if the next -token begins with a `-'. -The TIMEFORMAT variable may be set to a format string that -specifies how the timing information should be displayed. -See section 5.2 Bash Variables, for a description of the available formats. -The use of time as a reserved word permits the timing of -shell builtins, shell functions, and pipelines. An external -time command cannot time these easily. -

- -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), time -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 TIMEFORMAT variable may be used to specify the format of -the time information. -

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

- -Each command in a pipeline is executed in its own subshell -(see section 3.7.3 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 -(see section 4.3.1 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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.3 Lists of Commands

- -

- -A list is a sequence of one or more pipelines separated by one -of the operators `;', `&', `&&', or `||', -and optionally terminated by one of `;', `&', or a -newline. -

- -Of these list operators, `&&' and `||' -have equal precedence, followed by `;' and `&', -which have equal precedence. -

- -A sequence of one or more newlines may appear in a list -to delimit commands, equivalent to a semicolon. -

- -If a command is terminated by the control operator `&', -the shell executes the command asynchronously in a subshell. -This is known as executing the command in the background. -The shell does not wait for the command to finish, and the return -status is 0 (true). -When job control is not active (see section 7. Job Control), -the standard input for asynchronous commands, in the absence of any -explicit redirections, is redirected from /dev/null. -

- -Commands separated by a `;' are executed sequentially; the shell -waits for each command to terminate in turn. The return status is the -exit status of the last command executed. -

- -AND and OR lists are sequences of one or more pipelines -separated by the control operators `&&' and `||', -respectively. AND and OR lists are executed with left -associativity. -

- -An AND list has the form -
 
command1 && command2
-

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

- -An OR list has the form -
 
command1 || command2
-

- -command2 is executed if, and only if, command1 -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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4 Compound Commands

- -

- -

- - - -
3.2.4.1 Looping Constructs  Shell commands for iterative action.
3.2.4.2 Conditional Constructs  Shell commands for conditional execution.
3.2.4.3 Grouping Commands  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 (see section 3.6 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, and may be -followed by a newline in place of a semicolon. -

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4.1 Looping Constructs

- -

- -Bash supports the following looping constructs. -

- -Note that wherever a `;' appears in the description of a -command's syntax, it may be replaced with one or more newlines. -

- -

-
until -
- - -The syntax of the until command is: -

- -
 
until test-commands; do consequent-commands; done
-

- -Execute consequent-commands as long as -test-commands has an exit status which is not zero. -The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. -

- -

while -
-The syntax of the while command is: -

- -
 
while test-commands; do consequent-commands; done
-

- -Execute consequent-commands as long as -test-commands has an exit status of zero. -The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. -

- -

for -
-The syntax of the for command is: -

- -
 
for 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 -(see section 3.4.2 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: -

- -
 
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
-

- -First, the arithmetic expression expr1 is evaluated according -to the rules described below (see section 6.5 Shell Arithmetic). -The arithmetic expression expr2 is then evaluated repeatedly -until it evaluates to zero. -Each time expr2 evaluates to a non-zero value, commands are -executed and the arithmetic expression expr3 is evaluated. -If any expression is omitted, it behaves as if it evaluates to 1. -The return value is the exit status of the last command in commands -that is executed, or false if any of the expressions is invalid. -

-

- -The break and continue builtins (see section 4.1 Bourne Shell Builtins) -may be used to control loop execution. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4.2 Conditional Constructs

- -

- -

-
if -
- - - - -The syntax of the if command is: -

- -
 
if test-commands; then
-  consequent-commands;
-[elif more-test-commands; then
-  more-consequents;]
-[else alternate-consequents;]
-fi
-

- -The test-commands list is executed, and if its return status is zero, -the consequent-commands list is executed. -If test-commands returns a non-zero status, each elif list -is executed in turn, and if its exit status is zero, -the corresponding more-consequents is executed and the -command completes. -If `else alternate-consequents' is present, and -the final command in the final if or elif clause -has a non-zero exit status, then alternate-consequents is executed. -The return status is the exit status of the last command executed, or -zero if no condition tested true. -

- -

case -
- - -The syntax of the case command is: -

- -
 
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 shell option nocasematch -(see the description of shopt in 4.3.2 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. -

- -There may be an arbitrary number of case clauses, each terminated -by a `;;', `;&', or `;;&'. -The first pattern that matches determines the -command-list that is executed. -It's a common idiom to use `*' as the final pattern to define the -default case, since that pattern will always match. -

- -Here is an example using case in a script that could be used to -describe one interesting feature of an animal: -

- -
 
echo -n "Enter the name of an animal: "
-read ANIMAL
-echo -n "The $ANIMAL has "
-case $ANIMAL in
-  horse | dog | cat) echo -n "four";;
-  man | kangaroo ) echo -n "two";;
-  *) echo -n "an unknown number of";;
-esac
-echo " legs."
-

- -

- -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 command-list associated with the next clause, if any. -Using `;;&' in place of `;;' causes the shell to test the patterns -in the next clause, if any, and execute any associated command-list -on a successful match. -

- -The return status is zero if no pattern is matched. Otherwise, the -return status is the exit status of the command-list executed. -

- -

select -
-

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

- -
 
select name [in words ...]; do commands; done
-

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

- -The commands are executed after each selection until a -break command is executed, at which -point the select command completes. -

- -Here is an example that allows the user to pick a filename from the -current directory, and displays the name and index of the file -selected. -

- -
 
select fname in *;
-do
-	echo you picked $fname \($REPLY\)
-	break;
-done
-

- -

((...)) -
 
(( expression ))
-

- -The arithmetic expression is evaluated according to the rules -described below (see section 6.5 Shell Arithmetic). -If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -
 
let "expression"
-
See section 4.2 Bash Builtin Commands, for a full description of the let builtin. -

- -

[[...]] -
- -
 
[[ expression ]]
-

- -Return a status of 0 or 1 depending on the evaluation of -the conditional expression expression. -Expressions are composed of the primaries described below in -6.4 Bash Conditional Expressions. -Word splitting and filename expansion are not performed on the words -between the [[ and ]]; tilde expansion, parameter and -variable expansion, arithmetic expansion, command substitution, process -substitution, and quote removal are performed. -Conditional operators such as `-f' must be unquoted to be recognized -as primaries. -

- -When used with [[, the `<' and `>' operators sort -lexicographically using the current locale. -

- -When the `==' and `!=' operators are used, the string to the -right of the operator is considered a pattern and matched according -to the rules described below in 3.5.8.1 Pattern Matching. -The `=' operator is identical to `=='. -If the shell option nocasematch -(see the description of shopt in 4.3.2 The Shopt Builtin) -is enabled, the match is performed without regard to the case -of alphabetic characters. -The return value is 0 if the string matches (`==') or does not -match (`!=')the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -

- -An additional binary operator, `=~', is available, with the same -precedence as `==' and `!='. -When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex3)). -The return value is 0 if the string matches -the pattern, and 1 otherwise. -If the regular expression is syntactically incorrect, the conditional -expression's return value is 2. -If the shell option nocasematch -(see the description of shopt in 4.3.2 The Shopt Builtin) -is enabled, the match is performed without regard to the case -of alphabetic characters. -Any part of the pattern may be quoted to force the quoted portion -to be matched as a string. -Bracket expressions in regular expressions must be treated carefully, -since normal quoting characters lose their meanings between brackets. -If the pattern is stored in a shell variable, quoting the variable -expansion forces the entire pattern to be matched as a string. -Substrings matched by parenthesized subexpressions within the regular -expression are saved in the array variable BASH_REMATCH. -The element of BASH_REMATCH with index 0 is the portion of the string -matching the entire regular expression. -The element of BASH_REMATCH with index n is the portion of the -string matching the nth parenthesized subexpression. -

- -For example, the following will match a line -(stored in the shell variable line) -if there is a sequence of characters in the value consisting of -any number, including zero, of -space characters, zero or one instances of `a', then a `b': -
 
[[ $line =~ [[:space:]]*(a)?b ]]
-

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

- -Storing the regular expression in a shell variable is often a useful -way to avoid problems with quoting characters that are special to the -shell. -It is sometimes difficult to specify a regular expression literally -without using quotes, or to keep track of the quoting used by regular -expressions while paying attention to the shell's quote removal. -Using a shell variable to store the pattern decreases these problems. -For example, the following is equivalent to the above: -
 
pattern='[[:space:]]*(a)?b'
-[[ $line =~ $pattern ]]
-

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

- -The first two matches will succeed, but the second two will not, because -in the second two the backslash will be part of the pattern to be matched. -In the first two examples, the backslash removes the special meaning from -`.', so the literal `.' matches. -If the string in the first examples were anything other than `.', say -`a', the pattern would not match, because the quoted `.' in the -pattern loses its special meaning of matching any single character. -

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

- -

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

- -

! expression -
True if expression is false. -

- -

expression1 && expression2 -
True if both expression1 and expression2 are true. -

- -

expression1 || expression2 -
True if either expression1 or expression2 is true. -
-

- -The && and || operators do not evaluate expression2 if the -value of expression1 is sufficient to determine the return -value of the entire conditional expression. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4.3 Grouping Commands

- -

- -Bash provides two ways to group a list of commands to be executed -as a unit. When commands are grouped, redirections may be applied -to the entire command list. For example, the output of all the -commands in the list may be redirected to a single stream. -

- -

-
() -
 
( list )
-

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

- -

{} -
- -
 
{ list; }
-

- -Placing a list of commands between curly braces causes the list to -be executed in the current shell context. No subshell is created. -The semicolon (or newline) following list is required. -

-

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

- -The exit status of both of these constructs is the exit status of -list. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.5 Coprocesses

- -

- -A coprocess is a shell command preceded by the coproc -reserved word. -A coprocess is executed asynchronously in a subshell, as if the command -had been terminated with the `&' control operator, with a two-way pipe -established between the executing shell and the coprocess. -

- -The format for a coprocess is: -
 
coproc [NAME] command [redirections]
-

- -This creates a coprocess named NAME. -If NAME is not supplied, the default name is COPROC. -NAME must not be supplied if command is a simple -command (see section 3.2.1 Simple Commands); otherwise, it is interpreted as -the first word of the simple command. -

- -When the coprocess is executed, the shell creates an array variable -(see section 6.7 Arrays) -named NAME in the context of the executing shell. -The standard output of command -is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[0]. -The standard input of command -is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[1]. -This pipe is established before any redirections specified by the -command (see section 3.6 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. -

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

- -Since the coprocess is created as an asynchronous command, -the coproc command always returns success. -The return status of a coprocess is the exit status of command. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.6 GNU Parallel

- -

- -GNU Parallel, as its name suggests, can be used to build and run commands -in parallel. You may run the same command with different arguments, whether -they are filenames, usernames, hostnames, or lines read from files. -

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

- -For example, it is easy to prefix each line in a text file with a specified -string: -
 
cat file | parallel -k echo prefix_string
-
The `-k' option is required to preserve the lines' order. -

- -Similarly, you can append a specified string to each line in a text file: -
 
cat file | parallel -k echo {} append_string
-

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

- -As you can see, the {} is replaced with each line read from standard input. -This will run as many mv commands as there are files in the current -directory. You can emulate a parallel xargs by adding the `-X' -option: -
 
ls | parallel -X mv {} destdir
-

- -GNU Parallel can replace certain common idioms that operate on lines read -from a file (in this case, filenames): -
 
	for x in $(cat list); do
-		do-something1 $x config-$x
-		do-something2 < $x
-	done | process-output
-

- -with a more compact syntax reminiscent of lambdas: -
 
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
-

- -Parallel provides a built-in mechanism to remove filename extensions, which -lends itself to batch file transformations or renaming: -
 
ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-
This will recompress all files in the current directory with names ending -in .gz using bzip2, running one job per CPU (-j+0) in parallel. -

- -If a command generates output, you may want to preserve the input order in -the output. For instance, the following command -
 
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
-
will display as output the traceroute invocation that finishes first. Using -the `-k' option, as we saw above -
 
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
-
will ensure that the output of traceroute foss.org.my is displayed first. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.3 Shell Functions

- -

- -Shell functions are a way to group commands for later execution -using a single name for the group. They are executed just like -a "regular" command. -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. -Shell functions are executed in the current -shell context; no new process is created to interpret them. -

- -Functions are declared using this syntax: - -
 
name () compound-command [ redirections ]
-

- -or -

- -
 
function name [()] compound-command [ redirections ]
-

- -This defines a shell function named name. The reserved -word function is optional. -If the function reserved -word is supplied, the parentheses are optional. -The body of the function is the compound command -compound-command (see section 3.2.4 Compound Commands). -That command is usually a list enclosed between { and }, but -may be any compound command listed above. -compound-command is executed whenever name is specified as the -name of a command. -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), -name may not be the same as one of the special builtins -(see section 4.4 Special Builtins). -Any redirections (see section 3.6 Redirections) associated with the shell function -are performed when the function is executed. -

- -A function definition may be deleted using the `-f' option to the -unset builtin (see section 4.1 Bourne Shell Builtins). -

- -The exit status of a function definition is zero unless a syntax error -occurs or a readonly function with the same name already exists. -When executed, the exit status of a function is the exit status of the -last command executed in the body. -

- -Note that for historical reasons, in the most common usage the curly braces -that surround the body of the function must be separated from the body by -blanks or newlines. -This is because the braces are reserved words and are only recognized -as such when they are separated from the command list -by whitespace or another shell metacharacter. -Also, when using the braces, the list must be terminated by a semicolon, -a `&', or a newline. -

- -When a function is executed, the arguments to the -function become the positional parameters -during its execution (see section 3.4.1 Positional Parameters). -The special parameter `#' that expands to the number of -positional parameters is updated to reflect the change. -Special parameter 0 is unchanged. -The first element of the FUNCNAME variable is set to the -name of the function 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 DEBUG and RETURN traps -are not inherited unless the function has been given the -trace attribute using the declare builtin or -the -o functrace option has been enabled with -the set builtin, -(in which case all functions inherit the DEBUG and RETURN traps), -and the ERR trap is not inherited unless the -o errtrace -shell option has been enabled. -See section 4.1 Bourne Shell Builtins, for the description of the -trap builtin. -

- -The FUNCNEST variable, if set to a numeric value greater -than 0, defines a maximum function nesting level. Function -invocations that exceed the limit cause the entire command to -abort. -

- -If the builtin command return -is executed in a function, the function completes and -execution resumes with the next command after the function -call. -Any command associated with the RETURN trap is executed -before execution resumes. -When a function completes, the values of the -positional parameters and the special parameter `#' -are restored to the values they had prior to the function's -execution. If a numeric argument is given to return, -that is the function's return status; otherwise the function's -return status is the exit status of the last command executed -before the return. -

- -Variables local to the function may be declared with the -local builtin. These variables are visible only to -the function and the commands it invokes. -

- -Function names and definitions may be listed with the -`-f' option to the declare (typeset) -builtin command (see section 4.2 Bash Builtin Commands). -The `-F' option to declare or typeset -will list the function names only -(and optionally the source file and line number, if the extdebug -shell option is enabled). -Functions may be exported so that subshells -automatically have them defined with the -`-f' option to the export builtin -(see section 4.1 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 -function call stack and restrict the number of function invocations. -By default, no limit is placed on the number of recursive calls. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.4 Shell Parameters

- -

- -

- - -
3.4.1 Positional Parameters  The shell's command-line arguments.
3.4.2 Special Parameters  Parameters denoted by special characters.
-

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

- -A parameter is set if it has been assigned a value. The null string is -a valid value. Once a variable is set, it may be unset only by using -the unset builtin command. -

- -A variable may be assigned to by a statement of the form -
 
name=[value]
-
If value -is not given, the variable is assigned the null string. All -values undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote -removal (detailed below). If the variable has its integer -attribute set, then value -is evaluated as an arithmetic expression even if the $((...)) -expansion is not used (see section 3.5.5 Arithmetic Expansion). -Word splitting is not performed, with the exception -of "$@" as explained below. -Filename expansion is not performed. -Assignment statements may also appear as arguments to the -alias, -declare, typeset, export, readonly, -and local builtin commands. -When in POSIX mode (see section 6.11 Bash POSIX Mode), these builtins may appear -in a command after one or more instances of the command builtin -and retain these assignment statement properties. -

- -In the context where an assignment statement is assigning a value -to a shell variable or array index (see section 6.7 Arrays), the `+=' -operator can be used to -append to or add to the variable's previous value. -When `+=' is applied to a variable for which the integer attribute -has been set, value is evaluated as an arithmetic expression and -added to the variable's current value, which is also evaluated. -When `+=' is applied to an array variable using compound assignment -(see section 6.7 Arrays), 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, value is expanded and -appended to the variable's value. -

- -A variable can be assigned the nameref attribute using the -`-n' option to the \fBdeclare\fP or \fBlocal\fP builtin commands -(see section 4.2 Bash Builtin Commands) -to create a nameref, or a reference to another variable. -This allows variables to be manipulated indirectly. -Whenever the nameref variable is referenced or assigned to, 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 argument to the function. -For instance, if a variable name is passed to a shell function as its first -argument, running -
 
declare -n ref=$1
-
inside the function creates a nameref variable ref whose value is -the variable name passed as the first argument. -References and assignments to ref are treated as references and -assignments to the variable whose name was passed as $1. -

- -If the control variable in a for 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 `-n' attribute. -However, nameref variables can reference array variables and subscripted -array variables. -Namerefs can be unset using the `-n' option to the unset builtin -(see section 4.1 Bourne Shell Builtins). -Otherwise, if unset is executed with the name of a nameref variable -as an argument, the variable referenced by the nameref variable will be unset. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.4.1 Positional Parameters

- -

- -A positional parameter is a parameter denoted by one or more -digits, other than the single digit 0. Positional parameters are -assigned from the shell's arguments when it is invoked, -and may be reassigned using the set builtin command. -Positional parameter N may be referenced as ${N}, or -as $N when N consists of a single digit. -Positional parameters may not be assigned to with assignment statements. -The set and shift builtins are used to set and -unset them (see section 4. Shell Builtin Commands). -The positional parameters are -temporarily replaced when a shell function is executed -(see section 3.3 Shell Functions). -

- -When a positional parameter consisting of more than a single -digit is expanded, it must be enclosed in braces. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.4.2 Special Parameters

- -

- -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 occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the IFS -special variable. That is, "$*" is equivalent -to "$1c$2c...", where c -is the first character of the value of the IFS -variable. -If IFS is unset, the parameters are separated by spaces. -If IFS is null, the parameters are joined without intervening -separators. -

- - -

@ -
-Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, each parameter expands to a -separate word. That is, "$@" is equivalent to -"$1" "$2" .... -If the double-quoted expansion occurs within a word, the expansion of -the first parameter is joined with the beginning part of the original -word, and the expansion of the last parameter is joined with the last -part of the original word. -When there are no positional parameters, "$@" and -$@ -expand to nothing (i.e., they are removed). -

- - -

# -
-Expands to the number of positional parameters in decimal. -

- - -

? -
-Expands to the exit status of the most recently executed foreground -pipeline. -

- - -

- -
-(A hyphen.) Expands to the current option flags as specified upon -invocation, by the set -builtin command, or those set by the shell itself -(such as the `-i' option). -

- - -

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

- - -

! -
-Expands to the process ID of the most recently executed background -(asynchronous) command. -

- - -

0 -
-Expands to the name of the shell or shell script. This is set at -shell initialization. If Bash is invoked with a file of commands -(see section 3.8 Shell Scripts), $0 is set to the name of that file. -If Bash is started with the `-c' option (see section 6.1 Invoking Bash), -then $0 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 Bash, as given by argument zero. -

- - -

_ -
-(An underscore.) -At shell startup, set to the absolute pathname used to invoke the -shell or shell script being executed as passed in the environment -or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. -Also set to the full pathname used to invoke each command executed -and placed in the environment exported to that command. -When checking mail, this parameter holds the name of the mail file. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5 Shell Expansions

- -

- -Expansion is performed on the command line after it has been split into -tokens. There are seven kinds of expansion performed: -

- -

    -
  • brace expansion -
  • tilde expansion -
  • parameter and variable expansion -
  • command substitution -
  • arithmetic expansion -
  • word splitting -
  • filename expansion -
-

- -

- - - - - - - - - -
3.5.1 Brace Expansion  Expansion of expressions within braces.
3.5.2 Tilde Expansion  Expansion of the ~ character.
3.5.3 Shell Parameter Expansion  How Bash expands variables to their values.
3.5.4 Command Substitution  Using the output of a command as an argument.
3.5.5 Arithmetic Expansion  How to use arithmetic in shell expansions.
3.5.6 Process Substitution  A way to write and read to and from a - command.
3.5.7 Word Splitting  How the results of expansion are split into separate - arguments.
3.5.8 Filename Expansion  A shorthand for specifying filenames matching patterns.
3.5.9 Quote Removal  How and when quote characters are removed from - words.
-

- -The order of expansions is: brace expansion, tilde expansion, -parameter, variable, and arithmetic expansion and -command substitution -(done in a left-to-right fashion), word splitting, and filename -expansion. -

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

- -Only brace expansion, word splitting, and filename 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 -"$@" (see section 3.4.2 Special Parameters) and "${name[@]}" -(see section 6.7 Arrays). -

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.1 Brace Expansion

- -

- -Brace expansion is a mechanism by which arbitrary strings may be generated. -This mechanism is similar to -filename expansion (see section 3.5.8 Filename Expansion), -but the filenames generated need not exist. -Patterns to be brace expanded take the form of an optional preamble, -followed by either a series of comma-separated strings or a sequence expression -between a pair of braces, -followed by an optional postscript. -The preamble is prefixed to each string contained within the braces, and -the postscript is then appended to each resulting string, expanding left -to right. -

- -Brace expansions may be nested. -The results of each expanded string are not sorted; left to right order -is preserved. -For example, -
 
bash$ echo a{d,c,b}e
-ade ace abe
-

- -A sequence expression takes the form {x..y[..incr]}, -where x and y are either integers or single characters, -and incr, an optional increment, is an integer. -When integers are supplied, the expression expands to each number between -x and y, inclusive. -Supplied integers may be prefixed with `0' to force each term to have the -same width. -When either x or y begins with a zero, the shell -attempts to force all generated terms to contain the same number of digits, -zero-padding where necessary. -When characters are supplied, the expression expands to each character -lexicographically between x and y, inclusive, -using the default C locale. -Note that both x and y must be of the same type. -When the increment is supplied, it is used as the difference between -each term. The default increment is 1 or -1 as appropriate. -

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

- -A correctly-formed brace expansion must contain unquoted opening -and closing braces, and at least one unquoted comma or a valid -sequence expression. -Any incorrectly formed brace expansion is left unchanged. -

- -A { or `,' may be quoted with a backslash to prevent its -being considered part of a brace expression. -To avoid conflicts with parameter expansion, the string `${' -is not considered eligible for brace expansion. -

- -This construct is typically used as shorthand when the common -prefix of the strings to be generated is longer than in the -above example: -
 
mkdir /usr/local/src/bash/{old,new,dist,bugs}
-
or -
 
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.2 Tilde Expansion

- -

- -If a word begins with an unquoted tilde character (`~'), all of the -characters up to the first unquoted slash (or all characters, -if there is no unquoted slash) are considered a tilde-prefix. -If none of the characters in the tilde-prefix are quoted, the -characters in the tilde-prefix following the tilde are treated as a -possible login name. -If this login name is the null string, the tilde is replaced with the -value of the HOME shell variable. -If HOME is unset, the home directory of the user executing the -shell is substituted instead. -Otherwise, the tilde-prefix is replaced with the home directory -associated with the specified login name. -

- -If the tilde-prefix is `~+', the value of -the shell variable PWD replaces the tilde-prefix. -If the tilde-prefix is `~-', the value of the shell variable -OLDPWD, if it is set, is substituted. -

- -If the characters 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 dirs builtin invoked with the characters following tilde -in the tilde-prefix as an argument (see section 6.8 The Directory Stack). -If the tilde-prefix, sans the tilde, consists of a number without a -leading `+' or `-', `+' is assumed. -

- -If the login name is invalid, or the tilde expansion fails, the word is -left unchanged. -

- -Each variable assignment is checked for unquoted tilde-prefixes immediately -following a `:' or the first `='. -In these cases, tilde expansion is also performed. -Consequently, one may use filenames with tildes in assignments to -PATH, MAILPATH, and CDPATH, -and the shell assigns the expanded value. -

- -The following table shows how Bash treats unquoted tilde-prefixes: -

- -

-
~ -
The value of $HOME -
~/foo -
`$HOME/foo' -

- -

~fred/foo -
The subdirectory foo of the home directory of the user -fred -

- -

~+/foo -
`$PWD/foo' -

- -

~-/foo -
`${OLDPWD-'~-'}/foo' -

- -

~N -
The string that would be displayed by `dirs +N' -

- -

~+N -
The string that would be displayed by `dirs +N' -

- -

~-N -
The string that would be displayed by `dirs -N' -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.3 Shell Parameter Expansion

- -

- -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 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 -embedded arithmetic expansion, command substitution, or parameter -expansion. -

- -The basic form of parameter expansion is ${parameter}. -The value of parameter is substituted. -The parameter is a shell parameter as described above -(see section 3.4 Shell Parameters) or an array reference (see section 6.7 Arrays). -The braces are required when parameter -is a positional parameter with more than one digit, -or when parameter is followed by a character that is not to be -interpreted as part of its name. -

- -If the first character of parameter is an exclamation point (!), -it introduces a level of variable indirection. -Bash uses the value of the variable formed from the rest of -parameter as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of parameter itself. -This is known as indirect expansion. -The 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. -

- -When not performing substring expansion, using the form described -below (e.g., `:-'), Bash tests for a parameter that is unset or null. -Omitting the colon results in a test only for a parameter that is unset. -Put another way, if the colon is included, -the operator tests for both parameter's existence and that its value -is not null; if the colon is omitted, the operator tests only for existence. -

- -

- -
${parameter:-word} -
If parameter is unset or null, the expansion of -word is substituted. Otherwise, the value of -parameter is substituted. -

- -

${parameter:=word} -
If parameter -is unset or null, the expansion of word -is assigned to parameter. -The value of parameter is then substituted. -Positional parameters and special parameters may not be assigned to -in this way. -

- -

${parameter:?word} -
If parameter -is null or unset, the expansion of word (or a message -to that effect if word -is not present) is written to the standard error and the shell, if it -is not interactive, exits. Otherwise, the value of parameter is -substituted. -

- -

${parameter:+word} -
If parameter -is null or unset, nothing is substituted, otherwise the expansion of -word is substituted. -

- -

${parameter:offset} -
${parameter:offset:length} -
This is referred to as Substring Expansion. -It expands to up to length characters of the value of parameter -starting at the character specified by offset. -If parameter is `@', an indexed array subscripted by -`@' or `*', or an associative array name, the results differ as -described below. -If length is omitted, it expands to the substring of the value of -parameter starting at the character specified by offset -and extending to the end of the value. -length and offset are arithmetic expressions -(see section 6.5 Shell Arithmetic). -

- -If offset evaluates to a number less than zero, the value -is used as an offset in characters -from the end of the value of parameter. -If length evaluates to a number less than zero, -it is interpreted as an offset in characters -from the end of the value of parameter rather than -a number of characters, and the expansion is the characters between -offset 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 `:-' expansion. -

- -Here are some examples illustrating substring expansion on parameters and -subscripted arrays: -

- -@verbatim -$ string=01234567890abcdefgh -$ echo ${string:7} -7890abcdefgh -$ echo ${string:7:0} -

- -$ echo ${string:7:2} -78 -$ echo ${string:7:-2} -7890abcdef -$ echo ${string: -7} -bcdefgh -$ echo ${string: -7:0} -

- -$ echo ${string: -7:2} -bc -$ echo ${string: -7:-2} -bcdef -$ set -- 01234567890abcdefgh -$ echo ${1:7} -7890abcdefgh -$ echo ${1:7:0} -

- -$ echo ${1:7:2} -78 -$ echo ${1:7:-2} -7890abcdef -$ echo ${1: -7} -bcdefgh -$ echo ${1: -7:0} -

- -$ echo ${1: -7:2} -bc -$ echo ${1: -7:-2} -bcdef -$ array[0]=01234567890abcdefgh -$ echo ${array[0]:7} -7890abcdefgh -$ echo ${array[0]:7:0} -

- -$ echo ${array[0]:7:2} -78 -$ echo ${array[0]:7:-2} -7890abcdef -$ echo ${array[0]: -7} -bcdefgh -$ echo ${array[0]: -7:0} -

- -$ echo ${array[0]: -7:2} -bc -$ echo ${array[0]: -7:-2} -bcdef -

- -If parameter is `@', the result is length positional -parameters beginning at offset. -A negative offset is taken relative to one greater than the greatest -positional parameter, so an offset of -1 evaluates to the last positional -parameter. -It is an expansion error if length evaluates to a number less than zero. -

- -The following examples illustrate substring expansion using positional -parameters: -

- -@verbatim -$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h -$ 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} -bash: -2: substring expression < 0 -$ echo ${ -7:2} -b c -$ echo ${0} -./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h -$ 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 ${parameter[offset]}. -A negative offset is taken relative to one greater than the maximum -index of the specified array. -It is an expansion error if length evaluates to a number less than zero. -

- -These examples show how you can use substring expansion with indexed -arrays: -

- -@verbatim -$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h) -$ echo ${array[@]:7} -7 8 9 0 a b c d e f g h -$ echo ${array[@]:7:2} -7 8 -$ echo ${array[@]: -7:2} -b c -$ echo ${array[@]: -7:-2} -bash: -2: substring expression < 0 -$ echo ${array[@]:0} -0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h -$ echo ${array[@]:0:2} -0 1 -$ echo ${array[@]: -7:0} -

- -Substring expansion applied to an associative array produces undefined -results. -

- -Substring indexing is zero-based unless the positional parameters -are used, in which case the indexing starts at 1 by default. -If offset is 0, and the positional parameters are used, $@ is -prefixed to the list. -

- -

${!prefix*} -
${!prefix@} -
Expands to the names of variables whose names begin with prefix, -separated by the first character of the IFS special variable. -When `@' is used and the expansion appears within double quotes, each -variable name expands to a separate word. -

- -

${!name[@]} -
${!name[*]} -
If name is an array variable, expands to the list of array indices -(keys) assigned in name. -If name is not an array, expands to 0 if name is set and null -otherwise. -When `@' is used and the expansion appears within double quotes, each -key expands to a separate word. -

- -

${#parameter} -
The length in characters of the expanded value of parameter is -substituted. -If parameter is `*' or `@', the value substituted -is the number of positional parameters. -If parameter is an array name subscripted by `*' or `@', -the value substituted is the number of elements in the array. -If parameter -is an indexed array name subscripted by a negative number, that number is -interpreted as relative to one greater than the maximum index of -parameter, so negative indices count back from the end of the -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 section 3.5.8 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. -

- -

${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 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 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/pattern/string} -

- -The pattern is expanded to produce a pattern just as in -filename expansion. -Parameter is expanded and the longest match of pattern -against its value is replaced with string. -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 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} -
${parameter,pattern} -
${parameter,,pattern} -
This expansion modifies the case of alphabetic characters in parameter. -The pattern is expanded to produce a pattern just as in -filename expansion. -Each character in the expanded value of parameter is tested against -pattern, and, if it matches the pattern, its case is converted. -The pattern should not attempt to match more than one character. -The `^' operator converts lowercase letters matching pattern -to uppercase; the `,' operator converts matching uppercase letters -to lowercase. -The `^^' and `,,' expansions convert each matched character in the -expanded value; the `^' and `,' expansions match and convert only -the first character in the expanded value. -If pattern is omitted, it is treated like a `?', which matches -every character. -If parameter is `@' or `*', -the case modification operation is applied to each positional -parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', -the case modification operation is applied to each member of the -array in turn, and the expansion is the resultant list. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.4 Command Substitution

- -

- -Command substitution allows the output of a command to replace -the command itself. -Command substitution occurs when a command is enclosed as follows: -
 
$(command)
-
or -
 
`command`
-

- -Bash performs the expansion by executing command and -replacing the command substitution with the standard output of the -command, with any trailing newlines deleted. -Embedded newlines are not deleted, but they may be removed during -word splitting. -The command substitution $(cat file) can be -replaced by the equivalent but faster $(< file). -

- -When the old-style backquote form of substitution is used, -backslash retains its literal meaning except when followed by -`$', ``', or `\'. -The first backquote not preceded by a backslash terminates the -command substitution. -When using the $(command) form, all characters between -the parentheses make up the command; none are treated specially. -

- -Command substitutions may be nested. To nest when using the backquoted -form, escape the inner backquotes with backslashes. -

- -If the substitution appears within double quotes, word splitting and -filename expansion are not performed on the results. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.5 Arithmetic Expansion

- -

- -Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic expansion is: -

- -
 
$(( expression ))
-

- -The expression is treated as if it were within double quotes, but -a double quote inside the parentheses is not treated specially. -All tokens in the expression undergo parameter expansion, command -substitution, and quote removal. -Arithmetic expansions may be nested. -

- -The evaluation is performed according to the rules listed below -(see section 6.5 Shell Arithmetic). -If the expression is invalid, Bash prints a message indicating -failure to the standard error and no substitution occurs. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.6 Process Substitution

- -

- -Process substitution is supported on systems that support named -pipes (FIFOs) or the `/dev/fd' method of naming open files. -It takes the form of -
 
<(list)
-
or -
 
>(list)
-
The process list is run with its input or output connected to a -FIFO or some file in `/dev/fd'. The name of this file is -passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to -the file will provide input for list. If the -<(list) form is used, the file passed as an -argument should be read to obtain the output of list. -Note that no space may appear between the < or > -and the left parenthesis, otherwise the construct would be interpreted -as a redirection. -

- -When available, process substitution is performed simultaneously with -parameter and variable expansion, command substitution, and arithmetic -expansion. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.7 Word Splitting

- -

- -The shell scans the results of parameter expansion, command substitution, -and arithmetic expansion that did not occur within double quotes for -word splitting. -

- -The shell treats each character of $IFS as a delimiter, and splits -the results of the other expansions into words on these characters. -If IFS is unset, or its value is exactly <space><tab><newline>, -the default, then sequences of - <space>, <tab>, and <newline> -at the beginning and end of the results of the previous -expansions are ignored, and any sequence of IFS -characters not at the beginning or end serves to delimit words. -If IFS has a value other than the default, then sequences of -the whitespace characters space and tab -are ignored at the beginning and end of the -word, as long as the whitespace character is in the -value of IFS (an IFS whitespace character). -Any character in IFS that is not IFS -whitespace, along with any adjacent IFS -whitespace characters, delimits a field. A sequence of IFS -whitespace characters is also treated as a delimiter. -If the value of IFS is null, no word splitting occurs. -

- -Explicit null arguments ("" or ") are retained. -Unquoted implicit null arguments, resulting from the expansion of -parameters that have no values, are removed. -If a parameter with no value is expanded within double quotes, a -null argument results and is retained. -

- -Note that if no expansion occurs, no splitting -is performed. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.8 Filename Expansion

- -
- -
3.5.8.1 Pattern Matching  How the shell matches patterns.
- - - - -

- -After word splitting, unless the `-f' option has been set -(see section 4.3.1 The Set Builtin), Bash scans each word for the characters -`*', `?', and `['. -If one of these characters appears, then the word is -regarded as a pattern, -and replaced with an alphabetically sorted list of -filenames matching the pattern (see section 3.5.8.1 Pattern Matching). -If no matching filenames are found, -and the shell option nullglob is disabled, the word is left -unchanged. -If the nullglob option is set, and no matches are found, the word -is removed. -If the failglob shell option is set, and no matches are found, -an error message is printed and the command is not executed. -If the shell option nocaseglob is enabled, the match is 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. -

- -See the description of shopt in 4.3.2 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 removed from the list of matches. The filenames -`.' and `..' -are always ignored when GLOBIGNORE -is set and not null. -However, setting GLOBIGNORE to a non-null value has the effect of -enabling the dotglob -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 GLOBIGNORE. -The dotglob option is disabled when GLOBIGNORE -is unset. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.8.1 Pattern Matching

- -

- -Any character that appears in a pattern, other than the special pattern -characters described below, matches itself. -The NUL character may not occur in a pattern. -A backslash escapes the following character; the -escaping backslash is discarded when matching. -The special pattern characters must be quoted if they are to be matched -literally. -

- -The special pattern characters have the following meanings: -

-
* -
Matches any string, including the null string. -When the globstar shell option is enabled, and `*' is used in -a filename expansion context, two adjacent `*'s used as a single -pattern will match all files and zero or more directories and -subdirectories. -If followed by a `/', two adjacent `*'s will match only -directories and subdirectories. -
? -
Matches any single character. -
[...] -
Matches any one of the enclosed characters. A pair of characters -separated by a hyphen denotes a range expression; -any character that falls between those two characters, inclusive, -using the current locale's collating sequence and character set, -is matched. If the first character following the -`[' is a `!' or a `^' -then any character not enclosed is matched. A `-' -may be matched by including it as the first or last character -in the set. A `]' may be matched by including it as the first -character in the set. -The sorting order of characters in range expressions is determined by -the current locale and the values of the -LC_COLLATE and LC_ALL shell variables, if set. -

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

- -Within `[' and `]', character classes can be specified -using the syntax -[:class:], where class is one of the -following classes defined in the POSIX standard: -
 
alnum   alpha   ascii   blank   cntrl   digit   graph   lower
-print   punct   space   upper   word    xdigit
-
A character class matches any character belonging to that class. -The word character class matches letters, digits, and the character -`_'. -

- -Within `[' and `]', an equivalence class can be -specified using the syntax [=c=], which -matches all characters with the same collation weight (as defined -by the current locale) as the character c. -

- -Within `[' and `]', the syntax [.symbol.] -matches the collating symbol symbol. -

-

- -If the extglob shell option is enabled using the shopt -builtin, several extended pattern matching operators are recognized. -In the following description, a pattern-list is a list of one -or more patterns separated by a `|'. -Composite patterns may be formed using one or more of the following -sub-patterns: -

- -

-
?(pattern-list) -
Matches zero or one occurrence of the given patterns. -

- -

*(pattern-list) -
Matches zero or more occurrences of the given patterns. -

- -

+(pattern-list) -
Matches one or more occurrences of the given patterns. -

- -

@(pattern-list) -
Matches one of the given patterns. -

- -

!(pattern-list) -
Matches anything except one of the given patterns. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.9 Quote Removal

- -

- -After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not -result from one of the above expansions are removed. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6 Redirections

- -

- -Before a command is executed, its input and output -may be redirected -using a special notation interpreted by the shell. -Redirection allows commands' file handles to be -duplicated, opened, closed, -made to refer to different files, -and can change the files the command reads from and writes to. -Redirection may also be used to modify file handles in the -current shell execution environment. The following redirection -operators may precede or appear anywhere within a -simple command or may follow a command. -Redirections are processed in the order they appear, from -left to right. -

- -Each redirection that may be preceded by a file descriptor number -may 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. -

- -In the following descriptions, if the file descriptor number is -omitted, and the first character of the redirection operator is -`<', the redirection refers to the standard input (file -descriptor 0). If the first character of the redirection operator -is `>', the redirection refers to the standard output (file -descriptor 1). -

- -The word following the redirection operator in the following -descriptions, unless otherwise noted, is subjected to brace expansion, -tilde expansion, parameter expansion, command substitution, arithmetic -expansion, quote removal, filename expansion, and word splitting. -If it expands to more than one word, Bash reports an error. -

- -Note that the order of redirections is significant. For example, -the command -
 
ls > dirlist 2>&1
-
directs both standard output (file descriptor 1) and standard error -(file descriptor 2) to the file dirlist, while the command -
 
ls 2>&1 > dirlist
-
directs only the standard output to file dirlist, -because the standard error was made a copy of the standard output -before the standard output was redirected to dirlist. -

- -Bash handles several filenames specially when they are used in -redirections, as described in the following table: -

- -

-
/dev/fd/fd -
If fd is a valid integer, file descriptor fd is duplicated. -

- -

/dev/stdin -
File descriptor 0 is duplicated. -

- -

/dev/stdout -
File descriptor 1 is duplicated. -

- -

/dev/stderr -
File descriptor 2 is duplicated. -

- -

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

- -

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

- -A failure to open or create a file causes the redirection to fail. -

- -Redirections using file descriptors greater than 9 should be used with -care, as they may conflict with file descriptors the shell uses -internally. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.1 Redirecting Input

- -Redirection of input causes the file whose name results from -the expansion of word -to be opened for reading on file descriptor n, -or the standard input (file descriptor 0) if n -is not specified. -

- -The general format for redirecting input is: -
 
[n]<word
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.2 Redirecting Output

- -Redirection of output causes the file whose name results from -the expansion of word -to be opened for writing on file descriptor n, -or the standard output (file descriptor 1) if n -is not specified. If the file does not exist it is created; -if it does exist it is truncated to zero size. -

- -The general format for redirecting output is: -
 
[n]>[|]word
-

- -If the redirection operator is `>', and the noclobber -option to the set builtin has been enabled, the redirection -will fail if the file whose name results from the expansion of -word exists and is a regular file. -If the redirection operator is `>|', or the redirection operator is -`>' and the noclobber option is not enabled, the redirection -is attempted even if the file named by word exists. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.3 Appending Redirected Output

- -Redirection of output in this fashion -causes the file whose name results from -the expansion of word -to be opened for appending on file descriptor n, -or the standard output (file descriptor 1) if n -is not specified. If the file does not exist it is created. -

- -The general format for appending output is: -
 
[n]>>word
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.4 Redirecting Standard Output and Standard Error

- -This construct allows both the -standard output (file descriptor 1) and -the standard error output (file descriptor 2) -to be redirected to the file whose name is the -expansion of word. -

- -There are two formats for redirecting standard output and -standard error: -
 
&>word
-
and -
 
>&word
-
Of the two forms, the first is preferred. -This is semantically equivalent to -
 
>word 2>&1
-
When using the second form, word may not expand to a number or -`-'. If it does, other redirection operators apply -(see Duplicating File Descriptors below) for compatibility reasons. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.5 Appending Standard Output and Standard Error

- -This construct allows both the -standard output (file descriptor 1) and -the standard error output (file descriptor 2) -to be appended to the file whose name is the -expansion of word. -

- -The format for appending standard output and standard error is: -
 
&>>word
-
This is semantically equivalent to -
 
>>word 2>&1
-
(see Duplicating File Descriptors below). -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.6 Here Documents

- -This type of redirection instructs the shell to read input from the -current source until a line containing only word -(with no trailing blanks) is seen. All of -the lines read up to that point are then used as the standard -input for a command. -

- -The format of here-documents is: -
 
<<[-]word
-        here-document
-delimiter
-

- -No parameter and variable expansion, command substitution, -arithmetic expansion, or filename expansion is performed on -word. If any characters in word are quoted, the -delimiter is the result of quote removal on word, -and the lines in the here-document are not expanded. -If word is unquoted, -all lines of the here-document are subjected to -parameter expansion, command substitution, and arithmetic expansion, -the character sequence \newline is ignored, and `\' -must be used to quote the characters -`\', `$', and ``'. -

- -If the redirection operator is `<<-', -then all leading tab characters are stripped from input lines and the -line containing delimiter. -This allows here-documents within shell scripts to be indented in a -natural fashion. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.7 Here Strings

- -A variant of here documents, the format is: -
 
<<< 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 to the command on its -standard input. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.8 Duplicating File Descriptors

- -The redirection operator -
 
[n]<&word
-
is used to duplicate input file descriptors. -If word -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 word do not specify a file descriptor open for -input, a redirection error occurs. -If word -evaluates to `-', file descriptor n is closed. -If n is not specified, the standard input (file descriptor 0) is used. -

- -The operator -
 
[n]>&word
-
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 word do not specify a file descriptor open for -output, a redirection error occurs. -If word -evaluates to `-', file descriptor n is closed. -As a special case, if n is omitted, and word does not -expand to one or more digits or `-', the standard output and standard -error are redirected as described previously. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.9 Moving File Descriptors

- -The redirection operator -
 
[n]<&digit-
-
moves the file descriptor digit to file descriptor n, -or the standard input (file descriptor 0) if n is not specified. -digit is closed after being duplicated to n. -

- -Similarly, the redirection operator -
 
[n]>&digit-
-
moves the file descriptor digit to file descriptor n, -or the standard output (file descriptor 1) if n is not specified. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.10 Opening File Descriptors for Reading and Writing

- -The redirection operator -
 
[n]<>word
-
causes the file whose name is the expansion of word -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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7 Executing Commands

- -

- -

- - - - - - -
3.7.1 Simple Command Expansion  How Bash expands simple commands before - executing them.
3.7.2 Command Search and Execution  How Bash finds commands and runs them.
3.7.3 Command Execution Environment  The environment in which Bash - executes commands that are not - shell builtins.
3.7.4 Environment  The environment given to a command.
3.7.5 Exit Status  The status returned by commands and how Bash - interprets it.
3.7.6 Signals  What happens when Bash or a command it runs - receives a signal.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.1 Simple Command Expansion

- -

- -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 for later -processing. -

    - -

  2. -The words that are not variable assignments or redirections are -expanded (see section 3.5 Shell Expansions). -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 (see section 3.6 Redirections). -

    - -

  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 variable. -
-

- -If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment -of the executed command and do not affect the current shell environment. -If any of the assignments attempts to assign a value to a readonly variable, -an error occurs, and the command exits with a non-zero status. -

- -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 expansions -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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.2 Command Search and Execution

- -

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

- -

    -
  1. -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 in 3.3 Shell Functions. -

    - -

  2. -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. -

    - -

  3. -If the name is neither a shell function nor a builtin, -and contains no slashes, Bash searches each element of -$PATH for a directory containing an executable file -by that name. Bash uses a hash table to remember the full -pathnames of executable files to avoid multiple PATH searches -(see the description of hash in 4.1 Bourne Shell Builtins). -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 -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. -

    - -

  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 execution environment. -Argument 0 is set to the name given, and the remaining arguments -to the command are set to the arguments supplied, if any. -

    - -

  5. -If this execution fails because the file is not in executable -format, and the file is not a directory, it is assumed to be a -shell script and the shell executes it as described in -3.8 Shell Scripts. -

    - -

  6. -If the command was not begun asynchronously, the shell waits for -the command to complete and collects its exit status. -

    - -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.3 Command Execution Environment

- -

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

- -

    -
  • -open files inherited by the shell at invocation, as modified by -redirections supplied to the exec builtin -

    - -

  • -the current working directory as set by cd, pushd, or -popd, or inherited by the shell at invocation -

    - -

  • -the file creation mode mask as set by umask or inherited from -the shell's parent -

    - -

  • -current traps set by trap -

    - -

  • -shell parameters that are set by variable assignment or with set -or inherited from the shell's parent in the environment -

    - -

  • -shell functions defined during execution or inherited from the shell's -parent in the environment -

    - -

  • -options enabled at invocation (either by default or with command-line -arguments) or by set -

    - -

  • -options enabled by shopt (see section 4.3.2 The Shopt Builtin) -

    - -

  • -shell aliases defined with alias (see section 6.6 Aliases) -

    - -

  • -various process IDs, including those of background jobs -(see section 3.2.3 Lists of Commands), the value of $$, and the value of -$PPID -

    - -

-

- -When a simple command other than a builtin or shell function -is to be executed, it -is invoked in a separate execution environment that consists of -the following. Unless otherwise noted, the values are inherited -from the shell. -

- -

    -
  • -the shell's open files, plus any modifications and additions specified -by redirections to the command -

    - -

  • -the current working directory -

    - -

  • -the file creation mode mask -

    - -

  • -shell variables and functions marked for export, along with variables -exported for the command, passed in the environment (see section 3.7.4 Environment) -

    - -

  • -traps caught by the shell are reset to the values inherited from the -shell's parent, and traps ignored by the shell are ignored -

    - -

-

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

- -Command substitution, commands grouped with parentheses, -and asynchronous commands are invoked in a -subshell environment that is a duplicate of the shell environment, -except that traps caught by the shell are reset to the values -that the shell inherited from its parent at invocation. Builtin -commands that are invoked as part of a pipeline are also executed -in a subshell environment. Changes made to the subshell environment -cannot affect the shell's execution environment. -

- -Subshells spawned to execute command substitutions inherit the value of -the `-e' option from the parent shell. When not in POSIX mode, -Bash clears the `-e' option in such subshells. -

- -If a command is followed by a `&' and job control is not active, the -default standard input for the command is the empty file `/dev/null'. -Otherwise, the invoked command inherits the file descriptors of the calling -shell as modified by redirections. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.4 Environment

- -

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

- -Bash provides several ways to manipulate the environment. -On invocation, the shell scans its own environment and -creates a parameter for each name found, automatically marking -it for export -to child processes. Executed commands inherit the environment. -The export and `declare -x' -commands allow parameters and functions to be added to and -deleted from the environment. If the value of a parameter -in the environment is modified, the new value becomes part -of the environment, replacing the old. The environment -inherited by any executed command consists of the shell's -initial environment, whose values may be modified in the shell, -less any pairs removed by the unset and `export -n' -commands, plus any additions via the export and -`declare -x' commands. -

- -The environment for any simple command -or function may be augmented temporarily by prefixing it with -parameter assignments, as described in 3.4 Shell Parameters. -These assignment statements affect only the environment seen -by that command. -

- -If the `-k' option is set (see section 4.3.1 The Set Builtin), then all -parameter assignments are placed in the environment for a command, -not just those that precede the command name. -

- -When Bash invokes an external command, the variable `$_' -is set to the full pathname of the command and passed to that -command in its environment. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.5 Exit Status

- -

- -The exit status of an executed command is the value returned by the -waitpid system call or equivalent function. Exit statuses -fall between 0 and 255, though, as explained below, the shell may -use values above 125 specially. Exit statuses from shell builtins and -compound commands are also limited to this range. Under certain -circumstances, the shell will use special values to indicate specific -failure modes. -

- -For the shell's purposes, a command which exits with a -zero exit status has succeeded. -A non-zero exit status indicates failure. -This seemingly counter-intuitive scheme is used so there -is one well-defined way to indicate success and a variety of -ways to indicate various failure modes. -When a command terminates on a fatal signal whose number is N, -Bash uses the value 128+N as the exit status. -

- -If a command is not found, the child process created to -execute it returns a status of 127. If a command is found -but is not executable, the return status is 126. -

- -If a command fails because of an error during expansion or redirection, -the exit status is greater than zero. -

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

- -All of the Bash builtins return an exit status of zero if they succeed -and a non-zero status on failure, so they may be used by the -conditional and list constructs. -All builtins return an exit status of 2 to indicate incorrect usage. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.6 Signals

- -

- -When Bash is interactive, in the absence of any traps, it ignores -SIGTERM (so that `kill 0' does not kill an interactive shell), -and SIGINT -is caught and handled (so that the wait builtin is interruptible). -When Bash receives a SIGINT, it breaks out of any executing loops. -In all cases, Bash ignores SIGQUIT. -If job control is in effect (see section 7. Job Control), Bash -ignores SIGTTIN, SIGTTOU, and SIGTSTP. -

- -Non-builtin commands started by Bash have signal handlers set to the -values inherited by the shell from its parent. -When job control is not in effect, asynchronous commands -ignore SIGINT and SIGQUIT in addition to these inherited -handlers. -Commands run as a result of -command substitution ignore the keyboard-generated job control signals -SIGTTIN, SIGTTOU, and SIGTSTP. -

- -The shell exits by default upon receipt of a SIGHUP. -Before exiting, an interactive shell resends the SIGHUP to -all jobs, running or stopped. -Stopped jobs are sent SIGCONT to ensure that they receive -the SIGHUP. -To prevent the shell from sending the SIGHUP signal to a -particular job, it should be removed -from the jobs table with the disown -builtin (see section 7.2 Job Control Builtins) or marked -to not receive SIGHUP using disown -h. -

- -If the huponexit shell option has been set with shopt -(see section 4.3.2 The Shopt Builtin), Bash sends a SIGHUP to all jobs when -an interactive login shell exits. -

- -If Bash is waiting for a command to complete and receives a signal -for which a trap has been set, the trap will not be executed until -the command completes. -When Bash is waiting for an asynchronous -command via the wait builtin, the reception of a signal for -which a trap has been set will cause the wait builtin to return -immediately with an exit status greater than 128, immediately after -which the trap is executed. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.8 Shell Scripts

- -

- -A shell script is a text file containing shell commands. When such -a file is used as the first non-option argument when invoking Bash, -and neither the `-c' nor `-s' option is supplied -(see section 6.1 Invoking Bash), -Bash reads and executes commands from the file, then exits. This -mode of operation creates a non-interactive shell. The shell first -searches for the file in the current directory, and looks in the -directories in $PATH if not found there. -

- -When Bash runs -a shell script, it sets the special parameter 0 to the name -of the file, rather than the name of the shell, and the positional -parameters are set to the remaining arguments, if any are given. -If no additional arguments are supplied, the positional parameters -are unset. -

- -A shell script may be made executable by using the chmod command -to turn on the execute bit. When Bash finds such a file while -searching the $PATH for a command, it spawns a subshell to -execute it. In other words, executing -
 
filename arguments
-
is equivalent to executing -
 
bash filename arguments
-

- -if filename is an executable shell script. -This subshell reinitializes itself, so that the effect is as if a -new shell had been invoked to interpret the script, with the -exception that the locations of commands remembered by the parent -(see the description of hash in 4.1 Bourne Shell Builtins) -are retained by the child. -

- -Most versions of Unix make this a part of the operating system's command -execution mechanism. If the first line of a script begins with -the two characters `#!', the remainder of the line specifies -an interpreter for the program. -Thus, you can specify Bash, awk, Perl, or some other -interpreter and write the rest of the script file in that language. -

- -The arguments to the interpreter -consist of a single optional argument following the interpreter -name on the first line of the script file, followed by the name of -the script file, followed by the rest of the arguments. Bash -will perform this action on operating systems that do not handle it -themselves. Note that some older versions of Unix limit the interpreter -name and argument to a maximum of 32 characters. -

- -Bash scripts often begin with #! /bin/bash (assuming that -Bash has been installed in `/bin'), since this ensures that -Bash will be used to interpret the script, even if it is executed -under another shell. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4. Shell Builtin Commands

- -

- -

- - - - -
4.1 Bourne Shell Builtins  Builtin commands inherited from the Bourne - Shell.
4.2 Bash Builtin Commands  Table of builtins specific to Bash.
4.3 Modifying Shell Behavior  Builtins to modify shell attributes and - optional behavior.
4.4 Special Builtins  Builtin commands classified specially by - POSIX.
-

- -Builtin commands are contained within the shell itself. -When the name of a builtin command is used as the first word of -a simple command (see section 3.2.1 Simple Commands), the shell executes -the command directly, without invoking another program. -Builtin commands are necessary to implement functionality impossible -or inconvenient to obtain with separate utilities. -

- -This section briefly describes the builtins which Bash inherits from -the Bourne Shell, as well as the builtin commands which are unique -to or have been extended in Bash. -

- -Several builtin commands are described in other chapters: builtin -commands which provide the Bash interface to the job control -facilities (see section 7.2 Job Control Builtins), the directory stack -(see section 6.8.1 Directory Stack Builtins), the command history -(see section 9.2 Bash History Builtins), and the programmable completion -facilities (see section 8.7 Programmable Completion Builtins). -

- -Many of the builtins have been extended by POSIX or Bash. -

- -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, 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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.1 Bourne Shell Builtins

- -

- -The following shell builtin commands are inherited from the Bourne Shell. -These commands are implemented as specified by the POSIX standard. -

- -

-
: (a colon) -
-
 
: [arguments]
-

- -Do nothing beyond expanding arguments and performing redirections. -The return status is zero. -

- -

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

- -Read and execute commands from the filename argument in the -current shell context. If filename does not contain a slash, -the PATH variable is used to find filename. -When Bash is not in POSIX mode, the current directory is searched -if filename is not found in $PATH. -If any arguments are supplied, they become the positional -parameters when filename is executed. Otherwise the positional -parameters are unchanged. -The return status is the exit status of the last command executed, or -zero if no commands are executed. If filename is not found, or -cannot be read, the return status is non-zero. -This builtin is equivalent to source. -

- -

break -
-
 
break [n]
-

- -Exit from a for, while, until, or select loop. -If n is supplied, the nth enclosing loop is exited. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. -

- -

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

- -Change the current working directory to directory. -If directory is not supplied, the value of the HOME -shell variable is used. -Any additional arguments following directory are ignored. -If the shell variable -CDPATH exists, it is used as a search path: -each directory name in CDPATH is searched for -directory, with alternative directory names in CDPATH -separated by a colon (`:'). -If directory begins with a slash, CDPATH is not used. -

- -The `-P' option means to not follow symbolic links: symbolic links -are resolved while cd is traversing directory and before -processing an instance of `..' in directory. -

- -By default, or when the `-L' option is supplied, symbolic links -in directory are resolved after cd processes an instance -of `..' in directory. -

- -If `..' appears in directory, it is processed by removing the -immediately preceding pathname component, back to a slash or the beginning -of directory. -

- -If the `-e' option is supplied with `-P' -and the current working directory cannot be successfully determined -after a successful directory change, cd will return an unsuccessful -status. -If directory is `-', it is converted to $OLDPWD -before the directory change is attempted. -

- -If a non-empty directory name from CDPATH 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 status is zero if the directory is successfully changed, -non-zero otherwise. -

- -

continue -
-
 
continue [n]
-

- -Resume the next iteration of an enclosing for, while, -until, or select loop. -If n is supplied, the execution of the nth enclosing loop -is resumed. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. -

- -

eval -
-
 
eval [arguments]
-

- -The arguments are concatenated together into a single command, which is -then read and executed, and its exit status returned as the exit status -of eval. -If there are no arguments or only empty arguments, the return status is -zero. -

- -

exec -
-
 
exec [-cl] [-a name] [command [arguments]]
-

- -If command -is supplied, it replaces the shell without creating a new process. -If the `-l' option is supplied, the shell places a dash at the -beginning of the zeroth argument passed to command. -This is what the login program does. -The `-c' option causes command to be executed with an empty -environment. -If `-a' is supplied, the shell passes name as the zeroth -argument to command. -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. -

- -

exit -
-
 
exit [n]
-

- -Exit the shell, returning a status of n to the shell's parent. -If n is omitted, the exit status is that of the last command executed. -Any trap on EXIT is executed before the shell terminates. -

- -

export -
-
 
export [-fn] [-p] [name[=value]]
-

- -Mark each name to be passed to child processes -in the environment. If the `-f' option is supplied, the names -refer to shell functions; otherwise the names refer to shell variables. -The `-n' option means to no longer mark each name for export. -If no names are supplied, or if the `-p' option is given, a -list of names of all exported variables is displayed. -The `-p' option displays output in a form that may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. -

- -The return status is zero unless an invalid option is supplied, one of -the names is not a valid shell variable name, or `-f' is supplied -with a name that is not a shell function. -

- -

getopts -
-
 
getopts optstring name [args]
-

- -getopts is used by shell scripts to parse positional parameters. -optstring contains the option characters to be recognized; if a -character is followed by a colon, the option is expected to have an -argument, which should be separated from it by whitespace. -The colon (`:') and question mark (`?') may not be -used as option characters. -Each time it is invoked, getopts -places the next option in the shell variable name, initializing -name if it does not exist, -and the index of the next argument to be processed into the -variable OPTIND. -OPTIND is initialized to 1 each time the shell or a shell script -is invoked. -When an option requires an argument, -getopts places that argument into the variable OPTARG. -The shell does not reset OPTIND automatically; it must be manually -reset between multiple calls to getopts within the same shell -invocation if a new set of parameters is to be used. -

- -When the end of options is encountered, getopts exits with a -return value greater than zero. -OPTIND is set to the index of the first non-option argument, -and name is set to `?'. -

- -getopts -normally parses the positional parameters, but if more arguments are -given in args, getopts parses those instead. -

- -getopts can report errors in two ways. If the first character of -optstring is a colon, silent -error reporting is used. In normal operation, diagnostic messages -are printed when invalid options or missing option arguments are -encountered. -If the variable OPTERR -is set to 0, no error messages will be displayed, even if the first -character of optstring is not a colon. -

- -If an invalid option is seen, -getopts places `?' into name and, if not silent, -prints an error message and unsets OPTARG. -If getopts is silent, the option character found is placed in -OPTARG and no diagnostic message is printed. -

- -If a required argument is not found, and getopts -is not silent, a question mark (`?') is placed in name, -OPTARG is unset, and a diagnostic message is printed. -If getopts is silent, then a colon (`:') is placed in -name and OPTARG is set to the option character found. -

- -

hash -
-
 
hash [-r] [-p filename] [-dt] [name]
-

- -Each time hash is invoked, it remembers the full pathnames of the -commands specified as name arguments, -so they need not be searched for on subsequent invocations. -The commands are found by searching through the directories listed in -$PATH. -Any previously-remembered pathname is discarded. -The `-p' option inhibits the path search, and filename is -used as the location of name. -The `-r' option causes the shell to forget all remembered 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 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 remembered commands is printed. -The return status is zero unless a name is not found or an invalid -option is supplied. -

- -

pwd -
-
 
pwd [-LP]
-

- -Print the absolute pathname of the current working directory. -If the `-P' option is supplied, the pathname printed will not -contain symbolic links. -If the `-L' option is supplied, the pathname printed may contain -symbolic links. -The return status is zero unless an error is encountered while -determining the name of the current directory or an invalid option -is supplied. -

- -

readonly -
-
 
readonly [-aAf] [-p] [name[=value]] ...
-

- -Mark each name as readonly. -The values of these names may not be changed by subsequent assignment. -If the `-f' option is supplied, each name refers to a shell -function. -The `-a' option means each name refers to an indexed -array variable; the `-A' option means each name refers -to an associative array variable. -If both options are supplied, `-A' takes precedence. -If no name arguments are given, or if the `-p' -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 `-p' option causes output to be displayed in a format that -may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. -The return status is zero unless an invalid option is supplied, one of -the name arguments is not a valid shell variable or function name, -or the `-f' option is supplied with a name that is not a shell function. -

- -

return -
-
 
return [n]
-

- -Cause a shell function to stop executing and return the value n -to its caller. -If n is not supplied, the return value is the exit status of the -last command executed in the function. -return may also be used to terminate execution of a script -being executed with the . (source) builtin, -returning 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. -Any command associated with the RETURN trap is executed -before execution resumes after the function or script. -The return status is non-zero if return is supplied a non-numeric -argument or is used outside a function -and not during the execution of a script by . or source. -

- -

shift -
-
 
shift [n]
-

- -Shift the positional parameters to the left by n. -The positional parameters from n+1 ... $# are -renamed to $1 ... $#-n. -Parameters represented by the numbers $# to $#-n+1 -are unset. -n must be a non-negative number less than or equal to $#. -If n is zero or greater than $#, the positional parameters -are not changed. -If n is not supplied, it is assumed to be 1. -The return status is zero unless n is greater than $# or -less than zero, non-zero otherwise. -

- -

test -
[ -
- -
 
test expr
-

- -Evaluate a conditional express -ion expr and return a status of 0 -(true) or 1 (false). -Each operator and operand must be a separate argument. -Expressions are composed of the primaries described below in -6.4 Bash Conditional Expressions. -test does not accept any options, nor does it accept and ignore -an argument of `--' as signifying the end of options. -

- -When the [ form is used, the last argument to the command must -be a ]. -

- -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 precedence is used when there are five or more arguments. -

- -

-
! expr -
True if expr is false. -

- -

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

- -

expr1 -a expr2 -
True if both expr1 and expr2 are true. -

- -

expr1 -o expr2 -
True if either expr1 or expr2 is true. -
-

- -The test and [ builtins evaluate conditional -expressions using a set of rules based on the number of arguments. -

- -

-
0 arguments -
The expression is false. -

- -

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

- -

2 arguments -
If the first argument is `!', the expression is true if and -only if the second argument is null. -If the first argument is one of the unary conditional operators -(see section 6.4 Bash Conditional Expressions), the expression -is true if the unary test is true. -If the first argument is not a valid unary operator, the expression is -false. -

- -

3 arguments -
The following conditions are applied in the order listed. -If the second argument is one of the binary conditional -operators (see section 6.4 Bash Conditional Expressions), the -result of the expression is the result of the binary test using the -first and third arguments as operands. -The `-a' and `-o' operators are considered binary operators -when there are three arguments. -If the first argument is `!', the value is the negation of -the two-argument test using the second and third arguments. -If the first argument is exactly `(' and the third argument is -exactly `)', the result is the one-argument test of the second -argument. -Otherwise, the expression is false. -

- -

4 arguments -
If the first argument is `!', the result is the negation of -the three-argument expression composed of the remaining arguments. -Otherwise, the expression is parsed and evaluated according to -precedence using the rules listed above. -

- -

5 or more arguments -
The expression is parsed and evaluated according to precedence -using the rules listed above. -
-

- -When used with test or `[', the `<' and `>' -operators sort lexicographically using ASCII ordering. -

- -

times -
-
 
times
-

- -Print out the user and system times used by the shell and its children. -The return status is zero. -

- -

trap -
-
 
trap [-lp] [arg] [sigspec ...]
-

- -The commands in arg are to be read and executed when the -shell receives signal sigspec. If arg is absent (and -there is a single sigspec) or -equal to `-', each specified signal's disposition is reset -to the value it had when the shell was started. -If arg is the null string, then the signal specified by -each sigspec is ignored by the shell and commands it invokes. -If arg is not present and `-p' has been supplied, -the shell displays the trap commands associated with each sigspec. -If no arguments are supplied, or -only `-p' is given, trap prints the list of commands -associated with each signal number in a form that may be reused as -shell input. -The `-l' option causes the shell to print a list of signal names -and their corresponding numbers. -Each sigspec is either a signal name or a signal number. -Signal names are case insensitive and the SIG prefix is optional. -

- -If a sigspec -is 0 or EXIT, arg is executed when the shell exits. -If a sigspec is DEBUG, the command arg is executed -before every simple command, for command, case command, -select command, every arithmetic for command, and before -the first command executes in a shell function. -Refer to the description of the extdebug option to the -shopt builtin (see section 4.3.2 The Shopt Builtin) for details of its -effect on the DEBUG trap. -If a sigspec is RETURN, the command arg is executed -each time a shell function or a script executed with the . or -source builtins finishes executing. -

- -If a sigspec is ERR, the command arg -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 ERR trap is not executed if the failed command is part of the -command list immediately following an until or while keyword, -part of the test following the if or elif reserved words, -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 -status is being inverted using !. -These are the same conditions obeyed by the errexit (`-e') -option. -

- -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 zero unless a sigspec does not specify a -valid signal. -

- -

umask -
-
 
umask [-p] [-S] [mode]
-

- -Set the shell process's file creation mask to mode. If -mode begins with a digit, it is interpreted as an octal number; -if not, it is interpreted as a symbolic mode mask similar -to that accepted by the chmod command. If mode is -omitted, the current value of the mask is printed. If the `-S' -option is supplied without a mode argument, the mask is printed -in a symbolic format. -If the `-p' option is supplied, and mode -is omitted, the output is in a form that may be reused as input. -The return status is zero if the mode is successfully changed or if -no mode argument is supplied, and non-zero otherwise. -

- -Note that when the mode is interpreted as an octal number, each number -of the umask is subtracted from 7. Thus, a umask of 022 -results in permissions of 755. -

- -

unset -
-
 
unset [-fnv] [name]
-

- -Remove each variable or function name. -If the `-v' option is given, each -name refers to a shell variable and that variable is remvoved. -If the `-f' option is given, the names refer to shell -functions, and the function definition is removed. -If the `-n' option is supplied, and name is a variable with -the nameref attribute, name will be unset rather than the -variable it references. -`-n' has no effect if the `-f' option is supplied. -If no options are supplied, each name refers to a variable; if -there is no variable by that name, any function with that name is -unset. -Readonly variables and functions may not be unset. -The return status is zero unless a name is readonly. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.2 Bash Builtin Commands

- -

- -This section describes builtin commands which are unique to -or have been extended in Bash. -Some of these commands are specified in the POSIX standard. -

- -

- -
alias -
-
 
alias [-p] [name[=value] ...]
-

- -Without arguments or with the `-p' option, alias prints -the list of aliases on the standard output in a form that allows -them to be reused as input. -If arguments are supplied, an alias is defined for each name -whose value is given. If no value is given, the name -and value of the alias is printed. -Aliases are described in 6.6 Aliases. -

- -

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

- -Display current Readline (see section 8. Command Line Editing) -key and function bindings, -bind a key sequence to a Readline function or macro, -or set a Readline variable. -Each non-option argument is a command as it would appear in a -Readline initialization file (see section 8.3 Readline Init File), -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: -

- -

-
-m keymap -
Use keymap as the keymap to be affected by -the subsequent bindings. Acceptable keymap -names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; -emacs is equivalent to emacs-standard. -

- -

-l -
List the names of all Readline functions. -

- -

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

- -

-P -
List current Readline function names and bindings. -

- -

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

- -

-V -
List current Readline variable names and values. -

- -

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

- -

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

- -

-f filename -
Read key bindings from filename. -

- -

-q function -
Query about which keys invoke the named function. -

- -

-u function -
Unbind all keys bound to the named function. -

- -

-r keyseq -
Remove any current binding for keyseq. -

- -

-x keyseq:shell-command -
Cause shell-command to be executed whenever keyseq is -entered. -When shell-command is executed, the shell sets the -READLINE_LINE variable to the contents of the Readline line -buffer and the READLINE_POINT variable to the current location -of the insertion point. -If the executed command changes the value of READLINE_LINE or -READLINE_POINT, those new values will be reflected in the -editing state. -

- -

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

- -The return status is zero unless an invalid option is supplied or an -error occurs. -

- -

builtin -
-
 
builtin [shell-builtin [args]]
-

- -Run a shell builtin, passing it args, and return its exit status. -This is useful when defining a shell function with the same -name as a shell builtin, retaining the functionality of the builtin within -the function. -The return status is non-zero if shell-builtin is not a shell -builtin command. -

- -

caller -
-
 
caller [expr]
-

- -Returns the context of any active subroutine call (a shell function or -a script executed with the . or source builtins). -

- -Without expr, caller displays the line number and source -filename of the current subroutine call. -If a non-negative integer is supplied as expr, caller -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 subroutine -call or expr does not correspond to a valid position in the -call stack. -

- -

command -
-
 
command [-pVv] command [arguments ...]
-

- -Runs command with arguments ignoring any shell function -named command. -Only shell builtin commands or commands found by searching the -PATH are executed. -If there is a shell function named ls, running `command ls' -within the function will execute the external command ls -instead of calling the function recursively. -The `-p' option means to use a default value for PATH -that is guaranteed to find all of the standard utilities. -The return status in this case is 127 if command cannot be -found or an error occurred, and the exit status of command -otherwise. -

- -If either the `-V' or `-v' option is supplied, a -description of command is printed. The `-v' option -causes a single word indicating the command or file name used to -invoke command to be displayed; the `-V' option produces -a more verbose description. In this case, the return status is -zero if command is found, and non-zero if not. -

- -

declare -
-
 
declare [-aAfFgilnrtux] [-p] [name[=value] ...]
-

- -Declare variables and give them attributes. If no names -are given, then display the values of variables instead. -

- -The `-p' option will display the attributes and values of each -name. -When `-p' is used with name arguments, additional options -are ignored. -

- -When `-p' is supplied without name arguments, declare -will display the attributes and values of all variables having the -attributes specified by the additional options. -If no other options are supplied with `-p', declare will -display the attributes and values of all shell variables. The `-f' -option will restrict the display to shell functions. -

- -The `-F' option inhibits the display of function definitions; -only the function name and attributes are printed. -If the extdebug shell option is enabled using shopt -(see section 4.3.2 The Shopt Builtin), the source file name and line number where -the function is defined are displayed as well. -`-F' implies `-f'. -

- -The `-g' option forces variables to be created or modified at -the global scope, even when declare is executed in a shell function. -It is ignored in all other cases. -

- -The following options can be used to restrict output to variables with -the specified attributes or to give variables attributes: -

- -

-
-a -
Each name is an indexed array variable (see section 6.7 Arrays). -

- -

-A -
Each name is an associative array variable (see section 6.7 Arrays). -

- -

-f -
Use function names only. -

- -

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

- -

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

- -

-n -
Give each name the nameref attribute, making -it a name reference to another variable. -That other variable is defined by the value of name. -All references and assignments to name, except for changing the -`-n' attribute itself, are performed on the variable referenced by -name's value. -The `-n' attribute cannot be applied to array variables. -

- -

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

- -

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

- -

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

- -

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

- -Using `+' instead of `-' turns off the attribute instead, -with the exceptions that `+a' -may not be used to destroy an array variable and `+r' will not -remove the readonly attribute. -When used in a function, declare makes each name local, -as with the local command, unless the `-g' option is used. -If a variable name is followed by =value, the value of the variable -is set to value. -

- -The return status is zero 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 section 6.7 Arrays), -one of the names is not a valid shell variable name, -an attempt is made to turn off readonly status for a readonly variable, -an attempt is made to turn off array status for an array variable, -or an attempt is made to display a non-existent function with `-f'. -

- -

echo -
-
 
echo [-neE] [arg ...]
-

- -Output the args, separated by spaces, terminated with a -newline. -The return status is 0 unless a write error occurs. -If `-n' is specified, the trailing newline is suppressed. -If the `-e' option is given, interpretation of the following -backslash-escaped characters is enabled. -The `-E' option disables the interpretation of these escape characters, -even on systems where they are interpreted by default. -The xpg_echo shell option may be used to -dynamically determine whether or not echo expands these -escape characters by default. -echo does not interpret `--' to mean the end of options. -

- -echo interprets the following escape sequences: -

-
\a -
alert (bell) -
\b -
backspace -
\c -
suppress further output -
\e -
\E -
escape -
\f -
form feed -
\n -
new line -
\r -
carriage return -
\t -
horizontal tab -
\v -
vertical tab -
\\ -
backslash -
\0nnn -
the eight-bit character whose value is the octal value nnn -(zero to three octal digits) -
\xHH -
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
\uHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHH (one to four hex digits) -
\UHHHHHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHHHHHH (one to eight hex digits) -
-

- -

enable -
-
 
enable [-a] [-dnps] [-f filename] [name ...]
-

- -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 `-n' is used, the names become disabled. Otherwise -names are enabled. For example, to use the test binary -found via $PATH instead of the shell builtin version, type -`enable -n test'. -

- -If the `-p' option is supplied, or no name arguments appear, -a list of shell builtins is printed. With no other arguments, the list -consists of all enabled shell builtins. -The `-a' option means to list -each builtin with an indication of whether or not it is enabled. -

- -The `-f' option means to load the new builtin command name -from shared object filename, on systems that support dynamic loading. -The `-d' option will delete a builtin loaded with `-f'. -

- -If there are no options, a list of the shell builtins is displayed. -The `-s' option restricts enable to the POSIX special -builtins. If `-s' is used with `-f', the new builtin becomes -a special builtin (see section 4.4 Special Builtins). -

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

- -

help -
-
 
help [-dms] [pattern]
-

- -Display helpful information about builtin commands. -If pattern is specified, help gives detailed help -on all commands matching pattern, otherwise a list of -the builtins is printed. -

- -Options, if supplied, have the following meanings: -

- -

-
-d -
Display a short description of each pattern -
-m -
Display the description of each pattern in a manpage-like format -
-s -
Display only a short usage synopsis for each pattern -
-

- -The return status is zero unless no command matches pattern. -

- -

let -
-
 
let expression [expression ...]
-

- -The let builtin allows arithmetic to be performed on shell -variables. Each expression is evaluated according to the -rules given below in 6.5 Shell Arithmetic. If the -last expression evaluates to 0, let returns 1; -otherwise 0 is returned. -

- -

local -
-
 
local [option] name[=value] ...
-

- -For each argument, a local variable named name is created, -and assigned value. -The option can be any of the options accepted by declare. -local can only be used within a function; it makes the variable -name have a visible scope restricted to that function and its -children. The return status is zero unless local is used outside -a function, an invalid name is supplied, or name is a -readonly variable. -

- -

logout -
-
 
logout [n]
-

- -Exit a login shell, returning a status of n to the shell's -parent. -

- -

mapfile -
-
 
mapfile [-n count] [-O origin] [-s count] [-t] [-u fd]
-    [-C callback] [-c quantum] [array]
-

- -Read lines from the standard input into the indexed array variable array, -or from file descriptor fd -if the `-u' option is supplied. -The variable MAPFILE is the default array. -Options, if supplied, have the following meanings: -

- -

- -
-n -
Copy at most count lines. If count is 0, all lines are copied. -
-O -
Begin assigning to array at index origin. -The default index is 0. -
-s -
Discard the first count lines read. -
-t -
Remove a trailing newline from each line read. -
-u -
Read lines from file descriptor fd instead of the standard input. -
-C -
Evaluate callback each time quantumP lines are read. -The `-c' option specifies quantum. -
-c -
Specify the number of lines read between each call to callback. -
-

- -If `-C' is specified without `-c', -the default quantum is 5000. -When callback 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. -callback is evaluated after the line is read but before the -array element is assigned. -

- -If not supplied with an explicit origin, mapfile will clear array -before assigning to it. -

- -mapfile returns successfully unless an invalid option or option -argument is supplied, array is invalid or unassignable, or array -is not an indexed array. -

- -

printf -
-
 
printf [-v var] format [arguments]
-

- -Write the formatted arguments to the standard output under the -control of the format. -The `-v' option causes the output to be assigned to the variable -var rather than being printed to the standard output. -

- -The format 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 -argument. -In addition to the standard printf(1) formats, printf -interprets the following extensions: -

- -

-
%b -
Causes printf to expand backslash escape sequences in the -corresponding argument, -except that `\c' terminates output, backslashes in -`\'', `\"', and `\?' are not removed, and octal escapes -beginning with `\0' may contain up to four digits. -
%q -
Causes printf to output the -corresponding argument in a format that can be reused as shell input. -
%(datefmt)T -
Causes printf to output the date-time string resulting from using -datefmt as a format string for strftime(3). -The corresponding argument is an integer representing the number of -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 printf behavior. -
-

- -Arguments to non-string format specifiers are treated as C language constants, -except that a leading plus or minus sign is allowed, and if the leading -character is a single or double quote, the value is the ASCII value of -the following character. -

- -The format is reused as necessary to consume all of the arguments. -If the format requires more arguments than are supplied, 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. -

- -

read -
-
 
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars]
-    [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-

- -One line is read from the standard input, or from the file descriptor -fd supplied as an argument to the `-u' option, and the first word -is assigned to the first name, the second word to the second name, -and so on, with leftover words and their intervening separators assigned -to the last name. -If there are fewer words read from the input stream than names, -the remaining names are assigned empty values. -The characters in the value of the IFS variable -are used to split the line into words. -The backslash character `\' may be used to remove any special -meaning for the next character read and for line continuation. -If no names are supplied, the line read is assigned to the -variable REPLY. -The return code is zero, unless end-of-file is encountered, read -times out (in which case the return code is greater than 128), -a variable assignment error (such as assigning to a readonly variable) occurs, -or an invalid file descriptor is supplied as the argument to `-u'. -

- -Options, if supplied, have the following meanings: -

- -

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

- -

-d delim -
The first character of delim is used to terminate the input line, -rather than newline. -

- -

-e -
Readline (see section 8. Command Line Editing) is used to obtain the line. -Readline uses the current (or default, if line editing was not previously -active) editing settings. -

- -

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

- -

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

- -

-N nchars -
read returns after reading exactly nchars characters rather -than waiting for a complete line of input, unless EOF is encountered or -read times out. -Delimiter characters encountered in the input are -not treated specially and do not cause read to return until -nchars characters are read. -

- -

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

- -

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

- -

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

- -

-t timeout -
Cause read to time out and return failure if a complete line of -input (or a specified number of characters) -is not read within timeout seconds. -timeout may be a decimal number with a fractional portion following -the decimal point. -This option is only effective if read is reading input from a -terminal, pipe, or other special file; it has no effect when reading -from regular files. -If read times out, read saves any partial input read into -the specified variable name. -If timeout is 0, read returns immediately, without trying to -read and data. The exit status is 0 if input is available on -the specified file descriptor, non-zero otherwise. -The exit status is greater than 128 if the timeout is exceeded. -

- -

-u fd -
Read input from file descriptor fd. -
-

- -

readarray -
-
 
readarray [-n count] [-O origin] [-s count] [-t] [-u fd]
-    [-C callback] [-c quantum] [array]
-

- -Read lines from the standard input into the indexed array variable array, -or from file descriptor fd -if the `-u' option is supplied. -

- -A synonym for mapfile. -

- -

source -
-
 
source filename
-

- -A synonym for . (see section 4.1 Bourne Shell Builtins). -

- -

type -
-
 
type [-afptP] [name ...]
-

- -For each name, indicate how it would be interpreted if used as a -command name. -

- -If the `-t' option is used, type prints a single word -which is one of `alias', `function', `builtin', -`file' or `keyword', -if name is an alias, shell function, shell builtin, -disk file, or shell reserved word, respectively. -If the name is not found, then nothing is printed, and -type returns a failure status. -

- -If the `-p' option is used, type either returns the name -of the disk file that would be executed, or nothing if `-t' -would not return `file'. -

- -The `-P' option forces a path search for each name, even if -`-t' would not return `file'. -

- -If a command is hashed, `-p' and `-P' print the hashed value, -which is not necessarily the file that appears first in $PATH. -

- -If the `-a' option is used, type returns all of the places -that contain an executable named file. -This includes aliases and functions, if and only if the `-p' option -is not also used. -

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

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

- -

typeset -
-
 
typeset [-afFgrxilnrtux] [-p] [name[=value] ...]
-

- -The typeset command is supplied for compatibility with the Korn -shell. -It is a synonym for the declare builtin command. -

- -

ulimit -
-
 
ulimit [-abcdefilmnpqrstuvxHST] [limit]
-

- -ulimit provides control over the resources available to processes -started by the shell, on systems that allow such control. If an -option is given, it is interpreted as follows: -

- -

-
-S -
Change and report the soft limit associated with a resource. -

- -

-H -
Change and report the hard limit associated with a resource. -

- -

-a -
All current limits are reported. -

- -

-b -
The maximum socket buffer size. -

- -

-c -
The maximum size of core files created. -

- -

-d -
The maximum size of a process's data segment. -

- -

-e -
The maximum scheduling priority ("nice"). -

- -

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

- -

-i -
The maximum number of pending signals. -

- -

-l -
The maximum size that may be locked into memory. -

- -

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

- -

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

- -

-p -
The pipe buffer size. -

- -

-q -
The maximum number of bytes in POSIX message queues. -

- -

-r -
The maximum real-time scheduling priority. -

- -

-s -
The maximum stack size. -

- -

-t -
The maximum amount of cpu time in seconds. -

- -

-u -
The maximum number of processes available to a single user. -

- -

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

- -

-x -
The maximum number of file locks. -

- -

-T -
The maximum number of threads. -
-

- -If limit is given, and the `-a' option is not used, -limit is the new value of the specified resource. -The special limit values hard, soft, and -unlimited stand for the current hard limit, the current soft limit, -and no limit, respectively. -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. -Otherwise, the current value of the soft limit for the specified resource -is printed, unless the `-H' option is supplied. -When setting new limits, if neither `-H' nor `-S' is supplied, -both the hard and soft limits are set. -If no option is given, then `-f' is assumed. Values are in 1024-byte -increments, except for `-t', which is in seconds; `-p', -which is in units of 512-byte blocks; and `-T', `-b', -`-n' and `-u', which are unscaled values. -

- -The return status is zero unless an invalid option or argument is supplied, -or an error occurs while setting a new limit. -

- -

unalias -
-
 
unalias [-a] [name ... ]
-

- -Remove each name from the list of aliases. If `-a' is -supplied, all aliases are removed. -Aliases are described in 6.6 Aliases. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3 Modifying Shell Behavior

- - -
- - -
4.3.1 The Set Builtin  Change the values of shell attributes and - positional parameters.
4.3.2 The Shopt Builtin  Modify shell optional behavior.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3.1 The Set Builtin

- -

- -This builtin is so complicated that it deserves its own section. set -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. -

- -

-
set -
-
 
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument ...]
-set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument ...]
-

- -If no options or arguments are supplied, set displays the names -and values of all shell variables and functions, sorted according to the -current locale, in a format that may be reused as input -for setting or resetting the currently-set variables. -Read-only variables cannot be reset. -In POSIX mode, only shell variables are listed. -

- -When options are supplied, they set or unset shell attributes. -Options, if specified, have the following meanings: -

- -

-
-a -
Mark variables and function which are modified or created for export -to the environment of subsequent commands. -

- -

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

- -

-e -
Exit immediately if -a pipeline (see section 3.2.2 Pipelines), which may consist of a single simple command -(see section 3.2.1 Simple Commands), -a list (see section 3.2.3 Lists of Commands), -or a compound command (see section 3.2.4 Compound Commands) -returns a non-zero status. -The shell does not exit if the command that fails is part of the -command list immediately following a while or until keyword, -part of the test in an if statement, -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 status is being inverted with !. -If a compound command other than a subshell -returns a non-zero status because a command failed -while `-e' was being ignored, the shell does not exit. -A trap on ERR, if set, is executed before the shell exits. -

- -This option applies to the shell environment and each subshell environment -separately (see section 3.7.3 Command Execution Environment), 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 -`-e' is being ignored, -none of the commands executed within the compound command or function body -will be affected by the `-e' setting, even if `-e' is set -and a command returns a failure status. -If a compound command or shell function sets `-e' while executing in -a context where `-e' is ignored, that setting will not have any -effect until the compound command or the command containing the function -call completes. -

- -

-f -
Disable filename expansion (globbing). -

- -

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

- -

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

- -

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

- -

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

- -

-o option-name -

- -Set the option corresponding to option-name: -

- -

-
allexport -
Same as -a. -

- -

braceexpand -
Same as -B. -

- -

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

- -

errexit -
Same as -e. -

- -

errtrace -
Same as -E. -

- -

functrace -
Same as -T. -

- -

hashall -
Same as -h. -

- -

histexpand -
Same as -H. -

- -

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

- -

ignoreeof -
An interactive shell will not exit upon reading EOF. -

- -

keyword -
Same as -k. -

- -

monitor -
Same as -m. -

- -

noclobber -
Same as -C. -

- -

noexec -
Same as -n. -

- -

noglob -
Same as -f. -

- -

nolog -
Currently ignored. -

- -

notify -
Same as -b. -

- -

nounset -
Same as -u. -

- -

onecmd -
Same as -t. -

- -

physical -
Same as -P. -

- -

pipefail -
If set, the return value of a pipeline is the value of the last -(rightmost) command to exit with a non-zero status, or zero if all -commands in the pipeline exit successfully. -This option is disabled by default. -

- -

posix -
Change the behavior of Bash where the default operation differs -from the POSIX standard to match the standard -(see section 6.11 Bash POSIX Mode). -This is intended to make Bash behave as a strict superset of that -standard. -

- -

privileged -
Same as -p. -

- -

verbose -
Same as -v. -

- -

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

- -

xtrace -
Same as -x. -
-

- -

-p -
Turn on privileged mode. -In this mode, the $BASH_ENV and $ENV files are not -processed, shell functions are not inherited from the environment, -and the SHELLOPTS, BASHOPTS, CDPATH and GLOBIGNORE -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 `-p' option is not supplied, these actions -are taken and the effective user id is set to the real user id. -If the `-p' option is supplied at startup, the effective user id is -not reset. -Turning this option off causes the effective user -and group ids to be set to the real user and group ids. -

- -

-t -
Exit after reading and executing one command. -

- -

-u -
Treat unset variables and parameters other than the special parameters -`@' or `*' as an error when performing parameter expansion. -An error message will be written to the standard error, and a non-interactive -shell will exit. -

- -

-v -
Print shell input lines as they are read. -

- -

-x -
Print a trace of simple commands, for commands, case -commands, select commands, and arithmetic for commands -and their arguments or associated word lists after they are -expanded and before they are executed. The value of the PS4 -variable is expanded and the resultant value is printed before -the command and its expanded arguments. -

- -

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

- -

-C -
Prevent output redirection using `>', `>&', and `<>' -from overwriting existing files. -

- -

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

- -

-H -
Enable `!' style history substitution (see section 9.3 History Expansion). -This option is on by default for interactive shells. -

- -

-P -
If set, do not resolve symbolic links when performing commands such as -cd which change the current directory. The physical directory -is used instead. By default, Bash follows -the logical chain of directories when performing commands -which change the current directory. -

- -For example, if `/usr/sys' is a symbolic link to `/usr/local/sys' -then: -
 
$ cd /usr/sys; echo $PWD
-/usr/sys
-$ cd ..; pwd
-/usr
-

- -If set -P is on, then: -
 
$ cd /usr/sys; echo $PWD
-/usr/local/sys
-$ cd ..; pwd
-/usr/local
-

- -

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

- -

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

- -

- -
Signal the end of options, cause all remaining arguments -to be assigned to the positional parameters. The `-x' -and `-v' options are turned off. -If there are no arguments, the positional parameters remain unchanged. -
-

- -Using `+' rather than `-' causes these options to be -turned off. The options can also be used upon invocation of the -shell. The current set of options may be found in $-. -

- -The remaining N arguments are positional parameters and are -assigned, in order, to $1, $2, ... $N. -The special parameter # is set to N. -

- -The return status is always zero unless an invalid option is supplied. -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3.2 The Shopt Builtin

- -

- -This builtin allows you to change additional shell optional behavior. -

- -

- -
shopt -
-
 
shopt [-pqsu] [-o] [optname ...]
-

- -Toggle the values of variables controlling optional shell behavior. -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: -

- -

-
-s -
Enable (set) each optname. -

- -

-u -
Disable (unset) each optname. -

- -

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

- -

-o -
Restricts the values of -optname to be those defined for the `-o' option to the -set builtin (see section 4.3.1 The Set Builtin). -
-

- -If either `-s' or `-u' -is used with no optname arguments, shopt shows only -those options which are set or unset, respectively. -

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

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

- -The list of shopt options is: -

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

- -

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

- -

cdspell -
If set, minor errors in the spelling of a directory component in a -cd command will be corrected. -The errors checked for are transposed characters, -a missing character, and a character too many. -If a correction is found, the corrected path is printed, -and the command proceeds. -This option is only used by interactive shells. -

- -

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

- -

checkjobs -
If set, Bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (see section 7. Job Control). -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 -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. -

- -

compat31 -
If set, Bash -changes its behavior to that of version 3.1 with respect to quoted -arguments to the conditional command's `=~' operator -and with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators. -Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); -bash-4.1 and later use the current locale's collation sequence and strcoll(3). -

- -

compat32 -
If set, Bash -changes its behavior to that of version 3.2 with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators (see previous item). -

- -

compat40 -
If set, Bash -changes its behavior to that of version 4.0 with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators (see description -of compat31) -and the effect of interrupting a command list. -Bash versions 4.0 and later interrupt the list as if the shell received the -interrupt; previous versions continue with the next command in the list. -

- -

compat41 -
If set, Bash, when in posix mode, treats a single quote in a double-quoted -parameter expansion as a special character. The single quotes must match -(an even number) and the characters between the single quotes are considered -quoted. This is the behavior of POSIX mode through version 4.1. -The default Bash behavior remains as in previous versions. -

- -

compat42 -
If set, Bash -does not process the replacement string in the pattern substitution word -expansion using quote removal. -

- -

complete_fullquote -
If set, Bash -quotes all shell metacharacters in filenames and directory names when -performing completion. -If not set, Bash -removes metacharacters such as the dollar 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 backslashes to quote completed -filenames. -This variable is set by default, which is the default Bash behavior in -versions through 4.2. -

- -

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

- -

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

- -

dotglob -
If set, Bash includes filenames beginning with a `.' in -the results of filename expansion. -

- -

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

- -

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

- -

extdebug -
If set, behavior intended for use by debuggers is enabled: -

- -

    -
  1. -The `-F' option to the declare builtin (see section 4.2 Bash Builtin Commands) -displays the source file name and line number corresponding to each function -name supplied as an argument. -

    - -

  2. -If the command run by the DEBUG trap returns a non-zero value, the -next command is skipped and not executed. -

    - -

  3. -If the command run by the DEBUG trap returns a value of 2, and the -shell is executing in a subroutine (a shell function or a shell script -executed by the . or source builtins), a call to -return is simulated. -

    - -

  4. -BASH_ARGC and BASH_ARGV are updated as described in their -descriptions (see section 5.2 Bash Variables). -

    - -

  5. -Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. -

    - -

  6. -Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERR trap. -
-

- -

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

- -

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

- -

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

- -

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

- -

globasciiranges -
If set, range expressions used in pattern matching (see section 3.5.8.1 Pattern Matching) -behave as if in the traditional C locale when performing -comparisons. That is, the current locale's collating sequence -is not taken into account, so -`b' will not collate between `A' and `B', -and upper-case and lower-case ASCII characters will collate together. -

- -

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

- -

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

- -

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

- -

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

- -

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

- -

hostcomplete -
If set, and Readline is being used, Bash will attempt to perform -hostname completion when a word containing a `@' is being -completed (see section 8.4.6 Letting Readline Type For You). This option is enabled -by default. -

- -

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

- -

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

- -

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

- -

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

- -

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

- -

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

- -

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

- -

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

- -

nocasematch -
If set, Bash matches patterns in a case-insensitive fashion when -performing matching while executing case or [[ -conditional commands. -

- -

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

- -

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

- -

promptvars -
If set, prompt strings undergo -parameter expansion, command substitution, arithmetic -expansion, and quote removal after being expanded -as described below (see section 6.9 Controlling the Prompt). -This option is enabled by default. -

- -

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

- -

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

- -

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

- -

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

- -

-

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

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.4 Special Builtins

- -

- -For historical reasons, the POSIX standard has classified -several builtin commands as special. -When Bash is executing in POSIX mode, the special builtins -differ from other builtin commands in three respects: -

- -

    -
  1. -Special builtins are found before shell functions during command lookup. -

    - -

  2. -If a special builtin returns an error status, a non-interactive shell exits. -

    - -

  3. -Assignment statements preceding the command stay in effect in the shell -environment after the command completes. -
-

- -When Bash is not executing in POSIX mode, these builtins behave no -differently than the rest of the Bash builtin commands. -The Bash POSIX mode is described in 6.11 Bash POSIX Mode. -

- -These are the POSIX special builtins: -
 
break : . continue eval exec exit export readonly return set
-shift trap unset
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

5. Shell Variables

- -

- -

- - -
5.1 Bourne Shell Variables  Variables which Bash uses in the same way - as the Bourne Shell.
5.2 Bash Variables  List of variables that exist in Bash.
-

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

5.1 Bourne Shell Variables

- -

- -Bash uses certain shell variables in the same way as the Bourne shell. -In some cases, Bash assigns a default value to the variable. -

- -

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

- - -

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

- - -

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

- - -

MAIL -
-If this parameter is set to a filename or directory name -and the MAILPATH variable -is not set, Bash informs the user of the arrival of mail in -the specified file or Maildir-format directory. -

- - -

MAILPATH -
-A colon-separated list of filenames which the shell periodically checks -for new mail. -Each list entry can specify the message that is printed when new mail -arrives in the mail file by separating the filename from the message with -a `?'. -When used in the text of the message, $_ expands to the name of -the current mail file. -

- - -

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

- - -

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

- - -

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

- - -

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

- - -

PS2 -
-The secondary prompt string. The default value is `> '. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

5.2 Bash Variables

- -

- -These variables are set or used by Bash, but other shells -do not normally treat them specially. -

- -A few variables used by Bash are described in different chapters: -variables for controlling the job control facilities -(see section 7.3 Job Control Variables). -

- -

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

- - -

BASHOPTS -
-A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the `-s' option to the -shopt builtin command (see section 4.3.2 The Shopt Builtin). -The options appearing in BASHOPTS are those reported -as `on' by `shopt'. -If this variable is in the environment when Bash -starts up, each shell option in the list will be enabled before -reading any startup files. This variable is readonly. -

- - -

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

- - -

BASH_ALIASES -
-An associative array variable whose members correspond to the internal -list of aliases as maintained by the alias builtin. -(see section 4.1 Bourne Shell Builtins). -Elements added to this array appear in the alias list; unsetting array -elements cause aliases to be removed from the alias list. -

- - -

BASH_ARGC -
-An array variable whose values are the number of parameters in each -frame of the current bash execution call stack. The number of -parameters to the current subroutine (shell function or script executed -with . or source) is at the top of the stack. When a -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 4.3.2 The Shopt Builtin -for a description of the extdebug option to the shopt -builtin). -

- - -

BASH_ARGV -
-An array variable containing all of the parameters in the current bash -execution call stack. The final parameter of the last subroutine call -is at the top of the stack; the first parameter of the initial call is -at the bottom. When a subroutine is executed, the parameters supplied -are pushed onto BASH_ARGV. -The shell sets BASH_ARGV only when in extended debugging mode -(see 4.3.2 The Shopt Builtin -for a description of the extdebug option to the shopt -builtin). -

- - -

BASH_CMDS -
-An associative array variable whose members correspond to the internal -hash table of commands as maintained by the hash builtin -(see section 4.1 Bourne Shell Builtins). -Elements added to this array appear in the hash table; unsetting array -elements cause commands to be removed from the hash table. -

- - -

BASH_COMMAND -
-The command currently being executed or about to be executed, unless the -shell is executing a command as the result of a trap, -in which case it is the command executing at the time of the trap. -

- - -

BASH_COMPAT -
-The value is used to set the shell's compatibility level. -See section 4.3.2 The Shopt Builtin, 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 compatibility level. -If BASH_COMPAT is unset or set to the empty string, the compatibility -level is set to the default for the current version. -If BASH_COMPAT 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 shopt builtin described above (for example, -compat42 means that 4.2 and 42 are valid values). -The current version is also a valid value. -

- - -

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

- - -

BASH_EXECUTION_STRING -
-The command argument to the `-c' invocation option. -

- - -

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

- - -

BASH_REMATCH -
-An array variable whose members are assigned by the `=~' binary -operator to the [[ conditional command -(see section 3.2.4.2 Conditional Constructs). -The element with index 0 is the portion of the string -matching the entire regular expression. -The element with index n is the portion of the -string matching the nth parenthesized subexpression. -This variable is read-only. -

- - -

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

- - -

BASH_SUBSHELL -
-Incremented by one within each subshell or subshell environment when -the shell begins executing in that environment. -The initial value is 0. -

- - -

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

- -

- -
BASH_VERSINFO[0] -
The major version number (the release). -

- -

BASH_VERSINFO[1] -
The minor version number (the version). -

- -

BASH_VERSINFO[2] -
The patch level. -

- -

BASH_VERSINFO[3] -
The build version. -

- -

BASH_VERSINFO[4] -
The release status (e.g., beta1). -

- -

BASH_VERSINFO[5] -
The value of MACHTYPE. -
-

- - -

BASH_VERSION -
-The version number of the current instance of Bash. -

- - -

BASH_XTRACEFD -
-If set to an integer corresponding to a valid file descriptor, Bash -will write the trace output generated when `set -x' -is enabled to that file descriptor. -This allows tracing output to be separated from diagnostic and error -messages. -The file descriptor is closed when BASH_XTRACEFD is unset or assigned -a new value. -Unsetting BASH_XTRACEFD or assigning it the empty string causes the -trace output to be sent to the standard error. -Note that setting BASH_XTRACEFD to 2 (the standard error file -descriptor) and then unsetting it will result in the standard error -being closed. -

- - -

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

- - -

COLUMNS -
-Used by the select command to determine the terminal width -when printing selection lists. -Automatically set if the checkwinsize option is enabled -(see section 4.3.2 The Shopt Builtin), or in an interactive shell upon receipt of a -SIGWINCH. -

- - -

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

- - -

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

- - -

COMP_POINT -
-The index of the current cursor position relative to the beginning of -the current command. -If the current cursor position is at the end of the current command, -the value of this variable is equal to ${#COMP_LINE}. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

- - -

COMP_TYPE -
-Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -TAB, for normal completion, -`?', for listing completions after successive tabs, -`!', for listing alternatives on partial word completion, -`@', to list completions if the word is not unmodified, -or -`%', for menu completion. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

- - -

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

- - -

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

- - -

COMP_WORDS -
-An array variable consisting of the individual -words in the current command line. -The line is split into words as Readline would split it, using -COMP_WORDBREAKS as described above. -This variable is available only in shell functions invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

- - -

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

- - -

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

- - -

DIRSTACK -
-An array variable containing the current contents of the directory stack. -Directories appear in the stack in the order they are displayed by the -dirs builtin. -Assigning to members of this array variable may be used to modify -directories already in the stack, but the pushd and popd -builtins must be used to add and remove directories. -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. -

- - -

EMACS -
-If Bash finds this variable in the environment when the shell -starts with value `t', it assumes that the shell is running in an -Emacs shell buffer and disables line editing. -

- - -

ENV -
-Similar to BASH_ENV; used when the shell is invoked in -POSIX Mode (see section 6.11 Bash POSIX Mode). -

- - -

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

- - -

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

- - -

FIGNORE -
-A colon-separated list of suffixes to ignore when performing -filename completion. -A filename whose suffix matches one of the entries in -FIGNORE -is excluded from the list of matched filenames. A sample -value is `.o:~' -

- - -

FUNCNAME -
-An array variable containing the names of all shell functions -currently in the execution call stack. -The element with index 0 is the name of any currently-executing -shell function. -The bottom-most element (the one with the highest index) -is "main". -This variable exists only when a shell function is executing. -Assignments to FUNCNAME have no effect and return an error status. -If FUNCNAME is unset, it loses its special properties, even if -it is subsequently reset. -

- -This variable can be used with BASH_LINENO and BASH_SOURCE. -Each element of FUNCNAME has corresponding elements in -BASH_LINENO and BASH_SOURCE to describe the call stack. -For instance, ${FUNCNAME[$i]} was called from the file -${BASH_SOURCE[$i+1]} at line number ${BASH_LINENO[$i]}. -The caller builtin displays the current call stack using this -information. -

- - -

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

- - -

GLOBIGNORE -
-A colon-separated list of patterns defining the set of filenames to -be ignored by filename expansion. -If a filename matched by a filename expansion pattern also matches one -of the patterns in GLOBIGNORE, it is removed from the list -of matches. -

- - -

GROUPS -
-An array variable containing the list of groups of which the current -user is a member. -Assignments to GROUPS have no effect and return an error status. -If GROUPS is unset, it loses its special properties, even if it is -subsequently reset. -

- - -

histchars -
-Up to three characters which control history expansion, quick -substitution, and tokenization (see section 9.3 History Expansion). -The first character is the -history expansion character, that is, the character which signifies the -start of a history expansion, normally `!'. The second character is the -character which signifies `quick substitution' when seen as the first -character on a line, normally `^'. The optional third character is the -character which indicates that the remainder of the line is a comment when -found as the first character of a word, usually `#'. The history -comment character causes history substitution to be skipped for the -remaining words on the line. It does not necessarily cause the shell -parser to treat the rest of the line as a comment. -

- - -

HISTCMD -
-The history number, or index in the history list, of the current -command. If HISTCMD is unset, it loses its special properties, -even if it is subsequently reset. -

- - -

HISTCONTROL -
-A colon-separated list of values controlling how commands are saved on -the history list. -If the list of values includes `ignorespace', lines which begin -with a space character are not saved in the history list. -A value of `ignoredups' causes lines which match the previous -history entry to not be saved. -A value of `ignoreboth' is shorthand for -`ignorespace' and `ignoredups'. -A value of `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. -If HISTCONTROL 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 HISTIGNORE. -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 -HISTCONTROL. -

- - -

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

- - -

HISTFILESIZE -
-The maximum number of lines contained in the history file. -When this variable is assigned a value, the history file is truncated, -if necessary, to contain no more than that number of lines -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 HISTSIZE -after reading any startup files. -

- - -

HISTIGNORE -
-A colon-separated list of patterns used to decide which command -lines should be saved on the history list. Each pattern is -anchored at the beginning of the line and must match the complete -line (no implicit `*' is appended). Each pattern is tested -against the line after the checks specified by HISTCONTROL -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 -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 -HISTIGNORE. -

- -HISTIGNORE subsumes the function of HISTCONTROL. A -pattern of `&' is identical to ignoredups, and a -pattern of `[ ]*' is identical to ignorespace. -Combining these two patterns, separating them with a colon, -provides the functionality of ignoreboth. -

- - -

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

- - -

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

- - -

HOSTFILE -
-Contains the name of a file in the same format as `/etc/hosts' that -should be read when the shell needs to complete a hostname. -The list of possible hostname completions may be changed while the shell -is running; -the next time hostname completion is attempted after the -value is changed, Bash adds the contents of the new file to the -existing list. -If HOSTFILE is set, but has no value, or does not name a readable file, -Bash attempts to read -`/etc/hosts' to obtain the list of possible hostname completions. -When HOSTFILE is unset, the hostname list is cleared. -

- - -

HOSTNAME -
-The name of the current host. -

- - -

HOSTTYPE -
-A string describing the machine Bash is running on. -

- - -

IGNOREEOF -
-Controls the action of the shell on receipt of an EOF character -as the sole input. If set, the value denotes the number -of consecutive EOF characters that can be read as the -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. -If the variable does not exist, then EOF signifies the end of -input to the shell. This is only in effect for interactive shells. -

- - -

INPUTRC -
-The name of the Readline initialization file, overriding the default -of `~/.inputrc'. -

- - -

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

- - -

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

- - -

LC_COLLATE -
-This variable determines the collation order used when sorting the -results of filename expansion, and -determines the behavior of range expressions, equivalence classes, -and collating sequences within filename expansion and pattern matching -(see section 3.5.8 Filename Expansion). -

- - -

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

- - -

LC_MESSAGES -
-This variable determines the locale used to translate double-quoted -strings preceded by a `$' (see section 3.1.2.5 Locale-Specific Translation). -

- - -

LC_NUMERIC -
-This variable determines the locale category used for number formatting. -

- - -

LINENO -
-The line number in the script or shell function currently executing. -

- - -

LINES -
-Used by the select command to determine the column length -for printing selection lists. -Automatically set if the checkwinsize option is enabled -(see section 4.3.2 The Shopt Builtin), or in an interactive shell upon receipt of a -SIGWINCH. -

- - -

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

- - -

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

- - -

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

- - -

OLDPWD -
-The previous working directory as set by the cd builtin. -

- - -

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

- - -

OSTYPE -
-A string describing the operating system Bash is running on. -

- - -

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

- - -

POSIXLY_CORRECT -
-If this variable is in the environment when Bash starts, the shell -enters POSIX mode (see section 6.11 Bash POSIX Mode) before reading the -startup files, as if the `--posix' invocation option had been supplied. -If it is set while the shell is running, Bash enables POSIX mode, -as if the command -
 
set -o posix
-
had been executed. -

- - -

PPID -
-The process ID of the shell's parent process. This variable -is readonly. -

- - -

PROMPT_COMMAND -
-If set, the value is interpreted as a command to execute -before the printing of each primary prompt ($PS1). -

- - -

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

- - -

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

- - -

PS4 -
-The value is the prompt printed before the command line is echoed -when the `-x' option is set (see section 4.3.1 The Set Builtin). -The first character of PS4 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. -

- - -

RANDOM -
-Each time this parameter is referenced, a random integer -between 0 and 32767 is generated. Assigning a value to this -variable seeds the random number generator. -

- - -

READLINE_LINE -
-The contents of the Readline line buffer, for use -with `bind -x' (see section 4.2 Bash Builtin Commands). -

- - -

READLINE_POINT -
-The position of the insertion point in the Readline line buffer, for use -with `bind -x' (see section 4.2 Bash Builtin Commands). -

- - -

REPLY -
-The default variable for the read builtin. -

- - -

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

- - -

SHELL -
-The full pathname to the shell is kept in this environment variable. -If it is not set when the shell starts, -Bash assigns to it the full pathname of the current user's login shell. -

- - -

SHELLOPTS -
-A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the `-o' option to the -set builtin command (see section 4.3.1 The Set Builtin). -The options appearing in SHELLOPTS are those reported -as `on' by `set -o'. -If this variable is in the environment when Bash -starts up, each shell option in the list will be enabled before -reading any startup files. This variable is readonly. -

- - -

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

- - -

TIMEFORMAT -
-The value of this parameter is used as a format string specifying -how the timing information for pipelines prefixed with the time -reserved word should be displayed. -The `%' character introduces 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][l]R -
The elapsed time in seconds. -

- -

%[p][l]U -
The number of CPU seconds spent in user mode. -

- -

%[p][l]S -
The number of CPU seconds spent in system mode. -

- -

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

- -The optional p is a digit specifying the precision, 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 used. -

- -The optional l specifies a longer format, including minutes, of -the form MMmSS.FFs. -The value of p determines whether or not the fraction is included. -

- -If this variable is not set, Bash acts as if it had the value -
 
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-
If the value is null, no timing information is displayed. -A trailing newline is added when the format string is displayed. -

- - -

TMOUT -
-If set to a value greater than zero, TMOUT is treated as the -default timeout for the read builtin (see section 4.2 Bash Builtin Commands). -The select command (see section 3.2.4.2 Conditional Constructs) terminates -if input does not arrive after TMOUT seconds when input 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. -Bash -terminates after waiting for that number of seconds if a complete -line of input does not arrive. -

- - -

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

- - -

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

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6. Bash Features

- -

- -This chapter describes features unique to Bash. -

- -

- - - - - - - - - - - -
6.1 Invoking Bash  Command line options that you can give - to Bash.
6.2 Bash Startup Files  When and how Bash executes scripts.
6.3 Interactive Shells  What an interactive shell is.
6.4 Bash Conditional Expressions  Primitives used in composing expressions for - the test builtin.
6.5 Shell Arithmetic  Arithmetic on shell variables.
6.6 Aliases  Substituting one command for another.
6.7 Arrays  Array Variables.
6.8 The Directory Stack  History of visited directories.
6.9 Controlling the Prompt  Customizing the various prompt strings.
6.10 The Restricted Shell  A more controlled mode of shell execution.
6.11 Bash POSIX Mode  Making Bash behave more closely to what - the POSIX standard specifies.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.1 Invoking Bash

- -

- -
 
bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
-bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument ...]
-bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
-

- -All of the single-character options used with the set builtin -(see section 4.3.1 The Set Builtin) can be used as options when the shell is invoked. -In addition, there are several multi-character -options that you can use. These options must appear on the command -line before the single-character options to be recognized. -

- -

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

- -

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

- -

--dump-strings -
Equivalent to `-D'. -

- -

--help -
Display a usage message on standard output and exit successfully. -

- -

--init-file filename -
--rcfile filename -
Execute commands from filename (instead of `~/.bashrc') -in an interactive shell. -

- -

--login -
Equivalent to `-l'. -

- -

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

- -

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

- -

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

- -

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

- -

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

- -

--verbose -
Equivalent to `-v'. Print shell input lines as they're read. -

- -

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

- -There are several single-character options that may be supplied at -invocation which are not available with the set builtin. -

- -

-
-c -
Read and execute commands from the first non-option argument -after processing the options, then exit. -Any remaining arguments are assigned to the -positional parameters, starting with $0. -

- -

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

- -

-l -
Make this shell act as if it had been directly invoked by login. -When the shell is interactive, this is equivalent to starting a -login shell with `exec -l bash'. -When the shell is not interactive, the login shell startup files will -be executed. -`exec bash -l' or `exec bash --login' -will replace the current shell with a Bash login shell. -See section 6.2 Bash Startup Files, for a description of the special behavior -of a login shell. -

- -

-r -
Make the shell a restricted shell (see section 6.10 The Restricted Shell). -

- -

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

- -

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

- -

[-+]O [shopt_option] -
shopt_option is one of the shell options accepted by the -shopt builtin (see section 4.3.2 The Shopt Builtin). -If shopt_option is present, `-O' sets the value of that option; -`+O' unsets it. -If shopt_option is not supplied, the names and values of the shell -options accepted by shopt are printed on the standard output. -If the invocation option is `+O', the output is displayed in a format -that may be reused as input. -

- -

-- -
A -- signals the end of options and disables further option -processing. -Any arguments after the -- are treated as filenames and arguments. -
-

- - -A login shell is one whose first character of argument zero is -`-', or one invoked with the `--login' option. -

- - -An interactive shell is one started without non-option arguments, -unless `-s' is specified, -without specifying the `-c' option, and whose input and output are both -connected to terminals (as determined by isatty(3)), or one -started with the `-i' option. See section 6.3 Interactive Shells, for more -information. -

- -If arguments remain after option processing, and neither the -`-c' nor the `-s' -option has been supplied, the first argument is assumed to -be the name of a file containing shell commands (see section 3.8 Shell Scripts). -When Bash is invoked in this fashion, $0 -is set to the name of the file, and the positional parameters -are set to the remaining arguments. -Bash reads and executes commands from this file, then exits. -Bash's exit status is the exit status of the last command executed -in the script. If no commands are executed, the exit status is 0. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.2 Bash Startup Files

- -

- -This section describes how Bash executes its startup files. -If any of the files exist but cannot be read, Bash reports an error. -Tildes are expanded in filenames as described above under -Tilde Expansion (see section 3.5.2 Tilde Expansion). -

- -Interactive shells are described in 6.3 Interactive Shells. -

- - -

Invoked as an interactive login shell, or with `--login'

- -

- -When Bash is invoked as an interactive login shell, or as a -non-interactive shell with the `--login' option, it first reads and -executes commands from the file `/etc/profile', if that file exists. -After reading that file, it looks for `~/.bash_profile', -`~/.bash_login', and `~/.profile', in that order, and reads -and executes commands from the first one that exists and is readable. -The `--noprofile' option may be used when the shell is started to -inhibit this behavior. -

- -When a login shell exits, Bash reads and executes commands from -the file `~/.bash_logout', if it exists. -

- - -

Invoked as an interactive non-login shell

- -

- -When an interactive shell that is not a login shell is started, Bash -reads and executes commands from `~/.bashrc', if that file exists. -This may be inhibited by using the `--norc' option. -The `--rcfile file' option will force Bash to read and -execute commands from file instead of `~/.bashrc'. -

- -So, typically, your `~/.bash_profile' contains the line -
 
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
-
after (or before) any login-specific initializations. -

- - -

Invoked non-interactively

- -

- -When Bash is started non-interactively, to run a shell script, -for example, it looks for the variable BASH_ENV 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. Bash behaves as if the -following command were executed: -
 
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
-
but the value of the PATH variable is not used to search for the -filename. -

- -As noted above, if a non-interactive shell is invoked with the -`--login' option, Bash attempts to read and execute commands from the -login shell startup files. -

- - -

Invoked with name sh

- -

- -If Bash is invoked with the name sh, it tries to mimic the -startup behavior of historical versions of sh as closely as -possible, while conforming to the POSIX standard as well. -

- -When invoked as an interactive login shell, or as a non-interactive -shell with the `--login' option, it first attempts to read -and execute commands from `/etc/profile' and `~/.profile', in -that order. -The `--noprofile' option may be used to inhibit this behavior. -When invoked as an interactive shell with the name sh, Bash -looks for the variable ENV, 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 sh does not attempt to read and execute -commands from any other startup files, the `--rcfile' option has -no effect. -A non-interactive shell invoked with the name sh does not attempt -to read any other startup files. -

- -When invoked as sh, Bash enters POSIX mode after -the startup files are read. -

- - -

Invoked in POSIX mode

- -

- -When Bash is started in POSIX mode, as with the -`--posix' command line option, it follows the POSIX standard -for startup files. -In this mode, interactive shells expand the ENV variable -and commands are read and executed from the file whose name is the -expanded value. -No other startup files are read. -

- - -

Invoked by remote shell daemon

- -

- -Bash attempts to determine when it is being run with its standard input -connected to a network connection, as when executed by the remote shell -daemon, usually rshd, or the secure shell daemon sshd. -If Bash determines it is being run in -this fashion, it reads and executes commands from `~/.bashrc', if that -file exists and is readable. -It will not do this if invoked as sh. -The `--norc' option may be used to inhibit this behavior, and the -`--rcfile' option may be used to force another file to be read, but -rshd does not generally invoke the shell with those options or -allow them to be specified. -

- - -

Invoked with unequal effective and real UID/GIDs

- -

- -If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the `-p' option is not supplied, no startup -files are read, shell functions are not inherited from the environment, -the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE -variables, if they appear in the environment, are ignored, and the effective -user id is set to the real user id. -If the `-p' option is supplied at invocation, the startup behavior is -the same, but the effective user id is not reset. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.3 Interactive Shells

- -

- -

- - - -
6.3.1 What is an Interactive Shell?  What determines whether a shell is Interactive.
6.3.2 Is this Shell Interactive?  How to tell if a shell is interactive.
6.3.3 Interactive Shell Behavior  What changes in a interactive shell?
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.3.1 What is an Interactive Shell?

- -

- -An interactive shell -is one started without non-option arguments, unless `-s' is -specified, without specifying the `-c' option, and -whose input and error output are both -connected to terminals (as determined by isatty(3)), -or one started with the `-i' option. -

- -An interactive shell generally reads from and writes to a user's -terminal. -

- -The `-s' invocation option may be used to set the positional parameters -when an interactive shell is started. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.3.2 Is this Shell Interactive?

- -

- -To determine within a startup script whether or not Bash is -running interactively, -test the value of the `-' special parameter. -It contains i when the shell is interactive. For example: -

- -
 
case "$-" in
-*i*)	echo This shell is interactive ;;
-*)	echo This shell is not interactive ;;
-esac
-

- -Alternatively, startup scripts may examine the variable -PS1; it is unset in non-interactive shells, and set in -interactive shells. Thus: -

- -
 
if [ -z "$PS1" ]; then
-        echo This shell is not interactive
-else
-        echo This shell is interactive
-fi
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.3.3 Interactive Shell Behavior

- -

- -When the shell is running interactively, it changes its behavior in -several ways. -

- -

    -
  1. -Startup files are read and executed as described in 6.2 Bash Startup Files. -

    - -

  2. -Job Control (see section 7. Job Control) is enabled by default. When job -control is in effect, Bash ignores the keyboard-generated job control -signals SIGTTIN, SIGTTOU, and SIGTSTP. -

    - -

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

    - -

  4. -Bash executes the value of the PROMPT_COMMAND variable as a command -before printing the primary prompt, $PS1 -(see section 5.2 Bash Variables). -

    - -

  5. -Readline (see section 8. Command Line Editing) is used to read commands from -the user's terminal. -

    - -

  6. -Bash inspects the value of the ignoreeof option to set -o -instead of exiting immediately when it receives an EOF on its -standard input when reading a command (see section 4.3.1 The Set Builtin). -

    - -

  7. -Command history (see section 9.1 Bash History Facilities) -and history expansion (see section 9.3 History Expansion) -are enabled by default. -Bash will save the command history to the file named by $HISTFILE -when a shell with history enabled exits. -

    - -

  8. -Alias expansion (see section 6.6 Aliases) is performed by default. -

    - -

  9. -In the absence of any traps, Bash ignores SIGTERM -(see section 3.7.6 Signals). -

    - -

  10. -In the absence of any traps, SIGINT is caught and handled -((see section 3.7.6 Signals). -SIGINT will interrupt some shell builtins. -

    - -

  11. -An interactive login shell sends a SIGHUP to all jobs on exit -if the huponexit shell option has been enabled (see section 3.7.6 Signals). -

    - -

  12. -The `-n' invocation option is ignored, and `set -n' has -no effect (see section 4.3.1 The Set Builtin). -

    - -

  13. -Bash will check for mail periodically, depending on the values of the -MAIL, MAILPATH, and MAILCHECK shell variables -(see section 5.2 Bash Variables). -

    - -

  14. -Expansion errors due to references to unbound shell variables after -`set -u' has been enabled will not cause the shell to exit -(see section 4.3.1 The Set Builtin). -

    - -

  15. -The shell will not exit on expansion errors caused by var being unset -or null in ${var:?word} expansions -(see section 3.5.3 Shell Parameter Expansion). -

    - -

  16. -Redirection errors encountered by shell builtins will not cause the -shell to exit. -

    - -

  17. -When running in POSIX mode, a special builtin returning an error -status will not cause the shell to exit (see section 6.11 Bash POSIX Mode). -

    - -

  18. -A failed exec will not cause the shell to exit -(see section 4.1 Bourne Shell Builtins). -

    - -

  19. -Parser syntax errors will not cause the shell to exit. -

    - -

  20. -Simple spelling correction for directory arguments to the cd -builtin is enabled by default (see the description of the cdspell -option to the shopt builtin in 4.3.2 The Shopt Builtin). -

    - -

  21. -The shell will check the value of the TMOUT variable and exit -if a command is not read within the specified number of seconds after -printing $PS1 (see section 5.2 Bash Variables). -

    - -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.4 Bash Conditional Expressions

- -

- -Conditional expressions are used by the [[ compound command -and the test and [ builtin commands. -

- -Expressions may be unary or binary. -Unary expressions are often used to examine the status of a file. -There are string operators and numeric comparison operators as well. -If the file argument to one of the primaries is of the form -`/dev/fd/N', then file descriptor N is checked. -If the file argument to one of the primaries is one of -`/dev/stdin', `/dev/stdout', or `/dev/stderr', file -descriptor 0, 1, or 2, respectively, is checked. -

- -When used with [[, the `<' and `>' operators sort -lexicographically using the current locale. -The test command uses ASCII ordering. -

- -Unless otherwise specified, primaries that operate on files follow symbolic -links and operate on the target of the link, rather than the link itself. -

- -

-
-a file -
True if file exists. -

- -

-b file -
True if file exists and is a block special file. -

- -

-c file -
True if file exists and is a character special file. -

- -

-d file -
True if file exists and is a directory. -

- -

-e file -
True if file exists. -

- -

-f file -
True if file exists and is a regular file. -

- -

-g file -
True if file exists and its set-group-id bit is set. -

- -

-h file -
True if file exists and is a symbolic link. -

- -

-k file -
True if file exists and its "sticky" bit is set. -

- -

-p file -
True if file exists and is a named pipe (FIFO). -

- -

-r file -
True if file exists and is readable. -

- -

-s file -
True if file exists and has a size greater than zero. -

- -

-t fd -
True if file descriptor fd is open and refers to a terminal. -

- -

-u file -
True if file exists and its set-user-id bit is set. -

- -

-w file -
True if file exists and is writable. -

- -

-x file -
True if file exists and is executable. -

- -

-G file -
True if file exists and is owned by the effective group id. -

- -

-L file -
True if file exists and is a symbolic link. -

- -

-N file -
True if file exists and has been modified since it was last read. -

- -

-O file -
True if file exists and is owned by the effective user id. -

- -

-S file -
True if file exists and is a socket. -

- -

file1 -ef file2 -
True if file1 and file2 refer to the same device and -inode numbers. -

- -

file1 -nt file2 -
True if file1 is newer (according to modification date) -than file2, or if file1 exists and file2 does not. -

- -

file1 -ot file2 -
True if file1 is older than file2, -or if file2 exists and file1 does not. -

- -

-o optname -
True if the shell option optname is enabled. -The list of options appears in the description of the `-o' -option to the set builtin (see section 4.3.1 The Set Builtin). -

- -

-v varname -
True if the shell variable varname is set (has been assigned a value). -

- -

-R varname -
True if the shell variable varname is set and is a name reference. -

- -

-z string -
True if the length of string is zero. -

- -

-n string -
string -
True if the length of string is non-zero. -

- -

string1 == string2 -
string1 = string2 -
True if the strings are equal. -When used with the [[ command, this performs pattern matching as -described above (see section 3.2.4.2 Conditional Constructs). -

- -`=' should be used with the test command for POSIX conformance. -

- -

string1 != string2 -
True if the strings are not equal. -

- -

string1 < string2 -
True if string1 sorts before string2 lexicographically. -

- -

string1 > string2 -
True if string1 sorts after string2 lexicographically. -

- -

arg1 OP arg2 -
OP is one of -`-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. -These 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. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.5 Shell Arithmetic

- -

- -The shell allows arithmetic expressions to be evaluated, as one of -the shell expansions or by the let and the `-i' option -to the declare builtins. -

- -Evaluation is done in fixed-width integers with no check for overflow, -though division by 0 is trapped and flagged as an error. -The operators and their precedence, associativity, and values -are the same as in the C language. -The following list of operators is grouped into levels of -equal-precedence operators. -The levels are listed in order of decreasing precedence. -

- -

- -
id++ id-- -
variable post-increment and post-decrement -

- -

++id --id -
variable pre-increment and pre-decrement -

- -

- + -
unary minus and plus -

- -

! ~ -
logical and bitwise negation -

- -

** -
exponentiation -

- -

* / % -
multiplication, division, remainder -

- -

+ - -
addition, subtraction -

- -

<< >> -
left and right bitwise shifts -

- -

<= >= < > -
comparison -

- -

== != -
equality and inequality -

- -

& -
bitwise AND -

- -

^ -
bitwise exclusive OR -

- -

| -
bitwise OR -

- -

&& -
logical AND -

- -

|| -
logical OR -

- -

expr ? expr : expr -
conditional operator -

- -

= *= /= %= += -= <<= >>= &= ^= |= -
assignment -

- -

expr1 , expr2 -
comma -
-

- -Shell variables are allowed as operands; parameter expansion is -performed 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 0 when referenced -by name without using the parameter expansion syntax. -The value of a variable is evaluated as an arithmetic expression -when it is referenced, or when a variable which has been given the -integer attribute using `declare -i' is assigned a value. -A null value evaluates to 0. -A shell variable need not have its integer 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 [base#]n, where the optional base -is a decimal number between 2 and 64 representing the arithmetic -base, and n is a number in that base. -If base# is omitted, then base 10 is used. -When specifying n, -he digits greater than 9 are represented by the lowercase letters, -the uppercase letters, `@', and `_', in that order. -If base is less than or equal to 36, lowercase and uppercase -letters may be used interchangeably to represent numbers between 10 -and 35. -

- -Operators are evaluated in order of precedence. Sub-expressions in -parentheses are evaluated first and may override the precedence -rules above. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.6 Aliases

- -

- -Aliases allow a string to be substituted for a word when it is used -as the first word of a simple command. -The shell maintains a list of aliases that may be set and unset with -the alias and unalias builtin commands. -

- -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 any of the -shell metacharacters 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 ls to "ls -F", -for instance, and Bash does not try to recursively expand the -replacement text. -If the last character of the alias value is a -blank, then the next command word following the -alias is also checked for alias expansion. -

- -Aliases are created and listed with the alias -command, and removed with the unalias command. -

- -There is no mechanism for using arguments in the replacement text, -as in csh. -If arguments are needed, a shell function should be used -(see section 3.3 Shell Functions). -

- -Aliases are not expanded when the shell is not interactive, -unless the expand_aliases shell option is set using -shopt (see section 4.3.2 The Shopt Builtin). -

- -The rules concerning the definition and use of aliases are -somewhat confusing. Bash -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a -command is read, not when it is executed. Therefore, an -alias 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 compound command. As a consequence, aliases -defined in a function are not available until after that -function is executed. To be safe, always put -alias definitions on a separate line, and do not use alias -in compound commands. -

- -For almost every purpose, shell functions are preferred over aliases. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.7 Arrays

- -

- -Bash provides one-dimensional indexed and associative array variables. -Any variable may be used as an indexed array; -the declare 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 contiguously. -Indexed arrays are referenced using integers (including arithmetic -expressions (see section 6.5 Shell Arithmetic)) and are zero-based; -associative arrays use arbitrary strings. -Unless otherwise noted, indexed array indices must be non-negative integers. -

- -An indexed array is created automatically if any variable is assigned to -using the syntax -
 
name[subscript]=value
-

- -The subscript -is treated as an arithmetic expression that must evaluate to a number. -To explicitly declare an array, use -
 
declare -a name
-
The syntax -
 
declare -a name[subscript]
-
is also accepted; the subscript is ignored. -

- -Associative arrays are created using -
 
declare -A name.
-

- -Attributes may be -specified for an array variable using the declare and -readonly builtins. Each attribute applies to all members of -an array. -

- -Arrays are assigned to using compound assignments of the form -
 
name=(value1 value2 ... )
-
where each -value is of the form [subscript]=string. -Indexed array assignments do not require anything but string. -When assigning to indexed arrays, if -the optional subscript is 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 declare -builtin. Individual array elements may be assigned to using the -name[subscript]=value syntax introduced above. -

- -When assigning to an indexed array, if name -is subscripted by a negative number, that number is -interpreted as relative to one greater than the maximum index of -name, so negative indices count back from the end of the -array, and an index of -1 references the last element. -

- -Any element of an array may be referenced using -${name[subscript]}. -The braces are required to avoid -conflicts with the shell's filename expansion operators. If the -subscript is `@' or `*', the word expands to all members -of the array name. These subscripts differ only when the word -appears within double quotes. -If the word is double-quoted, -${name[*]} expands to a single word with -the value of each array member separated by the first character of the -IFS variable, and ${name[@]} expands each element of -name to a separate word. When there are no array members, -${name[@]} 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 `*'. -${#name[subscript]} expands to the length of -${name[subscript]}. -If subscript is `@' or -`*', the expansion is the number of elements in the array. -Referencing an array variable without a subscript is equivalent to -referencing with a subscript of 0. -If the subscript -used to reference an element of an indexed array -evaluates to a number less than zero, it is -interpreted as relative to one greater than the maximum index of the array, -so negative indices count back from the end of the array, -and an index of -1 refers to the last element. -

- -An array variable is considered set if a subscript has been assigned a -value. The null string is a valid value. -

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

- -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. -If both options are supplied, `-A' takes precedence. -The read builtin accepts a `-a' -option to assign a list of words read from the standard input -to an array, and can read values from the standard input into -individual array elements. The set and declare -builtins display array values in a way that allows them to be -reused as input. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.8 The Directory Stack

- -

- -

- -
6.8.1 Directory Stack Builtins  Bash builtin commands to manipulate - the directory stack.
-

- -The directory stack is a list of recently-visited directories. The -pushd builtin adds directories to the stack as it changes -the current directory, and the popd builtin removes specified -directories from the stack and changes the current directory to -the directory removed. The dirs builtin displays the contents -of the directory stack. -

- -The contents of the directory stack are also visible -as the value of the DIRSTACK shell variable. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.8.1 Directory Stack Builtins

- -

- -

- -
dirs -
-
 
dirs [-clpv] [+N | -N]
-

- -Display the list of currently remembered directories. Directories -are added to the list with the pushd command; the -popd command removes directories from the list. -

- -

-
-c -
Clears the directory stack by deleting all of the elements. -
-l -
Produces a listing using full pathnames; -the default listing format uses a tilde to denote the home directory. -
-p -
Causes dirs to print the directory stack with one entry per -line. -
-v -
Causes dirs to print the directory stack with one entry per -line, prefixing each entry with its index in the stack. -
+N -
Displays the Nth directory (counting from the left of the -list printed by dirs when invoked without options), starting -with zero. -
-N -
Displays the Nth directory (counting from the right of the -list printed by dirs when invoked without options), starting -with zero. -
-

- -

popd -
-
 
popd [-n] [+N | -N]
-

- -Remove the top entry from the directory stack, and cd -to the new top directory. -When no arguments are given, popd -removes the top directory from the stack and -performs a cd to the new top directory. The -elements are numbered from 0 starting at the first directory listed with -dirs; that is, popd is equivalent to popd +0. -

- -

-
-n -
Suppresses the normal change of directory when removing directories -from the stack, so that only the stack is manipulated. -
+N -
Removes the Nth directory (counting from the left of the -list printed by dirs), starting with zero. -
-N -
Removes the Nth directory (counting from the right of the -list printed by dirs), starting with zero. -
-

- - -

pushd -
 
pushd [-n] [+N | -N | dir]
-

- -Save the current directory on the top of the directory stack -and then cd to dir. -With no arguments, pushd exchanges the top two directories. -

- -

-
-n -
Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. -
+N -
Brings the Nth directory (counting from the left of the -list printed by dirs, starting with zero) to the top of -the list by rotating the stack. -
-N -
Brings the Nth directory (counting from the right of the -list printed by dirs, starting with zero) to the top of -the list by rotating the stack. -
dir -
Makes the current working directory be the top of the stack, making -it the new current directory as if it had been supplied as an argument -to the cd builtin. -
-
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.9 Controlling the Prompt

- -

- -The value of the variable PROMPT_COMMAND is examined just before -Bash prints each primary prompt. If PROMPT_COMMAND is set and -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: -

- -

-
\a -
A bell character. -
\d -
The date, in "Weekday Month Date" format (e.g., "Tue May 26"). -
\D{format} -
The format is passed to strftime(3) and the result is inserted -into the prompt string; an empty format results in a locale-specific -time representation. The braces are required. -
\e -
An escape character. -
\h -
The hostname, up to the first `.'. -
\H -
The hostname. -
\j -
The number of jobs currently managed by the shell. -
\l -
The basename of the shell's terminal device name. -
\n -
A newline. -
\r -
A carriage return. -
\s -
The name of the shell, the basename of $0 (the portion -following the final slash). -
\t -
The time, in 24-hour HH:MM:SS format. -
\T -
The time, in 12-hour HH:MM:SS format. -
\@ -
The time, in 12-hour am/pm format. -
\A -
The time, in 24-hour HH:MM format. -
\u -
The username of the current user. -
\v -
The version of Bash (e.g., 2.00) -
\V -
The release of Bash, version + patchlevel (e.g., 2.00.0) -
\w -
The current working directory, with $HOME abbreviated with a tilde -(uses the $PROMPT_DIRTRIM variable). -
\W -
The basename of $PWD, with $HOME abbreviated with a tilde. -
\! -
The history number of this command. -
\# -
The command number of this command. -
\$ -
If the effective uid is 0, #, otherwise $. -
\nnn -
The character whose ASCII code is the octal value nnn. -
\\ -
A backslash. -
\[ -
Begin a sequence of non-printing characters. This could be used to -embed a terminal control sequence into the prompt. -
\] -
End a sequence of non-printing characters. -
-

- -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 section 9.1 Bash History Facilities), 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 substitution, arithmetic -expansion, and quote removal, subject to the value of the -promptvars shell option (see section 4.2 Bash Builtin Commands). -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.10 The Restricted Shell

- -

- -If Bash is started with the name rbash, or the -`--restricted' -or -`-r' -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. -A restricted shell behaves identically to bash -with the exception that the following are disallowed or not performed: -

- -

    -
  • -Changing directories with the cd builtin. -
  • -Setting or unsetting the values of the SHELL, PATH, -ENV, or BASH_ENV variables. -
  • -Specifying command names containing slashes. -
  • -Specifying a filename containing a slash as an argument to the . -builtin command. -
  • -Specifying a filename containing a slash as an argument to the `-p' -option to the hash builtin command. -
  • -Importing function definitions from the shell environment at startup. -
  • -Parsing the value of SHELLOPTS from the shell environment at startup. -
  • -Redirecting output using the `>', `>|', `<>', `>&', -`&>', and `>>' redirection operators. -
  • -Using the exec builtin to replace the shell with another command. -
  • -Adding or deleting builtin commands with the -`-f' and `-d' options to the enable builtin. -
  • -Using the enable builtin command to enable disabled shell builtins. -
  • -Specifying the `-p' option to the command builtin. -
  • -Turning off restricted mode with `set +r' or `set +o restricted'. -
-

- -These restrictions are enforced after any startup files are read. -

- -When a command that is found to be a shell script is executed -(see section 3.8 Shell Scripts), rbash turns off any restrictions in -the shell spawned to execute the script. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

6.11 Bash POSIX Mode

- -

- -Starting Bash with the `--posix' command-line option or executing -`set -o posix' while Bash is running will cause Bash to conform more -closely to the POSIX standard by changing the behavior to -match that specified by POSIX in areas where the Bash default differs. -

- -When invoked as sh, Bash enters POSIX mode after reading the -startup files. -

- -The following list is what's changed when `POSIX mode' is in effect: -

- -

    -
  1. -When a command in the hash table no longer exists, Bash will re-search -$PATH to find the new location. This is also available with -`shopt -s checkhash'. -

    - -

  2. -The message printed by the job control code and builtins when a job -exits with a non-zero status is `Done(status)'. -

    - -

  3. -The message printed by the job control code and builtins when a job -is stopped is `Stopped(signame)', where signame is, for -example, SIGTSTP. -

    - -

  4. -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. -

    - -

  5. -Reserved words appearing in a context where reserved words are recognized -do not undergo alias expansion. -

    - -

  6. -The POSIX PS1 and PS2 expansions of `!' to -the history number and `!!' to `!' are enabled, -and parameter expansion is performed on the values of PS1 and -PS2 regardless of the setting of the promptvars option. -

    - -

  7. -The POSIX startup files are executed ($ENV) rather than -the normal Bash files. -

    - -

  8. -Tilde expansion is only performed on assignments preceding a command -name, rather than on all assignment statements on the line. -

    - -

  9. -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. -

    - -

  10. -The default history file is `~/.sh_history' (this is the -default value of $HISTFILE). -

    - -

  11. -The output of `kill -l' prints all the signal names on a single line, -separated by spaces, without the `SIG' prefix. -

    - -

  12. -The kill builtin does not accept signal names with a `SIG' -prefix. -

    - -

  13. -Non-interactive shells exit if filename in . filename -is not found. -

    - -

  14. -Non-interactive shells exit if a syntax error in an arithmetic expansion -results in an invalid expression. -

    - -

  15. -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. -

    - -

  16. -Redirection operators do not perform filename expansion on the word -in the redirection unless the shell is interactive. -

    - -

  17. -Redirection operators do not perform word splitting on the word in the -redirection. -

    - -

  18. -Function names must be valid shell names. That is, they may not -contain characters other than letters, digits, and underscores, and -may not start with a digit. Declaring a function with an invalid name -causes a fatal syntax error in non-interactive shells. -

    - -

  19. -Function names may not be the same as one of the POSIX special -builtins. -

    - -

  20. -POSIX special builtins are found before shell functions -during command lookup. -

    - -

  21. -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. -

    - -

  22. -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. -

    - -

  23. -The parser does not recognize time as a reserved word if the next -token begins with a `-'. -

    - -

  24. -If a POSIX special builtin returns an error status, a -non-interactive shell exits. The fatal errors are those listed in -the POSIX standard, and include things like passing incorrect options, -redirection errors, variable assignment errors for assignments preceding -the command name, and so on. -

    - -

  25. -A non-interactive shell exits with an error status if a variable -assignment error occurs when no command name follows the assignment -statements. -A variable assignment error occurs, for example, when trying to assign -a value to a readonly variable. -

    - -

  26. -A non-interactive shell exists with an error status if a variable -assignment error occurs in an assignment statement preceding a special -builtin, but not with any other simple command. -

    - -

  27. -A non-interactive shell exits with an error status if the iteration -variable in a for statement or the selection variable in a -select statement is a readonly variable. -

    - -

  28. -Process substitution is not available. -

    - -

  29. -While variable indirection is available, it may not be applied to the -`#' and `?' special parameters. -

    - -

  30. -Assignment statements preceding POSIX special builtins -persist in the shell environment after the builtin completes. -

    - -

  31. -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 export and readonly builtin commands display their -output in the format required by POSIX. -

    - -

  33. -The trap builtin displays signal names without the leading -SIG. -

    - -

  34. -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. -

    - -

  35. -The . and source builtins do not search the current directory -for the filename argument if it is not found by searching PATH. -

    - -

  36. -Subshells spawned to execute command substitutions inherit the value of -the `-e' option from the parent shell. When not in POSIX mode, -Bash clears the `-e' option in such subshells. -

    - -

  37. -Alias expansion is always enabled, even in non-interactive shells. -

    - -

  38. -When the alias builtin displays alias definitions, it does not -display them with a leading `alias ' unless the `-p' option -is supplied. -

    - -

  39. -When the set builtin is invoked without options, it does not display -shell function names and definitions. -

    - -

  40. -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. -

    - -

  41. -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. -

    - -

  42. -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. -

    - -

  43. -When listing the history, the fc builtin does not include an -indication of whether or not a history entry has been modified. -

    - -

  44. -The default editor used by fc is ed. -

    - -

  45. -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. -

    - -

  46. -The vi editing mode will invoke the vi editor directly when -the `v' command is run, instead of checking $VISUAL and -$EDITOR. -

    - -

  47. -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. -

    - -

  48. -The ulimit builtin uses a block size of 512 bytes for the `-c' -and `-f' options. -

    - -

  49. -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. -

    - -

  50. -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. -

    - -

-

- -There is other POSIX behavior that Bash does not implement by -default even when in POSIX mode. -Specifically: -

- -

    - -
  1. -The fc builtin checks $EDITOR as a program to edit history -entries if FCEDIT is unset, rather than defaulting directly to -ed. fc uses ed if EDITOR is unset. -

    - -

  2. -As noted above, Bash requires the xpg_echo option to be enabled for -the echo builtin to be fully conformant. -

    - -

-

- -Bash can be configured to be POSIX-conformant by default, by specifying -the `--enable-strict-posix-default' to configure when building -(see section 10.8 Optional Features). -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

7. Job Control

- -

- -This chapter discusses what job control is, how it works, and how -Bash allows you to access its facilities. -

- -

- - - -
7.1 Job Control Basics  How job control works.
7.2 Job Control Builtins  Bash builtin commands used to interact - with job control.
7.3 Job Control Variables  Variables Bash uses to customize job - control.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

7.1 Job Control Basics

- -

- -Job control -refers to the ability to selectively stop (suspend) -the execution of processes and continue (resume) -their execution at a later point. A user typically employs -this facility via an interactive interface supplied jointly -by the operating system kernel's terminal driver and Bash. -

- -The shell associates a job with each pipeline. It keeps a -table of currently executing jobs, which may be listed with the -jobs command. When Bash starts a job -asynchronously, it prints a line that looks -like: -
 
[1] 25647
-
indicating that this job is job number 1 and that the process ID -of the last process in the pipeline associated with this job is -25647. All of the processes in a single pipeline are members of -the same job. Bash uses the job abstraction as the -basis for job control. -

- -To facilitate the implementation of the user interface to job -control, the operating system maintains the notion of a current terminal -process group ID. Members of this process group (processes whose -process group ID is equal to the current terminal process group -ID) receive keyboard-generated signals such as SIGINT. -These processes are said to be in the foreground. Background -processes are those whose process group ID differs from the -terminal's; such processes are immune to keyboard-generated -signals. Only foreground processes are allowed to read from or, if -the user so specifies with stty tostop, write to the terminal. -Background processes which attempt to -read from (write to when stty tostop is in effect) the -terminal are sent a SIGTTIN (SIGTTOU) -signal by the kernel's terminal driver, -which, unless caught, suspends the process. -

- -If the operating system on which Bash is running supports -job control, Bash contains facilities to use it. Typing the -suspend character (typically `^Z', Control-Z) while a -process is running causes that process to be stopped and returns -control to Bash. Typing the delayed suspend character -(typically `^Y', Control-Y) causes the process to be stopped -when it attempts to read input from the terminal, and control to -be returned to Bash. The user then manipulates the state of -this job, using the bg command to continue it in the -background, the fg command to continue it in the -foreground, or the kill command to kill it. A `^Z' -takes effect immediately, and has the additional side effect of -causing pending output and typeahead to be discarded. -

- -There are a number of ways to refer to a job in the shell. The -character `%' introduces a job specification (jobspec). -

- -Job number n may be referred to as `%n'. -The symbols `%%' and `%+' refer to the shell's notion of the -current job, which is the last job stopped while it was in the foreground -or started in the background. -A single `%' (with no accompanying job specification) also refers -to the current job. -The previous job may be referenced using `%-'. -If there is only a single job, `%+' and `%-' can both be used -to refer to that job. -In output pertaining to jobs (e.g., the output of the jobs -command), the current job is always flagged with a `+', and the -previous job with a `-'. -

- -A job may also be referred to -using a prefix of the name used to start it, or using a substring -that appears in its command line. For example, `%ce' refers -to a stopped ce job. Using `%?ce', on the -other hand, refers to any job containing the string `ce' in -its command line. If the prefix or substring matches more than one job, -Bash reports an error. -

- -Simply naming a job can be used to bring it into the foreground: -`%1' is a synonym for `fg %1', bringing job 1 from the -background into the foreground. Similarly, `%1 &' resumes -job 1 in the background, equivalent to `bg %1' -

- -The shell learns immediately whenever a job changes state. -Normally, Bash waits until it is about to print a prompt -before reporting changes in a job's status so as to not interrupt -any other output. -If the `-b' option to the set builtin is enabled, -Bash reports such changes immediately (see section 4.3.1 The Set Builtin). -Any trap on SIGCHLD is executed for each child process -that exits. -

- -If an attempt to exit Bash is made while jobs are stopped, (or running, if -the checkjobs option is enabled -- see 4.3.2 The Shopt Builtin), the -shell prints a warning message, and if the checkjobs option is -enabled, lists the jobs and their statuses. -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. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

7.2 Job Control Builtins

- -

- -

- -
bg -
-
 
bg [jobspec ...]
-

- -Resume each suspended job jobspec in the background, as if it -had been started with `&'. -If jobspec is not supplied, the current job is used. -The return status is zero unless it is run when job control is not -enabled, or, when run with job control enabled, any -jobspec was not found or specifies a job -that was started without job control. -

- -

fg -
-
 
fg [jobspec]
-

- -Resume the job jobspec in the foreground and make it the current job. -If jobspec is not supplied, the current job is used. -The return status is that of the command placed into the foreground, -or non-zero if run when job control is disabled or, when run with -job control enabled, jobspec does not specify a valid job or -jobspec specifies a job that was started without job control. -

- -

jobs -
-
 
jobs [-lnprs] [jobspec]
-jobs -x command [arguments]
-

- -The first form lists the active jobs. The options have the -following meanings: -

- -

-
-l -
List process IDs in addition to the normal information. -

- -

-n -
Display information only about jobs that have changed status since -the user was last notified of their status. -

- -

-p -
List only the process ID of the job's process group leader. -

- -

-r -
Display only running jobs. -

- -

-s -
Display only stopped jobs. -
-

- -If jobspec is given, -output is restricted to information about that job. -If jobspec is not supplied, the status of all jobs is -listed. -

- -If the `-x' option is supplied, jobs replaces any -jobspec found in command or arguments with the -corresponding process group ID, and executes command, -passing it arguments, returning its exit status. -

- -

kill -
-
 
kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
-kill -l [exit_status]
-

- -Send a signal specified by sigspec or signum to the process -named by job specification jobspec or process ID pid. -sigspec is either a case-insensitive signal name such as -SIGINT (with or without the SIG prefix) -or a signal number; signum is a signal number. -If sigspec and signum are not present, SIGTERM is used. -The `-l' option lists the signal names. -If any arguments are supplied when `-l' is given, the names of the -signals corresponding to the arguments are listed, and the return status -is zero. -exit_status is a number specifying a signal number or the exit -status of a process terminated by a signal. -The return status is zero if at least one signal was successfully sent, -or non-zero if an error occurs or an invalid option is encountered. -

- -

wait -
-
 
wait [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 -last command waited for. -If a job spec is given, all processes in 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 specifies an active child process -of the shell, the return status is 127. -

- -

disown -
-
 
disown [-ar] [-h] [jobspec ...]
-

- -Without options, remove each jobspec from the table of -active jobs. -If the `-h' option is given, the job is not removed from the table, -but is marked so that SIGHUP is not sent to the job if the shell -receives a SIGHUP. -If jobspec is not present, and neither the `-a' nor `-r' -option is supplied, the current job is used. -If no jobspec is supplied, the `-a' option means to remove or -mark all jobs; the `-r' option without a jobspec -argument restricts operation to running jobs. -

- -

suspend -
-
 
suspend [-f]
-

- -Suspend the execution of this shell until it receives a -SIGCONT signal. -A login shell cannot be suspended; the `-f' -option can be used to override this and force the suspension. -

-

- -When job control is not active, the kill and wait -builtins do not accept jobspec arguments. They must be -supplied process IDs. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

7.3 Job Control Variables

- -

- -

- - -
auto_resume -
-This variable controls how the shell interacts with the user and -job control. If this variable exists then single word simple -commands without redirections are treated as candidates for resumption -of an existing job. There is no ambiguity allowed; if there is -more than one job beginning with the string typed, then -the most recently accessed job will be selected. -The name of a stopped job, in this context, is the command line -used to start it. If this variable is set to the value `exact', -the string supplied must match the name of a stopped job exactly; -if set to `substring', -the string supplied needs to match a substring of the name of a -stopped job. The `substring' value provides functionality -analogous to the `%?' job ID (see section 7.1 Job Control Basics). -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 `%' job ID. -

- -

-

- - -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8. Command Line Editing

- -

- -This chapter describes the basic features of the GNU -command line editing interface. -Command line editing is provided by the Readline library, which is -used by several different programs, including Bash. -Command line editing is enabled by default when using an interactive shell, -unless the `--noediting' option is supplied at shell invocation. -Line editing is also used when using the `-e' option to the -read builtin command (see section 4.2 Bash Builtin Commands). -By default, the line editing commands are similar to those of Emacs. -A vi-style line editing interface is also available. -Line editing can be enabled at any time using the `-o emacs' or -`-o vi' options to the set builtin command -(see section 4.3.1 The Set Builtin), or disabled using the `+o emacs' or -`+o vi' options to set. -

- -

- - - - - - - - -
8.1 Introduction to Line Editing  Notation used in this text.
8.2 Readline Interaction  The minimum set of commands for editing a line.
8.3 Readline Init File  Customizing Readline from a user's view.
8.4 Bindable Readline Commands  A description of most of the Readline commands - available for binding
8.5 Readline vi Mode  A short description of how to make Readline - behave like the vi editor.
8.6 Programmable Completion  How to specify the possible completions for - a specific command.
8.7 Programmable Completion Builtins  Builtin commands to specify how to - complete arguments for a particular command.
8.8 A Programmable Completion Example  An example shell function for - generating possible completions.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.1 Introduction to Line Editing

- -

- -The following paragraphs describe the notation used to represent -keystrokes. -

- -The text C-k is read as `Control-K' and describes the character -produced when the k key is pressed while the Control key -is depressed. -

- -The text M-k is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the k -key is pressed. -The Meta key is labeled ALT on many keyboards. -On keyboards with two keys labeled ALT (usually to either side of -the space bar), the ALT on the left side is generally set to -work as a Meta key. -The ALT key on the right may also be configured to work as a -Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. -

- -If you do not have a Meta or ALT key, or another key working as -a Meta key, the identical keystroke can be generated by typing ESC -first, and then typing k. -Either process is known as metafying the k key. -

- -The text M-C-k is read as `Meta-Control-k' and describes the -character produced by metafying C-k. -

- -In addition, several keys have their own names. Specifically, -DEL, ESC, LFD, SPC, RET, and TAB all -stand for themselves when seen in this text, or in an init file -(see section 8.3 Readline Init File). -If your keyboard lacks a LFD key, typing C-j will -produce the desired character. -The RET key may be labeled Return or Enter on -some keyboards. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.2 Readline Interaction

- -

- -Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press RET. You do not have to be at the -end of the line to press RET; the entire line is accepted -regardless of the location of the cursor within the line. -

- -

- - - - - -
8.2.1 Readline Bare Essentials  The least you need to know about Readline.
8.2.2 Readline Movement Commands  Moving about the input line.
8.2.3 Readline Killing Commands  How to delete text, and how to get it back!
8.2.4 Readline Arguments  Giving numeric arguments to commands.
8.2.5 Searching for Commands in the History  Searching through previous lines.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.2.1 Readline Bare Essentials

- -

- -In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your -erase character to back up and delete the mistyped character. -

- -Sometimes you may mistype a character, and -not notice the error until you have typed several other characters. In -that case, you can type C-b to move the cursor to the left, and then -correct your mistake. Afterwards, you can move the cursor to the right -with C-f. -

- -When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text -that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the -blank space created by the removal of the text. A list of the bare -essentials for editing the text of an input line follows. -

- -

-
C-b -
Move back one character. -
C-f -
Move forward one character. -
DEL or Backspace -
Delete the character to the left of the cursor. -
C-d -
Delete the character underneath the cursor. -
Printing characters -
Insert the character into the line at the cursor. -
C-_ or C-x C-u -
Undo the last editing command. You can undo all the way back to an -empty line. -
-

- -(Depending on your configuration, the Backspace key be set to -delete the character to the left of the cursor and the DEL key set -to delete the character underneath the cursor, like C-d, rather -than the character to the left of the cursor.) -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.2.2 Readline Movement Commands

- -

- -The above table describes the most basic keystrokes that you need -in order to do editing of the input line. For your convenience, many -other commands have been added in addition to C-b, C-f, -C-d, and DEL. Here are some commands for moving more rapidly -about the line. -

- -

-
C-a -
Move to the start of the line. -
C-e -
Move to the end of the line. -
M-f -
Move forward a word, where a word is composed of letters and digits. -
M-b -
Move backward a word. -
C-l -
Clear the screen, reprinting the current line at the top. -
-

- -Notice how C-f moves forward a character, while M-f moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.2.3 Readline Killing Commands

- -

- - - -

- -Killing text means to delete the text from the line, but to save -it away for later use, usually by yanking (re-inserting) -it back into the line. -(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) -

- -If the description for a command says that it `kills' text, then you can -be sure that you can get the text back in a different (or the same) -place later. -

- -When you use a kill command, the text is saved in a kill-ring. -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill -ring is not line specific; the text that you killed on a previously -typed line is available to be yanked back later, when you are typing -another line. - -

- -Here is the list of commands for killing text. -

- -

-
C-k -
Kill the text from the current cursor position to the end of the line. -

- -

M-d -
Kill from the cursor to the end of the current word, or, if between -words, to the end of the next word. -Word boundaries are the same as those used by M-f. -

- -

M-DEL -
Kill from the cursor the start of the current word, or, if between -words, to the start of the previous word. -Word boundaries are the same as those used by M-b. -

- -

C-w -
Kill from the cursor to the previous whitespace. This is different than -M-DEL because the word boundaries differ. -

- -

-

- -Here is how to yank the text back into the line. Yanking -means to copy the most-recently-killed text from the kill buffer. -

- -

-
C-y -
Yank the most recently killed text back into the buffer at the cursor. -

- -

M-y -
Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is C-y or M-y. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.2.4 Readline Arguments

- -

- -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. -

- -The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once -you have typed one meta digit to get the argument started, you can type -the remainder of the digits, and then the command. For example, to give -the C-d command an argument of 10, you could type `M-1 0 C-d', -which will delete the next ten characters on the input line. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.2.5 Searching for Commands in the History

- -

- -Readline provides commands for searching through the command history -(see section 9.1 Bash History Facilities) -for lines containing a specified string. -There are two search modes: incremental and non-incremental. -

- -Incremental searches begin before the user has finished typing the -search string. -As each character of the search string is typed, Readline displays -the next entry from the history matching the string typed so far. -An incremental search requires only as many characters as needed to -find the desired history entry. -To search backward in the history for a particular string, type -C-r. Typing C-s searches forward through the history. -The characters present in the value of the isearch-terminators variable -are used to terminate an incremental search. -If that variable has not been assigned a value, the ESC and -C-J characters will terminate an incremental search. -C-g will abort an incremental search and restore the original line. -When the search is terminated, the history entry containing the -search string becomes the current line. -

- -To find other matching entries in the history list, type C-r or -C-s as appropriate. -This will search backward or forward in the history for the next -entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate -the search and execute that command. -For instance, a RET will terminate the search and accept -the line, thereby executing the command from the history list. -A movement command will terminate the search, make the last line found -the current line, and begin editing. -

- -Readline remembers the last incremental search string. If two -C-rs are typed without any intervening characters defining a new -search string, any remembered search string is used. -

- -Non-incremental searches read the entire search string before starting -to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.3 Readline Init File

- -

- -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. -Any user can customize programs that use Readline by putting -commands in an inputrc file, conventionally in his home directory. -The name of this -file is taken from the value of the shell variable INPUTRC. If -that variable is unset, the default is `~/.inputrc'. If that -file does not exist or cannot be read, the ultimate default is -`/etc/inputrc'. -

- -When a program which uses the Readline library starts up, the -init file is read, and the key bindings are set. -

- -In addition, the C-x C-r command re-reads this init file, thus -incorporating any changes that you might have made to it. -

- -

- -
8.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.
- -
- - -
8.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.
- -
- - -
8.3.3 Sample Init File  An example inputrc file.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.3.1 Readline Init File Syntax

- -

- -There are only a few basic constructs allowed in the -Readline init file. Blank lines are ignored. -Lines beginning with a `#' are comments. -Lines beginning with a `$' indicate conditional -constructs (see section 8.3.2 Conditional Init Constructs). Other lines -denote variable settings and key bindings. -

- -

-
Variable Settings -
You can modify the run-time behavior of Readline by -altering the values of variables in Readline -using the set command within the init file. -The syntax is simple: -

- -
 
set variable value
-

- -Here, for example, is how to -change from the default Emacs-like key binding to use -vi line editing commands: -

- -
 
set editing-mode vi
-

- -Variable names and values, where appropriate, are recognized without regard -to case. Unrecognized variable names are ignored. -

- -Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, on (case-insensitive), or 1. Any other -value results in the variable being set to off. -

- -The bind -V command lists the current Readline variable names -and values. See section 4.2 Bash Builtin Commands. -

- -A great deal of run-time behavior is changeable with the following -variables. -

- - -

- -
bell-style -
-Controls what happens when Readline wants to ring the terminal bell. -If set to `none', Readline never rings the bell. If set to -`visible', Readline uses a visible bell if one is available. -If set to `audible' (the default), Readline attempts to ring -the terminal's bell. -

- -

bind-tty-special-chars -
-If set to `on', Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. -

- -

colored-stats -
-If set to `on', Readline displays possible completions using different -colors to indicate their file type. -The color definitions are taken from the value of the LS_COLORS -environment variable. -The default is `off'. -

- -

comment-begin -
-The string to insert at the beginning of the line when the -insert-comment command is executed. The default value -is "#". -

- -

completion-display-width -
-The number of screen columns used to display possible matches -when performing completion. -The value is ignored if it is less than 0 or greater than the terminal -screen width. -A value of 0 will cause matches to be displayed one per line. -The default value is -1. -

- -

completion-ignore-case -
-If set to `on', Readline performs filename matching and completion -in a case-insensitive fashion. -The default value is `off'. -

- -

completion-map-case -
-If set to `on', and completion-ignore-case is enabled, Readline -treats hyphens (`-') and underscores (`_') as equivalent when -performing case-insensitive filename matching and completion. -

- -

completion-prefix-display-length -
-The length in characters of the common prefix of a list of possible -completions that is displayed without modification. When set to a -value greater than zero, common prefixes longer than this value are -replaced with an ellipsis when displaying possible completions. -

- -

completion-query-items -
-The number of possible completions that determines when the user is -asked whether the list of possibilities should be displayed. -If the number of possible completions is greater than this value, -Readline will ask the user whether or not he wishes to view -them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. -The default limit is 100. -

- -

convert-meta -
-If set to `on', Readline will convert characters with the -eighth bit set to an ASCII key sequence by stripping the eighth -bit and prefixing an ESC character, converting them to a -meta-prefixed key sequence. The default value is `on'. -

- -

disable-completion -
-If set to `On', Readline will inhibit word completion. -Completion characters will be inserted into the line as if they had -been mapped to self-insert. The default is `off'. -

- -

editing-mode -
-The editing-mode variable controls which default set of -key bindings is used. By default, Readline starts up in Emacs editing -mode, where the keystrokes are most similar to Emacs. This variable can be -set to either `emacs' or `vi'. -

- -

echo-control-characters -
When set to `on', on operating systems that indicate they support it, -readline echoes a character corresponding to a signal generated from the -keyboard. The default is `on'. -

- -

enable-keypad -
-When set to `on', Readline will try to enable the application -keypad when it is called. Some systems need this to enable the -arrow keys. The default is `off'. -

- -

enable-meta-key -
When set to `on', Readline will try to enable any meta modifier -key the terminal claims to support when it is called. On many terminals, -the meta key is used to send eight-bit characters. -The default is `on'. -

- -

expand-tilde -
-If set to `on', tilde expansion is performed when Readline -attempts word completion. The default is `off'. -

- -

history-preserve-point -
-If set to `on', the history code attempts to place the point (the -current cursor position) at the -same location on each history line retrieved with previous-history -or next-history. The default is `off'. -

- -

history-size -
-Set the maximum number of history entries saved in the history list. -If set to zero, any existing history entries are deleted and no new entries -are saved. -If set to a value less than zero, the number of history entries is not -limited. -By default, the number of history entries is not limited. -

- -

horizontal-scroll-mode -
-This variable can be set to either `on' or `off'. Setting it -to `on' means that the text of the lines being edited will scroll -horizontally on a single screen line when they are longer than the width -of the screen, instead of wrapping onto a new screen line. By default, -this variable is set to `off'. -

- -

input-meta -
- -If set to `on', Readline will enable eight-bit input (it -will not clear the eighth bit in the characters it reads), -regardless of what the terminal claims it can support. The -default value is `off'. The name meta-flag is a -synonym for this variable. -

- -

isearch-terminators -
-The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see section 8.2.5 Searching for Commands in the History). -If this variable has not been given a value, the characters ESC and -C-J will terminate an incremental search. -

- -

keymap -
-Sets Readline's idea of the current keymap for key binding commands. -Acceptable keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; emacs is -equivalent to emacs-standard. The default value is emacs. -The value of the editing-mode variable also affects the -default keymap. -

- -

keyseq-timeout -
Specifies the duration Readline will wait for a character when reading an -ambiguous key sequence (one that can form a complete key sequence using -the input read so far, or can take additional input to complete a longer -key sequence). -If no input is received within the timeout, Readline will use the shorter -but complete key sequence. -The value is specified in milliseconds, so a value of 1000 means that -Readline will wait one second for additional input. -If this variable is set to a value less than or equal to zero, or to a -non-numeric value, Readline will wait until another key is pressed to -decide which key sequence to complete. -The default value is 500. -

- -

mark-directories -
If set to `on', completed directory names have a slash -appended. The default is `on'. -

- -

mark-modified-lines -
-This variable, when set to `on', causes Readline to display an -asterisk (`*') at the start of history lines which have been modified. -This variable is `off' by default. -

- -

mark-symlinked-directories -
-If set to `on', completed names which are symbolic links -to directories have a slash appended (subject to the value of -mark-directories). -The default is `off'. -

- -

match-hidden-files -
-This variable, when set to `on', causes Readline to match files whose -names begin with a `.' (hidden files) when performing filename -completion. -If set to `off', the leading `.' must be -supplied by the user in the filename to be completed. -This variable is `on' by default. -

- -

menu-complete-display-prefix -
-If set to `on', menu completion displays the common prefix of the -list of possible completions (which may be empty) before cycling through -the list. The default is `off'. -

- -

output-meta -
-If set to `on', Readline will display characters with the -eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is `off'. -

- -

page-completions -
-If set to `on', Readline uses an internal more-like pager -to display a screenful of possible completions at a time. -This variable is `on' by default. -

- -

print-completions-horizontally -
If set to `on', Readline will display completions with matches -sorted horizontally in alphabetical order, rather than down the screen. -The default is `off'. -

- -

revert-all-at-newline -
-If set to `on', Readline will undo all changes to history lines -before returning when accept-line is executed. By default, -history lines may be modified and retain individual undo lists across -calls to readline. The default is `off'. -

- -

show-all-if-ambiguous -
-This alters the default behavior of the completion functions. If -set to `on', -words which have more than one possible completion cause the -matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

- -

show-all-if-unmodified -
-This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to `on', -words which have more than one possible completion without any -possible partial completion (the possible completions don't share -a common prefix) cause the matches to be listed immediately instead -of ringing the bell. -The default value is `off'. -

- -

show-mode-in-prompt -
-If set to `on', add a character to the beginning of the prompt -indicating the editing mode: emacs (`@'), vi command (`:'), -or vi insertion (`+'). -The default value is `off'. -

- -

skip-completed-text -
-If set to `on', this alters the default completion behavior when -inserting a single match into the line. It's only active when -performing completion in the middle of a word. If enabled, readline -does not insert characters from the completion that match characters -after point in the word being completed, so portions of the word -following the cursor are not duplicated. -For instance, if this is enabled, attempting completion when the cursor -is after the `e' in `Makefile' will result in `Makefile' -rather than `Makefilefile', assuming there is a single possible -completion. -The default value is `off'. -

- -

visible-stats -
-If set to `on', a character denoting a file's type -is appended to the filename when listing possible -completions. The default is `off'. -

- -

-

- -

Key Bindings -
The syntax for controlling key bindings in the init file is -simple. First you need to find the name of the command that you -want to change. The following sections contain tables of the command -name, the default keybinding, if any, and a short description of what -the command does. -

- -Once you know the name of the command, simply place on a line -in the init file the name of the key -you wish to bind the command to, a colon, and then the name of the -command. -There can be no space between the key name and the colon -- that will be -interpreted as part of the key name. -The name of the key can be expressed in different ways, depending on -what you find most comfortable. -

- -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). -

- -The bind -p command displays Readline function names and -bindings in a format that can put directly into an initialization file. -See section 4.2 Bash Builtin Commands. -

- -

-
keyname: function-name or macro -
keyname is the name of a key spelled out in English. For example: -
 
Control-u: universal-argument
-Meta-Rubout: backward-kill-word
-Control-o: "> output"
-

- -In the above example, C-u is bound to the function -universal-argument, -M-DEL is bound to the function backward-kill-word, and -C-o is bound to run the macro -expressed on the right hand side (that is, to insert the text -`> output' into the line). -

- -A number of symbolic character names are recognized while -processing this key binding syntax: -DEL, -ESC, -ESCAPE, -LFD, -NEWLINE, -RET, -RETURN, -RUBOUT, -SPACE, -SPC, -and -TAB. -

- -

"keyseq": function-name or macro -
keyseq differs from keyname above in that strings -denoting an entire key sequence can be specified, by placing -the key sequence in double quotes. Some GNU Emacs style key -escapes can be used, as in the following example, but the -special character names are not recognized. -

- -
 
"\C-u": universal-argument
-"\C-x\C-r": re-read-init-file
-"\e[11~": "Function Key 1"
-

- -In the above example, C-u is again bound to the function -universal-argument (just as it was in the first example), -`C-x C-r' is bound to the function re-read-init-file, -and `ESC [ 1 1 ~' is bound to insert -the text `Function Key 1'. -

- -

-

- -The following GNU Emacs style escape sequences are available when -specifying key sequences: -

- -

-
\C- -
control prefix -
\M- -
meta prefix -
\e -
an escape character -
\\ -
backslash -
\" -
", a double quotation mark -
\' -
', a single quote or apostrophe -
-

- -In addition to the GNU Emacs style escape sequences, a second -set of backslash escapes is available: -

- -

-
\a -
alert (bell) -
\b -
backspace -
\d -
delete -
\f -
form feed -
\n -
newline -
\r -
carriage return -
\t -
horizontal tab -
\v -
vertical tab -
\nnn -
the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH -
the eight-bit character whose value is the hexadecimal value HH -(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 function name. -In the macro body, the backslash escapes described above are expanded. -Backslash will quote any other character in the macro text, -including `"' and `''. -For example, the following binding will make `C-x \' -insert a single `\' into the line: -
 
"\C-x\\": "\\"
-

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.3.2 Conditional Init Constructs

- -

- -Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key -bindings and variable settings to be performed as the result -of tests. There are four parser directives used. -

- -

-
$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. -

- -

-
mode -
The mode= form of the $if directive is used to test -whether Readline is in emacs or vi mode. -This may be used in conjunction -with the `set keymap' command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -Readline is starting out in emacs mode. -

- -

term -
The term= form may be used to include terminal-specific -key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -`=' is tested against both the full name of the terminal and -the portion of the terminal name before the first `-'. This -allows sun to match both sun and sun-cmd, -for instance. -

- -

application -
The application construct is used to include -application-specific settings. Each program using the Readline -library sets the application name, and you can test for -a particular value. -This could be used to bind key sequences to functions useful for -a specific program. For instance, the following command adds a -key sequence that quotes the current or previous word in Bash: -
 
$if Bash
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-$endif
-
-

- -

$endif -
This command, as seen in the previous example, terminates an -$if command. -

- -

$else -
Commands in this branch of the $if directive are executed if -the test fails. -

- -

$include -
This directive takes a single filename as an argument and reads commands -and bindings from that file. -For example, the following directive reads from `/etc/inputrc': -
 
$include /etc/inputrc
-
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.3.3 Sample Init File

- -

- -Here is an example of an inputrc file. This illustrates key -binding, variable assignment, and conditional syntax. -

- -
 
# This file controls the behaviour of line input editing for
-# programs that use the GNU Readline library.  Existing
-# programs include FTP, Bash, and GDB.
-#
-# You can re-read the inputrc file with C-x C-r.
-# Lines beginning with '#' are comments.
-#
-# First, include any systemwide bindings and variable
-# assignments from /etc/Inputrc
-$include /etc/Inputrc
-
-#
-# Set various bindings for emacs mode.
-
-set editing-mode emacs 
-
-$if mode=emacs
-
-Meta-Control-h:	backward-kill-word	Text after the function name is ignored
-
-#
-# Arrow keys in keypad mode
-#
-#"\M-OD":        backward-char
-#"\M-OC":        forward-char
-#"\M-OA":        previous-history
-#"\M-OB":        next-history
-#
-# Arrow keys in ANSI mode
-#
-"\M-[D":        backward-char
-"\M-[C":        forward-char
-"\M-[A":        previous-history
-"\M-[B":        next-history
-#
-# Arrow keys in 8 bit keypad mode
-#
-#"\M-\C-OD":       backward-char
-#"\M-\C-OC":       forward-char
-#"\M-\C-OA":       previous-history
-#"\M-\C-OB":       next-history
-#
-# Arrow keys in 8 bit ANSI mode
-#
-#"\M-\C-[D":       backward-char
-#"\M-\C-[C":       forward-char
-#"\M-\C-[A":       previous-history
-#"\M-\C-[B":       next-history
-
-C-q: quoted-insert
-
-$endif
-
-# An old-style binding.  This happens to be the default.
-TAB: complete
-
-# Macros that are convenient for shell interaction
-$if Bash
-# edit the path
-"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-# prepare to type a quoted word --
-# insert open and close double quotes
-# and move to just after the open quote
-"\C-x\"": "\"\"\C-b"
-# insert a backslash (testing backslash escapes
-# in sequences and macros)
-"\C-x\\": "\\"
-# Quote the current or previous word
-"\C-xq": "\eb\"\ef\""
-# Add a binding to refresh the line, which is unbound
-"\C-xr": redraw-current-line
-# Edit variable on current line.
-"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-$endif
-
-# use a visible bell if one is available
-set bell-style visible
-
-# don't strip characters to 7 bits when reading
-set input-meta on
-
-# allow iso-latin1 characters to be inserted rather
-# than converted to prefix-meta sequences
-set convert-meta off
-
-# display characters with the eighth bit set directly
-# rather than as meta-prefixed characters
-set output-meta on
-
-# if there are more than 150 possible completions for
-# a word, ask the user if he wants to see all of them
-set completion-query-items 150
-
-# For FTP
-$if Ftp
-"\C-xg": "get \M-?"
-"\C-xt": "put \M-?"
-"\M-.": yank-last-arg
-$endif
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4 Bindable Readline Commands

- -

- -

- - - - - - - - -
8.4.1 Commands For Moving  Moving about the line.
8.4.2 Commands For Manipulating The History  Getting at previous lines.
8.4.3 Commands For Changing Text  Commands for changing text.
8.4.4 Killing And Yanking  Commands for killing and yanking.
8.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
8.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
8.4.7 Keyboard Macros  Saving and re-executing typed characters
8.4.8 Some Miscellaneous Commands  Other miscellaneous commands.
-

- -This section describes Readline commands that may be bound to key -sequences. -You can list your key bindings by executing -bind -P or, for a more terse format, suitable for an -inputrc file, bind -p. (See section 4.2 Bash Builtin Commands.) -Command names without an accompanying key sequence are unbound by default. -

- -In the following descriptions, point refers to the current cursor -position, and mark refers to a cursor position saved by the -set-mark command. -The text between the point and mark is referred to as the region. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.1 Commands For Moving

- -
- -
beginning-of-line (C-a) -
-Move to the start of the current line. -

- - -

end-of-line (C-e) -
-Move to the end of the line. -

- - -

forward-char (C-f) -
-Move forward a character. -

- - -

backward-char (C-b) -
-Move back a character. -

- - -

forward-word (M-f) -
-Move forward to the end of the next word. -Words are composed of letters and digits. -

- - -

backward-word (M-b) -
-Move back to the start of the current or previous word. -Words are composed of letters and digits. -

- - -

shell-forward-word () -
-Move forward to the end of the next word. -Words are delimited by non-quoted shell metacharacters. -

- - -

shell-backward-word () -
-Move back to the start of the current or previous word. -Words are delimited by non-quoted shell metacharacters. -

- - -

clear-screen (C-l) -
-Clear the screen and redraw the current line, -leaving the current line at the top of the screen. -

- - -

redraw-current-line () -
-Refresh the current line. By default, this is unbound. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.2 Commands For Manipulating The History

- -

- -

- -
accept-line (Newline or Return) -
-Accept the line regardless of where the cursor is. -If this line is -non-empty, add it to the history list according to the setting of -the HISTCONTROL and HISTIGNORE variables. -If this line is a modified history line, then restore the history line -to its original state. -

- - -

previous-history (C-p) -
-Move `back' through the history list, fetching the previous command. -

- - -

next-history (C-n) -
-Move `forward' through the history list, fetching the next command. -

- - -

beginning-of-history (M-<) -
-Move to the first line in the history. -

- - -

end-of-history (M->) -
-Move to the end of the input history, i.e., the line currently -being entered. -

- - -

reverse-search-history (C-r) -
-Search backward starting at the current line and moving `up' through -the history as necessary. This is an incremental search. -

- - -

forward-search-history (C-s) -
-Search forward starting at the current line and moving `down' through -the the history as necessary. This is an incremental search. -

- - -

non-incremental-reverse-search-history (M-p) -
-Search backward starting at the current line and moving `up' -through the history as necessary using a non-incremental search -for a string supplied by the user. -

- - -

non-incremental-forward-search-history (M-n) -
-Search forward starting at the current line and moving `down' -through the the history as necessary using a non-incremental search -for a string supplied by the user. -

- - -

history-search-forward () -
-Search forward through the history for the string of characters -between the start of the current line and the point. -The search string must match at the beginning of a history line. -This is a non-incremental search. -By default, this command is unbound. -

- - -

history-search-backward () -
-Search backward through the history for the string of characters -between the start of the current line and the point. -The search string must match at the beginning of a history line. -This is a non-incremental search. -By default, this command is unbound. -

- - -

history-substr-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 () -
-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 non-incremental search. -By default, this command is unbound. -

- - -

yank-nth-arg (M-C-y) -
-Insert the first argument to the previous command (usually -the second word on the previous line) at point. -With an argument n, -insert the nth word from the previous command (the words -in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the `!n' history expansion had been specified. -

- - -

yank-last-arg (M-. or M-_) -
-Insert last argument to the previous command (the last word of the -previous history entry). -With a numeric argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg move back through the history -list, inserting the last word (or the word specified by the argument to -the first call) of each line in turn. -Any numeric argument supplied to these successive calls determines -the direction to move through the history. A negative argument switches -the direction through the history (back or forward). -The history expansion facilities are used to extract the last argument, -as if the `!$' history expansion had been specified. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.3 Commands For Changing Text

- -

- -

- -
delete-char (C-d) -
-Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to delete-char, then -return EOF. -

- - -

backward-delete-char (Rubout) -
-Delete the character behind the cursor. A numeric argument means -to kill the characters instead of deleting them. -

- - -

forward-backward-delete-char () -
-Delete the character under the cursor, unless the cursor is at the -end of the line, in which case the character behind the cursor is -deleted. By default, this is not bound to a key. -

- - -

quoted-insert (C-q or C-v) -
-Add the next character typed to the line verbatim. This is -how to insert key sequences like C-q, for example. -

- - -

self-insert (a, b, A, 1, !, ...) -
-Insert yourself. -

- - -

transpose-chars (C-t) -
-Drag the character before the cursor forward over -the character at the cursor, moving the -cursor forward as well. If the insertion point -is at the end of the line, then this -transposes the last two characters of the line. -Negative arguments have no effect. -

- - -

transpose-words (M-t) -
-Drag the word before point past the word after point, -moving point past that word as well. -If the insertion point is at the end of the line, this transposes -the last two words on the line. -

- - -

upcase-word (M-u) -
-Uppercase the current (or following) word. With a negative argument, -uppercase the previous word, but do not move the cursor. -

- - -

downcase-word (M-l) -
-Lowercase the current (or following) word. With a negative argument, -lowercase the previous word, but do not move the cursor. -

- - -

capitalize-word (M-c) -
-Capitalize the current (or following) word. With a negative argument, -capitalize the previous word, but do not move the cursor. -

- - -

overwrite-mode () -
-Toggle overwrite mode. With an explicit positive numeric argument, -switches to overwrite mode. With an explicit non-positive numeric -argument, switches to insert mode. This command affects only -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. -

- -In overwrite mode, characters bound to self-insert replace -the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character -before point with a space. -

- -By default, this command is unbound. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.4 Killing And Yanking

- -

- -

- - -
kill-line (C-k) -
-Kill the text from point to the end of the line. -

- - -

backward-kill-line (C-x Rubout) -
-Kill backward to the beginning of the line. -

- - -

unix-line-discard (C-u) -
-Kill backward from the cursor to the beginning of the current line. -

- - -

kill-whole-line () -
-Kill all characters on the current line, no matter where point is. -By default, this is unbound. -

- - -

kill-word (M-d) -
-Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as forward-word. -

- - -

backward-kill-word (M-DEL) -
-Kill the word behind point. -Word boundaries are the same as backward-word. -

- - -

shell-kill-word () -
-Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as shell-forward-word. -

- - -

shell-backward-kill-word () -
-Kill the word behind point. -Word boundaries are the same as shell-backward-word. -

- - -

unix-word-rubout (C-w) -
-Kill the word behind point, using white space as a word boundary. -The killed text is saved on the kill-ring. -

- - -

unix-filename-rubout () -
-Kill the word behind point, using white space and the slash character -as the word boundaries. -The killed text is saved on the kill-ring. -

- - -

delete-horizontal-space () -
-Delete all spaces and tabs around point. By default, this is unbound. -

- - -

kill-region () -
-Kill the text in the current region. -By default, this command is unbound. -

- - -

copy-region-as-kill () -
-Copy the text in the region to the kill buffer, so it can be yanked -right away. By default, this command is unbound. -

- - -

copy-backward-word () -
-Copy the word before point to the kill buffer. -The word boundaries are the same as backward-word. -By default, this command is unbound. -

- - -

copy-forward-word () -
-Copy the word following point to the kill buffer. -The word boundaries are the same as forward-word. -By default, this command is unbound. -

- - -

yank (C-y) -
-Yank the top of the kill ring into the buffer at point. -

- - -

yank-pop (M-y) -
-Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is yank or yank-pop. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.5 Specifying Numeric Arguments

- -
- - -
digit-argument (M-0, M-1, ... M--) -
-Add this digit to the argument already accumulating, or start a new -argument. M-- starts a negative argument. -

- - -

universal-argument () -
-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 followed by digits, executing universal-argument -again ends the numeric argument, but is otherwise ignored. -As a special case, if this command is immediately followed by a -character that is neither a digit or minus sign, the argument count -for the next command is multiplied by four. -The argument count is initially one, so executing this function the -first time makes the argument count four, a second time makes the -argument count sixteen, and so on. -By default, this is not bound to a key. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.6 Letting Readline Type For You

- -

- -

- -
complete (TAB) -
-Attempt to perform completion on the text before point. -The actual completion performed is application-specific. -Bash attempts completion treating the text as a variable (if the -text 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. -

- - -

possible-completions (M-?) -
-List the possible completions of the text before point. -When displaying completions, Readline sets the number of columns used -for display to the value of completion-display-width, the value of -the environment variable COLUMNS, or the screen width, in that order. -

- - -

insert-completions (M-*) -
-Insert all completions of the text before point that would have -been generated by possible-completions. -

- - -

menu-complete () -
-Similar to complete, but replaces the word to be completed -with a single match from the list of possible completions. -Repeated execution of menu-complete steps through the list -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 bell-style) -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 TAB, but is unbound -by default. -

- - -

menu-complete-backward () -
-Identical to menu-complete, but moves backward through the list -of possible completions, as if menu-complete had been given a -negative argument. -

- - -

delete-char-or-list () -
-Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). -If at the end of the line, behaves identically to -possible-completions. -This command is unbound by default. -

- - -

complete-filename (M-/) -
-Attempt filename completion on the text before point. -

- - -

possible-filename-completions (C-x /) -
-List the possible completions of the text before point, -treating it as a filename. -

- - -

complete-username (M-~) -
-Attempt completion on the text before point, treating -it as a username. -

- - -

possible-username-completions (C-x ~) -
-List the possible completions of the text before point, -treating it as a username. -

- - -

complete-variable (M-$) -
-Attempt completion on the text before point, treating -it as a shell variable. -

- - -

possible-variable-completions (C-x $) -
-List the possible completions of the text before point, -treating it as a shell variable. -

- - -

complete-hostname (M-@) -
-Attempt completion on the text before point, treating -it as a hostname. -

- - -

possible-hostname-completions (C-x @) -
-List the possible completions of the text before point, -treating it as a hostname. -

- - -

complete-command (M-!) -
-Attempt completion on the text before point, treating -it as a command name. Command completion attempts to -match the text against aliases, reserved words, shell -functions, shell builtins, and finally executable filenames, -in that order. -

- - -

possible-command-completions (C-x !) -
-List the possible completions of the text before point, -treating it as a command name. -

- - -

dynamic-complete-history (M-TAB) -
-Attempt completion on the text before point, comparing -the text against lines from the history list for possible -completion matches. -

- - -

dabbrev-expand () -
-Attempt menu completion on the text before point, comparing -the text against lines from the history list for possible -completion matches. -

- - -

complete-into-braces (M-{) -
-Perform filename completion and insert the list of possible completions -enclosed within braces so the list is available to the shell -(see section 3.5.1 Brace Expansion). -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.7 Keyboard Macros

- -
- - -
start-kbd-macro (C-x () -
-Begin saving the characters typed into the current keyboard macro. -

- - -

end-kbd-macro (C-x )) -
-Stop saving the characters typed into the current keyboard macro -and save the definition. -

- - -

call-last-kbd-macro (C-x e) -
-Re-execute the last keyboard macro defined, by making the characters -in the macro appear as if typed at the keyboard. -

- - -

print-last-kbd-macro () -
-Print the last keboard macro defined in a format suitable for the -inputrc file. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.4.8 Some Miscellaneous Commands

- -
- - -
re-read-init-file (C-x C-r) -
-Read in the contents of the inputrc file, and incorporate -any bindings or variable assignments found there. -

- - -

abort (C-g) -
-Abort 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. -

- - -

prefix-meta (ESC) -
-Metafy the next character typed. This is for keyboards -without a meta key. Typing `ESC f' is equivalent to typing -M-f. -

- - -

undo (C-_ or C-x C-u) -
-Incremental undo, separately remembered for each line. -

- - -

revert-line (M-r) -
-Undo all changes made to this line. This is like executing the undo -command enough times to get back to the beginning. -

- - -

tilde-expand (M-&) -
-Perform tilde expansion on the current word. -

- - -

set-mark (C-@) -
-Set the mark to the point. If a -numeric argument is supplied, the mark is set to that position. -

- - -

exchange-point-and-mark (C-x C-x) -
-Swap the point with the mark. The current cursor position is set to -the saved position, and the old cursor position is saved as the mark. -

- - -

character-search (C-]) -
-A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. -

- - -

character-search-backward (M-C-]) -
-A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent -occurrences. -

- - -

skip-csi-sequence () -
-Read enough characters to consume a multi-key sequence such as those -defined for keys like Home and End. Such sequences begin with a -Control Sequence Indicator (CSI), usually ESC-[. If this sequence is -bound to "\e[", keys producing such sequences will have no effect -unless explicitly bound to a readline command, instead of inserting -stray characters into the editing buffer. This is unbound by default, -but usually bound to ESC-[. -

- - -

insert-comment (M-#) -
-Without a numeric argument, the value of the comment-begin -variable is inserted at the beginning of the current line. -If a numeric argument is supplied, this command acts as a toggle: if -the characters at the beginning of the line do not match the value -of comment-begin, the value is inserted, otherwise -the characters in comment-begin are deleted from the beginning of -the line. -In either case, the line is accepted as if a newline had been typed. -The default value of comment-begin causes this command -to make the current line a shell comment. -If a numeric argument causes the comment character to be removed, the line -will be executed by the shell. -

- - -

dump-functions () -
-Print all of the functions and their key bindings to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. -

- - -

dump-variables () -
-Print all of the settable variables and their values to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. -

- - -

dump-macros () -
-Print all of the Readline key sequences bound to macros and the -strings they output. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. -

- - -

glob-complete-word (M-g) -
-The word before point is treated as a pattern for pathname expansion, -with an asterisk implicitly appended. This pattern is used to -generate a list of matching file names for possible completions. -

- - -

glob-expand-word (C-x *) -
-The word before point is treated as a pattern for pathname expansion, -and the list of matching file names is inserted, replacing the word. -If a numeric argument is supplied, a `*' is appended before -pathname expansion. -

- - -

glob-list-expansions (C-x g) -
-The list of expansions that would have been generated by -glob-expand-word is displayed, and the line is redrawn. -If a numeric argument is supplied, a `*' is appended before -pathname expansion. -

- - -

display-shell-version (C-x C-v) -
-Display version information about the current instance of Bash. -

- - -

shell-expand-line (M-C-e) -
-Expand the line as the shell does. -This performs alias and history expansion as well as all of the shell -word expansions (see section 3.5 Shell Expansions). -

- - -

history-expand-line (M-^) -
-Perform history expansion on the current line. -

- - -

magic-space () -
-Perform history expansion on the current line and insert a space -(see section 9.3 History Expansion). -

- - -

alias-expand-line () -
-Perform alias expansion on the current line (see section 6.6 Aliases). -

- - -

history-and-alias-expand-line () -
-Perform history and alias expansion on the current line. -

- - -

insert-last-argument (M-. or M-_) -
-A synonym for yank-last-arg. -

- - -

operate-and-get-next (C-o) -
-Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. -

- - -

edit-and-execute-command (C-xC-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. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.5 Readline vi Mode

- -

- -While the Readline library does not have a full set of vi -editing functions, it does contain enough to allow simple editing -of the line. The Readline vi mode behaves as specified in -the POSIX standard. -

- -In order to switch interactively between emacs and vi -editing modes, use the `set -o emacs' and `set -o vi' -commands (see section 4.3.1 The Set Builtin). -The Readline default is emacs mode. -

- -When you enter a line in vi mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing ESC -switches you into `command' mode, where you can edit the text of the -line with the standard vi movement keys, move to previous -history lines with `k' and subsequent lines with `j', and -so forth. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.6 Programmable Completion

- -

- -When word completion is attempted for an argument to a command for -which a completion specification (a compspec) has been defined -using the complete builtin (see section 8.7 Programmable Completion Builtins), -the programmable completion facilities are invoked. -

- -First, the command name is identified. -If a compspec has been defined for that command, the -compspec is used to generate the list of possible completions for the word. -If the command word is the empty string (completion attempted at the -beginning of an empty line), any compspec defined with -the `-E' option to complete is used. -If the command word is a full pathname, a compspec for the full -pathname is searched for first. -If no compspec is found for the full pathname, an attempt is made to -find a compspec for the portion following the final slash. -If those searches do not result in a compspec, any compspec defined with -the `-D' option to complete is used as the default. -

- -Once a compspec has been found, it is used to generate the list of -matching words. -If a compspec is not found, the default Bash completion -described above (see section 8.4.6 Letting Readline Type For You) is performed. -

- -First, the actions specified by the compspec are used. -Only matches which are prefixed by the word being completed are -returned. -When the `-f' or `-d' option is used for filename or -directory name completion, the shell variable FIGNORE is -used to filter the matches. -See section 5.2 Bash Variables, for a description of FIGNORE. -

- -Any completions specified by a filename expansion pattern to the -`-G' option are generated next. -The words generated by the pattern need not match the word being completed. -The GLOBIGNORE shell variable is not 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 (see section 3.5 Shell Expansions). -The results are split using the rules described above -(see section 3.5.7 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 command or function is invoked, the COMP_LINE, -COMP_POINT, COMP_KEY, and COMP_TYPE variables are -assigned values as described above (see section 5.2 Bash Variables). -If a shell function is being invoked, the COMP_WORDS and -COMP_CWORD variables are also set. -When the function or command is invoked, the first argument ($1) is the -name of the command whose arguments are being completed, the -second argument ($2) is the word being completed, and the third argument -($3) is the word preceding the word being completed on the current command -line. -No filtering of the generated completions against the word being completed -is performed; the function or command has complete freedom in generating -the matches. -

- -Any function specified with `-F' is invoked first. -The function may use any of the shell facilities, including the -compgen and compopt builtins described below -(see section 8.7 Programmable Completion Builtins), to generate the matches. -It must put the possible completions in the COMPREPLY array -variable, one per array element. -

- -Next, any command specified with the `-C' option is invoked -in an environment equivalent to command substitution. -It should print a list of completions, one per line, to -the standard output. -Backslash may be used to escape a newline, if necessary. -

- -After all of the possible completions are generated, any filter -specified with the `-X' option is applied to the list. -The filter is a pattern as used for pathname expansion; a `&' -in the pattern is replaced with the text of the word being completed. -A literal `&' may be escaped with a backslash; the backslash -is removed before attempting a match. -Any completion that matches the pattern will be removed from the list. -A leading `!' negates the pattern; in this case any completion -not matching the pattern will be removed. -

- -Finally, any prefix and suffix specified with the `-P' and `-S' -options are added to each member of the completion list, and the result is -returned to the Readline completion code as the list of possible -completions. -

- -If the previously-applied actions do not generate any matches, and the -`-o dirnames' option was supplied to complete when the -compspec was defined, directory name completion is attempted. -

- -If the `-o plusdirs' option was supplied to complete when -the compspec was defined, directory name completion is attempted and any -matches are added to the results of the other actions. -

- -By default, if a compspec is found, whatever it generates is returned to -the completion code as the full set of possible completions. -The default Bash completions are not attempted, and the Readline default -of filename completion is disabled. -If the `-o bashdefault' option was supplied to complete when -the compspec was defined, the default Bash completions are attempted -if the compspec generates no matches. -If the `-o default' option was supplied to complete when the -compspec was defined, Readline's default completion will be performed -if the compspec (and, if attempted, the default Bash completions) -generate no matches. -

- -When a compspec indicates that directory name completion is desired, -the programmable completion functions force Readline to append a slash -to completed names which are symbolic links to directories, subject to -the value of the mark-directories Readline variable, regardless -of the setting of the mark-symlinked-directories Readline variable. -

- -There is some support for dynamically modifying completions. This is -most useful when used in combination with a default completion specified -with `-D'. It's possible for shell functions executed as completion -handlers to indicate that completion should be retried by returning an -exit status of 124. If a shell function returns 124, and changes -the compspec associated with the command on which completion is being -attempted (supplied as the first argument when the function is executed), -programmable completion restarts from the beginning, with an -attempt to find a new compspec for that command. This allows a set of -completions to be built dynamically as completion is attempted, rather than -being loaded all at once. -

- -For instance, assuming that there is a library of compspecs, each kept in a -file corresponding to the name of the command, the following default -completion function would load completions dynamically: -

- -
 
_completion_loader()
-{
-    . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
-}
-complete -D -F _completion_loader
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.7 Programmable Completion Builtins

- -

- -Three builtin commands are available to manipulate the programmable completion -facilities: one to specify how the arguments to a particular command are to -be completed, and two to modify the completion as it is happening. -

- -

-
compgen -
-
 
compgen [option] [word]
-

- -Generate possible completion matches for word according to -the options, which may be any option accepted by the -complete -builtin with the exception of `-p' and `-r', and write -the matches to the standard output. -When using the `-F' or `-C' 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 programmable -completion code had generated them directly from a completion specification -with the same flags. -If word is specified, only those completions matching word -will be displayed. -

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

- -

complete -
-
 
complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist]
-[-F function] [-C command] [-X filterpat]
-[-P prefix] [-S suffix] name [name ...]
-complete -pr [-DE] [name ...]
-

- -Specify how arguments to each name should be completed. -If the `-p' option is supplied, or if no options are supplied, existing -completion specifications are printed in a way that allows them to be -reused as input. -The `-r' option removes a completion specification for -each name, or, if no names are supplied, all -completion specifications. -The `-D' option indicates that the remaining options and actions should -apply to the "default" command completion; that is, completion attempted -on a command for which no completion has previously been defined. -The `-E' option indicates that the remaining options and actions should -apply to "empty" 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 (see section 8.6 Programmable Completion). The -`-D' option takes precedence over `-E'. -

- -Other options, if specified, have the following meanings. -The arguments to the `-G', `-W', and `-X' options -(and, if necessary, the `-P' and `-S' options) -should be quoted to protect them from expansion before the -complete builtin is invoked. -

- -

-
-o comp-option -
The comp-option controls several aspects of the compspec's behavior -beyond the simple generation of completions. -comp-option may be one of: -

- -

- -
bashdefault -
Perform the rest of the default Bash completions if the compspec -generates no matches. -

- -

default -
Use Readline's default filename completion if the compspec generates -no matches. -

- -

dirnames -
Perform directory name completion if the compspec generates no matches. -

- -

filenames -
Tell Readline that the compspec generates filenames, so it can perform any -filename-specific processing (like adding a slash to directory names -quoting special characters, or suppressing trailing spaces). -This option is intended to be used with shell functions specified -with `-F'. -

- -

noquote -
Tell Readline not to quote the completed words if they are filenames -(quoting filenames is the default). -

- -

nospace -
Tell Readline not to append a space (the default) to words completed at -the end of the line. -

- -

plusdirs -
After any matches defined by the compspec are generated, -directory name completion is attempted and any -matches are added to the results of the other actions. -

- -

-

- -

-A action -
The action may be one of the following to generate a list of possible -completions: -

- -

-
alias -
Alias names. May also be specified as `-a'. -

- -

arrayvar -
Array variable names. -

- -

binding -
Readline key binding names (see section 8.4 Bindable Readline Commands). -

- -

builtin -
Names of shell builtin commands. May also be specified as `-b'. -

- -

command -
Command names. May also be specified as `-c'. -

- -

directory -
Directory names. May also be specified as `-d'. -

- -

disabled -
Names of disabled shell builtins. -

- -

enabled -
Names of enabled shell builtins. -

- -

export -
Names of exported shell variables. May also be specified as `-e'. -

- -

file -
File names. May also be specified as `-f'. -

- -

function -
Names of shell functions. -

- -

group -
Group names. May also be specified as `-g'. -

- -

helptopic -
Help topics as accepted by the help builtin (see section 4.2 Bash Builtin Commands). -

- -

hostname -
Hostnames, as taken from the file specified by the -HOSTFILE shell variable (see section 5.2 Bash Variables). -

- -

job -
Job names, if job control is active. May also be specified as `-j'. -

- -

keyword -
Shell reserved words. May also be specified as `-k'. -

- -

running -
Names of running jobs, if job control is active. -

- -

service -
Service names. May also be specified as `-s'. -

- -

setopt -
Valid arguments for the `-o' option to the set builtin -(see section 4.3.1 The Set Builtin). -

- -

shopt -
Shell option names as accepted by the shopt builtin -(see section 4.2 Bash Builtin Commands). -

- -

signal -
Signal names. -

- -

stopped -
Names of stopped jobs, if job control is active. -

- -

user -
User names. May also be specified as `-u'. -

- -

variable -
Names of all shell variables. May also be specified as `-v'. -
-

- -

-C command -
command is executed in a subshell environment, and its output is -used as the possible completions. -

- -

-F function -
The shell function function is executed in the current shell -environment. -When it is executed, $1 is the name of the command whose arguments are -being completed, $2 is the word being completed, and $3 is the word -preceding the word being completed, as described above -(see section 8.6 Programmable Completion). -When it finishes, the possible completions are retrieved from the value -of the COMPREPLY array variable. -

- -

-G globpat -
The filename expansion pattern globpat is expanded to generate -the possible completions. -

- -

-P prefix -
prefix is added at the beginning of each possible completion -after all other options have been applied. -

- -

-S suffix -
suffix is appended to each possible completion -after all other options have been applied. -

- -

-W wordlist -
The wordlist is split using the characters in the -IFS 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 completed. -

- -

-X filterpat -
filterpat is a pattern as used for filename expansion. -It is applied to the list of possible completions generated by the -preceding options and arguments, and each completion matching -filterpat is removed from the list. -A leading `!' in filterpat negates the pattern; in this -case, any completion not matching filterpat is removed. -
-

- -The return value is true unless an invalid option is supplied, an option -other than `-p' or `-r' is supplied without a name -argument, an attempt is made to remove a completion specification for -a name for which no specification exists, or -an error occurs adding a completion specification. -

- -

compopt -
-
 
compopt [-o option] [-DE] [+o option] [name]
-
Modify completion options for each name according to the -options, or for the currently-executing completion if no names -are supplied. -If no options are given, display the completion options for each -name or the current completion. -The possible values of option are those valid for the complete -builtin described above. -The `-D' option indicates that the remaining options should -apply to the "default" command completion; that is, completion attempted -on a command for which no completion has previously been defined. -The `-E' option indicates that the remaining options should -apply to "empty" command completion; that is, completion attempted on a -blank line. -

- -The `-D' option takes precedence over `-E'. -

- -The return value is true unless an invalid option is supplied, an attempt -is made to modify the options for a name for which no completion -specification exists, or an output error occurs. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

8.8 A Programmable Completion Example

- -

- -The most common way to obtain additional completion functionality beyond -the default actions complete and compgen provide is to use -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 -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 accepting basic directory names: -tilde expansion (see section 3.5.2 Tilde Expansion), -searching directories in $CDPATH, which is described above -(see section 4.1 Bourne Shell Builtins), -and basic support for the cdable_vars shell option -(see section 4.3.2 The Shopt Builtin). -_comp_cd modifies the value of IFS so that it contains only -a newline to accommodate file names containing spaces and tabs -- -compgen prints the possible completions it generates one per line. -

- -Possible completions go into the COMPREPLY array variable, one -completion per array element. The programmable completion system retrieves -the completions from there when the function returns. -

- -
 
# A completion function for the cd builtin
-# based on the cd completion function from the bash_completion package
-_comp_cd()
-{
-    local IFS=$' \t\n'    # normalize IFS
-    local cur _skipdot _cdpath
-    local i j k
-
-    # Tilde expansion, with side effect of expanding tilde to full pathname
-    case "$2" in
-    \~*)    eval cur="$2" ;;
-    *)      cur=$2 ;;
-    esac
-
-    # no cdpath or absolute pathname -- straight directory completion
-    if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
-        # compgen prints paths one per line; could also use while loop
-        IFS=$'\n'
-        COMPREPLY=( $(compgen -d -- "$cur") )
-        IFS=$' \t\n'
-    # CDPATH+directories in the current directory if not in CDPATH
-    else
-        IFS=$'\n'
-        _skipdot=false
-        # preprocess CDPATH to convert null directory names to .
-        _cdpath=${CDPATH/#:/.:}
-        _cdpath=${_cdpath//::/:.:}
-        _cdpath=${_cdpath/%:/:.}
-        for i in ${_cdpath//:/$'\n'}; do
-            if [[ $i -ef . ]]; then _skipdot=true; fi
-            k="${#COMPREPLY[@]}"
-            for j in $( compgen -d -- "$i/$cur" ); do
-                COMPREPLY[k++]=${j#$i/}        # cut off directory
-            done
-        done
-        $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
-        IFS=$' \t\n'
-    fi
-
-    # variable names if appropriate shell option set and no completions
-    if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then
-        COMPREPLY=( $(compgen -v -- "$cur") )
-    fi
-
-    return 0
-}
-

- -We install the completion function using the `-F' option to -complete: -

- -
 
# Tell readline to quote appropriate and append slashes to directories;
-# use the bash default completion for other arguments
-complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
-

- -Since we'd like Bash and Readline to take care of some -of the other details for us, we use several other options to tell Bash -and Readline what to do. The `-o filenames' option tells Readline -that the possible completions should be treated as filenames, and quoted -appropriately. That option will also cause Readline to append a slash to -filenames it can determine are directories (which is why we might want to -extend _comp_cd to append a slash if we're using directories found -via CDPATH: Readline can't tell those completions are directories). -The `-o nospace' option tells Readline to not append a space -character to the directory name, in case we want to append to it. -The `-o bashdefault' option brings in the rest of the "Bash default" -completions -- possible completion that Bash adds to the default Readline -set. These include things like command name completion, variable completion -for words beginning with `{', completions containing pathname -expansion patterns (see section 3.5.8 Filename Expansion), and so on. -

- -Once installed using complete, _comp_cd will be called every -time we attempt word completion for a cd command. -

- -Many more examples -- an extensive collection of completions for most of -the common GNU, Unix, and Linux commands -- are available as part of the -bash_completion project. This is installed by default on many GNU/Linux -distributions. Originally written by Ian Macdonald, the project now lives -at http://bash-completion.alioth.debian.org/. There are ports for -other systems such as Solaris and Mac OS X. -

- -An older version of the bash_completion package is distributed with bash -in the `examples/complete' subdirectory. -

- - -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9. Using History Interactively

- -

- -This chapter describes how to use the GNU History Library -interactively, from a user's standpoint. -It should be considered a user's guide. -For information on using the GNU History Library in other programs, -see the GNU Readline Library Manual. -

- -

- - - -
9.1 Bash History Facilities  How Bash lets you manipulate your command - history.
9.2 Bash History Builtins  The Bash builtin commands that manipulate - the command history.
9.3 History Expansion  What it feels like using History as a user.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9.1 Bash History Facilities

- -

- -When the `-o history' option to the set builtin -is enabled (see section 4.3.1 The Set Builtin), -the shell provides access to the command history, -the list of commands previously typed. -The value of the HISTSIZE shell variable is used as the -number of commands to save in a history list. -The text of the last $HISTSIZE -commands (default 500) is saved. -The shell stores each command in the history list prior to -parameter and variable expansion -but after history expansion is performed, subject to the -values of the shell variables -HISTIGNORE and HISTCONTROL. -

- -When the shell starts up, the history is initialized from the -file named by the HISTFILE variable (default `~/.bash_history'). -The file named by the value of HISTFILE is truncated, if -necessary, to contain no more than the number of lines specified by -the value of the HISTFILESIZE variable. -When a shell with history enabled exits, the last -$HISTSIZE lines are copied from the history list to the file -named by $HISTFILE. -If the histappend shell option is set (see section 4.2 Bash Builtin Commands), -the lines are appended to the history file, -otherwise the history file is overwritten. -If HISTFILE -is unset, or if the history file is unwritable, the history is not saved. -After saving the history, the history file is truncated -to contain no more than $HISTFILESIZE lines. -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. -

- -If the HISTTIMEFORMAT is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. -When the history file is read, lines beginning with the history -comment character followed immediately by a digit are interpreted -as timestamps for the previous history line. -

- -The builtin command fc may be used to list or edit and re-execute -a portion of the history list. -The history builtin may be used to display or modify the history -list and manipulate the history file. -When using command-line editing, search commands -are available in each editing mode that provide access to the -history list (see section 8.4.2 Commands For Manipulating The History). -

- -The shell allows control over which commands are saved on the history -list. The HISTCONTROL and HISTIGNORE -variables may be set to cause the shell to save only a subset of the -commands entered. -The cmdhist -shell option, if enabled, causes the shell to attempt to save each -line of a multi-line command in the same history entry, adding -semicolons where necessary to preserve syntactic correctness. -The 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 section 4.2 Bash Builtin Commands, for a description of shopt. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9.2 Bash History Builtins

- -

- -Bash provides two builtin commands which manipulate the -history list and history file. -

- -

- -
fc -
-
 
fc [-e ename] [-lnr] [first] [last]
-fc -s [pat=rep] [command]
-

- -The first form selects a range of commands from first to -last from the history list and displays or edits and re-executes -them. -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 -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 -reverses the order of the listing. Otherwise, the editor given by -ename is invoked on a file containing those commands. If -ename is not given, the value of the following variable expansion -is used: ${FCEDIT:-${EDITOR:-vi}}. This says to use the -value of the FCEDIT variable if set, or the value of the -EDITOR variable if that is set, or vi if neither is set. -When editing is complete, the edited commands are echoed and executed. -

- -In the second form, command is re-executed after each instance -of pat in the selected command is replaced by rep. -command is intepreted the same as first above. -

- -A useful alias to use with the fc command is r='fc -s', so -that typing `r cc' runs the last command beginning with cc -and typing `r' re-executes the last command (see section 6.6 Aliases). -

- -

history -
-
 
history [n]
-history -c
-history -d offset
-history [-anrw] [filename]
-history -ps arg
-

- -With no options, display the history list with line numbers. -Lines prefixed with a `*' have been modified. -An argument of n lists only the last n lines. -If the shell variable HISTTIMEFORMAT is set and not null, -it is used as a format string for strftime to display -the time stamp associated with each displayed history entry. -No intervening blank is printed between the formatted time stamp -and the history line. -

- -Options, if supplied, have the following meanings: -

- -

-
-c -
Clear the history list. This may be combined -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. -

- -

-a -
Append the new -history lines (history lines entered since the beginning of the -current Bash session) to the history file. -

- -

-n -
Append the history lines not already read from the history file -to the current history list. These are lines appended to the history -file since the beginning of the current Bash session. -

- -

-r -
Read the history file and append its contents to -the history list. -

- -

-w -
Write out the current history list to the history file. -

- -

-p -
Perform history substitution on the args and display the result -on the standard output, without storing the results in the history list. -

- -

-s -
The args are added to the end of -the history list as a single entry. -

- -

-

- -When any of the `-w', `-r', `-a', or `-n' options is -used, if filename -is given, then it is used as the history file. If not, then -the value of the HISTFILE variable is used. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9.3 History Expansion

- -

- -The History library provides a history expansion feature that is similar -to the history expansion provided by csh. This section -describes the syntax used to manipulate the history information. -

- -History expansions introduce words from the history list into -the input stream, making it easy to repeat commands, insert the -arguments to a previous command into the current input line, or -fix errors in previous commands quickly. -

- -History expansion takes place in two parts. The first is to determine -which line from the history list should be used during substitution. -The second is to select portions of that line for inclusion into the -current one. The line selected from the history is called the -event, and the portions of that line that are acted upon are -called words. Various modifiers are available to manipulate -the selected words. The line is broken into words in the same fashion -that Bash does, so that several words -surrounded by quotes are considered one word. -History expansions are introduced by the appearance of the -history expansion character, which is `!' by default. -Only `\' and `'' may be used to escape the history expansion -character. -

- -Several shell options settable with the shopt -builtin (see section 4.2 Bash Builtin Commands) 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 subsequent recall. -This is most useful in conjunction with Readline. -

- -The shell allows control of the various characters used by the -history expansion mechanism with the histchars variable, -as explained above (see section 5.2 Bash Variables). The shell uses -the history comment character to mark history timestamps when -writing the history file. -

- -

- - - -
9.3.1 Event Designators  How to specify which history line to use.
9.3.2 Word Designators  Specifying which words are of interest.
9.3.3 Modifiers  Modifying the results of substitution.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9.3.1 Event Designators

- -

- -An event designator is a reference to a command line entry in the -history list. -Unless the reference is absolute, events are relative to the current -position in the history list. - -

- -

- -
! -
Start a history substitution, except when followed by a space, tab, -the end of the line, `=' or `(' (when the -extglob shell option is enabled using the shopt builtin). -

- -

!n -
Refer to command line n. -

- -

!-n -
Refer to the command n lines back. -

- -

!! -
Refer to the previous command. This is a synonym for `!-1'. -

- -

!string -
Refer to the most recent command -preceding the current position in the history list -starting with string. -

- -

!?string[?] -
Refer to the most recent command -preceding the current position in the history list -containing string. -The trailing -`?' may be omitted if the string is followed immediately by -a newline. -

- -

^string1^string2^ -
Quick Substitution. Repeat the last command, replacing string1 -with string2. Equivalent to -!!:s/string1/string2/. -

- -

!# -
The entire command line typed so far. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9.3.2 Word Designators

- -

- -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 separated by single spaces. -

- -For example, -

- -

-
!! -
designates the preceding command. When you type this, the preceding -command is repeated in toto. -

- -

!!:$ -
designates the last argument of the preceding command. This may be -shortened to !$. -

- -

!fi:2 -
designates the second argument of the most recent command starting with -the letters fi. -
-

- -Here are the word designators: - -

- -
0 (zero) -
The 0th word. For many applications, this is the command word. -

- -

n -
The nth word. -

- -

^ -
The first argument; that is, word 1. -

- -

$ -
The last argument. -

- -

% -
The word matched by the most recent `?string?' search. -

- -

x-y -
A range of words; `-y' abbreviates `0-y'. -

- -

* -
All of the words, except the 0th. This is a synonym for `1-$'. -It is not an error to use `*' if there is just one word in the event; -the empty string is returned in that case. -

- -

x* -
Abbreviates `x-$' -

- -

x- -
Abbreviates `x-$' like `x*', but omits the last word. -

- -

-

- -If a word designator is supplied without an event specification, the -previous command is used as the event. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

9.3.3 Modifiers

- -

- -After the optional word designator, you can add a sequence of one or more -of the following modifiers, each preceded by a `:'. -

- -

- -
h -
Remove a trailing pathname component, leaving only the head. -

- -

t -
Remove all leading pathname components, leaving the tail. -

- -

r -
Remove a trailing suffix of the form `.suffix', leaving -the basename. -

- -

e -
Remove all but the trailing suffix. -

- -

p -
Print the new command but do not execute it. -

- -

q -
Quote the substituted words, escaping further substitutions. -

- -

x -
Quote the substituted words as with `q', -but break into words at spaces, tabs, and newlines. -

- -

s/old/new/ -
Substitute new for the first occurrence of old in the -event line. Any delimiter may be used in place of `/'. -The delimiter may be quoted in old and new -with a single backslash. If `&' appears in new, -it is replaced by old. A single backslash will quote -the `&'. The final delimiter is optional if it is the last -character on the input line. -

- -

& -
Repeat the previous substitution. -

- -

g -
a -
Cause changes to be applied over the entire event line. Used in -conjunction with `s', as in gs/old/new/, -or with `&'. -

- -

G -
Apply the following `s' modifier once to each word in the event. -

- -

-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10. Installing Bash

- -

- -This chapter provides basic instructions for installing Bash on -the various supported platforms. The distribution supports the -GNU operating systems, nearly every version of Unix, and several -non-Unix systems such as BeOS and Interix. -Other independent ports exist for -MS-DOS, OS/2, and Windows platforms. -

- -

- - - - - - - - -
10.1 Basic Installation  Installation instructions.
10.2 Compilers and Options  How to set special options for various - systems.
10.3 Compiling For Multiple Architectures  How to compile Bash for more - than one kind of system from - the same source tree.
10.4 Installation Names  How to set the various paths used by the installation.
10.5 Specifying the System Type  How to configure Bash for a particular system.
10.6 Sharing Defaults  How to share default configuration values among GNU - programs.
10.7 Operation Controls  Options recognized by the configuration program.
10.8 Optional Features  How to enable and disable optional features when - building Bash.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.1 Basic Installation

- -

- -These are installation instructions for Bash. -

- -The simplest way to compile Bash is: -

- -

    -
  1. -cd to the directory containing the source code and type -`./configure' to configure Bash for your system. If you're -using csh on an old version of System V, you might need to -type `sh ./configure' instead to prevent csh from trying -to execute configure itself. -

    - -Running configure takes some time. -While running, it prints messages telling which features it is -checking for. -

    - -

  2. -Type `make' to compile Bash and build the bashbug bug -reporting script. -

    - -

  3. -Optionally, type `make tests' to run the Bash test suite. -

    - -

  4. -Type `make install' to install bash and bashbug. -This will also install the manual pages and Info file. -

    - -

-

- -The configure shell script attempts to guess correct -values for various system-dependent variables used during -compilation. It uses those values to create a `Makefile' in -each directory of the package (the top directory, the -`builtins', `doc', and `support' directories, -each directory under `lib', and several others). It also creates a -`config.h' file containing system-dependent definitions. -Finally, it creates a shell script named config.status that you -can run in the future to recreate the current configuration, a -file `config.cache' that saves the results of its tests to -speed up reconfiguring, and a file `config.log' containing -compiler output (useful mainly for debugging configure). -If at some point -`config.cache' contains results you don't want to keep, you -may remove or edit it. -

- -To find out more about the options and arguments that the -configure script understands, type -

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

- -at the Bash prompt in your Bash source directory. -

- -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 -bash-maintainers@gnu.org so they can be -considered for the next release. -

- -The file `configure.ac' is used to create configure -by a program called Autoconf. You only need -`configure.ac' if you want to change it or regenerate -configure using a newer version of Autoconf. If -you do this, make sure you are using Autoconf version 2.50 or -newer. -

- -You can remove the program binaries and object files from the -source 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'. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.2 Compilers and Options

- -

- -Some systems require unusual options for compilation or linking -that the configure script does not know about. You can -give configure initial values for variables by setting -them in the environment. Using a Bourne-compatible shell, you -can do that on the command line like this: -

- -
 
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-

- -On systems that have the env program, you can do it like this: -

- -
 
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-

- -The configuration process uses GCC to build Bash if it -is available. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.3 Compiling For Multiple Architectures

- -

- -You can compile Bash for more than one kind of computer at the -same 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 `..'. -

- -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 directory. After you have installed -Bash for one architecture, use `make distclean' before -reconfiguring for another architecture. -

- -Alternatively, if your system supports symbolic links, you can use the -`support/mkclone' script to create a build tree which has -symbolic links back to each file in the source directory. Here's an -example that creates a build directory in the current directory from a -source directory `/usr/gnu/src/bash-2.0': -

- -
 
bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
-

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

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.4 Installation Names

- -

- -By default, `make install' will install into -`/usr/local/bin', `/usr/local/man', etc. You can -specify an installation prefix other than `/usr/local' by -giving configure the option `--prefix=PATH', -or by specifying a value for the DESTDIR `make' -variable when running `make install'. -

- -You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. -If you give configure the option -`--exec-prefix=PATH', `make install' will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.5 Specifying the System Type

- -

- -There may be some features configure can not figure out -automatically, but need to determine by the type of host Bash -will run on. Usually configure can figure that -out, but if it prints a message saying it can not guess the host -type, give it the `--host=TYPE' option. `TYPE' can -either be a short name for the system type, such as `sun4', -or a canonical name with three fields: `CPU-COMPANY-SYSTEM' -(e.g., `i386-unknown-freebsd4.2'). -

- -See the file `support/config.sub' for the possible -values of each field. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.6 Sharing Defaults

- -

- -If you want to set default values for configure scripts to -share, you can create a site shell script called -config.site that gives default values for variables like -CC, cache_file, and prefix. configure -looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -CONFIG_SITE environment variable to the location of the site -script. A warning: the Bash configure looks for a site script, -but not all configure scripts do. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.7 Operation Controls

- -

- -configure recognizes the following options to control how it -operates. -

- -

- -
--cache-file=file -
Use and save the results of the tests in -file instead of `./config.cache'. Set file to -`/dev/null' to disable caching, for debugging -configure. -

- -

--help -
Print a summary of the options to configure, and exit. -

- -

--quiet -
--silent -
-q -
Do not print messages saying which checks are being made. -

- -

--srcdir=dir -
Look for the Bash source code in directory dir. Usually -configure can determine that directory automatically. -

- -

--version -
Print the version of Autoconf used to generate the configure -script, and exit. -
-

- -configure also accepts some other, not widely used, boilerplate -options. `configure --help' prints the complete list. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

10.8 Optional Features

- -

- -The Bash configure has a number of `--enable-feature' -options, where feature indicates an optional part of Bash. -There are also several `--with-package' options, -where package is something like `bash-malloc' or `purify'. -To turn off the default use of a package, use -`--without-package'. To configure Bash without a feature -that is enabled by default, use `--disable-feature'. -

- -Here is a complete list of the `--enable-' and -`--with-' options that the Bash configure recognizes. -

- -

-
--with-afs -
Define if you are using the Andrew File System from Transarc. -

- -

--with-bash-malloc -
Use the Bash version of -malloc in the directory `lib/malloc'. This is not the same -malloc that appears in GNU libc, but an older version -originally derived from the 4.2 BSD malloc. This malloc -is very fast, but wastes some space on each allocation. -This option is enabled by default. -The `NOTES' file contains a list of systems for -which this should be turned off, and configure disables this -option automatically for a number of systems. -

- -

--with-curses -
Use the curses library instead of the termcap library. This should -be supplied if your system has an inadequate or incomplete termcap -database. -

- -

--with-gnu-malloc -
A synonym for --with-bash-malloc. -

- -

--with-installed-readline[=PREFIX] -
Define this to make Bash link with a locally-installed version of Readline -rather than the version in `lib/readline'. This works only with -Readline 5.0 and later versions. If PREFIX is yes or not -supplied, configure uses the values of the make variables -includedir and libdir, which are subdirectories of prefix -by default, to find the installed version of Readline if it is not in -the standard system include and library directories. -If PREFIX is no, Bash links with the version in -`lib/readline'. -If PREFIX is set to any other value, configure treats it as -a directory pathname and looks for -the installed version of Readline in subdirectories of that directory -(include files in PREFIX/include and the library in -PREFIX/lib). -

- -

--with-purify -
Define this to use the Purify memory allocation checker from Rational -Software. -

- -

--enable-minimal-config -
This produces a shell with minimal features, close to the historical -Bourne shell. -
-

- -There are several `--enable-' options that alter how Bash is -compiled and linked, rather than changing run-time features. -

- -

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

- -

--enable-profiling -
This builds a Bash binary that produces profiling information to be -processed by gprof each time it is executed. -

- -

--enable-static-link -
This causes Bash to be linked statically, if gcc is being used. -This could be used to build a version to use as root's shell. -
-

- -The `minimal-config' option can be used to disable all of -the following options, but it is processed first, so individual -options may be enabled using `enable-feature'. -

- -All of the following options except for `disabled-builtins', -`directpand-default', and -`xpg-echo-default' are -enabled by default, unless the operating system does not provide the -necessary support. -

- -

-
--enable-alias -
Allow alias expansion and include the alias and unalias -builtins (see section 6.6 Aliases). -

- -

--enable-arith-for-command -
Include support for the alternate form of the for command -that behaves like the C language for statement -(see section 3.2.4.1 Looping Constructs). -

- -

--enable-array-variables -
Include support for one-dimensional array shell variables -(see section 6.7 Arrays). -

- -

--enable-bang-history -
Include support for csh-like history substitution -(see section 9.3 History Expansion). -

- -

--enable-brace-expansion -
Include csh-like brace expansion -( b{a,b}c ==> bac bbc ). -See 3.5.1 Brace Expansion, for a complete description. -

- -

--enable-casemod-attributes -
Include support for case-modifying attributes in the declare builtin -and assignment statements. Variables with the uppercase attribute, -for example, will have their values converted to uppercase upon assignment. -

- -

--enable-casemod-expansion -
Include support for case-modifying word expansions. -

- -

--enable-command-timing -
Include support for recognizing time as a reserved word and for -displaying timing statistics for the pipeline following time -(see section 3.2.2 Pipelines). -This allows pipelines as well as shell builtins and functions to be timed. -

- -

--enable-cond-command -
Include support for the [[ conditional command. -(see section 3.2.4.2 Conditional Constructs). -

- -

--enable-cond-regexp -
Include support for matching POSIX regular expressions using the -`=~' binary operator in the [[ conditional command. -(see section 3.2.4.2 Conditional Constructs). -

- -

--enable-coprocesses -
Include support for coprocesses and the coproc reserved word -(see section 3.2.2 Pipelines). -

- -

--enable-debugger -
Include support for the bash debugger (distributed separately). -

- -

--enable-direxpand-default -
Cause the direxpand shell option (see section 4.3.2 The Shopt Builtin) -to be enabled by default when the shell starts. -It is normally disabled by default. -

- -

--enable-directory-stack -
Include support for a csh-like directory stack and the -pushd, popd, and dirs builtins -(see section 6.8 The Directory Stack). -

- -

--enable-disabled-builtins -
Allow builtin commands to be invoked via `builtin xxx' -even after xxx has been disabled using `enable -n xxx'. -See 4.2 Bash Builtin Commands, for details of the builtin and -enable builtin commands. -

- -

--enable-dparen-arithmetic -
Include support for the ((...)) command -(see section 3.2.4.2 Conditional Constructs). -

- -

--enable-extended-glob -
Include support for the extended pattern matching features described -above under 3.5.8.1 Pattern Matching. -

- -

--enable-extended-glob-default -
Set the default value of the extglob shell option described -above under 4.3.2 The Shopt Builtin to be enabled. -

- -

--enable-help-builtin -
Include the help builtin, which displays help on shell builtins and -variables (see section 4.2 Bash Builtin Commands). -

- -

--enable-history -
Include command history and the fc and history -builtin commands (see section 9.1 Bash History Facilities). -

- -

--enable-job-control -
This enables the job control features (see section 7. Job Control), -if the operating system supports them. -

- -

--enable-multibyte -
This enables support for multibyte characters if the operating -system provides the necessary support. -

- -

--enable-net-redirections -
This enables the special handling of filenames of the form -/dev/tcp/host/port and -/dev/udp/host/port -when used in redirections (see section 3.6 Redirections). -

- -

--enable-process-substitution -
This enables process substitution (see section 3.5.6 Process Substitution) if -the operating system provides the necessary support. -

- -

--enable-progcomp -
Enable the programmable completion facilities -(see section 8.6 Programmable Completion). -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 -strings. See 6.9 Controlling the Prompt, for a complete list of prompt -string escape sequences. -

- -

--enable-readline -
Include support for command-line editing and history with the Bash -version of the Readline library (see section 8. Command Line Editing). -

- -

--enable-restricted -
Include support for a restricted shell. If this is enabled, Bash, -when called as rbash, enters a restricted mode. See -6.10 The Restricted Shell, for a description of restricted mode. -

- -

--enable-select -
Include the select compound command, which allows the generation of -simple menus (see section 3.2.4.2 Conditional Constructs). -

- -

--enable-separate-helpfiles -
Use external files for the documentation displayed by the help builtin -instead of storing the text internally. -

- -

--enable-single-help-strings -
Store the text displayed by the help builtin as a single string for -each help topic. This aids in translating the text to different languages. -You may need to disable this if your compiler cannot handle very long string -literals. -

- -

--enable-strict-posix-default -
Make Bash POSIX-conformant by default (see section 6.11 Bash POSIX Mode). -

- -

--enable-usg-echo-default -
A synonym for --enable-xpg-echo-default. -

- -

--enable-xpg-echo-default -
Make the echo builtin expand backslash-escaped characters by default, -without requiring the `-e' option. -This sets the default value of the xpg_echo shell option to on, -which makes the Bash echo behave more like the version specified in -the Single Unix Specification, version 3. -See section 4.2 Bash Builtin Commands, for a description of the escape sequences that -echo recognizes. -
-

- -The file `config-top.h' contains C Preprocessor -`#define' statements for options which are not settable from -configure. -Some of these are not meant to be changed; beware of the consequences if -you do. -Read the comments associated with each definition for more -information about its effect. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

A. Reporting Bugs

- -

- -Please report all bugs you find in Bash. -But first, you should -make sure that it really is a bug, and that it appears in the latest -version of Bash. -The latest version of Bash is always available for FTP from -ftp://ftp.gnu.org/pub/gnu/bash/. -

- -Once you have determined that a bug actually exists, use the -bashbug command to submit a bug report. -If you have a fix, you are encouraged to mail that as well! -Suggestions and `philosophical' bug reports may be mailed -to bug-bash@gnu.org or posted to the Usenet -newsgroup gnu.bash.bug. -

- -All bug reports should include: -

    -
  • -The version number of Bash. -
  • -The hardware and operating system. -
  • -The compiler used to compile Bash. -
  • -A description of the bug behaviour. -
  • -A short script or `recipe' which exercises the bug and may be used -to reproduce it. -
-

- -bashbug inserts the first three items automatically into -the template it provides for filing a bug report. -

- -Please send all reports concerning this manual to -bug-bash@gnu.org. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

B. Major Differences From The Bourne Shell

- -

- -Bash implements essentially the same grammar, parameter and -variable expansion, redirection, and quoting as the Bourne Shell. -Bash uses the POSIX standard as the specification of -how these features are to be implemented. There are some -differences between the traditional Bourne shell and Bash; this -section quickly details the differences of significance. A -number of these differences are explained in greater depth in -previous sections. -This section uses the version of sh included in SVR4.2 (the -last version of the historical Bourne shell) as the baseline reference. -

- -

    - -
  • -Bash is POSIX-conformant, even where the POSIX specification -differs from traditional sh behavior (see section 6.11 Bash POSIX Mode). -

    - -

  • -Bash has multi-character invocation options (see section 6.1 Invoking Bash). -

    - -

  • -Bash has command-line editing (see section 8. Command Line Editing) and -the bind builtin. -

    - -

  • -Bash provides a programmable word completion mechanism -(see section 8.6 Programmable Completion), and builtin commands -complete, compgen, and compopt, to -manipulate it. -

    - -

  • -Bash has command history (see section 9.1 Bash History Facilities) and the -history and fc builtins to manipulate it. -The Bash history list maintains timestamp information and uses the -value of the HISTTIMEFORMAT variable to display it. -

    - -

  • -Bash implements csh-like history expansion -(see section 9.3 History Expansion). -

    - -

  • -Bash has one-dimensional array variables (see section 6.7 Arrays), and the -appropriate variable expansions and assignment syntax to use them. -Several of the Bash builtins take options to act on arrays. -Bash provides a number of built-in array variables. -

    - -

  • -The $'...' quoting syntax, which expands ANSI-C -backslash-escaped characters in the text between the single quotes, -is supported (see section 3.1.2.4 ANSI-C Quoting). -

    - -

  • -Bash supports the $"..." quoting syntax to do -locale-specific translation of the characters between the double -quotes. The `-D', `--dump-strings', and `--dump-po-strings' -invocation options list the translatable strings found in a script -(see section 3.1.2.5 Locale-Specific Translation). -

    - -

  • -Bash implements the ! keyword to negate the return value of -a pipeline (see section 3.2.2 Pipelines). -Very useful when an if statement needs to act only if a test fails. -The Bash `-o pipefail' option to set will cause a pipeline to -return a failure status if any command fails. -

    - -

  • -Bash has the time reserved word and command timing (see section 3.2.2 Pipelines). -The display of the timing statistics may be controlled with the -TIMEFORMAT variable. -

    - -

  • -Bash implements the for (( expr1 ; expr2 ; expr3 )) -arithmetic for command, similar to the C language (see section 3.2.4.1 Looping Constructs). -

    - -

  • -Bash includes the select compound command, which allows the -generation of simple menus (see section 3.2.4.2 Conditional Constructs). -

    - -

  • -Bash includes the [[ compound command, which makes conditional -testing part of the shell grammar (see section 3.2.4.2 Conditional Constructs), including -optional regular expression matching. -

    - -

  • -Bash provides optional case-insensitive matching for the case and -[[ constructs. -

    - -

  • -Bash includes brace expansion (see section 3.5.1 Brace Expansion) and tilde -expansion (see section 3.5.2 Tilde Expansion). -

    - -

  • -Bash implements command aliases and the alias and unalias -builtins (see section 6.6 Aliases). -

    - -

  • -Bash provides shell arithmetic, the (( compound command -(see section 3.2.4.2 Conditional Constructs), -and arithmetic expansion (see section 6.5 Shell Arithmetic). -

    - -

  • -Variables present in the shell's initial environment are automatically -exported to child processes. The Bourne shell does not normally do -this unless the variables are explicitly marked using the export -command. -

    - -

  • -Bash supports the `+=' assignment operator, which appends to the value -of the variable named on the left hand side. -

    - -

  • -Bash includes the POSIX pattern removal `%', `#', `%%' -and `##' expansions to remove leading or trailing substrings from -variable values (see section 3.5.3 Shell Parameter Expansion). -

    - -

  • -The expansion ${#xx}, which returns the length of ${xx}, -is supported (see section 3.5.3 Shell Parameter Expansion). -

    - -

  • -The expansion ${var:offset[:length]}, -which expands to the substring of var's value of length -length, beginning at offset, is present -(see section 3.5.3 Shell Parameter Expansion). -

    - -

  • -The expansion -${var/[/]pattern[/replacement]}, -which matches pattern and replaces it with replacement in -the value of var, is available (see section 3.5.3 Shell Parameter Expansion). -

    - -

  • -The expansion ${!prefix*} expansion, which expands to -the names of all shell variables whose names begin with prefix, -is available (see section 3.5.3 Shell Parameter Expansion). -

    - -

  • -Bash has indirect variable expansion using ${!word} -(see section 3.5.3 Shell Parameter Expansion). -

    - -

  • -Bash can expand positional parameters beyond $9 using -${num}. -

    - -

  • -The POSIX $() form of command substitution -is implemented (see section 3.5.4 Command Substitution), -and preferred to the Bourne shell's " (which -is also implemented for backwards compatibility). -

    - -

  • -Bash has process substitution (see section 3.5.6 Process Substitution). -

    - -

  • -Bash automatically assigns variables that provide information about the -current user (UID, EUID, and GROUPS), the current host -(HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), -and the instance of Bash that is running (BASH, -BASH_VERSION, and BASH_VERSINFO). See section 5.2 Bash Variables, -for details. -

    - -

  • -The IFS variable is used to split only the results of expansion, -not all words (see section 3.5.7 Word Splitting). -This closes a longstanding shell security hole. -

    - -

  • -The filename expansion bracket expression code uses `!' and `^' -to negate the set of characters between the brackets. -The Bourne shell uses only `!'. -

    - -

  • -Bash implements the full set of POSIX filename expansion operators, -including character classes, equivalence classes, and -collating symbols (see section 3.5.8 Filename Expansion). -

    - -

  • -Bash implements extended pattern matching features when the extglob -shell option is enabled (see section 3.5.8.1 Pattern Matching). -

    - -

  • -It is possible to have a variable and a function with the same name; -sh does not separate the two name spaces. -

    - -

  • -Bash functions are permitted to have local variables using the -local builtin, and thus useful recursive functions may be written -(see section 4.2 Bash Builtin Commands). -

    - -

  • -Variable assignments preceding commands affect only that command, even -builtins and functions (see section 3.7.4 Environment). -In sh, all variable assignments -preceding commands are global unless the command is executed from the -file system. -

    - -

  • -Bash performs filename expansion on filenames specified as operands -to input and output redirection operators (see section 3.6 Redirections). -

    - -

  • -Bash contains the `<>' redirection operator, allowing a file to be -opened for both reading and writing, and the `&>' redirection -operator, for directing standard output and standard error to the same -file (see section 3.6 Redirections). -

    - -

  • -Bash includes the `<<<' redirection operator, allowing a string to -be used as the standard input to a command. -

    - -

  • -Bash implements the `[n]<&word' and `[n]>&word' -redirection operators, which move one file descriptor to another. -

    - -

  • -Bash treats a number of filenames specially when they are -used in redirection operators (see section 3.6 Redirections). -

    - -

  • -Bash can open network connections to arbitrary machines and services -with the redirection operators (see section 3.6 Redirections). -

    - -

  • -The noclobber option is available to avoid overwriting existing -files with output redirection (see section 4.3.1 The Set Builtin). -The `>|' redirection operator may be used to override noclobber. -

    - -

  • -The Bash cd and pwd builtins (see section 4.1 Bourne Shell Builtins) -each take `-L' and `-P' options to switch between logical and -physical modes. -

    - -

  • -Bash allows a function to override a builtin with the same name, and provides -access to that builtin's functionality within the function via the -builtin and command builtins (see section 4.2 Bash Builtin Commands). -

    - -

  • -The command builtin allows selective disabling of functions -when command lookup is performed (see section 4.2 Bash Builtin Commands). -

    - -

  • -Individual builtins may be enabled or disabled using the enable -builtin (see section 4.2 Bash Builtin Commands). -

    - -

  • -The Bash exec builtin takes additional options that allow users -to control the contents of the environment passed to the executed -command, and what the zeroth argument to the command is to be -(see section 4.1 Bourne Shell Builtins). -

    - -

  • -Shell functions may be exported to children via the environment -using export -f (see section 3.3 Shell Functions). -

    - -

  • -The Bash export, readonly, and declare builtins can -take a `-f' option to act on shell functions, a `-p' option to -display variables with various attributes set in a format that can be -used as shell input, a `-n' option to remove various variable -attributes, and `name=value' arguments to set variable attributes -and values simultaneously. -

    - -

  • -The Bash hash builtin allows a name to be associated with -an arbitrary filename, even when that filename cannot be found by -searching the $PATH, using `hash -p' -(see section 4.1 Bourne Shell Builtins). -

    - -

  • -Bash includes a help builtin for quick reference to shell -facilities (see section 4.2 Bash Builtin Commands). -

    - -

  • -The printf builtin is available to display formatted output -(see section 4.2 Bash Builtin Commands). -

    - -

  • -The Bash read builtin (see section 4.2 Bash Builtin Commands) -will read a line ending in `\' with -the `-r' option, and will use the REPLY variable as a -default if no non-option arguments are supplied. -The Bash read builtin -also accepts a prompt string with the `-p' option and will use -Readline to obtain the line when given the `-e' option. -The read builtin also has additional options to control input: -the `-s' option will turn off echoing of input characters as -they are read, the `-t' option will allow read to time out -if input does not arrive within a specified number of seconds, the -`-n' option will allow reading only a specified number of -characters rather than a full line, and the `-d' option will read -until a particular character rather than newline. -

    - -

  • -The return builtin may be used to abort execution of scripts -executed with the . or source builtins -(see section 4.1 Bourne Shell Builtins). -

    - -

  • -Bash includes the shopt builtin, for finer control of shell -optional capabilities (see section 4.3.2 The Shopt Builtin), and allows these options -to be set and unset at shell invocation (see section 6.1 Invoking Bash). -

    - -

  • -Bash has much more optional behavior controllable with the set -builtin (see section 4.3.1 The Set Builtin). -

    - -

  • -The `-x' (`xtrace') option displays commands other than -simple commands when performing an execution trace -(see section 4.3.1 The Set Builtin). -

    - -

  • -The test builtin (see section 4.1 Bourne Shell Builtins) -is slightly different, as it implements the POSIX algorithm, -which specifies the behavior based on the number of arguments. -

    - -

  • -Bash includes the caller builtin, which displays the context of -any active subroutine call (a shell function or a script executed with -the . or source builtins). This supports the bash -debugger. -

    - -

  • -The trap builtin (see section 4.1 Bourne Shell Builtins) allows a -DEBUG pseudo-signal specification, similar to EXIT. -Commands specified with a DEBUG trap are executed before every -simple command, for command, case command, -select command, every arithmetic for command, and before -the first command executes in a shell function. -The DEBUG trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. -The extdebug shell option has additional effects on the -DEBUG trap. -

    - -The trap builtin (see section 4.1 Bourne Shell Builtins) allows an -ERR pseudo-signal specification, similar to EXIT and DEBUG. -Commands specified with an ERR trap are executed after a simple -command fails, with a few exceptions. -The ERR trap is not inherited by shell functions unless the --o errtrace option to the set builtin is enabled. -

    - -The trap builtin (see section 4.1 Bourne Shell Builtins) allows a -RETURN pseudo-signal specification, similar to -EXIT and DEBUG. -Commands specified with an RETURN trap are executed before -execution resumes after a shell function or a shell script executed with -. or source returns. -The RETURN trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. -

    - -

  • -The Bash type builtin is more extensive and gives more information -about the names it finds (see section 4.2 Bash Builtin Commands). -

    - -

  • -The Bash umask builtin permits a `-p' option to cause -the output to be displayed in the form of a umask command -that may be reused as input (see section 4.1 Bourne Shell Builtins). -

    - -

  • -Bash implements a csh-like directory stack, and provides the -pushd, popd, and dirs builtins to manipulate it -(see section 6.8 The Directory Stack). -Bash also makes the directory stack visible as the value of the -DIRSTACK shell variable. -

    - -

  • -Bash interprets special backslash-escaped characters in the prompt -strings when interactive (see section 6.9 Controlling the Prompt). -

    - -

  • -The Bash restricted mode is more useful (see section 6.10 The Restricted Shell); -the SVR4.2 shell restricted mode is too limited. -

    - -

  • -The disown builtin can remove a job from the internal shell -job table (see section 7.2 Job Control Builtins) or suppress the sending -of SIGHUP to a job when the shell exits as the result of a -SIGHUP. -

    - -

  • -Bash includes a number of features to support a separate debugger for -shell scripts. -

    - -

  • -The SVR4.2 shell has two privilege-related builtins -(mldmode and priv) not present in Bash. -

    - -

  • -Bash does not have the stop or newgrp builtins. -

    - -

  • -Bash does not use the SHACCT variable or perform shell accounting. -

    - -

  • -The SVR4.2 sh uses a TIMEOUT variable like Bash uses -TMOUT. -

    - -

-

- -More features unique to Bash may be found in 6. Bash Features. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

B.1 Implementation Differences From The SVR4.2 Shell

- -

- -Since Bash is a completely new implementation, it does not suffer from -many of the limitations of the SVR4.2 shell. For instance: -

- -

    - -
  • -Bash does not fork a subshell when redirecting into or out of -a shell control structure such as an if or while -statement. -

    - -

  • -Bash does not allow unbalanced quotes. The SVR4.2 shell will silently -insert a needed closing quote at EOF under certain circumstances. -This can be the cause of some hard-to-find errors. -

    - -

  • -The SVR4.2 shell uses a baroque memory management scheme based on -trapping SIGSEGV. If the shell is started from a process with -SIGSEGV blocked (e.g., by using the system() C library -function call), it misbehaves badly. -

    - -

  • -In a questionable attempt at security, the SVR4.2 shell, -when invoked without the `-p' option, will alter its real -and effective UID and GID if they are less than some -magic threshold value, commonly 100. -This can lead to unexpected results. -

    - -

  • -The SVR4.2 shell does not allow users to trap SIGSEGV, -SIGALRM, or SIGCHLD. -

    - -

  • -The SVR4.2 shell does not allow the IFS, MAILCHECK, -PATH, PS1, or PS2 variables to be unset. -

    - -

  • -The SVR4.2 shell treats `^' as the undocumented equivalent of -`|'. -

    - -

  • -Bash allows multiple option arguments when it is invoked (-x -v); -the SVR4.2 shell allows only one option argument (-xv). In -fact, some versions of the shell dump core if the second argument begins -with a `-'. -

    - -

  • -The SVR4.2 shell exits a script if any builtin fails; Bash exits -a script only if one of the POSIX special builtins fails, and -only for certain failures, as enumerated in the POSIX standard. -

    - -

  • -The SVR4.2 shell behaves differently when invoked as jsh -(it turns on job control). -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

C. GNU Free Documentation License

- -

- -

- Version 1.3, 3 November 2008 -
-

- -
 
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-http://fsf.org/
-
-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 -functional and useful document free in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. -

    - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. -

    - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. -

    - -

  2. -APPLICABILITY AND DEFINITIONS -

    - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. -

    - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. -

    - -A "Secondary Section" is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. -

    - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. -

    - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. -

    - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -

    - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for -output purposes only. -

    - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. -

    - -The "publisher" means any person or entity that distributes copies -of the Document to the public. -

    - -A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -

    - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. -

    - -

  3. -VERBATIM COPYING -

    - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. -

    - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. -

    - -

  4. -COPYING IN QUANTITY -

    - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. -

    - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. -

    - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. -

    - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. -

    - -

  5. -MODIFICATIONS -

    - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -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 -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. -

      - -

    2. -List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. -

      - -

    3. -State on the Title page the name of the publisher of the -Modified Version, as the publisher. -

      - -

    4. -Preserve all the copyright notices of the Document. -

      - -

    5. -Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. -

      - -

    6. -Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. -

      - -

    7. -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -

      - -

    8. -Include an unaltered copy of this License. -

      - -

    9. -Preserve the section Entitled "History", Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. -

      - -

    10. -Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. -

      - -

    11. -For any section Entitled "Acknowledgements" or "Dedications", Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. -

      - -

    12. -Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. -

      - -

    13. -Delete any section Entitled "Endorsements". Such a section -may not be included in the Modified Version. -

      - -

    14. -Do not retitle any existing section to be Entitled "Endorsements" or -to conflict in title with any Invariant Section. -

      - -

    15. -Preserve any Warranty Disclaimers. -
    -

    - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. -

    - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. -

    - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. -

    - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. -

    - -

  6. -COMBINING DOCUMENTS -

    - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. -

    - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. -

    - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -

    - -

  7. -COLLECTIONS OF DOCUMENTS -

    - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. -

    - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. -

    - -

  8. -AGGREGATION WITH INDEPENDENT WORKS -

    - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. -

    - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. -

    - -

  9. -TRANSLATION -

    - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. -

    - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. -

    - -

  10. -TERMINATION -

    - -You may not copy, modify, sublicense, or distribute the Document -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense, or distribute it is void, and -will automatically terminate your rights under this License. -

    - -However, if you cease all violation of this License, then your license -from a particular copyright holder is reinstated (a) provisionally, -unless and until the copyright holder explicitly and finally -terminates your license, and (b) permanently, if the copyright holder -fails to notify you of the violation by some reasonable means prior to -60 days after the cessation. -

    - -Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. -

    - -Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, receipt of a copy of some or all of the same material does -not give you any rights to use it. -

    - -

  11. -FUTURE REVISIONS OF THIS LICENSE -

    - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. -

    - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. If the Document -specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a -version permanently authorizes you to choose that version for the -Document. -

    - -

  12. -RELICENSING -

    - -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any -World Wide Web server that publishes copyrightable works and also -provides prominent facilities for anybody to edit those works. A -public wiki that anybody can edit is an example of such a server. A -"Massive Multiauthor Collaboration" (or "MMC") contained in the -site means any set of copyrightable works thus published on the MMC -site. -

    - -"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 -license published by Creative Commons Corporation, a not-for-profit -corporation with a principal place of business in San Francisco, -California, as well as future copyleft versions of that license -published by that same organization. -

    - -"Incorporate" means to publish or republish a Document, in whole or -in part, as part of another Document. -

    - -An MMC is "eligible for relicensing" if it is licensed under this -License, and if all works that were first published under this License -somewhere other than this MMC, and subsequently incorporated in whole -or in part into the MMC, (1) had no cover texts or invariant sections, -and (2) were thus incorporated prior to November 1, 2008. -

    - -The operator of an MMC Site may republish an MMC contained in the site -under CC-BY-SA on the same site at any time before August 1, 2009, -provided the MMC is eligible for relicensing. -

    - -

-

- - -

ADDENDUM: How to use this License for your documents

- -

- -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: -

- -
 
  Copyright (C)  year  your name.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.3
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-  Texts.  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
-

- -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -

- -
 
    with the Invariant Sections being list their titles, with
-    the Front-Cover Texts being list, and with the Back-Cover Texts
-    being list.
-

- -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. -

- -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

D. Indexes

- -

- -

- - - - - -
D.1 Index of Shell Builtin Commands  Index of Bash builtin commands.
D.2 Index of Shell Reserved Words  Index of Bash reserved words.
D.3 Parameter and Variable Index  Quick reference helps you find the - variable you want.
D.4 Function Index  Index of bindable Readline functions.
D.5 Concept Index  General index for concepts described in - this manual.
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

D.1 Index of Shell Builtin Commands

- -
Jump to:   . -   -: -   -[ -   -
-A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -J -   -K -   -L -   -M -   -P -   -R -   -S -   -T -   -U -   -W -   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

.
.4.1 Bourne Shell Builtins

:
:4.1 Bourne Shell Builtins

[
[4.1 Bourne Shell Builtins

A
alias4.2 Bash Builtin Commands

B
bg7.2 Job Control Builtins
bind4.2 Bash Builtin Commands
break4.1 Bourne Shell Builtins
builtin4.2 Bash Builtin Commands

C
caller4.2 Bash Builtin Commands
cd4.1 Bourne Shell Builtins
command4.2 Bash Builtin Commands
compgen8.7 Programmable Completion Builtins
complete8.7 Programmable Completion Builtins
compopt8.7 Programmable Completion Builtins
continue4.1 Bourne Shell Builtins

D
declare4.2 Bash Builtin Commands
dirs6.8.1 Directory Stack Builtins
disown7.2 Job Control Builtins

E
echo4.2 Bash Builtin Commands
enable4.2 Bash Builtin Commands
eval4.1 Bourne Shell Builtins
exec4.1 Bourne Shell Builtins
exit4.1 Bourne Shell Builtins
export4.1 Bourne Shell Builtins

F
fc9.2 Bash History Builtins
fg7.2 Job Control Builtins

G
getopts4.1 Bourne Shell Builtins

H
hash4.1 Bourne Shell Builtins
help4.2 Bash Builtin Commands
history9.2 Bash History Builtins

J
jobs7.2 Job Control Builtins

K
kill7.2 Job Control Builtins

L
let4.2 Bash Builtin Commands
local4.2 Bash Builtin Commands
logout4.2 Bash Builtin Commands

M
mapfile4.2 Bash Builtin Commands

P
popd6.8.1 Directory Stack Builtins
printf4.2 Bash Builtin Commands
pushd6.8.1 Directory Stack Builtins
pwd4.1 Bourne Shell Builtins

R
read4.2 Bash Builtin Commands
readarray4.2 Bash Builtin Commands
readonly4.1 Bourne Shell Builtins
return4.1 Bourne Shell Builtins

S
set4.3.1 The Set Builtin
shift4.1 Bourne Shell Builtins
shopt4.3.2 The Shopt Builtin
source4.2 Bash Builtin Commands
suspend7.2 Job Control Builtins

T
test4.1 Bourne Shell Builtins
times4.1 Bourne Shell Builtins
trap4.1 Bourne Shell Builtins
type4.2 Bash Builtin Commands
typeset4.2 Bash Builtin Commands

U
ulimit4.2 Bash Builtin Commands
umask4.1 Bourne Shell Builtins
unalias4.2 Bash Builtin Commands
unset4.1 Bourne Shell Builtins

W
wait7.2 Job Control Builtins

Jump to:   . -   -: -   -[ -   -
-A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -J -   -K -   -L -   -M -   -P -   -R -   -S -   -T -   -U -   -W -   -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

D.2 Index of Shell Reserved Words

- -
Jump to:   ! -   -[ -   -] -   -{ -   -} -   -
-C -   -D -   -E -   -F -   -I -   -S -   -T -   -U -   -W -   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

!
!3.2.2 Pipelines

[
[[3.2.4.2 Conditional Constructs

]
]]3.2.4.2 Conditional Constructs

{
{3.2.4.3 Grouping Commands

}
}3.2.4.3 Grouping Commands

C
case3.2.4.2 Conditional Constructs

D
do3.2.4.1 Looping Constructs
done3.2.4.1 Looping Constructs

E
elif3.2.4.2 Conditional Constructs
else3.2.4.2 Conditional Constructs
esac3.2.4.2 Conditional Constructs

F
fi3.2.4.2 Conditional Constructs
for3.2.4.1 Looping Constructs
function3.3 Shell Functions

I
if3.2.4.2 Conditional Constructs
in3.2.4.2 Conditional Constructs

S
select3.2.4.2 Conditional Constructs

T
then3.2.4.2 Conditional Constructs
time3.2.2 Pipelines

U
until3.2.4.1 Looping Constructs

W
while3.2.4.1 Looping Constructs

Jump to:   ! -   -[ -   -] -   -{ -   -} -   -
-C -   -D -   -E -   -F -   -I -   -S -   -T -   -U -   -W -   -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

D.3 Parameter and Variable Index

- -
Jump to:   ! -   -# -   -$ -   -* -   -- -   -0 -   -? -   -@ -   -_ -   -
-A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -I -   -K -   -L -   -M -   -O -   -P -   -R -   -S -   -T -   -U -   -V -   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

!
!3.4.2 Special Parameters
!3.4.2 Special Parameters

#
#3.4.2 Special Parameters
#3.4.2 Special Parameters

$
$3.4.2 Special Parameters
$3.4.2 Special Parameters

*
*3.4.2 Special Parameters
*3.4.2 Special Parameters

-
-3.4.2 Special Parameters
-3.4.2 Special Parameters

0
03.4.2 Special Parameters
03.4.2 Special Parameters

?
?3.4.2 Special Parameters
?3.4.2 Special Parameters

@
@3.4.2 Special Parameters
@3.4.2 Special Parameters

_
_3.4.2 Special Parameters
_3.4.2 Special Parameters

A
auto_resume7.3 Job Control Variables
auto_resume7.3 Job Control Variables

B
BASH5.2 Bash Variables
BASH5.2 Bash Variables
BASH_ALIASES5.2 Bash Variables
BASH_ALIASES5.2 Bash Variables
BASH_ARGC5.2 Bash Variables
BASH_ARGC5.2 Bash Variables
BASH_ARGV5.2 Bash Variables
BASH_ARGV5.2 Bash Variables
BASH_CMDS5.2 Bash Variables
BASH_CMDS5.2 Bash Variables
BASH_COMMAND5.2 Bash Variables
BASH_COMMAND5.2 Bash Variables
BASH_COMPAT5.2 Bash Variables
BASH_COMPAT5.2 Bash Variables
BASH_ENV5.2 Bash Variables
BASH_ENV5.2 Bash Variables
BASH_EXECUTION_STRING5.2 Bash Variables
BASH_EXECUTION_STRING5.2 Bash Variables
BASH_LINENO5.2 Bash Variables
BASH_LINENO5.2 Bash Variables
BASH_REMATCH5.2 Bash Variables
BASH_REMATCH5.2 Bash Variables
BASH_SOURCE5.2 Bash Variables
BASH_SOURCE5.2 Bash Variables
BASH_SUBSHELL5.2 Bash Variables
BASH_SUBSHELL5.2 Bash Variables
BASH_VERSINFO5.2 Bash Variables
BASH_VERSINFO5.2 Bash Variables
BASH_VERSION5.2 Bash Variables
BASH_VERSION5.2 Bash Variables
BASH_XTRACEFD5.2 Bash Variables
BASH_XTRACEFD5.2 Bash Variables
BASHOPTS5.2 Bash Variables
BASHOPTS5.2 Bash Variables
BASHPID5.2 Bash Variables
BASHPID5.2 Bash Variables
bell-style8.3.1 Readline Init File Syntax
bind-tty-special-chars8.3.1 Readline Init File Syntax

C
CDPATH5.1 Bourne Shell Variables
CDPATH5.1 Bourne Shell Variables
CHILD_MAX5.2 Bash Variables
CHILD_MAX5.2 Bash Variables
colored-stats8.3.1 Readline Init File Syntax
COLUMNS5.2 Bash Variables
COLUMNS5.2 Bash Variables
comment-begin8.3.1 Readline Init File Syntax
COMP_CWORD5.2 Bash Variables
COMP_CWORD5.2 Bash Variables
COMP_KEY5.2 Bash Variables
COMP_KEY5.2 Bash Variables
COMP_LINE5.2 Bash Variables
COMP_LINE5.2 Bash Variables
COMP_POINT5.2 Bash Variables
COMP_POINT5.2 Bash Variables
COMP_TYPE5.2 Bash Variables
COMP_TYPE5.2 Bash Variables
COMP_WORDBREAKS5.2 Bash Variables
COMP_WORDBREAKS5.2 Bash Variables
COMP_WORDS5.2 Bash Variables
COMP_WORDS5.2 Bash Variables
completion-display-width8.3.1 Readline Init File Syntax
completion-ignore-case8.3.1 Readline Init File Syntax
completion-map-case8.3.1 Readline Init File Syntax
completion-prefix-display-length8.3.1 Readline Init File Syntax
completion-query-items8.3.1 Readline Init File Syntax
COMPREPLY5.2 Bash Variables
COMPREPLY5.2 Bash Variables
convert-meta8.3.1 Readline Init File Syntax
COPROC5.2 Bash Variables
COPROC5.2 Bash Variables

D
DIRSTACK5.2 Bash Variables
DIRSTACK5.2 Bash Variables
disable-completion8.3.1 Readline Init File Syntax

E
editing-mode8.3.1 Readline Init File Syntax
EMACS5.2 Bash Variables
EMACS5.2 Bash Variables
enable-keypad8.3.1 Readline Init File Syntax
ENV5.2 Bash Variables
ENV5.2 Bash Variables
EUID5.2 Bash Variables
EUID5.2 Bash Variables
expand-tilde8.3.1 Readline Init File Syntax

F
FCEDIT5.2 Bash Variables
FCEDIT5.2 Bash Variables
FIGNORE5.2 Bash Variables
FIGNORE5.2 Bash Variables
FUNCNAME5.2 Bash Variables
FUNCNAME5.2 Bash Variables
FUNCNEST5.2 Bash Variables
FUNCNEST5.2 Bash Variables

G
GLOBIGNORE5.2 Bash Variables
GLOBIGNORE5.2 Bash Variables
GROUPS5.2 Bash Variables
GROUPS5.2 Bash Variables

H
histchars5.2 Bash Variables
histchars5.2 Bash Variables
HISTCMD5.2 Bash Variables
HISTCMD5.2 Bash Variables
HISTCONTROL5.2 Bash Variables
HISTCONTROL5.2 Bash Variables
HISTFILE5.2 Bash Variables
HISTFILE5.2 Bash Variables
HISTFILESIZE5.2 Bash Variables
HISTFILESIZE5.2 Bash Variables
HISTIGNORE5.2 Bash Variables
HISTIGNORE5.2 Bash Variables
history-preserve-point8.3.1 Readline Init File Syntax
history-size8.3.1 Readline Init File Syntax
HISTSIZE5.2 Bash Variables
HISTSIZE5.2 Bash Variables
HISTTIMEFORMAT5.2 Bash Variables
HISTTIMEFORMAT5.2 Bash Variables
HOME5.1 Bourne Shell Variables
HOME5.1 Bourne Shell Variables
horizontal-scroll-mode8.3.1 Readline Init File Syntax
HOSTFILE5.2 Bash Variables
HOSTFILE5.2 Bash Variables
HOSTNAME5.2 Bash Variables
HOSTNAME5.2 Bash Variables
HOSTTYPE5.2 Bash Variables
HOSTTYPE5.2 Bash Variables

I
IFS5.1 Bourne Shell Variables
IFS5.1 Bourne Shell Variables
IGNOREEOF5.2 Bash Variables
IGNOREEOF5.2 Bash Variables
input-meta8.3.1 Readline Init File Syntax
INPUTRC5.2 Bash Variables
INPUTRC5.2 Bash Variables
isearch-terminators8.3.1 Readline Init File Syntax

K
keymap8.3.1 Readline Init File Syntax

L
LANG5.2 Bash Variables
LANG5.2 Bash Variables
LC_ALL5.2 Bash Variables
LC_ALL5.2 Bash Variables
LC_COLLATE5.2 Bash Variables
LC_COLLATE5.2 Bash Variables
LC_CTYPE5.2 Bash Variables
LC_CTYPE5.2 Bash Variables
LC_MESSAGES3.1.2.5 Locale-Specific Translation
LC_MESSAGES5.2 Bash Variables
LC_MESSAGES5.2 Bash Variables
LC_NUMERIC5.2 Bash Variables
LC_NUMERIC5.2 Bash Variables
LINENO5.2 Bash Variables
LINENO5.2 Bash Variables
LINES5.2 Bash Variables
LINES5.2 Bash Variables

M
MACHTYPE5.2 Bash Variables
MACHTYPE5.2 Bash Variables
MAIL5.1 Bourne Shell Variables
MAIL5.1 Bourne Shell Variables
MAILCHECK5.2 Bash Variables
MAILCHECK5.2 Bash Variables
MAILPATH5.1 Bourne Shell Variables
MAILPATH5.1 Bourne Shell Variables
MAPFILE5.2 Bash Variables
MAPFILE5.2 Bash Variables
mark-modified-lines8.3.1 Readline Init File Syntax
mark-symlinked-directories8.3.1 Readline Init File Syntax
match-hidden-files8.3.1 Readline Init File Syntax
menu-complete-display-prefix8.3.1 Readline Init File Syntax
meta-flag8.3.1 Readline Init File Syntax

O
OLDPWD5.2 Bash Variables
OLDPWD5.2 Bash Variables
OPTARG5.1 Bourne Shell Variables
OPTARG5.1 Bourne Shell Variables
OPTERR5.2 Bash Variables
OPTERR5.2 Bash Variables
OPTIND5.1 Bourne Shell Variables
OPTIND5.1 Bourne Shell Variables
OSTYPE5.2 Bash Variables
OSTYPE5.2 Bash Variables
output-meta8.3.1 Readline Init File Syntax

P
page-completions8.3.1 Readline Init File Syntax
PATH5.1 Bourne Shell Variables
PATH5.1 Bourne Shell Variables
PIPESTATUS5.2 Bash Variables
PIPESTATUS5.2 Bash Variables
POSIXLY_CORRECT5.2 Bash Variables
POSIXLY_CORRECT5.2 Bash Variables
PPID5.2 Bash Variables
PPID5.2 Bash Variables
PROMPT_COMMAND5.2 Bash Variables
PROMPT_COMMAND5.2 Bash Variables
PROMPT_DIRTRIM5.2 Bash Variables
PROMPT_DIRTRIM5.2 Bash Variables
PS15.1 Bourne Shell Variables
PS15.1 Bourne Shell Variables
PS25.1 Bourne Shell Variables
PS25.1 Bourne Shell Variables
PS35.2 Bash Variables
PS35.2 Bash Variables
PS45.2 Bash Variables
PS45.2 Bash Variables
PWD5.2 Bash Variables
PWD5.2 Bash Variables

R
RANDOM5.2 Bash Variables
RANDOM5.2 Bash Variables
READLINE_LINE5.2 Bash Variables
READLINE_LINE5.2 Bash Variables
READLINE_POINT5.2 Bash Variables
READLINE_POINT5.2 Bash Variables
REPLY5.2 Bash Variables
REPLY5.2 Bash Variables
revert-all-at-newline8.3.1 Readline Init File Syntax

S
SECONDS5.2 Bash Variables
SECONDS5.2 Bash Variables
SHELL5.2 Bash Variables
SHELL5.2 Bash Variables
SHELLOPTS5.2 Bash Variables
SHELLOPTS5.2 Bash Variables
SHLVL5.2 Bash Variables
SHLVL5.2 Bash Variables
show-all-if-ambiguous8.3.1 Readline Init File Syntax
show-all-if-unmodified8.3.1 Readline Init File Syntax
show-mode-in-prompt8.3.1 Readline Init File Syntax
skip-completed-text8.3.1 Readline Init File Syntax

T
TEXTDOMAIN3.1.2.5 Locale-Specific Translation
TEXTDOMAINDIR3.1.2.5 Locale-Specific Translation
TIMEFORMAT5.2 Bash Variables
TIMEFORMAT5.2 Bash Variables
TMOUT5.2 Bash Variables
TMOUT5.2 Bash Variables
TMPDIR5.2 Bash Variables
TMPDIR5.2 Bash Variables

U
UID5.2 Bash Variables
UID5.2 Bash Variables

V
visible-stats8.3.1 Readline Init File Syntax

Jump to:   ! -   -# -   -$ -   -* -   -- -   -0 -   -? -   -@ -   -_ -   -
-A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -I -   -K -   -L -   -M -   -O -   -P -   -R -   -S -   -T -   -U -   -V -   -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

D.4 Function Index

- -
Jump to:   A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -I -   -K -   -M -   -N -   -O -   -P -   -Q -   -R -   -S -   -T -   -U -   -Y -   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

A
abort (C-g)8.4.8 Some Miscellaneous Commands
abort (C-g)8.4.8 Some Miscellaneous Commands
accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
alias-expand-line ()8.4.8 Some Miscellaneous Commands
alias-expand-line ()8.4.8 Some Miscellaneous Commands

B
backward-char (C-b)8.4.1 Commands For Moving
backward-char (C-b)8.4.1 Commands For Moving
backward-delete-char (Rubout)8.4.3 Commands For Changing Text
backward-delete-char (Rubout)8.4.3 Commands For Changing Text
backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
backward-kill-word (M-DEL)8.4.4 Killing And Yanking
backward-kill-word (M-DEL)8.4.4 Killing And Yanking
backward-word (M-b)8.4.1 Commands For Moving
backward-word (M-b)8.4.1 Commands For Moving
beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
beginning-of-line (C-a)8.4.1 Commands For Moving
beginning-of-line (C-a)8.4.1 Commands For Moving

C
call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
capitalize-word (M-c)8.4.3 Commands For Changing Text
capitalize-word (M-c)8.4.3 Commands For Changing Text
character-search (C-])8.4.8 Some Miscellaneous Commands
character-search (C-])8.4.8 Some Miscellaneous Commands
character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
clear-screen (C-l)8.4.1 Commands For Moving
clear-screen (C-l)8.4.1 Commands For Moving
complete (TAB)8.4.6 Letting Readline Type For You
complete (TAB)8.4.6 Letting Readline Type For You
complete-command (M-!)8.4.6 Letting Readline Type For You
complete-command (M-!)8.4.6 Letting Readline Type For You
complete-filename (M-/)8.4.6 Letting Readline Type For You
complete-filename (M-/)8.4.6 Letting Readline Type For You
complete-hostname (M-@)8.4.6 Letting Readline Type For You
complete-hostname (M-@)8.4.6 Letting Readline Type For You
complete-into-braces (M-{)8.4.6 Letting Readline Type For You
complete-into-braces (M-{)8.4.6 Letting Readline Type For You
complete-username (M-~)8.4.6 Letting Readline Type For You
complete-username (M-~)8.4.6 Letting Readline Type For You
complete-variable (M-$)8.4.6 Letting Readline Type For You
complete-variable (M-$)8.4.6 Letting Readline Type For You
copy-backward-word ()8.4.4 Killing And Yanking
copy-backward-word ()8.4.4 Killing And Yanking
copy-forward-word ()8.4.4 Killing And Yanking
copy-forward-word ()8.4.4 Killing And Yanking
copy-region-as-kill ()8.4.4 Killing And Yanking
copy-region-as-kill ()8.4.4 Killing And Yanking

D
dabbrev-expand ()8.4.6 Letting Readline Type For You
dabbrev-expand ()8.4.6 Letting Readline Type For You
delete-char (C-d)8.4.3 Commands For Changing Text
delete-char (C-d)8.4.3 Commands For Changing Text
delete-char-or-list ()8.4.6 Letting Readline Type For You
delete-char-or-list ()8.4.6 Letting Readline Type For You
delete-horizontal-space ()8.4.4 Killing And Yanking
delete-horizontal-space ()8.4.4 Killing And Yanking
digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
downcase-word (M-l)8.4.3 Commands For Changing Text
downcase-word (M-l)8.4.3 Commands For Changing Text
dump-functions ()8.4.8 Some Miscellaneous Commands
dump-functions ()8.4.8 Some Miscellaneous Commands
dump-macros ()8.4.8 Some Miscellaneous Commands
dump-macros ()8.4.8 Some Miscellaneous Commands
dump-variables ()8.4.8 Some Miscellaneous Commands
dump-variables ()8.4.8 Some Miscellaneous Commands
dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You
dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You

E
edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
end-kbd-macro (C-x ))8.4.7 Keyboard Macros
end-kbd-macro (C-x ))8.4.7 Keyboard Macros
end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
end-of-line (C-e)8.4.1 Commands For Moving
end-of-line (C-e)8.4.1 Commands For Moving
exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands
exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands

F
forward-backward-delete-char ()8.4.3 Commands For Changing Text
forward-backward-delete-char ()8.4.3 Commands For Changing Text
forward-char (C-f)8.4.1 Commands For Moving
forward-char (C-f)8.4.1 Commands For Moving
forward-search-history (C-s)8.4.2 Commands For Manipulating The History
forward-search-history (C-s)8.4.2 Commands For Manipulating The History
forward-word (M-f)8.4.1 Commands For Moving
forward-word (M-f)8.4.1 Commands For Moving

G
glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands
glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands

H
history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
history-search-backward ()8.4.2 Commands For Manipulating The History
history-search-backward ()8.4.2 Commands For Manipulating The History
history-search-forward ()8.4.2 Commands For Manipulating The History
history-search-forward ()8.4.2 Commands For Manipulating The History
history-substr-search-backward ()8.4.2 Commands For Manipulating The History
history-substr-search-backward ()8.4.2 Commands For Manipulating The History
history-substr-search-forward ()8.4.2 Commands For Manipulating The History
history-substr-search-forward ()8.4.2 Commands For Manipulating The History

I
insert-comment (M-#)8.4.8 Some Miscellaneous Commands
insert-comment (M-#)8.4.8 Some Miscellaneous Commands
insert-completions (M-*)8.4.6 Letting Readline Type For You
insert-completions (M-*)8.4.6 Letting Readline Type For You
insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands
insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands

K
kill-line (C-k)8.4.4 Killing And Yanking
kill-line (C-k)8.4.4 Killing And Yanking
kill-region ()8.4.4 Killing And Yanking
kill-region ()8.4.4 Killing And Yanking
kill-whole-line ()8.4.4 Killing And Yanking
kill-whole-line ()8.4.4 Killing And Yanking
kill-word (M-d)8.4.4 Killing And Yanking
kill-word (M-d)8.4.4 Killing And Yanking

M
magic-space ()8.4.8 Some Miscellaneous Commands
magic-space ()8.4.8 Some Miscellaneous Commands
menu-complete ()8.4.6 Letting Readline Type For You
menu-complete ()8.4.6 Letting Readline Type For You
menu-complete-backward ()8.4.6 Letting Readline Type For You
menu-complete-backward ()8.4.6 Letting Readline Type For You

N
next-history (C-n)8.4.2 Commands For Manipulating The History
next-history (C-n)8.4.2 Commands For Manipulating The History
non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History
non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History

O
operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
overwrite-mode ()8.4.3 Commands For Changing Text
overwrite-mode ()8.4.3 Commands For Changing Text

P
possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
possible-completions (M-?)8.4.6 Letting Readline Type For You
possible-completions (M-?)8.4.6 Letting Readline Type For You
possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
previous-history (C-p)8.4.2 Commands For Manipulating The History
previous-history (C-p)8.4.2 Commands For Manipulating The History
print-last-kbd-macro ()8.4.7 Keyboard Macros
print-last-kbd-macro ()8.4.7 Keyboard Macros

Q
quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text
quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text

R
re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
redraw-current-line ()8.4.1 Commands For Moving
redraw-current-line ()8.4.1 Commands For Moving
reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
revert-line (M-r)8.4.8 Some Miscellaneous Commands
revert-line (M-r)8.4.8 Some Miscellaneous Commands

S
self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
set-mark (C-@)8.4.8 Some Miscellaneous Commands
set-mark (C-@)8.4.8 Some Miscellaneous Commands
shell-backward-kill-word ()8.4.4 Killing And Yanking
shell-backward-kill-word ()8.4.4 Killing And Yanking
shell-backward-word ()8.4.1 Commands For Moving
shell-backward-word ()8.4.1 Commands For Moving
shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
shell-forward-word ()8.4.1 Commands For Moving
shell-forward-word ()8.4.1 Commands For Moving
shell-kill-word ()8.4.4 Killing And Yanking
shell-kill-word ()8.4.4 Killing And Yanking
skip-csi-sequence ()8.4.8 Some Miscellaneous Commands
skip-csi-sequence ()8.4.8 Some Miscellaneous Commands
start-kbd-macro (C-x ()8.4.7 Keyboard Macros
start-kbd-macro (C-x ()8.4.7 Keyboard Macros

T
tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
transpose-chars (C-t)8.4.3 Commands For Changing Text
transpose-chars (C-t)8.4.3 Commands For Changing Text
transpose-words (M-t)8.4.3 Commands For Changing Text
transpose-words (M-t)8.4.3 Commands For Changing Text

U
undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
universal-argument ()8.4.5 Specifying Numeric Arguments
universal-argument ()8.4.5 Specifying Numeric Arguments
unix-filename-rubout ()8.4.4 Killing And Yanking
unix-filename-rubout ()8.4.4 Killing And Yanking
unix-line-discard (C-u)8.4.4 Killing And Yanking
unix-line-discard (C-u)8.4.4 Killing And Yanking
unix-word-rubout (C-w)8.4.4 Killing And Yanking
unix-word-rubout (C-w)8.4.4 Killing And Yanking
upcase-word (M-u)8.4.3 Commands For Changing Text
upcase-word (M-u)8.4.3 Commands For Changing Text

Y
yank (C-y)8.4.4 Killing And Yanking
yank (C-y)8.4.4 Killing And Yanking
yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
yank-pop (M-y)8.4.4 Killing And Yanking
yank-pop (M-y)8.4.4 Killing And Yanking

Jump to:   A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -I -   -K -   -M -   -N -   -O -   -P -   -Q -   -R -   -S -   -T -   -U -   -Y -   -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

D.5 Concept Index

- -
Jump to:   A -   -B -   -C -   -D -   -E -   -F -   -H -   -I -   -J -   -K -   -L -   -M -   -N -   -O -   -P -   -Q -   -R -   -S -   -T -   -V -   -W -   -Y -   -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Index Entry Section

A
alias expansion6.6 Aliases
arithmetic evaluation6.5 Shell Arithmetic
arithmetic expansion3.5.5 Arithmetic Expansion
arithmetic, shell6.5 Shell Arithmetic
arrays6.7 Arrays

B
background7.1 Job Control Basics
Bash configuration10.1 Basic Installation
Bash installation10.1 Basic Installation
Bourne shell3. Basic Shell Features
brace expansion3.5.1 Brace Expansion
builtin2. Definitions

C
command editing8.2.1 Readline Bare Essentials
command execution3.7.2 Command Search and Execution
command expansion3.7.1 Simple Command Expansion
command history9.1 Bash History Facilities
command search3.7.2 Command Search and Execution
command substitution3.5.4 Command Substitution
command timing3.2.2 Pipelines
commands, compound3.2.4 Compound Commands
commands, conditional3.2.4.2 Conditional Constructs
commands, grouping3.2.4.3 Grouping Commands
commands, lists3.2.3 Lists of Commands
commands, looping3.2.4.1 Looping Constructs
commands, pipelines3.2.2 Pipelines
commands, shell3.2 Shell Commands
commands, simple3.2.1 Simple Commands
comments, shell3.1.3 Comments
completion builtins8.7 Programmable Completion Builtins
configuration10.1 Basic Installation
control operator2. Definitions
coprocess3.2.5 Coprocesses

D
directory stack6.8 The Directory Stack

E
editing command lines8.2.1 Readline Bare Essentials
environment3.7.4 Environment
evaluation, arithmetic6.5 Shell Arithmetic
event designators9.3.1 Event Designators
execution environment3.7.3 Command Execution Environment
exit status2. Definitions
exit status3.7.5 Exit Status
expansion3.5 Shell Expansions
expansion, arithmetic3.5.5 Arithmetic Expansion
expansion, brace3.5.1 Brace Expansion
expansion, filename3.5.8 Filename Expansion
expansion, parameter3.5.3 Shell Parameter Expansion
expansion, pathname3.5.8 Filename Expansion
expansion, tilde3.5.2 Tilde Expansion
expressions, arithmetic6.5 Shell Arithmetic
expressions, conditional6.4 Bash Conditional Expressions

F
field2. Definitions
filename2. Definitions
filename expansion3.5.8 Filename Expansion
foreground7.1 Job Control Basics
functions, shell3.3 Shell Functions

H
history builtins9.2 Bash History Builtins
history events9.3.1 Event Designators
history expansion9.3 History Expansion
history list9.1 Bash History Facilities
History, how to use8.8 A Programmable Completion Example

I
identifier2. Definitions
initialization file, readline8.3 Readline Init File
installation10.1 Basic Installation
interaction, readline8.2 Readline Interaction
interactive shell6.1 Invoking Bash
interactive shell6.3 Interactive Shells
internationalization3.1.2.5 Locale-Specific Translation

J
job2. Definitions
job control2. Definitions
job control7.1 Job Control Basics

K
kill ring8.2.3 Readline Killing Commands
killing text8.2.3 Readline Killing Commands

L
localization3.1.2.5 Locale-Specific Translation
login shell6.1 Invoking Bash

M
matching, pattern3.5.8.1 Pattern Matching
metacharacter2. Definitions

N
name2. Definitions
native languages3.1.2.5 Locale-Specific Translation
notation, readline8.2.1 Readline Bare Essentials

O
operator, shell2. Definitions

P
parameter expansion3.5.3 Shell Parameter Expansion
parameters3.4 Shell Parameters
parameters, positional3.4.1 Positional Parameters
parameters, special3.4.2 Special Parameters
pathname expansion3.5.8 Filename Expansion
pattern matching3.5.8.1 Pattern Matching
pipeline3.2.2 Pipelines
POSIX2. Definitions
POSIX Mode6.11 Bash POSIX Mode
process group2. Definitions
process group ID2. Definitions
process substitution3.5.6 Process Substitution
programmable completion8.6 Programmable Completion
prompting6.9 Controlling the Prompt

Q
quoting3.1.2 Quoting
quoting, ANSI3.1.2.4 ANSI-C Quoting

R
Readline, how to use7.3 Job Control Variables
redirection3.6 Redirections
reserved word2. Definitions
restricted shell6.10 The Restricted Shell
return status2. Definitions

S
shell arithmetic6.5 Shell Arithmetic
shell function3.3 Shell Functions
shell script3.8 Shell Scripts
shell variable3.4 Shell Parameters
shell, interactive6.3 Interactive Shells
signal2. Definitions
signal handling3.7.6 Signals
special builtin2. Definitions
special builtin4.4 Special Builtins
startup files6.2 Bash Startup Files
suspending jobs7.1 Job Control Basics

T
tilde expansion3.5.2 Tilde Expansion
token2. Definitions
translation, native languages3.1.2.5 Locale-Specific Translation

V
variable, shell3.4 Shell Parameters
variables, readline8.3.1 Readline Init File Syntax

W
word2. Definitions
word splitting3.5.7 Word Splitting

Y
yanking text8.2.3 Readline Killing Commands

Jump to:   A -   -B -   -C -   -D -   -E -   -F -   -H -   -I -   -J -   -K -   -L -   -M -   -N -   -O -   -P -   -Q -   -R -   -S -   -T -   -V -   -W -   -Y -   -

- -


- - - - - - -
[Top][Contents][Index][ ? ]
-

Table of Contents

- -
- - - - - - -
[Top][Contents][Index][ ? ]
-

Short Table of Contents

-
-1. Introduction -
-2. Definitions -
-3. Basic Shell Features -
-4. Shell Builtin Commands -
-5. Shell Variables -
-6. Bash Features -
-7. Job Control -
-8. Command Line Editing -
-9. Using History Interactively -
-10. Installing Bash -
-A. Reporting Bugs -
-B. Major Differences From The Bourne Shell -
-C. GNU Free Documentation License -
-D. Indexes -
- -
-
- - - - - - -
[Top][Contents][Index][ ? ]
-

About this document

-This document was generated by Chet Ramey on January, 11 2013 -using texi2html -

-The buttons in the navigation panels have the following meaning: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Button Name Go to From 1.2.3 go to
- [ < ] -Back - -previous section in reading order - -1.2.2 -
- [ > ] -Forward - -next section in reading order - -1.2.4 -
- [ << ] -FastBack - -previous or up-and-previous section - -1.1 -
- [ Up ] -Up - -up section - -1.2 -
- [ >> ] -FastForward - -next or up-and-next section - -1.3 -
- [Top] -Top - -cover (top) of document - -   -
- [Contents] -Contents - -table of contents - -   -
- [Index] -Index - -concept index - -   -
- [ ? ] -About - -this page - -   -
-

-where the Example assumes that the current position -is at Subsubsection One-Two-Three of a document of -the following structure: -
    -
  • 1. Section One
  • -
      -
    • 1.1 Subsection One-One
    • -
        -
      • ...
      • -
      -
    • 1.2 Subsection One-Two
    • -
        -
      • 1.2.1 Subsubsection One-Two-One -
      • 1.2.2 Subsubsection One-Two-Two -
      • 1.2.3 Subsubsection One-Two-Three     -<== Current Position -
      • 1.2.4 Subsubsection One-Two-Four -
      -
    • 1.3 Subsection One-Three
    • -
        -
      • ...
      • -
      -
    • 1.4 Subsection One-Four
    • -
    -
- -
-
- -This document was generated -by Chet Ramey on January, 11 2013 -using texi2html - - - diff --git a/doc/bashref.info b/doc/bashref.info index 0e82fcebc..77815c5a5 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -1,10 +1,10 @@ This is bashref.info, produced by makeinfo version 4.13 from -/Users/chet/src/bash/src/doc/bashref.texi. +/usr/homes/chet/src/bash/src/doc/bashref.texi. This text is a brief description of the features that are present in -the Bash shell (version 4.2, 8 January 2013). +the Bash shell (version 4.2, 2 March 2013). - This is Edition 4.2, last updated 8 January 2013, of `The GNU Bash + This is Edition 4.2, last updated 2 March 2013, of `The GNU Bash Reference Manual', for `Bash', Version 4.2. Copyright (C) 1988-2013 Free Software Foundation, Inc. @@ -28,10 +28,10 @@ Bash Features ************* This text is a brief description of the features that are present in -the Bash shell (version 4.2, 8 January 2013). The Bash home page is +the Bash shell (version 4.2, 2 March 2013). The Bash home page is `http://www.gnu.org/software/bash/'. - This is Edition 4.2, last updated 8 January 2013, of `The GNU Bash + This is Edition 4.2, last updated 2 March 2013, of `The GNU Bash Reference Manual', for `Bash', Version 4.2. Bash contains features that appear in other popular shells, and some @@ -1060,39 +1060,51 @@ File: bashref.info, Node: GNU Parallel, Prev: Coprocesses, Up: Shell Commands 3.2.6 GNU Parallel ------------------ -GNU Parallel, as its name suggests, can be used to build and run +There are ways to run commands in parallel that are not built into Bash. +GNU Parallel is a tool to do just that. + + GNU Parallel, as its name suggests, can be used to build and run commands in parallel. You may run the same command with different arguments, whether they are filenames, usernames, hostnames, or lines -read from files. +read from files. GNU Parallel provides shorthand references to many of +the most common operations (input lines, various portions of the input +line, different ways to specify the input source, and so on). Parallel +can replace `xargs' or feed commands from its input sources to several +different instances of Bash. For a complete description, refer to the GNU Parallel documentation. A few examples should provide a brief introduction to its use. - For example, it is easy to prefix each line in a text file with a -specified string: - cat file | parallel -k echo prefix_string - The `-k' option is required to preserve the lines' order. - - Similarly, you can append a specified string to each line in a text -file: - cat file | parallel -k echo {} append_string + For example, it is easy to replace `xargs' to gzip all html files in +the current directory and its subdirectories: + find . -type f -name '*.html' -print | parallel gzip + If you need to protect special characters such as newlines in file +names, use find's `-print0' option and parallel's `-0' option. You can use Parallel to move files from the current directory when the number of files is too large to process with one `mv' invocation: ls | parallel mv {} destdir As you can see, the {} is replaced with each line read from standard -input. This will run as many `mv' commands as there are files in the -current directory. You can emulate a parallel `xargs' by adding the -`-X' option: - ls | parallel -X mv {} destdir +input. While using `ls' will work in most instances, it is not +sufficient to deal with all filenames. If you need to accommodate +special characters in filenames, you can use + + find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir + +as alluded to above. + + This will run as many `mv' commands as there are files in the current +directory. You can emulate a parallel `xargs' by adding the `-X' +option: + find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir GNU Parallel can replace certain common idioms that operate on lines -read from a file (in this case, filenames): - for x in $(cat list); do - do-something1 $x config-$x - do-something2 < $x - done | process-output +read from a file (in this case, filenames listed one per line): + while read -r x; do + do-something1 "$x" "config-$x" + do-something2 < "$x" + done < file | process-output with a more compact syntax reminiscent of lambdas: cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output @@ -1102,17 +1114,34 @@ extensions, which lends itself to batch file transformations or renaming: ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" This will recompress all files in the current directory with names -ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. +ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. +(We use `ls' for brevity here; using `find' as above is more robust in +the face of filenames containing unexpected characters.) Parallel can +take arguments from the command line; the above can also be written as + + parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz If a command generates output, you may want to preserve the input order in the output. For instance, the following command { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute - will display as output the traceroute invocation that finishes -first. Using the `-k' option, as we saw above + will display as output the traceroute invocation that finishes first. +Adding the `-k' option { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute will ensure that the output of `traceroute foss.org.my' is displayed first. + Finally, Parallel can be used to run a sequence of shell commands in +parallel, similar to `cat file | bash'. It is not uncommon to take a +list of filenames, create a series of shell commands to operate on +them, and feed that list of commnds to a shell. Parallel can speed +this up. Assuming that `file' contains a list of shell commands, one +per line, + + parallel -j 10 < file + +will evaluate the commands using the shell (since no explicit command is +supplied as an argument), in blocks of ten shell jobs at a time. +  File: bashref.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features @@ -4248,7 +4277,7 @@ This builtin allows you to change additional shell optional behavior. continue with the next command in the list. `compat41' - If set, Bash, when in posix mode, treats a single quote in a + If set, Bash, when in POSIX mode, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. @@ -11082,133 +11111,133 @@ D.5 Concept Index  Tag Table: Node: Top924 -Node: Introduction2840 -Node: What is Bash?3068 -Node: What is a shell?4181 -Node: Definitions6720 -Node: Basic Shell Features9638 -Node: Shell Syntax10857 -Node: Shell Operation11887 -Node: Quoting13181 -Node: Escape Character14484 -Node: Single Quotes14969 -Node: Double Quotes15317 -Node: ANSI-C Quoting16442 -Node: Locale Translation17686 -Node: Comments18582 -Node: Shell Commands19200 -Node: Simple Commands20072 -Node: Pipelines20703 -Node: Lists23402 -Node: Compound Commands25131 -Node: Looping Constructs26137 -Node: Conditional Constructs28600 -Node: Command Grouping39478 -Node: Coprocesses40957 -Node: GNU Parallel42790 -Node: Shell Functions45258 -Node: Shell Parameters50342 -Node: Positional Parameters54471 -Node: Special Parameters55371 -Node: Shell Expansions58335 -Node: Brace Expansion60261 -Node: Tilde Expansion63042 -Node: Shell Parameter Expansion65391 -Node: Command Substitution77685 -Node: Arithmetic Expansion79018 -Node: Process Substitution79868 -Node: Word Splitting80918 -Node: Filename Expansion82541 -Node: Pattern Matching84706 -Node: Quote Removal88406 -Node: Redirections88701 -Node: Executing Commands97865 -Node: Simple Command Expansion98535 -Node: Command Search and Execution100465 -Node: Command Execution Environment102802 -Node: Environment105788 -Node: Exit Status107447 -Node: Signals109069 -Node: Shell Scripts111037 -Node: Shell Builtin Commands113555 -Node: Bourne Shell Builtins115583 -Node: Bash Builtins135359 -Node: Modifying Shell Behavior162686 -Node: The Set Builtin163031 -Node: The Shopt Builtin173357 -Node: Special Builtins187561 -Node: Shell Variables188540 -Node: Bourne Shell Variables188980 -Node: Bash Variables191011 -Node: Bash Features217886 -Node: Invoking Bash218785 -Node: Bash Startup Files224563 -Node: Interactive Shells229582 -Node: What is an Interactive Shell?229992 -Node: Is this Shell Interactive?230641 -Node: Interactive Shell Behavior231456 -Node: Bash Conditional Expressions234744 -Node: Shell Arithmetic238746 -Node: Aliases241522 -Node: Arrays244078 -Node: The Directory Stack248767 -Node: Directory Stack Builtins249486 -Node: Controlling the Prompt252442 -Node: The Restricted Shell255214 -Node: Bash POSIX Mode257051 -Node: Job Control266438 -Node: Job Control Basics266898 -Node: Job Control Builtins271617 -Node: Job Control Variables276079 -Node: Command Line Editing277237 -Node: Introduction and Notation278909 -Node: Readline Interaction280531 -Node: Readline Bare Essentials281722 -Node: Readline Movement Commands283511 -Node: Readline Killing Commands284476 -Node: Readline Arguments286396 -Node: Searching287440 -Node: Readline Init File289626 -Node: Readline Init File Syntax290773 -Node: Conditional Init Constructs307610 -Node: Sample Init File310143 -Node: Bindable Readline Commands313260 -Node: Commands For Moving314467 -Node: Commands For History315611 -Node: Commands For Text319796 -Node: Commands For Killing322469 -Node: Numeric Arguments324926 -Node: Commands For Completion326065 -Node: Keyboard Macros330257 -Node: Miscellaneous Commands330945 -Node: Readline vi Mode336751 -Node: Programmable Completion337658 -Node: Programmable Completion Builtins344908 -Node: A Programmable Completion Example354654 -Node: Using History Interactively359904 -Node: Bash History Facilities360588 -Node: Bash History Builtins363587 -Node: History Interaction367515 -Node: Event Designators370220 -Node: Word Designators371442 -Node: Modifiers373081 -Node: Installing Bash374485 -Node: Basic Installation375622 -Node: Compilers and Options378314 -Node: Compiling For Multiple Architectures379055 -Node: Installation Names380719 -Node: Specifying the System Type381537 -Node: Sharing Defaults382253 -Node: Operation Controls382926 -Node: Optional Features383884 -Node: Reporting Bugs393672 -Node: Major Differences From The Bourne Shell394870 -Node: GNU Free Documentation License411729 -Node: Indexes436925 -Node: Builtin Index437379 -Node: Reserved Word Index444206 -Node: Variable Index446654 -Node: Function Index460177 -Node: Concept Index467405 +Node: Introduction2836 +Node: What is Bash?3064 +Node: What is a shell?4177 +Node: Definitions6716 +Node: Basic Shell Features9634 +Node: Shell Syntax10853 +Node: Shell Operation11883 +Node: Quoting13177 +Node: Escape Character14480 +Node: Single Quotes14965 +Node: Double Quotes15313 +Node: ANSI-C Quoting16438 +Node: Locale Translation17682 +Node: Comments18578 +Node: Shell Commands19196 +Node: Simple Commands20068 +Node: Pipelines20699 +Node: Lists23398 +Node: Compound Commands25127 +Node: Looping Constructs26133 +Node: Conditional Constructs28596 +Node: Command Grouping39474 +Node: Coprocesses40953 +Node: GNU Parallel42786 +Node: Shell Functions46767 +Node: Shell Parameters51851 +Node: Positional Parameters55980 +Node: Special Parameters56880 +Node: Shell Expansions59844 +Node: Brace Expansion61770 +Node: Tilde Expansion64551 +Node: Shell Parameter Expansion66900 +Node: Command Substitution79194 +Node: Arithmetic Expansion80527 +Node: Process Substitution81377 +Node: Word Splitting82427 +Node: Filename Expansion84050 +Node: Pattern Matching86215 +Node: Quote Removal89915 +Node: Redirections90210 +Node: Executing Commands99374 +Node: Simple Command Expansion100044 +Node: Command Search and Execution101974 +Node: Command Execution Environment104311 +Node: Environment107297 +Node: Exit Status108956 +Node: Signals110578 +Node: Shell Scripts112546 +Node: Shell Builtin Commands115064 +Node: Bourne Shell Builtins117092 +Node: Bash Builtins136868 +Node: Modifying Shell Behavior164195 +Node: The Set Builtin164540 +Node: The Shopt Builtin174866 +Node: Special Builtins189070 +Node: Shell Variables190049 +Node: Bourne Shell Variables190489 +Node: Bash Variables192520 +Node: Bash Features219395 +Node: Invoking Bash220294 +Node: Bash Startup Files226072 +Node: Interactive Shells231091 +Node: What is an Interactive Shell?231501 +Node: Is this Shell Interactive?232150 +Node: Interactive Shell Behavior232965 +Node: Bash Conditional Expressions236253 +Node: Shell Arithmetic240255 +Node: Aliases243031 +Node: Arrays245587 +Node: The Directory Stack250276 +Node: Directory Stack Builtins250995 +Node: Controlling the Prompt253951 +Node: The Restricted Shell256723 +Node: Bash POSIX Mode258560 +Node: Job Control267947 +Node: Job Control Basics268407 +Node: Job Control Builtins273126 +Node: Job Control Variables277588 +Node: Command Line Editing278746 +Node: Introduction and Notation280418 +Node: Readline Interaction282040 +Node: Readline Bare Essentials283231 +Node: Readline Movement Commands285020 +Node: Readline Killing Commands285985 +Node: Readline Arguments287905 +Node: Searching288949 +Node: Readline Init File291135 +Node: Readline Init File Syntax292282 +Node: Conditional Init Constructs309119 +Node: Sample Init File311652 +Node: Bindable Readline Commands314769 +Node: Commands For Moving315976 +Node: Commands For History317120 +Node: Commands For Text321305 +Node: Commands For Killing323978 +Node: Numeric Arguments326435 +Node: Commands For Completion327574 +Node: Keyboard Macros331766 +Node: Miscellaneous Commands332454 +Node: Readline vi Mode338260 +Node: Programmable Completion339167 +Node: Programmable Completion Builtins346417 +Node: A Programmable Completion Example356163 +Node: Using History Interactively361413 +Node: Bash History Facilities362097 +Node: Bash History Builtins365096 +Node: History Interaction369024 +Node: Event Designators371729 +Node: Word Designators372951 +Node: Modifiers374590 +Node: Installing Bash375994 +Node: Basic Installation377131 +Node: Compilers and Options379823 +Node: Compiling For Multiple Architectures380564 +Node: Installation Names382228 +Node: Specifying the System Type383046 +Node: Sharing Defaults383762 +Node: Operation Controls384435 +Node: Optional Features385393 +Node: Reporting Bugs395181 +Node: Major Differences From The Bourne Shell396379 +Node: GNU Free Documentation License413238 +Node: Indexes438434 +Node: Builtin Index438888 +Node: Reserved Word Index445715 +Node: Variable Index448163 +Node: Function Index461686 +Node: Concept Index468914  End Tag Table diff --git a/doc/bashref.ky b/doc/bashref.ky deleted file mode 100644 index e69de29bb..000000000 diff --git a/doc/bashref.log b/doc/bashref.log deleted file mode 100644 index e20e0d382..000000000 --- a/doc/bashref.log +++ /dev/null @@ -1,421 +0,0 @@ -This is TeX, Version 3.1415926 (TeX Live 2011/Fink) (format=tex 2012.4.18) 11 JAN 2013 16:34 -**/Users/chet/src/bash/src/doc/bashref.texi -(/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex -Loading texinfo [version 2009-01-18.17]: -\bindingoffset=\dimen16 -\normaloffset=\dimen17 -\pagewidth=\dimen18 -\pageheight=\dimen19 -\outerhsize=\dimen20 -\outervsize=\dimen21 -\cornerlong=\dimen22 -\cornerthick=\dimen23 -\topandbottommargin=\dimen24 -\headlinebox=\box16 -\footlinebox=\box17 -\margin=\insert252 -\EMsimple=\toks12 -\groupbox=\box18 -\groupinvalidhelp=\toks13 -\mil=\dimen25 -\exdentamount=\skip18 -\inmarginspacing=\skip19 - pdf, -\tempnum=\count26 -\lnkcount=\count27 -\filename=\toks14 -\filenamelength=\count28 -\pgn=\count29 -\toksA=\toks15 -\toksB=\toks16 -\toksC=\toks17 -\toksD=\toks18 -\boxA=\box19 -\countA=\count30 -\nopdfimagehelp=\toks19 - fonts, -\sffam=\fam8 -\textleading=\dimen26 - markup, -\fontdepth=\count31 - glyphs, -\errorbox=\box20 - -page headings, -\titlepagetopglue=\skip20 -\titlepagebottomglue=\skip21 -\evenheadline=\toks20 -\oddheadline=\toks21 -\evenfootline=\toks22 -\oddfootline=\toks23 - tables, -\tableindent=\dimen27 -\itemindent=\dimen28 -\itemmargin=\dimen29 -\itemmax=\dimen30 -\itemno=\count32 -\multitableparskip=\skip22 -\multitableparindent=\skip23 -\multitablecolspace=\dimen31 -\multitablelinespace=\skip24 -\colcount=\count33 -\everytab=\toks24 - conditionals, -\doignorecount=\count34 - indexing, -\whatsitskip=\skip25 -\whatsitpenalty=\count35 -\secondaryindent=\skip26 -\partialpage=\box21 -\doublecolumnhsize=\dimen32 - sectioning, -\unnumberedno=\count36 -\chapno=\count37 -\secno=\count38 -\subsecno=\count39 -\subsubsecno=\count40 -\appendixno=\count41 -\absseclevel=\count42 -\secbase=\count43 -\chapheadingskip=\skip27 -\secheadingskip=\skip28 -\subsecheadingskip=\skip29 - toc, -\tocfile=\write0 -\contentsrightmargin=\skip30 -\savepageno=\count44 -\lastnegativepageno=\count45 -\tocindent=\dimen33 - environments, -\lispnarrowing=\skip31 -\envskipamount=\skip32 -\circthick=\dimen34 -\cartouter=\dimen35 -\cartinner=\dimen36 -\normbskip=\skip33 -\normpskip=\skip34 -\normlskip=\skip35 -\lskip=\skip36 -\rskip=\skip37 -\nonfillparindent=\dimen37 -\tabw=\dimen38 - -defuns, -\defbodyindent=\skip38 -\defargsindent=\skip39 -\deflastargmargin=\skip40 -\defunpenalty=\count46 -\parencount=\count47 -\brackcount=\count48 - macros, -\macscribble=\write1 -\paramno=\count49 -\macname=\toks25 - cross references, -\auxfile=\write2 -\savesfregister=\count50 - insertions, -\footnoteno=\count51 -\SAVEfootins=\box22 -\SAVEmargin=\box23 - -(/sw/share/texmf-dist/tex/generic/epsf/epsf.tex -This is `epsf.tex' v2.7.4 <14 February 2011> -\epsffilein=\read0 -\epsfframemargin=\dimen39 -\epsfframethickness=\dimen40 -\epsfrsize=\dimen41 -\epsftmp=\dimen42 -\epsftsize=\dimen43 -\epsfxsize=\dimen44 -\epsfysize=\dimen45 -\pspoints=\dimen46 -) -\noepsfhelp=\toks26 - localization, -\nolanghelp=\toks27 -\countUTFx=\count52 -\countUTFy=\count53 -\countUTFz=\count54 - formatting, -\defaultparindent=\dimen47 - and turning on texinfo input format.) -(./bashref.aux) -\openout2 = `bashref.aux'. - -@cpindfile=@write3 -@fnindfile=@write4 -@vrindfile=@write5 -@tpindfile=@write6 -@kyindfile=@write7 -@pgindfile=@write8 - (./version.texi) -@btindfile=@write9 -@rwindfile=@write10 - [1 -\openout3 = `bashref.cp'. - -\openout4 = `bashref.fn'. - -\openout5 = `bashref.vr'. - -\openout6 = `bashref.tp'. - -\openout7 = `bashref.ky'. - -\openout8 = `bashref.pg'. - -\openout9 = `bashref.bt'. - -\openout10 = `bashref.rw'. - -] -\openout1 = `bashref.tmp'. - - (./bashref.tmp) [2] (./bashref.toc -[-1] [-2] [-3]) [-4] Chapter 1 -\openout0 = `bashref.toc'. - - Chapter 2 [1] [2] [3] Chapter 3 [4] [5] [6] -[7] [8] [9] [10] -Overfull \hbox (43.33539pt too wide) in paragraph at lines 866--866 - []@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @ -textttsl pat-tern@texttt ][]) @textttsl command-list @texttt ;;][] esac[] - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 86.72375 -.@hbox(0.0+0.0)x0.0 -.@texttt c -.@texttt a -.@texttt s -.etc. - -[11] [12] [13] [14] [15] -Overfull \hbox (89.6747pt too wide) in paragraph at lines 1253--1253 - []@texttt cat list | parallel "do-something1 {} config-{} ; do-something2 < {} -" | process-output[] - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@texttt c -.@texttt a -.@texttt t -.etc. - - -Overfull \hbox (89.6747pt too wide) in paragraph at lines 1268--1268 - []@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p -arallel traceroute[] - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@texttt { -.@penalty 10000 -.@glue 5.74869 -.etc. - - -Overfull \hbox (106.92076pt too wide) in paragraph at lines 1274--1274 - []@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p -arallel -k traceroute[] - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@texttt { -.@penalty 10000 -.@glue 5.74869 -.etc. - -[16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] -[31] [32] [33] [34] [35] [36] [37] [38] Chapter 4 [39] [40] [41] [42] [43] -[44] [45] [46] -Underfull \hbox (badness 5231) in paragraph at lines 3723--3736 - @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr -m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and - -@hbox(7.60416+2.12917)x433.62, glue set 3.7426 -.@glue(@leftskip) 115.63242 -.@texttt e -.@texttt m -.@texttt a -.@texttt c -.etc. - -[47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] -[62] [63] [64] -Underfull \hbox (badness 5460) in paragraph at lines 5010--5016 - []@textrm If set, range ex-pres-sions used in pat-tern match-ing (see - -@hbox(8.2125+2.73749)x433.62, glue set 3.79674 -.@glue(@leftskip) 115.63242 -.@hbox(0.0+0.0)x0.0 -.@textrm I -.@textrm f -.@glue 3.65 plus 1.825 minus 1.21666 -.etc. - -[65] [66] Chapter 5 [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] -Chapter 6 [78] -Overfull \hbox (51.96864pt too wide) in paragraph at lines 5935--5935 - []@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t -exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@kern 0.0 -.@texttt b -.@texttt a -.etc. - - -Overfull \hbox (76.23077pt too wide) in paragraph at lines 5936--5936 - []@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt -] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar -- - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@texttt b -.@texttt a -.@texttt s -.etc. - - -Overfull \hbox (34.72258pt too wide) in paragraph at lines 5937--5937 - []@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text -tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@texttt b -.@texttt a -.@texttt s -.etc. - -[79] [80] -Underfull \hbox (badness 2245) in paragraph at lines 6109--6111 -[]@textrm When a lo-gin shell ex-its, Bash reads and ex-e-cutes com-mands from -the file - -@hbox(7.60416+2.12917)x433.62, glue set 2.82155 -.@hbox(0.0+0.0)x15.0 -.@textrm W -.@textrm h -.@textrm e -.@textrm n -.etc. - -[81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] -Underfull \hbox (badness 2521) in paragraph at lines 7321--7324 -@textrm `@texttt --enable-strict-posix-default[]@textrm '[] to @texttt configur -e[] @textrm when build-ing (see Sec-tion 10.8 - -@hbox(8.2125+2.73749)x433.62, glue set 2.9335 -.@textrm ` -.@texttt - -.@texttt - -.@texttt e -.@texttt n -.etc. - -Chapter 7 [95] [96] [97] [98] [99] -(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [100] [101] -[102] [103] [104] [105] [106] -Underfull \hbox (badness 5231) in paragraph at lines 565--581 - @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr -m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and - -@hbox(7.60416+2.12917)x433.62, glue set 3.7426 -.@glue(@leftskip) 115.63242 -.@texttt e -.@texttt m -.@texttt a -.@texttt c -.etc. - -[107] [108] [109] [110] [111] [112] -Overfull \hbox (26.43913pt too wide) in paragraph at lines 929--929 - []@texttt Meta-Control-h: backward-kill-word Text after the function name is i -gnored[] - -@hbox(6.69167+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@texttt M -.@texttt e -.@texttt t -.etc. - -[113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] -[125] [126] -Overfull \hbox (12.05716pt too wide) in paragraph at lines 1877--1877 - []@texttt complete [-abcdefgjksuv] [-o @textttsl comp-option@texttt ] [-DE] [- -A @textttsl ac-tion@texttt ] [- - -@hbox(7.60416+2.43333)x433.62 -.@glue(@leftskip) 86.72375 -.@hbox(0.0+0.0)x0.0 -.@texttt c -.@texttt o -.@texttt m -.etc. - -[127] -Underfull \hbox (badness 2753) in paragraph at lines 1991--1994 - @texttt hostname[]@textrm Hostnames, as taken from the file spec-i-fied by - -@hbox(7.60416+2.12917)x433.62, glue set 3.02202 -.@glue(@leftskip) 173.44862 -.@penalty 10000 -.@kern -57.81621 -.@texttt h -.@texttt o -.etc. - -[128] [129] [130] -Overfull \hbox (26.43913pt too wide) in paragraph at lines 2142--2142 - [] @texttt # Tilde expansion, with side effect of expanding tilde to full p -athname[] - -@hbox(6.69167+2.43333)x433.62 -.@glue(@leftskip) 28.90755 -.@hbox(0.0+0.0)x0.0 -.@penalty 10000 -.@glue 5.74869 -.@penalty 10000 -.etc. - -[131]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9 -[132] [133] [134] [135] [136]) Chapter 10 [137] [138] [139] [140] -Underfull \hbox (badness 2772) in paragraph at lines 7929--7933 - []@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard -s/large_ - -@hbox(8.2125+2.73749)x433.62, glue set 3.02754 -.@glue(@leftskip) 57.81621 -.@hbox(0.0+0.0)x0.0 -.@textrm E -.@textrm n -.@textrm a -.etc. - -[141] [142] [143] Appendix A [144] Appendix B [145] [146] [147] [148] [149] -[150] Appendix C [151] (./fdl.texi [152] [153] [154] [155] [156] [157] [158]) -Appendix D [159] (./bashref.bts) [160] (./bashref.rws) (./bashref.vrs [161] -[162]) (./bashref.fns [163] [164]) (./bashref.cps [165]) [166] ) -Here is how much of TeX's memory you used: - 2085 strings out of 497974 - 28613 string characters out of 3220833 - 65396 words of memory out of 3000000 - 2901 multiletter control sequences out of 15000+200000 - 32127 words of font info for 112 fonts, out of 3000000 for 9000 - 51 hyphenation exceptions out of 8191 - 16i,6n,14p,315b,705s stack positions out of 5000i,500n,10000p,200000b,50000s - -Output written on bashref.dvi (172 pages, 715952 bytes). diff --git a/doc/bashref.pdf b/doc/bashref.pdf deleted file mode 100644 index 6432d0428..000000000 Binary files a/doc/bashref.pdf and /dev/null differ diff --git a/doc/bashref.pg b/doc/bashref.pg deleted file mode 100644 index e69de29bb..000000000 diff --git a/doc/bashref.ps b/doc/bashref.ps deleted file mode 100644 index af04ee7ab..000000000 --- a/doc/bashref.ps +++ /dev/null @@ -1,20015 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software -%%Title: bashref.dvi -%%CreationDate: Fri Jan 11 16:34:31 2013 -%%Pages: 172 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10 -%%+ CMTI10 CMSLTT10 CMTT12 CMTT9 CMMI9 CMR9 -%%DocumentPaperSizes: Letter -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi -%DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2013.01.11:1634 -%%BeginProcSet: tex.pro 0 0 -%! -/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S -N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 -mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 -0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ -landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize -mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ -matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round -exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ -statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] -N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin -/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array -/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 -array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N -df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A -definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get -}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} -B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr -1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S -/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy -setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask -restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn -/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put -}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ -bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A -mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ -SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ -userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X -1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 -index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N -/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 -def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 -rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 -N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop -false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A -length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} -forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ -BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat -{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch -round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 -rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B -/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} -B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p --3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ -0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end - -%%EndProcSet -%%BeginProcSet: texps.pro 0 0 -%! -TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 -index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll -exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 -ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ -pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get -div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type -/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end -definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup -sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll -mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ -exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} -forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def -end - -%%EndProcSet -%%BeginFont: CMTT12 -%!PS-AdobeFont-1.0: CMTT12 003.002 -%%Title: CMTT12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup -/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT12 def -/FontBBox {-1 -234 524 695 }readonly def -/UniqueID 5000833 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def -/FullName (CMTT12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 108 /l put -dup 110 /n put -dup 111 /o put -dup 115 /s put -dup 123 /braceleft put -dup 125 /braceright put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 -7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 -A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 -4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C -A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 -75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 -9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 -098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 -ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 -DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B -5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 -F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 -2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 -E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 -C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 -42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D -4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 -95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 -830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE5 -5925388A2E95AE46E8806E0F7B954D1A9F70EE29B069A9FEB0349298CE5311BB -CAB039C21AEB714781BBCDBF2FFCBE7C4750D7693ED142ED0475EE9DB5D5F94F -4D4613E2C379E494464447C4167C625D70B9DBE4756DEF299974B704A3C238DC -FCD3AD96645559ACA5056F7FD695D2AA709960E30F055ADBDCC7FDF641920A9F -A279AAB98424E76D01937F9CFE3CF4E3779650D7C2DC38AB27FB81EB16C19B13 -D47E0AC60C83641CCC1A00136625FE274C6AC706B516CBF14C54000BC2B7BD20 -A28D40FCD6D9B321855BDA608E23BD365208DAB23983C0D8A7C9DDC28ED62216 -12A20A3068D843B5FA016B8C6B9BBD36356BF85A128F96F0CE861FB9C998BB21 -E8624E3DE453C686D41DA7B72ABD919C5BE2F24440D11962C77742A8C0115A72 -9E974E71247FCD58318A4347813D4D5A73CF882A7513E2EFE05CE8C7195BDDC7 -DF250B59AD14D02D2991E2D0CF2D0022EF52D78781711697FB784B832DB7FD5D -A70B5A3A2F51985422B685644B23FB4BD39E743817606055EA9E919202151B7C -3374BD7F327FAA9E033893D3B05E305FB06C4098FBC0E96C9746CEECB1A71DFF -174DE4BFC20805F23170D4E9CC591CB605E243C953608656053E47D42692A516 -54CDD59EC3DBEFD075E63B234272548CBDF06E539A62441AAFC6F19FF9EF4C9E -59B4E5B46EE95B68678F1CA9507342AE1BB5B64C4F0C0DA6110ECB0DFA7120BC -EEAADE70224CA0AA0DE936474CD031B5333FEC81039B73F62F9AEB9EFC2ABFCD -91BC8221B86E5FA9E077300E2240FFD8ED945485EDC31E1628908EE3CC15356F -AE422BAEF4CF53716A5DA300B0EA0864C09EFA4B80355337349FD222079081BA -2F3D4C652BA1BB7ADB825A7DA1F7FE91B22E974AD9DB1777CA2B9568D52FF869 -7109343257EF3197B571790146662A4228A807D5C03EEF3649498C8A74A1A57E -D808D1557B8F6CA4E8EF4AB0D35AF5F1292EB70577C5FBB8C36F63BB1F3B2CD0 -FEDAEF4BC620290B59C745B367ECDF5CE962EBF66A22B2D80F275F1EA4C0E20B -76259BFC054BB4BF0A9A7869ADCBB18B21067CE4548982D43DF7C20B5F1573F4 -9A82B4746FC28220FBD402EF6F64C182472E732CB71C4382637DF498B5181B09 -331ACD2628B0D7320F180FF56E10E4C00A54C92D98578BCD5050EB477F8B5587 -5D19A43AEEF01B1898D9B33DB4001364DE863BB463095F4A880A288594E9C29B -92C038B2AC0519AA4E0E2796EB9D8BCF2344207F57C1AE7EE6538DF1F13DCA70 -9D04886CAB82BB020C7425B9206BC84DDB28735A0E0FAD39E2DABE78DC83C438 -E6DAFA3BC97F19F250300A0629C4F7D7DD2D3A44BC64AB9E5CC4E6CB42D78AB7 -2FD0EAC23458847740997AEF151BF758E50D06839BF6A6E46824044574A18F21 -D595F2C9E958FAD04B6F31375D24E1BDEEE484E46D4128E44D62711212867ED1 -12C3E7FE9FE9AE0BA73D7F39B4A4F4918D22384B30BD70AAE305F27905C64082 -6603F819836432CF488668C1102817334B8A6DA8715EB2486656BA048BDB7388 -6962CC2FDD4E659F92C2E651DE36654F986AA54EA16ECBAD44E18323AFD392EC -949B628C2154A2F84831A0369C2EF715EC943E11DF179DF507FBCA729A367BAF -D9CD115F5CCE44A2745F62F0715C8654EC1502BAA0CAD3CD9A4B1FA3025BFD8F -C4DE0F32E82B8E2EB3D2594C9FF5FAFB60ADAA1EE1E83C181FDB49F677082E29 -0D3798E85DEF6B535E46D455E94B0FA07D55C774BAC2BA6EF6B11DF3019DD48C -3C52E1F3B0891094F7C92D83695EDE6C08FA10FE826C08429407824C45B4266F -E51889E5C7CD98DB6F32C5C96D4C87A220A6DA621F7971DD723C68B847679AFF -509F5882E39A1BEB248790DC8B1CCC48951B1A40747A7F63E602D5E45F2BB16B -72F5D48DE4D1DEF6B7EA7EA9CE63170925D5957D64E13ECF00966DE010490B47 -C85B7A98AC16F4291ACB7D81D1ACEA572FEDC8337C7DC9B734C2EFA2EA52E590 -6969682039B6B991719245C94586F52C4DD92BF33457DF69B42BAEA4F1222D4F -EB972C57A0BAA11AEE39E4F94D9F4F098416F1497F0DD231B1DE520F12F24BD6 -47C7B3FB15E963D52C8137BC1243D5731F76559333DFFFF2F34F47FA31EC28D0 -C78C54A599A97EB7C5F07F26A266024CA314BD198D06E30B775BA30AEAAFE10A -10D52067EEBA50EB67F01426426CCD079A6C016C86EE5FCF229946EC02F9BD52 -98C1C40D7C4797ADE8ED7FB1CDCF39A1AD5C0DE46B543C3738C305B57C152FE9 -2575ADE0A3CCE1BFDE234E5DAA477BE479D76BD69FAC6CEAD570C97802A34A55 -35CA2D6C2006C4D422EAE12F72C39FF0562FC497D0B9AD301047CF1D42543295 -A16A8C06B1DCFCB0CA5FB7A29541BFE828E2D1B6B0034C2F0D48346AD98BCB42 -B3CC9E57F5CC0EA63D5FFAE3ED4DD44605E27E5913388F9661CF4A7B6C2BC76A -A4D944B170DC4BFD0411A8DF2D36D514E12F77231D5AB3DE6112BFB5C6309F92 -31C0A932846E7C2BAF2306640B9E54C583F6486317BB4E6308C232E26FD86698 -636F814E6D55C8E1C52B184F5EE6518A86F11B6CB55EE663DD8D71F5FDBBFA71 -394638EE1450E851205AB4CBF9ADDF -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR9 -%!PS-AdobeFont-1.0: CMR9 003.002 -%%Title: CMR9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup -/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR9 def -/FontBBox {-39 -250 1036 750 }readonly def -/UniqueID 5000792 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR9.) readonly def -/FullName (CMR9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 44 /comma put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 65 /A put -dup 66 /B put -dup 68 /D put -dup 72 /H put -dup 73 /I put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 88 /X put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340 -15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E -ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4 -B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029 -85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C -DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955 -F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D -2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5 -B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7 -78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7 -E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3 -41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277 -B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072 -55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA -700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9 -8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A -F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4 -FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4 -3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15 -B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2 -AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013 -461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC -CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85 -CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C -4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F -291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223 -D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181 -C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115 -D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9 -9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405 -2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380 -A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB -2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E -2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6 -AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577 -9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB -B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67 -0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D -9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B -42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0 -C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35 -623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6 -B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4 -E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97 -CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D -07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7 -53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350 -EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9 -52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88 -F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC -D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3 -81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D -B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6 -B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A -31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF -E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293 -846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733 -46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E -44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08 -A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A -BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5 -1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4 -D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344 -6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A -E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E -24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E -75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D -EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51 -C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0 -5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034 -099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281 -7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE -53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84 -7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F -7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C -D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933 -CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD -866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B -B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826 -ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B -B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64 -FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B -40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643 -D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8 -2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787 -39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2 -1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4 -F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9 -253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B -14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085 -6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E -E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B -9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E -EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339 -FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F -289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3 -A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5 -5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46 -5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652 -152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE -67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3 -BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59 -3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88 -713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF -2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5 -D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143 -6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB -A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9 -F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95 -26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A -C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970 -350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700 -70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5 -F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95 -F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8 -9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2 -DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473 -F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D -064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF -1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325 -A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E -E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF -01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C -40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C -72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645 -24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1 -EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775 -D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311 -83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483 -5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448 -1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69 -AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC -4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3 -7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9 -65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063 -B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6 -FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6 -4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490 -8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6 -1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3 -10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B -C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4 -8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A -C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0 -7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F -852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C -3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997 -648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD -855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE -1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C -1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0 -B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7 -D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99 -24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C -552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733 -6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0 -800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8 -6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659 -E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4 -5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2 -00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F -E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4 -82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7 -6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3 -128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D -744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507 -84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF -AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86 -5C7018E5F1DFB86B739C4749DDCFB2F40529E1F15174DF4AE9833958B66ED869 -920CFB9524F05AB2FA84A4AC41A02490699F277A3B4ECC3C31ACF79E884B979C -AEFF660A8EEF118C79F8DA266F89F32078B1C333DFA5264D6B64371276ED4DBD -5A2DF213D85A56B1CA85DEA53ED0299C1FA48D463B11FC9A0751C986CAABB184 -829B1133CA8422DC11C6CEAAD463FEB468FC7AA2DDBE2E708D27D89164B12BD8 -B9A71A1D06D2FA9ED0B02168B32F6CC0FE765F2AF8A19C7196EE55648E642184 -BDF993C99EF7C10AD2A7962DB9B7851E6EE24A0C53475186BB44083AE18254B9 -F1CEA0B66A6581C81DE19DA8EEC9330A030F3384C1DF8216E5A25FB38C1B94F3 -403C3541593A016CB5FD306F41F40E82D4561EBCBF76153BDFCF338284348755 -0208360C5842FCD6B2D614387575B6E49F4B5A4DA281A352ABE8B76CFCD94A00 -1C586D19B68D965BD8D7EF0DC87271478CB4D0D1633676A2FC51B36876002A9B -F5D632ED778BA9EA1C3741FFCC15AEEC11C8E1544DA7358473325812E50C2135 -84ECE7DCE281956681179C09C0E8DBAC5E4424AAD00FDA269BCD6412F1D6DCE0 -2BC7CABF85AE803D620F5140C63DAC4B0E5F7896343973FBB99486B93B6DB58F -38ACBE8868CC58B3918C1AB4406FBCC7BE8496C78C9D628716BF1E306AA802D4 -5FAC522B1EE90448387DB8E85235FFAAF3754E2317B693D567A488753993B8C5 -DA3C8FA50A35202958FD0BF2900A6CE175920C2EC7CD449D4DB189A50958BF17 -644345CC38250088A694CF0F482ECC55ADCD02E17B3CCE66213A6163B8B44C9A -89068E3B5301D2364F85BF9DF7C77342796363A7B6B294CE26DBB9179DC15756 -E1B32CE919AF44BC79A3AA8FDF6118345B2AE03F3B11D57D9AF50EBCF7152E37 -15510FBF60F16756FC674E2BF58E88CAB2CA2E8B47F50096C51179684331FD61 -8B34520C9C7D01E1511C924FA76B3CAF79501E0AA2C6E1EC6F00CB6CE24B4123 -F493B149B5A5147EF6BF1EF3CD21A76945B95082E1FB3C5A150D8AF793348E8C -A988354FA46E3775486A6999E022EBE293E8396C8F9416929607730606CFA772 -BC8388BA5D64B79E52DD2048ABF21661121A001E6A75731B5DC43CE040396BD7 -B85603C8A0F37E522FD0CBA63C454B12960451CE65A69F98FB2FDBAE725C0999 -05FB68B4C1D320F5F3D61FA8446BE6F8BC46AD9CFA5674A3EC73B8F3419AF9EF -7A1A3C9EDE3BD6359902D4B5F3AB4E3FF9CB2E1937937AFA182C651985703F20 -FB70E37AADED6345EF4E83CB140FF92310BACFBDA11F2CD5AD93AA7563D7426B -0D4B6CF9B669F9A702956CA845E3814E4B5491E58F8C89714229942165A6E8E6 -58982D89C4FA7BC557214BF9ACE2C63AD88F2D1B18A04F510211687C35AA1F7F -D2003D4E60400B95E70422024A7111D926F1B5A77074910710594B95680CFC4D -911FC16B928D9644340A9D2382767FE6AD453E8E4CBF19F77D3DA2934B11FC95 -A6900C3CA3F2B6AE4290A005F908305CB37700680D76C4999AFE509B18305D28 -88C36292D6DA208A8D42F8B81FDEA7E93EE59D6AF3F1A3522EE91BE71BC655B9 -79C49B033A036E1FCD94FC581AE732A224F055503CFC69FBCDEA39CB00DC8A0B -4BEFED99CFC4E44ED51DEDF9EA825FF6BB97D316726531CB4BA083B033C0B69B -8068D5D3E3E31DED5F6267439F149549A6E12B00BA85818AEB491978364D9F7D -7375CBD6C5511CC846D0058BD2CE5467EBCEACE5CBEB2D33AC8E12A84CA620EA -99A0ED916B7770A056F6A9C361CD5118B5DDB10A5A4E643FFB8FC5DCBACDCB28 -696E26D030C5918548AD8B87E21E1B4BAA91AF23663CDE350A21C2CEEFD28947 -BC07BB49404FA39F251E36B95B7338EF03F2E63FBE0E023452097F21931A2599 -4EBA7BFA669EBEDC0F5B33375DFE6DB1638D19D4B5112B5338B14C93F707D340 -056B2B75AFE418EAF9CD57ED842F7B5FFF037B3A4B369C63E4DF9F0BDB4E39C6 -C5BE8EDA628F1C6FEEBC9D9886DBE502CCAA86092646094118069757DAC25C38 -2CA53CBA27577BAF2C57196489CBA54B96C650A1C130184A4444CDE2D0CB1A49 -FADCAF1FE3A66334F85FAFB00F142F28AF2D8FEFC29FE8E0FDA448F181040BF1 -62EA7AE75100BA46B49EF30F596CD9091164AF70666E254938BF6A44F01BBD2C -4160164FD89FCD358E48908BEFBAAC4411B52390CEED6B46D729698CCA8E164C -F77CEBB50C5254F81570E414B1E9E79269D3B2575E161620CC732C0405A29ED7 -1E5A6597D35B11EE08DC09FC9C27F0126C22C73A0EED657D7F91790777E7D8B1 -EBAFB0EC9ADAEFEF7F6A91A1028E46D76289EB1BC15D3597CFCD78D88B633759 -93CB4477596E28A1E413BE25D513BA611757C994AE812C5A6D9AD3F770499252 -C7F53E585E03B2FF056EECFB7ABAC474A981D757AB3B6F281744F01713782887 -9BE48307BC5516A067743C054A3927E015AB0B2AD2D80D229BA32FDAB660C3C2 -40DE8C83E1E4941B8D765B879222847F855960604EFF94E9D99E4AD0FF2E887D -54DB39B984A9E9F69ABDDBB2A452661703841BE79200EDF24C4172D736B461E9 -8BC314AC1CE1650083B18B2AD809B5F2DCB314651433E357042A8AA73A184D38 -290AFF0443C4A293CA6F04643EA3C313FC6070D76400B0BCCEDD20B5F0A67200 -01584F0062794AD3D82C83FCE4380E28312815EE20DF3DD21D381046940A8C96 -4DFCB07E5A558DBF1DE489FF4FCD1C851A597B0EA58604BD16DC8FD89B9E70CC -36F99E8327E9112D98C1AA1C355FEC942E879C3CF8C358FE955B1E2518C81270 -9BBB3F4BDDB57D04685FC0D90AD3566A81086B3BF196B2CDD42BD1455F588342 -C817CB9E0E75A0A24BE751B46DE8DC974554DF975D02864773F2EE856A0CF595 -0D614F71A1AAF4A72DB4E5896AE9C2B33F993C006DD7F644DD1B3AEBBF34AF8F -A809C51EEF38E3912E82F7F15F4DBB9D6E5D7974B1B871AB3F3A48B72F0356DF -CAD862D11273580D1BEC9E88931B7B9C74B8AC3DB5F3B3FA05213D3CE48C0F2B -237A7DDC33D850D1B2B5B8CB7CC1A1A2221451FFF0AF88175EEF18EB932F47FA -9A8A97F92B6E2A01CF8BDDCEED9E1776A1A3D4328FB7F8537689CCE7F145A8A6 -2DAD7C9C23C0DBA934E4803FCF9E7C292E67D748F972415E62E56B60DE016930 -B82AD792313A7D1CE655B0E08076AEE57E1BA5FB00FA2B264771507126FDEDBC -688FA19EF5A87B5958A952A2CE751BF57B84FF314D5A005C32D5E7B63A56F336 -BE5C5BEDAC69462C93252A6C5CFA9C3AF6C40C8A2D13A738DBC1730D665FA91C -60280FBCCF36E3EDEDA845C74817706474551248130533880FCB0B81C5BD0340 -B85157690619844D18A13AF540F18DA0AA3B172636B1FFB5380D937F11BB8F48 -E14384548CD17D33133B624733533E20C1C7A68F32C814E73C790EE009EE9721 -FE6B3C0503A45BF0D1747BD8D5E55E0021A12F97D8A913EC9AC33856CE65D0C6 -4BECD978E7B1C5A22FB51800C9B554341C40C619DE8053C50A3828E2B2AD44BB -54F2D6AD9B0EF34235533491A2C369324D5045A6A72041FC486D20370D571D6E -8ED76A32C6F4CB552933AE68B1E71945F9316C6F5DB23CF258A27C358D8F207A -0B19A734F426D447CD45F2ECA02BE75BE30DAF9FE2F84DBB35DAF6663F34D0FC -C25F317EBD33FCFAA24848D0F56B54009C105B42BF5CD900AD2C1393D57EE2E0 -6438DD0ACD28B342F813A7C9C0D1CF42E459589F5D7A102F8551158611E14AE4 -9033B687C0D41927D592D79F14FF0467EF256DD23FBFD7AAB6D514C0A7204009 -A1B8BB21323997EFFBE265D369AFF7093B13E98A26AE4B55F9F5F5B5EB77D844 -7F1ED62F1A030DA13046FB40C94080BA76C9C7F25AEBFBDF76997DAD76884D80 -854959216CF55D0A4F13E559B9382617523947D1E5BCA59E7CE7BE0EAF7C269F -4887C747072D7C96115B9C1145CAB6BEE769A4CAD44518413FA7BBEA3DA15BBC -E07087389695E766B103DDE55D1F8C1D04F9FB3334A36942CB754F89EBF3EFF0 -679DF5BE6C3E6616B77FE1DC41B111A8029140BF783F2F27268E54CBCAABF4BA -FD116E27995957C0CC70B58A501847218F77F84AD941E244D1A72A50F537720A -4BFFD96C7FCFE7B4A79A0BC31377D462371E4024166CDFE5186AEDFA642EABF2 -9FD28CC8CC0C57B2C883B10357C5446D501D0803338FA9F50816D17F6FEB077D -5DCCC960972610D8AD90DCED3B00F6FBF110FCA7E929E7D393C508DBE61CC834 -EF0AA977EA93C2A3C9CDF7E5C608F838B1B3CB734DD982A1AC623ADB79254851 -474E0E1C2AED4B35A9A18010451F2D7482A9DAC24942F38E8B1AF5D2AD6AA0D1 -BEA5DB0D318A434EBE068EA54431DCC06FA6F926172B8E50CF99A61745EE3372 -49520D7C1B343AAF52BF71F3905BB01CC894D8DE06AA256BBA16F57EDC72094C -5AF15066607143AFA5878C3090E58FFCA4723DFC356BE32A4F3CDFB06D012A67 -892C6A003A3882F41F09AB778C8E8E10C1AF7C458194706535EA8D4072A61E70 -9176ED028D863C9E5A0AD6949F439A1FF4FADBF40E5E928CEA8777FC00DDB0D1 -E822AEC89BB6B4B336070F0D2BC30AA4AD2A11DBC1F8B9B0549D50949CD3F47C -C71FCB5081AF3D9E311A28E18E7FD6289B11D1A39EFF0497D9795B85E260F970 -799696C14BA5D5B9151C72DB327CCE9AC8AF75125DA580A2ABBD51E4F6CB72D9 -9ACDCDBA1CD5C9B03898D71294D500F3FB5CDAD4397430A86D6B3977CA15A2CE -1A87CFE80A49CE46988BEBBD8A7860937AD2DF3DC11005ABB4773ECF0007BD95 -BBF8837949DAA8988D6BB30E422E9DAA401D4FFD63015B094F0A457FCF9AAE88 -3F3E024679830D4150E525BCA3498B184EAF19AD2867770F1F03469433077651 -0094B6581D5B0E54EDD40111A97E60E73C0B9330C9CF68A003D9749902BC0ABD -8474348A4869B6FD17F55C705C12C31A028151848C6737F72698D1BE9C7088A6 -29E22CB19BF8E3042249D0C2583101AF3ACC511A810D47A473FBF542EC8209F2 -A3D16F24E2DCABAE3CCCF382BA30E258AB884479532DD04A6DA6604DF2B32625 -B3CC54C079281BA50EDDA55B30154547E9A8761659AADB488A018AEEAF68F80E -0C7034F74267EB98E471E5BA1A9BEE783C32BE433A46FB39D161210FFB2D862B -B62B8EB2B3C4A5C51A5214B96FB4FA1E040BDA70507B5B20071E401C23CFC0D7 -702EEEDFE1CE5419628C804607362866A89FC32212EC9A32400E65ACF2AAF06D -2211C1013BB3178BD882E77D1781AF39374641925FDDCAD306E8C03E28FE4104 -750D9AF95BFA667F3A2992A1DD79560AF95D3B5398CD3BECF601C7A42B9B0D30 -943B26DB414F1661C0EF2A1E8D8191E649AF2A33D3F1A4F340F7CE44B95C923C -EE17F390D1A6480F1C10D55EF9B8007BD1FED5ED6123F9998225BE27A8E6E2B3 -5843A30AAC796EEB9C47F143C965AD99DBF3AFDB7B491C465DB02CD8DE18D62F -9E3201C95B045490043DA9DACDF9DAD3E79492DF5B2B33A85B2610A1CF604F98 -913BB447E6FA6834AF454BA5D841B7D8EFD9733FA010ADEF81A2E4C2D6874D8E -80811743BB114A07DC96A66E8520A4054BC1AF6C080147BF8C0B55678194467F -909043328297E38C777DA2104B14C0E7C7F0D6AAFBD5CE82531DA83DAFAB4059 -70DC981AF4E6A75187B499A13D918600D4D68CB073BFEB8F4EC1E48451E10236 -ACEDF95B93467357C7028C6BC1AFE878E1988B39DA06C2123727AA6549815BD4 -E88BE89E04CD0D9226C8FC0118CB9DE223ED54684A86284D3F6E0192DD8EC04B -F1E5ADC9B5001C6A5D57605EAE071648045C256B743E02DDE3729D4A2E82BD0B -A448C6153732FBA2B507607517E0E8F4B3A44A4BA58D546C5A446100B9D94033 -B68D986182DBE076AA0BF2BA88B85A1EB27A1F4F48C77987A84E9FC3F2BD19CE -F0359FB3C2C0E4A1908D209F78C64A1B6C4F6F9DFA036B764F87715B7AB94E4C -153F2640F2BBF27A088F1BD64455648CC448B808F15FF1A1209EBC6C6FAEC16A -B2D161F097766B771C80593A0225256080B651B0BC64B5D07A04DC34C767A796 -B371F1974633D579A7BBE8F5CF1152AE55F7F0766A316CEBBF79D7C59F11DDFB -6A89E19FF51BFB7DF15FDB6045892B586B6BD1C86C85E01BED07F0E60270B4D9 -2302E6572419FCF662763ED382EAC4FD445BCFC78F62C1CD65F9D12A35EA2D97 -22B818CE6C8CED2C7EEDFABC2F54E043A9DD67645050C2A715093A7EAEAB21DC -99D14DD19FA2A6A268171AA569A86E6F879F4EBDA7A992F2F6F4ABEA25C489F0 -E4123EE182BD059A8515708BCA74846920202EE2ABBE9D53DC2CC16BBDAF02C5 -BD46600A6E80BD3A477AA960A4A2906651A7338419529F30755BFB064ACF916E -9F4D354C309DBDB3479EC7F9F5EFA0058E10742DB647B0C45EB886A2F997DE9F -534C01676E9EE0CC91DAE378111A7B0359978A43F1CE9EA98AF86FB5C59A894A -B418CB112B4BA5BF017A7AC5D2D1F003FB274715A1D35B4BCCE309FDB9EE0DD1 -AF8567E3F5002155C6413A31D8970CB1A42A6D6E16B67CB24D1609EF671DBF2F -B1085E1505CB05BEF96770B176A19F521D60B2F9AC46A5464A2401E2945F4559 -1D0603255DCA93B1F958381D3DB4A5FED62548BDEE0CBD9977AED1F17A00F19E -1CF565C08EC5B4DE3C108B15615285BDB402A4480EFA1AD102846B3E543EDE5A -5E6F7D37743479426F267415347E4C356B92F7D5D4A0632F333E5CFF2870FE19 -6C398FD66A952EFD26CD6C3BBC23041CD57D0860BC421D710D06E2FEA071080B -56212A069CDDED701398CD9185BEEF08FA0AB16C97C7FE79FE16D6A6B11B7AF1 -A8816DEA4F99D2EE29A357913C51D569700D5C84A52ADD60F9E75562567E9AB5 -E35A1A1F656D12D0EEBD2AAB9846FAB4F7DE2699CF6D100E973DD0E5373289A9 -570A364A562306BF8501CACA8DB84C63F1EDE6BED1432B138EE201635897586E -912EDC76BACE7047C529617C42582643BACEA3DE8B895B2AE895F77B140C4E15 -69E8ED61B57223B2BBC5C9E5A9A4475A2FB97BCE4DBF40280469FB1C685884ED -C5974BE43BEB2A20AC947BEB1CB5CAC0A35E0D7671702AC28BCC4A999E57DA38 -194210379106144B965CDC4F246D0CACA7CD201A72007CE0C5FFCC37EBCF76E9 -45A77F7FCF51C434A9A89A020CA63A27A65972C05887FBE1BBC42B4F4F73957F -7D33819A42CE80975F3034FB97366691F43273B5B93E472B51D792AC8BC7ADD1 -3519A5AD82C8A0087853DBEA22DFAD4B8534D21B8FC56316AE951E53F81EDC7B -CADBDEECE84759DA9C23073B64561BA02B8DF0C2459165AF170FB95B316201BE -D38F5982A2609E1BD8FBD493573F4E52843A2CD17B30B715DBCD82146AD366A6 -DCFF854DEFE6B59491BB56B0632C28D29AA90C76DB5FA0C1F9B128B9B12D53E2 -DA7BF86CDBB5E9432751AC5476690DCDA8F8F8CCF639FDBA2DEF0CA00BCB5011 -CECD240F45B271B6015EB7B7654CFB5DA4A2E8F320FB1E9234B98626D9D8D8F4 -057FDFAD9811182BD620CFF4DE2864AE715AFAD34840D128A30AFD1307FBFB6C -876DDE39C2796C1718ED8A2DA7D9EB4D4341DF3F534419618FE709DF8BABAF3F -3FE8288D735493B788668B75845CCBAC3F8C00CFE5E1552DC7107782512C509C -A20C301A0DB7BCC34CB41D75A104E27B6059B0C3A6C504DF208CC3BF011D04F1 -2AE2716010DDF5AE6133701AC7058B43118C84B41CCC0DC299B6606912276854 -4B83958032CB8EBA71753D1BEBED53D2EEA20CF31FBC5072B2EAB23AEBE5248A -FA27968481E19EB28B98414B7D31C7F26BB1924B291C366EBB48C571B3A7926F -749B80FA339E44259F0119A5BD8B57E08DA3D0742043E5BC1C19A346B4895AC1 -3A04F9343956FF300493843F4E4B099F729BD3FD908A6DBBCFFA5ED0215A0BE3 -35ABF720CF166B5BCDD246BF0FDCBE949150BEF341C9E69E05FCC71E0C3E16ED -4CF58BA615D931F318A071CDDC95EE4F7C5115AEA57B7858628F8E13DE33E771 -1F57861F42DB53EBBC4332DD5D3F96098E01BD1D66EB13144C2CE6A0558279EA -51742CD7208D1C1E65A283D1CA73556856863CD47D78D1FC79CCE077BC2E5D14 -F10606DA0FEBF17CF8401A6CA37CFFD262A87432223A80BB1ABADED4261D46EC -A83D208F90699DE6C9A389BB96F6C3F4E02777D308C2E3F508A14E21B1446E2A -33BD47CA44355E7E128C73B9B3CCF46F50760248270603260C40BD9FCA63C01A -F3270E80DC263E0B5BEEADFB0AD0EA48ACE0023AA6EBD736AAD1E999C492C674 -167E3746D71B4F58E6CD01B59C73A1E3AC18CEF0891FE511EAC8444133133AB4 -DC7CB359F92E7C53DE1E022B448E7E4E566D4FBD0096F4583EDC6756797D8635 -523B99ABBA63EAA2F25F1AB5F7C687D41B933897E1F8B27A6952E46381EF63BF -FBA20918503CE2EC45C1A17E29CB5E462DFB547958356E2FF656C3A7C600F28A -888A1B5DEE4D72CE606CD61AAC7E426BAC6119584F552F04B3D7EC96ED1EF048 -0FFC3B36569070BF4FCD2E46B3792E3A365D695CBB7E4826B4C83B1BFA88FDD2 -133A119122B249CACAA06EDF17D451B21136D01E343A78F365A0116510CB5C2B -E947F1ECF2A62A32330D778525EA0D577B8F84FF34C27E30FC3C650697B96139 -C54204EA3DBFD74E6C42281A27C121F757FECCE281DB11740E3A56F380C79471 -294ACA3D94D03F62AC700C4B9E53C55AA423C5E0E7581192DF9CBBE60753DD4D -181FBE50213D9D0705DA4CECF039B959308EDBFE219BE4E0541D30175E448717 -8496143152423969B755D9CDA8B1329836CC618BC0994B93DD83578BA6FDBD21 -AF4923DC8E1075B8BEF515738F2E681DB3D6E9AF5F7AA7BA32FEA6C6C10DA83B -E1E01A0359A25C564AA1739D56FB040C56018CA5E8F69EDDD735BCE0EAF3EFCF -7E9E6696C48AE1FA14D4CEBAA680170D300027C1329DFC81CB6C2349EE9789C0 -D15F7F2E1490447870E09FD26D40F18E5DE32E945996FDA4E8A9F77995C9AEEF -24E82B7F26D107251EFEFD92A62FDC3E46E357EABF76D4B7D3543F02A33941C3 -0EA0A9E1691533C2E2EF79E02E0C4579794418496499C47C1E01C03D30616371 -B14C9850A0FF427FAD4F21FC84777EBB8B0CA14F7526C37779D1ED6ED2526E29 -1072467F0AC8079F509C634445322A859FF846F437D6455A0AC702D59B0F932F -0EF41B329F42F83566FBA693B87C45E95D743F6523DE11DFA2CF7144CC329060 -BE3C24F17A584998B4EFA6E48CB65ADC840D6554793A9647E3BFEA0B865832D0 -9657A13D20641ADE20DDAC86D26583F5DA14101DA5C971CB385FAB7F4848CB1D -8800CC239CB3A9E79FD1CCB5A667DE7184EF65A459FFCE472240A803D0ADB5C5 -7FD08B11C77EE7BB13B787DF3E01B99D57D101D8B209B6F7A274299E1EC57BDE -0D385104C7C0D5F0F835EADB865073C334B74BFD2F5F34705E07334855658D49 -4A1FDE32645FA4DE91CDA7B17B941D0B23F104BB3377E983099AB3B61F794956 -F4854DF574FDA0B4C356C90ACBA0963F98390FA630BFEE1E2D9F995FC82BCD6F -8C658B842D9574AF472082B60E52CC67070DA5AB29A7C973C9399749018CB904 -88A6FA21224F8DE7EF9F8069B12CC04622CBB7A0C55BA8AEA0523C6D4A64B089 -27E52BBA3B44E98569DBB50ECE9C48B2DDBE9502680E5B618A30C4B95DBEBC91 -9BA2355A940F6304770E70DED7453EC77B3C9C732C9DB9567E4193FB23C89592 -7BB60137EDFC52DF7B06F1262DA52F926E48CD5A750F71FDFC573EB8462845A0 -4EA8E0DAAC302A0EF2A156444F8703D5702EB6C9B58DC70F7F154C0F22A6B53F -573FBE610D2A2DA232B21DC38D37D56D147670ECCA5DD005B990257691E5548F -4095517F9FDB1EA0670BB3C325092635CD1207F565B27A6F901AD91484855A71 -A8683156ACB1A795255E8EB09D32F598E9475C97BA191469642FC49C81EE721F -77B6363572A188885DBD798057AFF88DDF08724DF475B00BB73F681D975E9CF1 -1BFC142990DD34F2E1726FCC8D9F10BD9FDFA8A7BC92212709F00855B547E630 -C26BE4D5488927E8992AD160D8B55FC68C0F1D6A54C0679D275E58A3CAE51977 -B8048A8C2455D58F200DE978859A7D1FC44304C7EA735EFE591E28EC3DD083A9 -9E53D4EA808E10F4B9F3866643E2A0D1CC177FDB0F2CEC6C3DF9B1A92A6ACFAC -08BE08436F708C3D13DB49DF09EEB57866CDD598B663F10AB42CD229E6325317 -F55716A44C75E7CD8D2B292DF39DE5040DB9F3563CFD2C186065730A0712D446 -501BAED4FD53A9D8F521624E270FA7F932294726E4B84A3FBB7659AD1C5A9240 -DAFC17654ECCDC38A9FAF28F301F10E5923F33DDB0B9AE116143218BB22BC3CE -402633B164D6E4E3B3788216DE8E9B38677C71AEF5DD109C63641AA99C2B2DCA -EB99606BC079F386CE077B9647CF93B400D50D11162AABEB08F42A19C52F9D68 -80FF02F006874D2AA3F41BA095DECE25CB7E021C91D25EFC992390C1ACB76357 -9225F06096DDD549FB855CD9F8FDEEFD1375D702E2E806760529475ABA67EE50 -B70FC8860FBBAD5745459DCB1B8AB9F1EAA5084080C2FF89141FF10B459DFB93 -2C35A171AE9219ED5FE507CE7E3813C94F346E924792B1130E9355628980A18C -6F808F28C396EC813617EBFF922F73BBC8651438A1614C9F24043D110A589B89 -3FFB6F4E99C0AB4EA4E50A6284644137F093D527AB9490A7EBF6140D9DC1FB98 -5090CA16E9F08BE79B49912963719B3B35A442FCA493EE5198F9916F8655005A -9EE372FC4404CB4168F82F810A58371ACF7AFD46CA46F2F94B194429255A9BC9 -4185CEC1C929945451968B0817842B3BAA28A1CE1E10B6CCC328E0487CFE90BC -3BD9EECF5F8FF1C99C8805A4970CD486F4DC9BAB0129E86B1F67F08070F04A46 -B0910BA9E173FD4DCB568B08BBECFCF6695414662DE690BF32A90237C8B0E72C -206D09A580DC92A135179A5E3F1E611A3B05DBB05E4A8D51BA3D0A165D3C40A6 -AE013DEBDF26FA757F6CBC881BE672BB467C1920C067A0B2A49A532A391A8E87 -F2C6E50D247AB108A1740D4D82F955A91D49E95259A3DF9715F34CB45ED5DC9A -77631A4A1553EDB8D4ABD93869FF52D3CF0017CF887B408C02E8509DFCECDD27 -A295ECFE0332BDA5678C4393ADDD5D171B5FBD360CCA5810F79F5F879939DAE7 -892D53FF5F505CC0501BD40590420A291BFE8E67F09AB7A3E0665F6AA8FD04F9 -67C4B0084C48F9DE8F7E0785F3261844E45C9F5D4A45855BC5B7E00CBB865B31 -2BDBC1B1292DC374B6190D12246DB97BCF04F679DE3605E532451B3E9D7F5997 -E1F353BD1E35CB11C850C9CD5ECBC40C9685DCEAAD279E315FCF85855D6B40C5 -D0FEE8692D4108B04338A70A50BC6E2C04F4472E294A182B88C9021AD8C0ADA8 -0C7A752F764548A51DFECA58D6E39AB4F78BE0A83DF6D60D25CB0F328D8FFD49 -16427FFF198D1FC3F574B3271688A31DA28952EF065C884BC0FFEB547360A372 -7C39E5F2FC458831B9C42128CA69A8198FA0545CFB207856D6BA97E113FF7E26 -DC46395E649205C83DC7565F4130CD6BDD44ED8D4D383D0F37B34C6F2DC98CC7 -4F96BA2722C996879329A4B27089F0A68FD6355D26946039F25D013AAD2F22FF -12FD7F617282C6F005A6EB12554C47FEE2A5B1D0FC7C595B9DAF268084C91B37 -5FE0ED62A934EB511362D1F14BCAC4950EBFBB2A3D1F45C1E34498871CB4C346 -54B7349577D54D26385D784C5E3C2D869A7336159724FAE151FAEB10E231F3C3 -A17B959192186081556463C3F5EE6FFDB06E82B8B9BD08C0443D8CD84BD6EA7B -1C2BDB46327CA21FCF002B3E8EF4DECE86077AFE6BB5A941B9E068CA023D54C2 -8E91E503F48B0B4B96ABB07F084C2EADE9B2F41415EB312B9EE0612E69F51177 -654AD20A2D93D457E2FC3C66C3705F9B48A947329BE59DC7B871C055C590FFC3 -F6B5FD8212255D25EB7787E637D5CCAE0E1EA386BF0B911F414BA45E30F36CCD -6F5A17D0A887B5BEC58B8E8D228E12C9568F820A7F820B6C9B6631EA8C2340EB -377CEB0A490166FC33AE1F38D3629C090606D3E8AE8662A98D6C63793B1077CF -092624F46AE4548DB4B22FB602C39EA2E74B5A26DCCCD210E043D508849703E1 -451C8A9061514DC7312755EF16C2165DC1DDE554A29C8AB6F9ABC9A5127041F9 -FC22CD3BF15A4A23DFC8FD5661DCDB1E1E1EA65E77DE4A8D60A2E564F467F071 -5C8EB4509C3F9A97D0371EBBD4584430AC8EF155084B63B9848FD4CE2B5C6DB2 -C3A1946B4BEFA7B088587F912D20F0A2E15A580584441A4742312DD4B34503FD -338BFA7BFEB94379353CE264541D33433C4E996BECF418A2E3295B9961FBDF28 -77EB608CC870B97D9EB43FC3AF2DBAFEF337BE2F108DDFBFA090190158A244F0 -8A757A95FF8E25B6FBCE09A1DD6FC5C8897456E12AE7A9AAAF0E42FC632D35AD -EA2C00D7C61E047CB071163F05FB5ADAE82D0E177BB7E6C9492C2FC9F511F75C -0FCBF74F06E057F6B66D3F72873559C5C983DA7D7E75EEF7B783EA44E4AEDAFB -2FD8C3779D38EFEFEE5BD565C3A73D307D81EC6C45C2F02B7B342DFBE2356484 -BE59EF6527E956D8E1C48C80395F34CF4AE1B8B5C2A06072DE5C59255ABA30B4 -3B5039CE2524141C0BA73CF79209B0B5AF17C59BA0EAB437802A22A2E2D6407C -C861A71EA547220134412109DFA1F6D78BB0C34F6FD36003850FD3D9EDF39741 -2EBB9AA349BB5801C9FCFBAB69E1D3BD5F4752663E616A8E1FE486545F3F1BA3 -8F8A11E4C13B2CF97A497C2333A22C696B499647DD7439D3D7B636FBEED2D32C -86FF745763413B53E064B16E5BF157C9DF7313FB9D46C752B52E963BFAFCB392 -531F4E46194A3BE24E2F51EC9BD57FD5E82668E2AA9D72DFDF7F4500C1B81526 -C09DEF71CA6D3A3A7ABB1BEF21E99DDDB82D307BAE2B6FB28FEFA5160E18304D -25B1665A7375FFACA6C843A0E8BCBBF59FBE24068A79ED68A6F45AEB7201BB6F -06EF67DD19243E68DB34025209E851DE3AB65D10E108316E733DFD25B0F8CC8C -056740761BCF195AA6E1C2857BDE85983408D400A96EDB887889F7CCFF403606 -F9C01F7CA76C9CEFFFC9AB7D3ADCA36A0269283F5A65594ED68F43DC1BFC6117 -1D113760B0F469C34CF089EAEC99C5F7448BF6285DB05D35CE182CD80491D88E -3CF21FDB249EC96516EA42BA9A716283C7C60A1D9E7EB9E217B2B4EE5F316110 -2DECF4D895423D64B87B776883FA49225B6061E820C9425129736754184CDEC0 -67B63E5D07A455BE0B9AE382FC997195AE0AC4C07FB761EA5002C3943008F7A4 -BC04588165242A9F4C31E811EBF1E145C2D102D1D7C9331EE6660E054E74CD7D -8FA19BEBD2F89BDEA0DD0B54B0E1B5EBE3E9CB1E5A1F477CCAE0955BFE9950E0 -01211AC8F3430F958A4DFC6E74502D9E2EDF5E2CE261DE00D8DA75BCDB83293A -0802B7D5F14BE14380DC1013877AE4624853F3FA041F944D19185862A8DCE73F -5F0181BD84C3E65AD11B2F0A2FE36B1803084E82274CF4BE3B0151D309C3F104 -771C6DC985D7DDDC77BA40D844173A9486B539DCE051DC82FF6D6831F99B9891 -48D6B027B8B6B6279E6CEC7D0606DAAB1A86F2309F1A4842A1DFDD5116FBFEA5 -0AB6C354CB65782464770B72B39DDBA2565CDE941D68ED928151E23675B541EF -33B070ACC0ED70A3A18D0833CE7A90C911840E06577872FD4C3A67E7C195F73C -2418EF0889AB1AEA93269CB1B98CEF136DD38DDEEC2450F7C5FAA9775973E178 -1182455E0321C4DF13B1EC1466D8F5BBBFC38A2A054B57FED2E429ADD7CD3EB3 -425F266AD5F0B37576EF54143D42D675E895EF20F54E1CAFE0F2A2D2075B28FB -EC034601A147177976623733D6FC00CBE2DDB1E9DC5DD9E7D12AF9E589843FD3 -607AFD7DCC3AC648862C559B98790640A78E112B757B15FA513A76E1C3AC4074 -DD520E94998D5DB08C1D3E822FEC4ECBFD1E398B480AE01690B14BF92948135B -4C042F70CDF3B988BD02CD54CDCACF912AF09C0C59CF23F84094E5C976E6392D -D7D5ABC68E9EE23C080B564096A30F67241987999244686137175D8570DE9AE4 -57EF670B5576BBC1C0AD4E26D7817B202674F70CA62A5EEB882C2ED1C6272C00 -5598595DF2AC7F82FD1C9606183157EAE7575B07828BC2C0B2D171F86BF3900E -43FFD4F6463FB5C6A1201D26A8B58677F7CB00C5CBDE1FABE2641CC2172775C6 -3F9FB0496CE71E179D70333A628091B47A3100A5B4CE624EC9CE5E4D740CE3E0 -0F03450F95138A0437BD3A7C4F6FAFD1B8B2A0EE07FDF76E427A8ADEE7CBED56 -B57F9522F8CBDC3236224E6E3FADB549018E757E090E1CEEE91C45C032CF1F25 -67FE17978B998DEE1635236EAAE953623BE263D2C444327E91C4EF9740B768F8 -70A6CFEC3511252D7432C96E5B11B7AA80BF620B63B82AA4777823F7D0266A75 -6DDBBC79CB7EF862FC8AA67C07B87C40EAFC0C81C122AC0348F7702E95760F93 -33508D7852E4A494F5C6CCEB7CF67F1AFD391977AE0D85397BC85BA02C0C02ED -51C9489230B568BDBB8485087350E140611053373E46EDE979AF4C1D1047925E -9F67E9708D11BC71659DD61D3166B156670D67046AC2EBA08A25FCF2B84E7BB9 -56FAA25B67004C1D6DF8D12D4E9F1E3793CC1667EA7DFD6D67243DCFAB276AC4 -DA755EC98D63C11D5D10E59D74A4CF627F699F1A018B2AD652584A810B2DC519 -549B2CE246622CB20DB69F25399315A33B244BE0C05FEBAE53D00E4E266DEEDB -D1912D49E6699105767FE996B0CE64AF777E5D559D36BB141456339447216362 -59721641A762F6F6A54CEB3D0D2D3F75927E362D6A6A99CA6A8BF739681A60C3 -232E952935AE9B34DD4FD3D15385F5A30B045F3670D517BFB924BCAB0371F3D3 -CE9C5161D8C634BCCCD3134F8AE366D3D7B2C7B32EA89FD61231E30DD3DC1BD7 -FD295D5E49051F6C35DD7AEF31CA904FC20F36F19E0B9B838750868D69A752BC -64398CF36B006D8313D0A349C9D93AF56F0E01274D9AB369309B9F4E4BD0B8F9 -C6B3C66F38C3027CD1AF8802BC82904F3A619F89D5CA5BB78150A8D39B9A92A8 -9B5F5BD2674CBA06F7819C0C9261EA9671810A804C1C14CD6A1D7116F9491BBE -269653566173D334F26E76CB8AC3C345D47220D777449AC0E82B435A2817AF7A -711A664519CFC16804C966D8AC088DA2AAAAC79AE21E7B538F3554B65CF29AC1 -57B646E6BA127A7A0B169EC680ECF5C230CAA91A9ED6AB2A54B8EB7E8C94DA78 -67C22B180ED661264EB2004EEDF1923FC5EE30E0A6F87DDC414B7507887F8411 -9B999F25ECBDCF8FC3D9AF99AB8AC08736091CA28D78E77354F3205CD56F9221 -B6CB6D81A34E3C954F73BB23BC73D4E4E6B961EB4589E5C2E21E426D78E71958 -3782FAA65DC184CB4944FCBAD6ED0A882F8767E2E8A8CF272683BBCA8A4657FF -8E856DB3188939D424341DD0D9B8074461D8F15FBFCFA7AD63C81C4F51396640 -9FF1B14685624376BD753D186F75C695CFF5BF63EC9B20D2CE365BD0A4822069 -686C8737732EA874127D96CE11F889A71071771D8356A5BCE475F98D79C8CA22 -E98F5175D0016913B0C927616AEC836578F02024E3D4FAE49F428F68A026C592 -37870C5DE3A1833AE1C24D461FEA -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMMI9 -%!PS-AdobeFont-1.0: CMMI9 003.002 -%%Title: CMMI9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMMI9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup -/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMMI9 def -/FontBBox {-29 -250 1075 750 }readonly def -/UniqueID 5087384 def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI9.) readonly def -/FullName (CMMI9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 58 /period put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB -7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67 -7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8 -BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365 -82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC -E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74 -91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E -540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112 -7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8 -93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D -EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756 -972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A -6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149 -796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94 -DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B -D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80 -E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D -0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83 -F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9 -ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97 -72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F -F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9 -4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1 -692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C -BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109 -4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1 -CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59 -41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A -9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20 -5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292 -2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5 -8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B -33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28 -03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1 -749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE -CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE -3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F -64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F -90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05 -DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8 -F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D -4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF -49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4 -E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117 -58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE -88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3 -B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE -7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776 -01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46 -19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41 -194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55 -53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3 -F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4 -412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6 -C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC -C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108 -4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831 -E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81 -AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF -00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A -E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91 -C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC -B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8 -2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980 -F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50 -0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023 -28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4 -E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A -C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42 -20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B -7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE -5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4 -74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4 -90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55 -3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621 -98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066 -54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7 -93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC -19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A -9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD -E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84 -A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB -107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA -5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08 -22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95 -B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D -403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789 -D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6 -20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6 -943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33 -AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F -A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70 -B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA -2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84 -2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F -E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D -E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F -8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642 -87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4 -2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842 -D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC -512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4 -4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559 -6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9 -9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A -0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040 -9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B -FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1 -430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8 -56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE -718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3 -F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE -95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B -EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE -6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7 -6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867 -630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111 -6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA -89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475 -3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2 -90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47 -38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34 -EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9 -B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376 -9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9 -1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF -1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C -62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5 -84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2 -AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618 -D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196 -BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6 -4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6 -531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24 -FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2 -43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256 -D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6 -0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4 -E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53 -DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358 -99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD -8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1 -8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73 -A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5 -362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3 -C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79 -E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2 -07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F -0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6 -190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4 -5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D -F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50 -005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8 -6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C -D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9 -F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087 -F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE -2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752 -F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0 -0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD -73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2 -62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79 -5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98 -F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F -6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7 -DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109 -EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222 -E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107 -536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18 -36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF -B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3 -F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0 -431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB598E51CAE7E4900 -5CD570C914EFBA426BAFF7A56FC775ECF5BE13F2C42E51EF96784E5201C0B64C -074AC229FF0BFDF71E6D5E08D8755D2C12B770B6466A9C9C61C15582DCD2FF78 -E9E74DC2B1CAA344EC0339EBFF92CD2CC1D62E2FA8FF15E7459A83C6CFA58A77 -2F1A40BD276E76B675FD6834052B33BF9190F04DF6AA5FA3BB7D77A88DD5B600 -324C5E28216F47682EC29EABF35BA842BA2294A3D72B126EBB852AB741186C9F -FC84B12DC4A6CEC08F2D03EE61B65C845841EE17F1B765649A -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSLTT10 -%!PS-AdobeFont-1.0: CMSLTT10 003.002 -%%Title: CMSLTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSLTT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSLTT10 def -/FontBBox {-20 -233 617 696 }readonly def -/UniqueID 5000800 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSLTT10.) readonly def -/FullName (CMSLTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 39 /quoteright put -dup 45 /hyphen put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 58 /colon put -dup 65 /A put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 80 /P put -dup 82 /R put -dup 84 /T put -dup 88 /X put -dup 92 /backslash put -dup 95 /underscore put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3 -2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777 -6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18 -979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E -ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF -B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59 -A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA -3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F -D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC -6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F -3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C -4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90 -DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2 -753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131 -54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D -107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3 -7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231 -328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9 -85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C -2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7 -308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450 -CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195 -739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93 -FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6 -F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312 -3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A -A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F -55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC -A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB -69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50 -82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0 -8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8 -0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6 -0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8 -1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1 -D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F -B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737 -170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863 -767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D -EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F -AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3 -826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235 -8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048 -345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE -67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD -802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E -20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127 -5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07 -0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36 -22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC -4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF -CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B -4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880 -0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5 -220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403 -7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005 -27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE -B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300 -7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07 -A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D -45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10 -F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7 -C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65 -AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012 -DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781 -FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA -997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4 -3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A -2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605 -31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22 -A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891 -43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D -4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5 -94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E -425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616 -FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5 -51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9 -859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852 -E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F -2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910 -82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA -22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D -200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5 -892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32 -0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140 -437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3 -BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9 -E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402 -DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1 -CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551 -80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F -FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA -9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41 -031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90 -9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3 -9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891 -4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB -57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B -2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39 -0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9 -03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067 -22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79 -06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC -39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD -E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163 -A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6 -9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6 -B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F -79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553 -2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5 -8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA -1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA -0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2 -BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3 -312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3 -B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F -9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16 -A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6 -91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F -7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D -78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC -7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09 -766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11 -016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D -C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3 -8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278 -E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC -6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8 -B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959 -44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB -C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE -5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB -42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A -F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57 -CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009 -9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2 -82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72 -0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5 -F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9 -EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA -E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD -D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD -F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F -14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8 -BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2 -9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5 -6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A -6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116 -4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE -C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B -A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C -9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780 -42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE -7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024 -1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D -4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540 -CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4 -D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81 -CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1 -0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9 -92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0 -57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4 -5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4 -57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158 -8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0 -C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3 -7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7 -B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674 -EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521 -D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9 -DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074 -F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D -D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0 -56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8 -46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40 -52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA -19477F075ACF64D424279612DA5AE02B2A140048386D01B1F30EADF2050B71A7 -993773D5B68C6FE65EAC53411AC6E7E26E49BE5FE1079A8BC565D2CEB7E3B896 -593D720DBF66CDB26DA5D8E533A346845E31374A7C85FB6B06C3D54FE3408013 -864CB0954A2FFC00ED17CC167AF714716376B789A71059DF2032E0E907761E81 -F0C887810337F52662AF43FA1A7528923B0A30A217FA184ACB73207EB3018D5C -09EA88CA0873AE690E94D43B360D9C1070D7CBAE9BBA72E82EF9914D3AED6D1A -5539585EA969F0A1407C8FEDAB69BA3EEE3097D5B123C5770D5ACBCB0882F35A -E8A3E3B1FE3903A941EA2090266B60D218407AB99EEF38F18C9FA307D73E2F5C -42F8C37E2F668BA6B0779791D8404E2B2CA52E28F0B34C85250B0D6AAF9D2DCA -A12133B5B601D971345EB6D892B85FB971DB8C4A4188ADA6575DC6DC42D2F0C8 -4EB946AB47F487B6B4C4C59B2FCEB1291C386805C5B62B61FD7310A13B4620BA -650DDF28FC1AF21FA124C16EE8ABB98904F03E7F49E54348B1AF2211A1768768 -D62E35EA2EF7F2756B58168F9FFB5785DAEAB324C90FDF6207E670DF277D6AB5 -F0924B26BCF52CDA2980680320314F41244B73DA6367C434B5DCDB96B6F0F454 -89BE7553B58CB230BE71B2C7A7F1D63C3B1E80C159DD941027EA44D54767355C -6EB30D38D407FA1189474C2F9D3FD92F5CC6CECC63CF6CA6B33D77F08D274A1B -0AD7C2DCEE55F1B425BCB98F24D0BD431A5BAF6F42BF897BDE9198E6BB331C81 -6B5B63F3604235FB733A882BA5464A3E5415341C8E9A2E79A5896C8C334CCBB8 -A2047CB4E6BB167BD586FFC4A1409B4C13DA0B84608126D10754D562A9812A79 -F2B3078B7CD1D0A37A192E1D58623331B582E62291B6EF6FE3C92E8EC9A40C37 -B251270944393FCF133426FBCE86A318E16141654DD7BB12AD46B60A05E86D3F -14BDDE12FE3B17F9E2443E057FD0A25677D1F17C2BD87F84BA7D6AE3E7EF3EF9 -3DEB268B580A7823253430FF8D80FEFA0F9E4F66D0733E251E7F680B8B23B7B5 -A614F4FAEFAB880843451E4D9840AF7B8BBB6333E010A169528748AFBAE9A6D9 -499E221149C0AA19D536F3F121DF1AE056D3D0FF5C6D837BD8061153501F0209 -79076B4E0C63738C54BB31156F2273A327D3B6D0DDB5039D27D1C4020E90C94E -4A4B156B32F28DD132D2AB4D9CFE18B7851A65BA965382B23CCC0915EB6847A0 -B14492B0405395BDDAB36C2205F229891D989196608455629CB3CD67E07DEDB6 -A09E68BE431182D6CE52CE41B8531FF111ECECA60A68E7E7BDB6B91C7B694688 -47786E04588AE7D21DC6F2309D492FC9795DD054C150ED94110A7F89CF3E92F7 -4649D3F4C778FBF02ADA9E577C5EBA24A1F0278E9D9DC5556A60EADEC068AC57 -5359E9FD0D2E3E7B0006127F95F333D2BE77C70EBB163EA9679207C76C999903 -50D76BDAB2DF0D6A506EEA9C952A3D28D419FB78CC64078CD91C39A5D4FCD9B9 -D135A4E24E373E24047EF1180D3BF51DE4167F3945825B7124198FCDF7432E20 -C35BE9B0C7C0CC194867C4CE9BCD27860826C14749B811E8FEE29015CD65E7F5 -307300B316054B7914CB7464E6AA37DFF4BD0AFC04C0E8BFD1269E2D4CB5A201 -785C32B6B5656A7F6CA6AD8F7C77DF8F70B8F99C88BD8D548E78986096C917F1 -C0C195F4CE7972F1354B95D1BD84934D80CFD09FA14F3DF37300B5E8C208C66B -C544BFBF9B18AA7E27AC4E8567CB7188C20B1807BE56BB2B348C551767F40A07 -022EBCBE0749DE0D8FF1E2792A0BF2B84C940A127203E2216EA4F8689C84C739 -58D5693082E057B67C9BD80FBCA6463D9EFBA2B9F4D3C8F239C1A70D8A4A824C -B045489E1C6BCD28DA4F1BEA2BD80D424722479D0E8A1A99A8B2FE26822D3198 -722E2D276A123A95128EB6C5C6AF9AAD213D088EE92917E0870179888296F4D1 -0FFB87A340D7F052B07C6274027559A8B3843F2422C3640848CD8BF664645EA7 -20EBCB14E9B15F552E9E793B2F5D7BFE849817CCDD9BAF7DBA26BEED536DF80B -E250F831A12EC703AEE5ED6F5C688849B00C85AF124451A29CB67398FD3D4015 -C5D8824B7EC81F85CE9170560BEACD43ABF5EB5329A4E38431F243099B8F88F6 -58E8F6A7DF8AED9153CA90F9C941320750E5C26262BD14CE3CDBA9AED2270546 -24917E378761B5A96F0689511C12A0E598E7BD54A6ABD40AA4FE651AAB9DE733 -88677F863423C714476E797F4A22B94AF646819D91F9612E6E5CCFD9F7D11AB2 -DBDD3C8ED9D257E5A8BE4B7DF9997EB2ED23EBF4BFCBA1993796E34AD93C8CAD -DDEE75EC199BF642C34BA24E323A7099C4B7D232328ED3C7A3BD476FC0B3D921 -8E773970ED221BFD47FC656BD14FEE47F06834C55C0EF960DF0265E847EA4421 -CF81FDFB40A4C997B1EDA3556FCD8BB4EB141EAF4DF853FD353120BBD37D4B44 -2CA1C1D5D8A5626870AAFD925B461A65FA0E2924A197F27B224E53A7140A83C3 -10A7F3868E4801C216EBFC5F8391A1576C69537686DB1CF7F2AE299FB03CF222 -6A38A57466A9C0DC13E9A8200649DA837A6C40E002C25114F0CFB3D2C0A9AF20 -C7B387856AEEE008AD60FA1B26179D95B3486DD3E5BBD096D4B105117418F60B -26AEFDF53A815F712956AFAE0585B243D5A2B4AF5B517023867F57ECE2D538D3 -89804EFA77C0D9CE905A3303F19A9AB3B228A03B88CB26631814A36C27D09E56 -E965514293048ACF6BBAC80329F0422591F06637A274F2582A6BC59ECE5DBB7B -7CB5056822A2426E4359DE632F89734AEB6F783952B007EA1D2EBB7CFB1C1D78 -7EADDF28CA76CE34F78E568B11AA69FAB64D8B0FC933FAD372B9EF19D5F31A25 -35BAF075193980F69141538B7E7586E8DB534762CBD9E95442AD17C8C2F438D4 -DAC23C5F5D772D1809ECEB13809662C6C8B97DCFA5AFD46C6CF3FC6F07BDD604 -5A4C473C7FF3ED34462A79487EB47D5BD4580E98BD44CFF016DCC942E831F7BC -759A345622F5C65C067C83F7474EBEEF62E63F5B49519E0E1A7BA279784977DB -C646DFE8D0AC7D78CD27B8F9D8E18A3A1C1AD427A85401543B0CE4F4469FE14F -BFD02FEBB2050BD06558FEBA3F61D35AE7A0E49639DF68910174F41A20F5C839 -79545CB64FA870FA9AAB20B80CE7D85DB8A0F64915E1742E5835B5152BCD4B89 -4E7BC34E8D8CC93F5DE675090B7BDAD2728022F29D6A7D0F5508A189B8E0CCBB -87AB29B9680978381252A9A37AD5CEBA8E4F8CA2C06D7A2133FF94B3AF05EA7B -0C1497955A4E04183092871E66A7386E063B58764B62C33B6997F2E0D7F4AB76 -6093F606DF3C4E5F8A06E9D602E36F2DF4CA2E8C59EA6F8537A8269EEE427271 -E1FFFFEC053811328AB1FC60821F4C13D277EC66F56F27E0208726C915CBF178 -D2DFBEB767FE08AF1DEF4219F6C97BA5505DA3CF06BCE02E8E5013872DDB0E9B -01103E8F7213F1A00C473349820BA7F202C9F8632B9D7AC4FCC98287175CB2EC -7800B05D4A7617335D1CCC2094F70BA6556A99F2B9365409971DA4BA1913B7E8 -D6D84BBF1CB40FFCBC9B1C6306E9A148F39874A1E2A8FC677EB621FB46304D59 -B982A381886E99BE387640FAEFCE8182A2CC9AC76C1078D9E03CEAFA0747AACE -16F9A95F5A97265A208ABD10C3BF49C1856461B710A29887CB6D57B61D24DDC1 -5DBBFEE1DD43EA93F9B0B70276253A89546A4E3918B5C93A991AD372606F091F -EC35362E95CAAC00280DB8BA15DFA28F9AF7A6F9EC51FB2ADE3D15599AF01627 -B4D96F3D35FC4995EB18DA916FB6D24B56D60084E0CD8A32AB934845FF24B689 -67883D3EAB40BAB8FEBC3C17F6145CE0B96BA50A9ABEC6F1FF955C9FF80DF500 -BEEC7AEEA8C2FAA50968A57FFA5E9AFBAFF08451A63625918621B8FE9A46255C -86B9E145C2526E4D27F974D74221FC90BC691454D7CC6413AEE3321D64E57F58 -81DF5C5954C794492D4135F130855678C8BB7C4A3E3551D2E89F3DF6B049D857 -9115B3697E07024C34985FDAF5EF24210B2864F9471879835FBFED10D7535002 -E806CE05BEC90ACF31E49AA6C62D9E169196A7C358E1AA5C886C1E1544568C2B -500F208319AFCB37CBE4A568136B1791844DB5B627F66C75DBB7FCAAC4EA4620 -323DD1FC501727D74CEEA2C3D1B4D63779120AE0B0843FC978E1EAA6FE4FC337 -46F12F90D6168313CA077B85990EF9C6EB27F71D3B8C262FDBB297B1B88625E4 -62143BD515F6FEFEBAAF35ADF8B57486A14DC57614488C332E2B81B946397168 -1069CE21C21E8F44B2DB9EFC2F4160F17ADC55DA7218DBE64FBD5BABCA4C5718 -9748B61B8F7F9573847E7BB62DCA710100AD39FA555C2C3B3800BCE7C78BA404 -3DBEE48BA6328F47B1E72A507432BE4A7EA3F0AF034B2E29A4CFFAE8B30AF806 -F71936B5FE86F73F9C4B81123E1AE017B60EB2EB108EAC9579F3EF142CEEC861 -EAECCABA38C637306D8379C02548B4B33FB5D8A6169B3899A2D0499899946371 -BCD7D8D37924B66E4DFDF25ECD17408AA78A9A1D1C8A3615E428EDAE3E56017A -0C2CD79A0D92E6DDC54746E5095B4659D73A251F3B7FD7625CE7EAC3EFB61409 -C1463D4015619BA3746F278188E2F30F997D477491D39625C2B829845D4EA97E -56D7F3883CDD5938BF1BDCA2DF5BBD0E3D495554A01840E7E7A081A736DF6D7E -6BDD580F717261F6A3953157DA05AA3B57FBB1E977C6A43555F7BDFCB35C8B8E -B6356A4F1B01317B029918AB1C0400CD32A41515CA55E59CDC9C4641A570DA65 -96FA304094735B8B070FCDBA01DABC55C493A390F3A0B60D31C6EE3176BD5257 -F6CFCD17682833155B9DE734CE94A232BF9FD8AA45C35DCC0B16FEE6EC241BC1 -E944B183ACFFCBA57219D6BD9132E9610780D4AB07FB2F77428114E800CB5855 -0C26502E4B09AD0EC8A4B342DA732E24CBCBC7BEB15322BC3A4B004CB9652D27 -B85525C0E59DF15D972EE00D5D6DCDDE1A141DEDF0BF9309463C7D5D0D95077C -F41EACAFA40CBA65004AC680983DB2CC892C1089A58514051E2C0FC16D74056B -34151DCA72FADD08765BF73139A2A15A46067064490DAC5AB5039C545DE452F7 -35416482DD79C77BD0256D6BE9005C80902D9BE36F06FA4431F1DFBA7C982C66 -E141DA88A07902D83D1A83C0538DF2F8F8719409259196EC46B9D7815E17F836 -4F06E024C1A05A594BCC8C7489B3DE9E9C3B9D2D15B8149F6D09A35A8444CE1C -704E2B8F273FAD8128A6033E871F1A36B95969EF3EA5EE8DE9B2720FED92D43A -B894DFB54E6F3E4D92E18AFD7B4D72FD675AB7447729F4F618FAC4938ABBE9BF -29045FD578CFEDE3BAFA55419C564CE39F324592304FF7B339DC2D889C157BE3 -A182E42DBCB6BEA7773CE2A058EE2076C77CC98F0C37CE8128E1671D8BD8AEB3 -1E724BE5297AEF6F8F90719D75E2218470034C970C7C3BC4CE46234CF25F3092 -526AD39838F4DD2399A4DE9BE341EA932FC616B02FBFE7EC68AD6E98F5AB3040 -C00C615ED7C7D427387D5AA99594EAFD54D3CE88DEEAB0A408C14B48217D73B7 -AAFF60D219FC71262E05BF9D15DA7739FAB52683D27A3E094B40D84E3C272D26 -F9CC125000AADA491137363EEBDE57EF302943F26E7DE08EC71707B62E717F92 -BE14CB7F5D4FF8A802030B10FA8AB4D93286AC064E0547032E2AAFA3E353F4A2 -4B3EA80EF4221C81BA5698D58A460C0412B1C1BF143E547DCA6CCA584011B55F -526742925DBE8300564D621015796CD280DE573A0A733C5F6B2D4AD811EE4778 -FE60F46ACF6B6943B07B0EB0E4636823430A301B06BE688CC24785A8896BCD42 -39B97D9963BB74BD8BF05217B615983E27994FBEDB0577010E46BCAA04DB1A72 -77F4ED8257D145EC44B2B65B408BC71239F1C2E8434C1C2FEE4642BEA1C60C7A -F02BF44140D0DA3E94D7658312A212FABFC0AA74F3512D513E82248BACD86A15 -B5A2C71F3692C8D702FA11B262ECE33B382C681D54BC275FBAB326D928A6A327 -AB2ABFF6C4A65339D945A671AD839DEACA7412ACA3253B399BA17E363B213FCC -962725E0BD8CCE55985438700204353C507E4DB96C1B57DD7A071124476A5095 -BDA4C678F514AA63CADCF7003C73F0C505590526C0D1BCD7DAC0236243AEE48A -5F351E12194DE6754336416227A63FE6C37D472EA1688AFD88FC94922094E799 -930F9952B2B1B86D1436C843A90AA230139B82449E16EA8B29108AA624933D1F -5BB7E1EC1E7F570BD1DC0D2A9C338F4590D590AFE417D289B103E11156D66DEF -F9E1F1F3A68DF07D69FB9CF4D09F2E2D47C2168E0BCECB8BA1CF856826B51D23 -D440D7EE177DC922BA367BC69871D037A508B80E75F43C331F7BB5FC96493932 -0B3CA39DB05BB29C08348C3F0FAC71ADA5C07BCFD160FE677A8A030BDE2C4A6C -A866D89CAFBFE647B36F7931664F82997CBFDECB6F88C795609D1C94DC80F09A -87221FDA3A699D0748F97E682B5B8C7B1EBA75BD44070DDBECB03824F9EA4E1B -BC66A08A1A0F8AA3DC482D408C83B469315A2ABA685726CEA99BC3D15799D28D -F81E0BB958E34A1670C23FCEE68A0DADD2BE3CFCC1914A9FA1B1A661693ADFC6 -378969C2E400E5D4AB0CB7DC0FA364893D2484DA98264CB50205B7B9A2532492 -81A2697B7FA4FC77E71D3117608ED7C474AA2FFEE8B3F1DD942CB16A1FF06C6F -3741AF6972D09A5EDA91B4EDE291A7B3E3D481005BB578DC5AF13C88EEE51380 -78E57D8E073FA46B89A1DD73D51AB11B44048CE2F031031018697B2DA15BB05E -B69E9E54F85E09EE3EBCFF390A9CF28B6F0932A46C9306911F2F36B8CA3ABC14 -022697A6BC560C0A688BD1E49AA9F9CF4917130ECF08F8C500E0096A8BE65E01 -EE5A2618E3C9DDD1D227EB584EB0763C6294B91DADC65AA8F1DB42BA25E77B9B -AAAABEC083135CC61C18987128961505D602E409C3DB90F301CE2C792AB7ABD8 -1B7442AB1C8D5B1FB5AB30444752254A530B227A1E7CBC615B045031FB07468D -DADBE63C9D1AC6F9742738FCF2896ECE73C131063E6FB3B954A77D1CD1F5764E -3D65A43B627E8E7E10C5966C93E9794A3211D8B349D7F82427A65DA39B4AD1AE -A98733594453F400B9841AD3207DF9A908372B8B7F8EAC363D0DDFB90411A468 -1F3F0E7A8DE83F3CEC745BF43D341A20F53BD0667B70613FDB9B1379FA61BC9E -516118F7B1DC7A7B049E116A7A254F0A363694920EA156DF045038B14C229E6D -19417309B6DFF125580B5279D6CAE9AACA31A1D21AAEA8DE32180F3456AF61E8 -AE8011BFA62D7B5A8123A02131D2F622211D74F104CD729CBE44EBC70672C064 -6D8CE2956C78B8CAF172B77E78F715DDA875A492CDD8357CB3AA3ED817043631 -0D278C6AB079AEC3C765D5E0267BD01C1D3F7AAACD0CF34EF8DD2FC5FF8FE85D -E410CBDCE53C792C0ED5092162DB85E6465C058D95816008077E22EB8A98B8D2 -5A4069933FD3F3DE33926152C7DC712807784C17863EC78F9FD11A335BF8C700 -F4963F7C1A72505DB453012507A3EE51F7F2E814CB77769356C7654B9569B68D -36C1EBCFACDF5C8D91D664820758BA73A83EA9660E33D4589C6950CC5C612710 -E9E97BEB5CB43F4109FC0F9E5EA126C1A9F2C4617CA146013F01E810EED40041 -5D09159A5B53FAF73B151499CF4BA3B79A19034CE461298D1B805E161CE837C1 -AE9A7298DB9DD9E54C347E64772AF100A5C736173D5D9EF4C45B8FF6B0ECA17D -C1ED7FA96FAC530778D72CAB4D9920BC6C137EB3187B1DEE669419753B6472C4 -D29CF8ECD1D43AC03DB1413FE6D4A883857E2574C68AEC9AC7F7D3173E9EA7AD -1A8762EB2841D29BA98B8C59BF52ADB41A1C06A50FA66C169605BF950AFFFED3 -6CF7FEE0126C0AF7DD7A85796BE7D93A124581EF530AA62DF4CB06A15A17D5E3 -F6B6B72CD7481D238B2EF97123EE55872A43599ADCD48443DD9DFBFD469C71D2 -624FE39A15FB5CC331E29B20DD1994FDBADF7E2843ADFEFFB38AF6E727638848 -4BB02352C312A363C3920604853550205484499FE4B1D8A29A4913F440E37CBA -9CFE762651749B33BA532DDFEBA257869BE4585699ED7E918FF72D25F3EC0C71 -FC49EF6C38DD1105AE50D5DC13F6F1AE2FC3264C549FB4D8D1A959F25DFE913C -1ABC41ECBB5B538BA1C4870E73599BA518FF41B6445D40C9B9BDAC2D552E4533 -670DE0C40C155E46AEDF4B74BD44A521815B69981F4F33EBB774391320D8B6DB -AD9C9545557E21A90EA55CFA69B967F3E136CCA7A1E4C9D312D9D08940DECDC9 -1CF646FB7704DFDF783BBB1739DA1D2EF502B7B3A1FBEAD958DC99F086E6B623 -F33ADC3A758138E47EA3DE1FEC42EBC6D675C658B9AAA4C4054B1F81CCC4D216 -9559BDFD542140F2A101095F2B3FFEA124F407A8B650032265A48F065C3C5BD9 -66D843E3A2BA4CD7BF56A6A10D90345B51969A03DF45C91EBC2F3023A3E71B4A -B6A7DADD9E3EC5C70207F743157A9A0ECE23A7A95798C2174281A7900919878D -955EBCA90D02F07876BC3F5EB1252A82D891FB3E0FB9FC032080E6F700981030 -0E81FC3E75AC8623405CCAFA66161D5D471EA952F0FD4021754CB61A7B1445AC -0547EBD4D78F141651A5DEA6262F0A05559DEFD434C5485FFBEEE7DA647AFECD -6468D4D3905576FC4F670BA39F9956149CC371A31ACA929CAF0668B667DC2CF1 -8810C6CF9EA23CD5576C110183155DBF15F24CF0973532800274127C6C5C9C79 -EB121C5F0B74D824DDFA3EC4BD7BBB8799875B8A4776B60F840AE96A8F65724F -AAC3BB862EA6F8697D935C60C2DF962F042521BB1D3EB9C064F2CBFD84208D94 -0E9DD9242157F4D3DB05194E82FAD5EF8C09092055463620D1B4ACE3BF9CFDC4 -989840A2CE7BF62D69BBC387D0184EBD87755E4DCEB8296D1005E79779A19B14 -354345A8A0324F1E61D88A22BC423D3DB4686ACB6CCA3CC515B6A5CCA6C888FD -EC2CCB767778AE3FFD7ECBD8BF1828E5BDDF119247F11B299D5272C475C67113 -8F124D25A87AD26E8B7713A5189FDD920EAFC2D9069664744B6E7DE1AB20E798 -8BF9B8885BED5CBAB904032F6245AC752F392524C2FE09F636B59B17ACCE1E56 -ECDE4533FEE75C6ACA81D3FD7F6032B865D8B6F34DF1A99E01FB6534659921FB -81631346B4530CC2E6B15389D7D494A4851C5F7CB502B394E840ECB67D359B77 -E940F25E96B3AA4DBFB0689C0C8D41EBFB5A9ABF7B817AC487093BA1013E345F -B42647E031C22B77A319062324A7BBFDC9DAB8D5B1E0FA4FBF8036AD46E554F9 -6B925144323B7A79B103E808A43954DB3A03120EE5BF48438C0ED2807DE82FF1 -6800AA8EEEA5C70DE747B76246A437B09F402C8E1B545636E0860F670D10E42D -9A579DEFDAFC447917E0AE0AD49F49EFEEAD72A83149A22A82F909670FDF4A9A -B106147A6CD6D9CA4FD64191B7883E89C30FFC30D3262B9B09CD7D2440D85F28 -983B191CEDBCDBC06375195625EB247DAF10FC3F01259E59184F462B79592181 -DF37D70E698785E55E0810FC9A5094CA115B2067FBEE8ECB004856C68A18AE7C -9BB1186342D173068A4BD0020FC703BC1AE0D6C8EF419288D7D0F09042C5CAC3 -6DDFFAF9A79B811C55F41AC87F93DF99604165A6D6E5938016C155EC65393512 -EF633ED422AD5BF8C66AD82B3B2B0FC59F40ACA8B62B2195D84478F920C39EFC -328C9EEAB999D28CB365ABA1A99475D57D5BE151E107BCA6C65D535D8E83EF91 -35EC4BBDC0C5A124CE24ED6438F2103FA03BC103F899CC0E12428A807763DDC6 -CD11E4E11749145810B387906A7B3065BCF1E29A1815ED266DB7A429C3FB2860 -AF3305E4FE74E02626385FAB8833954B803CFF6231810CA8CE55EDB2DC2B1548 -82CFD8F105CC916B0A55E3955BEF60680B544501937E9A6FBDFF46E12B114967 -2066512D019B1D727D3759A708E5D8D8FCD99AEB82B3F660602F8BAF091A7AE9 -ECBF15E7720F671E85C5FE0F2871CE1EC0A7B8E923EDD845F6C8F8CEACC70DDD -B2F87D25890FF1DB39BFF89A3A35B8B14742B4571F412CDF868177E406C9D07D -B759D6D32A7CE22D9E9FD13802A170F20E9FD757B9DA76B12712FF6DD0E8F4E7 -4A296ED2795FFA5A0C3CE468C7A9CCA440C599C207BB084B1DEE83817A7F23EA -1A4ECF72B3786D72D12FE3123D33559793046B7773C9E93AC1172026014A1917 -4B66A90C5AF50072C231F0B633F00EFED86156FF0FBD451C161DD06EDF438A38 -91FA7FFBA022A4468296A7132A3D88AC243B69C70F21B7AEB32BB5AA21800620 -BE6C8116466BB843FEBE361D1DE93F7C38033C95EBFA922FCC45E812B48B1A23 -C33DE814EE885A2354B37C05E405D27A0D3870E19CC718284FDD45F7926758DC -62D79AC3C0EAF56B6812049148970442ABD34E0C0F49A6711A134C5568004C24 -F92B455E8085D77F48ECE5FE9F27FA91379C939919E78B60A54E235B0936B3F0 -E1300BB4CBFD05A18DBBBD76524B4084D54D990F5EA51E5670906E358B4977C1 -83A7124F6BC09AEC282DB90C2FCCD9D909B57959E6E68D2E50344100EB1B6BD0 -1A1FF2C2F0B250AC9B1FFB4A4EF3F28C022F7F873C7B3AF76E1830C9B039154F -B3C3BD97DB32958B718D53B552A7A0B033E84EE515B42184A22A10D77FFE32EC -0E1CD1708021D7931DC73448FB098A61C93B7D03F98465BA42D4B927AB115C49 -C0CB10C0BD55B16E6BA017306506D3D610ABECFA480D8840DAAF23CA03AFD9CF -1075C8E9B821499DE23D4882C081D51649E5C9BBFF1431057D95D61351287B03 -0C9A6BD89F33C02555E1D3DA7F03CC395C1E3633FC902F060DF903FC96C19719 -A5B6A39E -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT9 -%!PS-AdobeFont-1.0: CMTT9 003.002 -%%Title: CMTT9 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT9. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup -/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT9 def -/FontBBox {-6 -233 542 698 }readonly def -/UniqueID 5000831 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT9.) readonly def -/FullName (CMTT9) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 35 /numbersign put -dup 36 /dollar put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 94 /asciicircum put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 125 /braceright put -dup 126 /asciitilde put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0 -42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259 -4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457 -689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521 -0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA -610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8 -3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735 -C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933 -995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE -EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723 -2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0 -4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC -B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014 -D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE -510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5 -BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF -93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC -F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385 -45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757 -4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47 -088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8 -9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A -09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988 -E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C -0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A -FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C -94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741 -03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF -409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71 -45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95 -39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971 -58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85 -84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A -0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F -F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD -B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD -D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B -3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B -7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D -8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737 -712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E -C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3 -E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA -A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC -2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467 -757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C -54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981 -DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9 -08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD -6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2 -A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5 -336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D -E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB -3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A -E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627 -1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903 -FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72 -A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6 -465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0 -3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32 -CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF -573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA -9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D -15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D -D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5 -15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1 -64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789 -D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C -D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8 -576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540 -ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135 -EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC -9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099 -3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A -1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD -FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598 -C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA -4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0 -CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7 -3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D -D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9 -BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6 -1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D -4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442 -C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D -80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C -AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6 -59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647 -3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6 -14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59 -B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34 -F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8 -54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588 -34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191 -825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439 -BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54 -4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F -66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E -2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF -F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A -1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416 -37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6 -741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1 -39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC -887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49 -B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD -15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526 -5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1 -80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839 -A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404 -BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048 -2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B -B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598 -F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B -9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483 -CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91 -DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62 -6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B -7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7 -D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B -9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9 -EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12 -0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2 -1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10 -85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0 -EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F -D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518 -E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0 -88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842 -E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8 -01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68 -54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A -97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78 -B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2 -D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9 -18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE -A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13 -1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62 -31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5 -408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF -1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E -29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33 -BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B -AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8 -0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D -99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE -480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC -D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481 -FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB -587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51 -A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C -C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C -AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D -AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4 -48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367 -385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56 -8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38 -4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C -839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C -320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63 -7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E -DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D -DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F -461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A -BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449 -1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A -3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500 -0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77 -EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA -AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8 -F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4 -097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA -53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7 -39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78 -77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0 -1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F -9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D -84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F -737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC5723EBB357 -73DB0933927DC21081E67E5DCF4E41FAA6E00E8DF04128F86348FB0718068FA9 -918319C4EE9D090CDF348153B6CC48648C55E889B4FFD3D75466F1B50C437546 -7DD9CF20980B148F60BB146402DC0732A27F255DCB859CFB6F9D329C12FB14A6 -7824D6DE27B03FF85BC59703A5D6C5B7D1CEBCF3C3FCD71D6D6F0311E41BF8BF -0609D23C84720FA9EAC961C9D49C2E962D9618C32BAFBAA8CAB0B2F616E57DA6 -8CB44C5595A22377B28599F7D34A3BEA4173E1D31A2A6C5670D1F026EE2092A1 -DD0D2BBACAB46E5B0A7113B1BC379709C5870981E482E01EE3D16AF9ACF1A5D8 -7ABDB4BA5C3B13AF047826F360C8892642B482C3C61FAC97F332888AE156B35C -5C8415A75B4F0F25F8E95BC4102FEB4A8287C544C99778EB0C163C22481F615B -0004F764FB7CCB01AE01A614AFC9650D3934F748E8785416BBC89F66C696AF5B -B5F6F125F115241728D85E7159FCDBB10B64598249BB0E6FF1AF845B0A2370AE -E6A973023FCAC4BB6158D48B0C928ABC4E29A0DD611D0F5266AAC8239064C266 -82D4D33B032418967406BC98156CFCE1F091F733D8BAB9523690B4D6765DBADC -210E814DB8715A269474EC0501CF66FA0D8FD224EDDE93AF243032E73714F730 -FB382372C0F9B9372450FA6F13689C9429EDE1A105F234B216263A7D0A917A15 -D1FC128580A16B5572436E398C353A0EC62539CAA188901FC30DF7511C1BF6E3 -B462203AE937653C4562FFFF03078EE7A184F554E6F01932AFD07722A00E50BB -2D2BB785961F76273A16CEEB0EE833DFE14BBA539CC7E48F67A9D20C94283137 -BE84025E86C714DC9C6FD7CE4D1D0C50B6EDC79E066521FDFAB6285C83A68B4E -B1A119875B4E45BF5403950A25286214CB4183C345173F72E6ACFEA5C13B4D2D -FD12BD235193EE6BB66519B553CD963EDD68E7EF9439DF0411C8193ACB183C09 -4143657304B1BE2AB8D2D0203E677FA1DD01152D2ECF9D987B16C3FE0B3F5F12 -5C920243E1CB5FDCBE97DF55102EDED12811F3F7165F4FE1F6FD5A6BA809824C -041FF9441529509EF4442EA873E8E7FF507607D526DD27315859B31D0AC11475 -53C573EBF9DC37A4667133E99D8AA608ACB729F90B736395211043CCA3272AD1 -470F1EB485629AA8B9DCB56479F734703D859F1E4EE8789FD6F739D0122348F5 -1D487FAF1F24EF7A14CF69ADE7A87550F55F394506BC7627A5E319B30F362528 -8AB497EC03B69B58736A5EE0AD63743E7F22125536104674EA63F9AC5286A746 -47C73EE8E0320E7DC098CF43F23EDEF32D213523125110140F46202435EA8E79 -E285C7F3AA0C5877F75FE0F16BDF478A00A6F380C7B677BE479FE900ED3C4A0C -832966F634C63211B58E9AAC3A3346ACACBD040164B491287B45E0131479046F -B430EDCF59B0DB6B0594775AA57CE029EE8DC445463169EA976945A5765AC390 -CA615933FD05173C47D30DD5CCBD56D89B4557C7192C31D7B500B779D7DD3707 -BD4B64980767B6C9A1BC9A948DFB8518AEF581A1D888C6F767F3315EE99F57E8 -4EAA54D04A3A9E34B100024AA7C49DFE273231E3DF17073CCAF5B0EF20566755 -6831F85C57454D1B0A5A8438EFC7F4E396F09CC200643564BADECD2208915FEC -78E94025CEC8ED965EEE5F6B8BA081478231547355F93491915CFC4DBD619862 -0F99133CE7F44756C593C8DF1874E973237ACB17F9614B79D45672CF62AFE009 -EC61B395BD96B0081DE750421A41E9D474F0E030C6B8591D364F29A6D7246EF1 -6B4CF9B931A9A474011C62D504F408651692921AE83116CA0E4E6F41AF877FC3 -CE77764197719291E68B01570AB7038D91B8B81EA501DCB5ECB6083B6764BE3D -DF21B4B3A1E1A5C917F324A1CE5AF92BE3B2F8634A140637425F9BDFBD21FF33 -CBA42069981B230D211602FEF410EFDC199B6DF283343FA5E6B4FF2804DE56A1 -61DDC684579F82C65DAC3A4F92B34FFB6273EF4F4591317B8D2250850BBA236B -C1E36185BC3C8C7A7654B24D7A10A489BDF675F6EFE7B4253F14CB3B5ECD1756 -1882F3D139EB5EC7860D70A176D1536F5119A6C23EE9AE9AB21B586DA19B483C -6BEBA87C457B9DE3D7C71DD7F97E352B642D84455E44EFC54417ADBE7E190F7B -7ABF6FA0EA84A394C8316BF420D6E2DE5B867E6D602365925C3ACFC69ED653A1 -DA30FF3B49D407237196B9401B1EDB7EF2260E582D02B18EDD38AC0016F28896 -0A61CA720216012D0FE2B58D5D675D25A679B1D70FAC10A4EB38060C0BB1AD1D -D1C59BD5F44FDD8768EFBE75B6795543533C02198E21A4B8A5430C2C432E45AA -0C0937D6CED532EE6714C58ADFE2B15B117E9AEDFFC1E172716C756260BA9931 -23AB837CCC7C36BD6B86B628BAA7D6002720AF00411E9D039E435EE479D5015E -23DC9F3993546E50A442CD9D0429F7AF22D9F14064CADF2A3062F218582CA520 -3FD8E0F30B224408594EC426C8DEA57ED60FAB24461611E86302C421BA600CDF -D4EDBF4044F0E2893143D4BABF0A6AA09F28FB4190B779B82A61C65264A199D7 -C2F50BD82837F08970F630E1CC74B4EF421B1032967FEF552DF3C1C83ED995BC -CB9192ED8AAA906CD9708A4882150B27B1E75FFC0D1383C50BB3E6C36F5CBF28 -C0572BD2F01AFFEE5927EBE3B6CB8FE778ED2B524E252F59AF00A3F8F880116B -8EA655D9C6A68CAA28DB7A75003D0C3B653C7587BD1A7D93BE73CA6219024EA1 -07C31E7F7BC9B874183C9337538C925226CDC48FA25D51A6A0677A2BFF699AE1 -E28D9E58369BD6AD73ABA706531DE565E1984A9C89D0C1EC6FC030A93D3D863F -C45EA66F195CFEFF9A03A1673BC544FB4F491AE5E50ECFF7F34B095DA96288F4 -31C02347DCB6792ABE9DE684A1A92318A2BDA38C2D8DDEF29B8FED450DCDCC7A -5C5D124FF0DA047D37E8874370D5537AEE869E771835EA607E1634BC0707C0FF -75D5764B867BEDD8FA075F0CBBA7191B3CBAFC9EF8DFE79E9D7FD5A58916101A -A920F37BC5EC845621EFE3A953C19853C2989FD31952FC4876A8F7C58C4F21C1 -31E6ECE0389BFDC8D6E391B04D443EDEFAEB77985808C398583BC4D8C9979A38 -9842C4FCB7A4E84BD67BE72551A43B2B330293D8655A3D6655A2358E014F5686 -613D19B474AE0A92A80E6E701F4B63EDAF59C3E12DD961A5B413FD1CB5400743 -91F673B3502C6FD90A1349D649EBA4F5D8A6E5AA41F1A4DE1C387E22C9CC2733 -D542291D5B2E5CCD0E1FC1835BD6A74F5DB97FC174730AF33CFE5E68349BEFB6 -F2C76171C578412F075F9730567BE7A2644B17012DDA04D681018CBE09BDFCA6 -1BB460699CBD6006C031A02634BE0B16375FDB9C582EBE6683B60768BC3901E7 -4388A7E058B61713E3046F28F5ABF58417DA878E1870787C472FA08C2FAC7517 -4CE71727BB69D19BB40AEB50F1BD66704EA37D2A0B82F60D72E15440BD27064C -E67CA41D97349309151DA28E1A7850587569A794E9FE46848A4611066291973C -A6CD19857B92F0E36B271F24D54ED663A7C64DE3534B0989D41E21E01469AD69 -916AE35C5177C6BA8CEDA45C92694077DF3EBB0377269619F9925876919A472D -14751E6515118EF9B84A5DD8C92695818BA4C959485EE1EDB6C6D3553B6FBD27 -A0FC42DDF20BB335F7D46F0951C51E9BB69FA6E7C76A8C960FB6A4305FDD2A30 -234A5EFA64C34948422255C14C2A0D8A57174AFB7DF3DB2F520EBB401CA2DD79 -FDF6C624654DFFCEA8FCF5B34C34CAA7C6EAEBA6DC98E8557042126E49E51C3E -BB7C91497A44A69E4EBCBDC0656AA5A7F419D0443576F530C8136AE8612589CE -781205654730006F3A39B4F3E5301784F164A2C87C2F86C894EAFB5E79D7231B -E410219BED0210BADEFCF27EEF683A01FE01DAB70AC8DC4E82ACCF6B5BFB4DAC -A42AEF344755A06DE8A6BF6F2786435E2EB1D103C8FA4306573BE699571880DA -53548A1FC1F24E50B3C2BACE9261C0245F671694A0FBFB4ADAD535AB9949C020 -DEFE36F7EA12B3F8D80E3E3D7B3CBBD8B6EB0AD2573DD5DD0B4FABBC790C9F28 -428B33CA533D5A6348D1A64D868863F4385A3F19D9F4766B6B81CF634981090D -AF0D763F09A2919A9DABC0DC4602D72F8747176F947A92077956FF59FD0D88CF -FE224B9B16C5DD710E6DE3B94D47DED695BCE5414A3794E4CEB7845915272ECF -E4A657C7B53DE7DE96A8C901DA24D54A467EE083181CEE606E5917FED2C97728 -57887C7D19EEA950AADF6E8A99798789757BA126D925E330BB7D931FDF4EE14A -04F58858CE09DCB1F57B8F780DABEDD1C26D72C9A5287C9DD30365693C5DD06D -7365B309AF1C97BD3443B393309929F6D1AE27A1CB55C2F5085EE81928E138F4 -4FA21E90C89F0397C9CDB4D707780F2418B38D8A8D76793C868D4BBF10AFBCD2 -9BBB8202DCC02C37BE63D3CD22208A23743025921A54307A72037E6356EF807F -B2E7DF2B94C51F19895C3C059DB4C42C2DBF4E08E27E31A294B580E2367D2F63 -0C074F03DB73EEC7293AB98DEF387B3C18761C716EE02C95315A36D42BC5334D -984E6E35587BC0711D1B7F8EA8656C8059683C49CA41B0520D6FE1952A1991DC -659D83269307EAAF5A9CA8000FA086B55587FCD0C798FD93905B1CD88A9AA33E -9DBC2FE2A89CC800565567422052BCF5BAA443EB441E3B7B6AF0322014458764 -7AAEF162D0E03F28F1D0A0EEED8714442E9DC41FD4B90436DB8A7E3A9431E726 -FAC0CB7151B6236B2438DCE9EE814A358DC10699244FAFB932C928E0E878D91E -36E840135A9F372A0DC2EECA730E8490F4D42DE218150497C5EE87A5FF5C2282 -3AA9D4B71996F86F8BDA700EBC01E3054459AA3F87CAB9C3A230551D4534C3AD -18F6C76C41E10DB9DD67D19614A516BDD39C432005676C78B36C53BDB3646934 -3AE6BC84D339851BD4D07CEC26129467C7181760DE58D0A288FF1F0DEE52D68A -8423FEA92D3D9331F75E3B062BDB37BEE45D5C338BFC462612D1CA5CFF432D7D -89D34ABEB9F42CB40A63BBECECACC033538136B3F9B81F1230453A52549B648F -E8AA9EE2B0AE82A1904FB78A6237247DD96B906B82945AAA772DA058B85494B5 -DBF53ADE76C1013C1DCC7A19AA3ADD198E3EEDE3269C4F3A6DFE54CBD17C7608 -3BF7513E37D9C8D688087E2A09B863882D46454A5B99CBFF538C008FA9BADC2C -004ED4ECE65C4301862323B134BA11C6D4E691AA899C0E83CEA6A625AED13F65 -78D330A389A6D6EC23CD82D70D53D4F571C9D872E1A09679444FE686A12647B1 -6BB67C8AA4D500F6DACCB2E0C682C835D24C646A51259A72ED3E281C93743832 -A51B3B89D38E575B8521A39D87F8105F892AE9BE53FD758B8DBE2021716ACFB7 -350D5408C621CDEDC04E63DC4468C301435C2C2D61F3B2C24117F9ACBCD9E3A6 -BEA36A9A4227287DCACA0EBB1C6267F23BC0C3E0F28A89184FACFB919D49843B -AEA30EDC40944FFE38FFBD7B33B6B05F5AE1D0E168E924AC698B7200D2E86C14 -E79E6768E27E848768A75DD694B48FE4839058824A9F5C472081962020B96FE8 -45DBD7153E2086C2DECB97B99850286211660573EB090E315BD727C989B8FE41 -D25635F195218A2F15FE8A5C5FAD2857F75969D1257158EE5C52055C1E11D18A -8770E2DE895D7118B3886FD549441424F56DCB3820D5709B9D838435AAE4D64B -6F49CB37B640BD905D6C3FC1E53C8304B0EB694269D6C48D81300DD537373040 -65B95EF64F81AEE581FFAFFF8B32DBFC16B4F1F7FF9DDCE9CF5D6A8A6D79E4C4 -209E47E16C32343B7D8B65D863F33717FC01CEF14A0F012805FAA46552535809 -14126B88CCC2F0E276F5EB42E0C7628CB2397645DD951E31566B9D80F4379A57 -8D10288DD980E93AD47F7F5EB41C4E0DE8AFC5118CFE87A804F309C6A9D1E126 -C0912E55D9B1FA95611FE7FD22C722610746316AA8703953AEE8D52F4B67F0E8 -1C12A3A1A38B3AFC87E78B29AB79174E1CB09880DED63F5EE28AE6916E9BDF2D -3DBBF6F8A09A229BCFE45B37D0E28A3A519DD20CD8B7AFAABCF0EEE058EC5BEC -98CA3FF46CDB8324A5CFD9985AFD545B1425BA1B1F8A3209D159925194C2C7B4 -F353F587F1CEC839996FB9761DA1343F24A17BBE4206324041E9DB6DC5CFB21E -789DCC82093269E3D2894773C8BCD25DB0D6B3DBF7A799276936132C262C2F0C -980D6689EBC8459C62E19C91EF5169439185F8DB0946D7156108A689F9B0A52D -10E02422207CDF2CEF1C2B5D3D50E4D458B4A6C936CE9E6A6C4975AFD8790E5D -057FACE7B96263BAE67A549B42F8CA016C5EF42B55C2FDF20D3A25A68B13FA44 -99D57478B9FFB6BACF69CABEA3C64B559A0D0897176CE2BE218396DD2CB25D70 -59BB599060F97D2CA6422F46D28D3FED8AA36FE161A91DADE4B621EC24BEB0DB -31FAB9F4B67209C5DA12F4AC49B8BADD510C8226962D4657A80DD7DD49104E88 -A0287F75C8784516C98BD7BD15D91F4513384B46BB097291EF6D6229A529BF62 -0A5F4AF3C21150A058B08D0B47DAF540DB98EAAFC88E117BC9DBA9AC19DDD756 -9A90C45BA3E8C37368C7E44BD6BDFD96619ED819CB067ECBC13BE325409987C6 -CB804C705C040AE82EEA129A1A7AD4B7B362E799F2CE5C0390722A16FC60B1E8 -44B0B85D097AE0D5E08DEC18C3E576E22268D7F0CDA46D9469019C20EAE9BA74 -7B49EA6166F5AC94672063D25C4C0E8FCE359712939ACEDFFF9AB5E7442A2A00 -A7E7A05E9E10A209672155C03EB12CD5E80155A5DEE3D503BA08D71E423C472B -A74CD26E15A200FBAB8E94086928E73860E50BB7389B3A8E0E833ABAC5FF8C62 -B894E007E5C220FAE6D53ADE85C747BD84D88BD0F40132A0D1FE51ECDCE1BE9B -BD89734A56C3577515520025A7743F45B01D74588DAED6FCC209CC819CE0DC65 -B590337F93D92D71615422728C6A8AA4D357A4E350BF6CE2480D4E1A818EFD9C -E6243B96F72EF5C5E88645A73189D9772E97911A0713A03201A69D78A98F743C -C0C8562CD876F8DE0A488CCAA3EC11142190BC32B2D8FFBEE6E155EFD20BB003 -055C74D843F2AB34D9552E5620FACE9E40C04DD84E29A602151B7C3352798963 -94674A8246B77CECFCC9A896B64F296EBD891E669A538343C0394E6634D9BDB7 -AB6D9C584DC7DEDF6AEB695FF83953653CED9E2B7F6E5D2A965B60F1FD3DC752 -3FE4EBD010AD47E0A9FD989B15559783B429F50B3A70A1D8CFCBC150A492A8C6 -4F570111E78A66DB463BB2EA226890FC25BD5CCFAEDAB7DEB2D081480821426B -45EDFD5C048A41F295415C43E86930C53961D954B54F6886044A1C5F6D2526EF -F6521BFA9BCEA510AB3E1731719DA2E83729BD08AA2814663532756B1AC5E199 -329025C143B47106919977514AC51B681FBBF5B115AB82A15E24C7315091DFD4 -CD11E813DCFB89355F4CFAFBBD54822018E7EA7ACB3A06DE7B571267E0C66BD5 -6DEFA8A8AED615B9A7F40B138841D094D5BEB32197BF5213BA572AED3C87AC6F -6ED6356BA2A2B9A3E26E43B3E6780BB66CC93A1A2CE94C90D48ADCA2BE608B64 -7C0C0410A9134B81EF24CCDC7426E5096CAE44EE96D666A4F3F72774105AB03E -320FC752F294CA8A537BE8EB6FA85F069E6809553D3A9CB3384E132275D2028A -DC6CE52E75DE9142E8D19C656F7A74D985BEC5367F151A151E5D41346AF70ED3 -14D68F0C83E4EC225E6F60A48200AAA0FAC3725551B8859AF513FFBE2AB3C205 -DCD56B1177021C5D819DC38BA8A042DB92A0A34224E37250AA0F65707C2786C6 -189F518C2E635D327D999949C4358402F4EFB6237C8A0A8BBC01E9B01F58A83E -3BF161E39EF504F2E31BB62F27B4830EAE9B05977DA47EF338817109E0BA1059 -6DFFC6426DBBCE33297E6D36D3492B098C1691DEA31FDF967BE80808199760C8 -46E9D075B01F433DD5A43A2AD872061B3852B74BB421B3564E57C44ED0DE500B -D976E02B51C656974673846B1B5E31F7F9EB5FAB81F92F62ED34EA0715950780 -6F5674E2D6120A4B9B89F749120921EE65043A66F0272B75C05BDDD09217A10F -E9E93E647617CA513F52252556D23F34248D0EBDB3FFCA6BD7C31E3369CB1F0C -20BF53BDF7C4F7A1C37BAD112254C227FACDFD40CA33EDF4688600E16586A5B1 -D53C2AFEEAA2416B29948B4FA677FC1EAC94B4A7A2AA4EFFA901F90B56BC2F04 -921AAC33FA46982497BD267EC185F64A2C6F51C48691908568A4F9814175AC6B -E1B34565EF12D99AD27B74481FCBA29E4C58C8D031DAC1E58E24AE5E432C74E4 -CFDA7278C66FE60C11D9501EE25CFB8F816F06D1427D8A8A119F7E9A66471847 -90BEA16129627D6E12463C9DB6E4CBF9AC20F51EEFC808ED48D41F334115616C -FC0F037AAEAB996F754FA6A8653B8912BA0A9BD0D0EA381B3A54A86155156D1E -BF1BFF694F9EEA20EBE388D4F01CE5117C0EA6E061B807AD4B53270006E6CC45 -5016272BB7FE8540070D51A260A018E09D9A1C7CB3E3C6409BC1993E59667A42 -049F2393C872D0E8EC41FBC2671D0F5E4B99BDC5AD13F7B0930B881CC049FC39 -938DD4D270BA8FD68DFF2ADCC21C7C24ABD1391C947142F1C7CC6E7EE5D31252 -F84B92C304757C0B8394E9E2C2D4DCEBD7709FA645B883D8A5F9657FE6116F2C -891F3DB3BD7DEA5922EE488678297C5A043720DDD777451AB916FA664519A6A8 -9BE9214DC67D68FAF516E19E1F65F162C246B6C010911220978C2FAEEA7023CD -E2C2A175D2C79817AD4E4364090B9C6B95CE86840857599448EA77982CDEE30D -F4E739DE78F7C1831B2FAD322EB48FCA0ED8FE56A0BE9E26E6921171C31F8E79 -D5A59BC6225A0AA217FEB684D1CCF1B12E21DBEF1F1315C920EB46163B5C2F46 -80669943D09CD519256D5A4DE9144FD5103B52774A530D2A4318E9ABFFEF15A0 -24F0590F23BA7612351FC0BD9E5F9A5A8D6ECB677978C4E2AFC4560986B7A8DD -0CC30A82C2CBD2707A18D988C164F2B8CED74B1C12991E705F005E3A8D10BB25 -F5A45974096ED5C5F8A09ADA293175C763CDF9C3484C4B9ABA9839BB9028425F -DD34E700820CA4B2BAF969C1DEEE659A6FF568EDE7B58400C07BDA06310B92EE -17FEF247A7FAFBB56044FAD23EB2933D8F313A161767FE211FC103F392A9A1E8 -B633A259920A15D19A4F5780C09071ED04C83FBAB9ABF344A1B0F1FBD2A96A87 -E03F2785DD00CFD5B3B95736CFE6315E86E8A5E838F4C02B36859AB4CA203FED -4AB0D43E2964FEF26993ACA619F1CF12D3DCFBD8E50AD02A72A6593EB876E244 -D5CDFEE1128408A5C10B5E70D680299E8A33489E1179FA0F753B7FABBB826BD1 -39D7F7A8E7C15C359E24B6569640123700FF628B2D76E2B7B2DE7C2F098A7A46 -8309CCDEA49CD277E96366EF221C4DBCCF17882C4565340EA41EBE83998AC89F -D66825F75F751395FACA772DFCEDA5E3368094CF378C31DF2B405D92690F2546 -AA982FE7F32660E0FB33BF253F632FE978DDAFEECCF840997558C607ECF0CD57 -5CDB3EE71642ADAC37D462F7A23541F850382BC1140C8437FC62C34CD9BE7002 -0C136657F2ED4AF914AD3AEC860B2E873A77C818E491440EEE98075FBD7EE393 -B68FAB94C574EC914FAE259B065C8666CBB2D3604F9FFAA52DEB5F157079D53D -3FBBCC93C598FD83769A8C039EFA0C7BDC027A34721E437E548F120137EC099B -15D65CF68B5F2E5ACBD11A46A6E2168F6E38DACB52D0AF949B8BFC8AA92A6C1B -E5A362B1B05A46F3E58921F6A1CD4C97730B14D31F0C1E2C132D25B2A63D631D -C65813C00332FB695789D21D9903B3CD1425CC36C25C18C7D49014F85BB771C8 -D0D18204492ECCBF69D97B2342457C95A7CBD46C489690CE6B4A4363653B9D46 -A5A03BB8BC675B56A1CDFC8E0C3BC7DD7E4804E61DD27EB6D25119887EEF49DE -905543AEA98A60471A3D512D63CFA12F8768CBDCF8F9EDD9AF084027DBF313DD -059EC75136FC08C22D280B76F1A4AE628CF21DB9A6E567085DCEF55E68812A8D -F72DFBF59786430216884E02416419FEC67428E36B62093250EE61EDA4E9FDC9 -08F01063F9841E1A5FC54F34A65F738A9E330E8074930BD9E85F05AB0E9DDCF1 -2CCC343C8BA7619FA512292B53F37BC95635A3EE07C3E4E91B123E2CC34EA9F9 -123C38F41B1DF9C2A7034BD05D83CFC2B86D69639B8C34940F53F44D5F549305 -F196464989975EF35F33B2B4B52CA9EDC6B32033B63BB03462CC58BBED662365 -2F36F7A46A371A60B245D53F9A7DAA64428EECD40A8F4C93D460490B092558CB -647E53E34771DC04DEEB2C285965F4DCF2CCB8669ADB238CC12897F7DF46E6DB -FD9D5BFBEA1DD262C4CC1B24E681643FAB80B34D057BC920ABAED5B39D2ACFE7 -4CA3A1999ACF8C9AD0F99B12922D37C03D06B77985EF38B3FBCBD6AFD21572BF -84A7BB8C4ED5C3BE657673F8E9F3A1655C0179A4CA565D3B6F0949B2CBBEC189 -B0B46D5727EA5EDB274B66C9FD872C00969B9C6B7CDC3A8CEC053A443CB847F2 -540FAE81CBE3F6B306D1B8B913919D1B9FC029CD5D414DB2E16C7EC97F0BC73C -1BDCD5F3FB0695EB84873FA73629005D7CE48A9A1374CD2A0DAC7F507D3F04EA -A8F71F37B65C4D5F5928C7A59BDB73E1702D4E9508519508DF62DD29AE1209FA -8766D6311A78B12C830AC0D870CB02DAC0D6434801CB48972C196E0CC92BDDEA -398622BAA5B384FB8A0396777CF517A08F646774EFD5C6CAB81C37ED7AF68276 -C86AD81C3C41476A6398A6A22D65421526EEC405F6CC9F2520FAD97FFDDBA3EF -9E8DD5295CE2390650C5B19930B45A410083442196A24413ED58BC3994D003EE -F13DA0A43E7D99C70365FE768AADD61628BDF66FFC0D4195AE0CB7FF33EE475E -2B0EB97F66B2FE63D3436568729519B2639BF5AD17F7061BF9F8A2EADDC7F806 -50C1EBC0AF0BAB233868B10EC7711A0C2FFAACDCE3C49D3A0301C49B82A2DD78 -92BD6740EC601CBD20D460B90EED562B2AE48E55A7C28C8643B4DACAE95AD33F -27F2CB34AC65A0E62BE71CDC3D05361D1F07584945E4E89514C40D8A3132C707 -A4D56B054572CAF5F12E40406C26E5077C9E255516000F1733B136CA5C58961D -A9B22F6FEE7B57DA278A3F8F2B8A2B52B5E2E1FED54F14AFC9F13B18734E42C5 -C04846F7CEE4700920DAC45D381100CF7D5DF4E601D3B933998D86D5FDFDF666 -CC4ECF675477D74327EAB256DC1727A44C3F7A6A970D9598EB46A5C38E81F3C5 -10D8307C19D849BBEB0C962BFBB37409195756E505278D619A73140B2C661235 -2091B4C6A3C81A3F532B8168E69EB1DA998C84834C2C87A910A2A65B264A20AD -50F7B5B8DDA82DC3F45F394BAAE1BAAF5FE217BB95A30E2164C3193083013EDB -950B9F2F8559B483BD35507E77A8C59CE5E6571EF07AA5ADFC51C4E54346AE1E -6E22EE5A58C7B31687B936299B29547E214971677A0D5FDC566E61EA08E86BC6 -976077F73FBC8EA0CFCA796D37DDF0977130FF25C4791DC6CD5B7450A594BD1B -291A8650DFFFAB3154F4129AEBE08C3A0F76A61F23A6662795F20B096772DA49 -FDC818E8F431C8D7488139A55443B81474F5D80D63E1CC6B1AA2241C0AEE0169 -9077ED92D2CB61C71F765AEB0A26665F2677D214B6C5EF0111171B165531D3E4 -7E9E43F1659A4F3E96BFE53F74D902BCCB2557013D900D19B86DBEE27F12CE31 -A94697D4DA12D98DF2F197BF7B7F6380E1CD7D1F9E13B65D5841A990642DE6F8 -0F86E9C087D82FD2A903B7C5191D7D87CB2797C3B24432F7D29BB50DE05D37A5 -B9090F2D26B1AF1EF3DF11645E317BBAD8136611F64885A3D635C3C1F1F42995 -83BB3D6719766FE2D016B42753A30887C1D57DF9CB860FAC2F95BF993EB7DC4B -F61EA29CCCA247F2728D4504648A8EE0B7FA0A766282E63511F89CAD7B612348 -7E83A9D8F233757716321B251D122D9793FCC20090AB7BE19B1575A3AD6CB93B -9FED5A9A6CDD855A1F09FCBE5C9DD97F93C49FAD92D3DAB4B32DFAE82E36165D -5A6BFCE2AEA0F568A481C480D75C1F32ABA8FB904CCBF3FA6AAF58C02B501A62 -4D6C1F8F690BB4B7325A31B13A712549AFA18174BDFDA6010BBFECCCDFDB06B9 -406732F56AA41EFBC80266EBF0B9852EE08E76EEB14A276935114FAD24214CB5 -D177262C90AB93798A00D55A152D635C96846D70395C7EAC49F7A750027F9024 -3781BEE23D56131397B4B241BC6976A4F2B04C8C64EFD55E801D833664019765 -7A22B810889C096B55AD2B4D8963CE240D5DF0FDAB71E9091A167A80F5A3418F -DF87AA78FFB1EFEBD8A2C97E8E7667B289BC23CFC16F0B138CE179402015CC4D -F36912CAE318490F6A050B56B778DCEDA7AD335FBB6F3F05C526C8B5EF0B7BD2 -DFBCF5FD5C40F39B6A3455B86B34E89060AB0E6AB96C3914019CEE49EED033F2 -EE547725E1EDD60358DDF57F9EC734134515949C482D52079316D9A2481A1547 -94B4CA6724EFABBE3DE13F07951329A119D84A07CA8CDB199704694F4B3AF26B -95DABE0B18F99025A88898EDE46BB3C314FDDA77018279B5DC8C854096F3C7F5 -4DE88F3BE84881A03C5E19A77B769EC57B4F6E5BB885485CF242A23C6E5FC322 -04511A00F27AB274232A97A2E5C45188538013667C552E804283C579F1700DD8 -B3C70F6D22FE133C15FA6D5095582333F9B4495282BAD0537B90BC6548427F7E -12C9D744869A3F5F133CB2CA078C83B80F95AAEE5D64203110CA1AF12E5E0273 -298B2EB72DBB5FBC3F6A6D7004FAA17AEFB086870C83E8D742EE560DEAA5F727 -CD7BA16A4D6FAB7ED191AB92BA39300BFB73EE31B7820D85DAE74DE35B2E3FF5 -8879D9D02B251D7903CA30DA07E2B5694F23631CFB5EB08656AECE21A93DA6B9 -EB6CE1A290631B795A55CA75A5EFBC99BD1E21C40D7374181C96B43B696F9079 -E7BC8BCC96044E09E48EAA625B9D5C53CAF79C84E8032A0F976EC2FEEA9583AC -25DCC02DEC8D4798E0C145CC523E5EEE82A1A73AE0EFBB08876278A7983FFF86 -527052AC0100CB273390888702DA5C62889808C3DC427BCC5B0A8D787102E641 -2ABFCA74C325F26A74AE2CC7637C9996547B34F33CE355165910F2C0E6445E7E -70DE25D7D187EF97902D4D535956A4ADA1F1FA0CE9881399477A0B72CFB5F841 -1893157F662F071419B5AAB14EE66E1D478AA9DDA4E4DCDAFB7060EC629ADFAF -5C779DE9AB8A65A65722109954599B931C42DE431F5A988459BE94F48F7D2539 -1A8D09133020EA37FA9C7CF8A32C9C1BAE51E112CFCF59CD7FA6E9676BAFD4D8 -093CBF4FCC3BB2E468ED55E28D75DF47CCF621662632E2087A8227945723823C -02629CCDF94D5168A3810B815522588487CD8AD69EDE6D7FA593E638F603D808 -0E2DC9278B63534E63D22876BDEE3A7CAB88C637DC55C9D1C4F3309C01DF68F0 -3919523B2CE7CA52961AA3C2E618EFE1BBCD2C8DC65EC648CD380E3421F287C7 -6F7308C13F6D857C74522BE6A0B09E15420CFAAE8DE28CFE6350217DA9DB5083 -D15B0CA455D343119E3C1D25F1CA143D5568D63CE32856F21328D5AAD69236BD -208BEC83099D6652E91253440A613155EBE7F2D902CAC765F5049FB5433AD361 -7C7EF2BF062877DB1981B9481F961A097D0402CD89E0BFA180027E29B990C2EF -138AACF0D146CE117990CB9561FA6C0A8D1929D5B8BA4C4D9168D6A744ED4B4F -457EFD4B36189371E60DCE4D2D97EDE139145241DFB26394A142D4457AFC0E04 -990DBBF7E40FF9CC5B0624E9B898CEED3A63865690D1CA256330F472EFA9059E -81920A9D365AD4CF9618E64AF8FE19DEFEFAAABF8B878C42C07490AA600C0E56 -76E6C97F5B0038169395855E4338C84108D1ACB59E5482AF5FA034769A116EF2 -F408FDFAF2205DAD5AE5324EE9F1AC7192E070EA40EF350817F8A69D680DCEE2 -1B30277FDCE432D5541D27536E9086C2C74B2B0D5AB976C3E188EBED10777172 -76F7D7F73E38D15D03809B350C2F55E80AB7EB7D4C4C9B7DD97179F36DB5E4F0 -1140662023CA3C389A8B168A68303117179A4AF84A64B2C2A56ACCBECD6A98AA -14CD43B8CD3FB79202D957E0D5BFFB49967E5421426205FE24C9608E5F591854 -DF895083505CD0A4F53DA06D931AFE3BB68F3FC3DCEC7059D3FF5218BF5F1082 -CDEA29587E7E9E357EC1329411FCCA0C3078E9787A12EA78D59B2E8CF2AF09C8 -DA12B2B0EA4A43283C8FC9AC945EB0E63CCFE272BE758B0F8B2C9BAC46F3BA97 -D05C0E720C584E805589D2804EFEFEDA9962B4CD5B145FF7305FA959B660FC9B -37C79503EBC2D1639D2593B0A9F24EE3CC07352614C0B6C531585F27CFB6EFCF -044F2F2A261B0C2D79FF78899DB6B1F2FB06BFAFEB488504D2FD579F55980DFE -9D15DBCCC176E41EA7AD6364D40D931CE561E0AB57F5FEA21549290E539A3C7F -DCE12F4ED93538385B2D30DFA578BAC6DC92A144A72D1C2CEA334ACA6F6C2133 -D1996B97AE8B102EC56426ED5D59DBBA11BA7D6FD39A8692F0931B64538975F5 -61B79F8640773407E873FB4714516037A5C6FFA8C796A9B01898CDFDC2A3F2A1 -5D3BD4C09165F6AFA9EEA3E0C84DB1D058A4C54EC0673860170038CC318DCCF7 -1F3960F12AA2C9447090D91B0EF8A320E933FC8E89FDA5D5897266A4D156BDB4 -077745CC076FB9A12F9D3BE989E2F8ABF44F4BF842DF548111DE129B36B535ED -E5ECF8AB96D94EDB9E0484E00BF942491ED250EA8E062FC59F223A85F26649CC -AB1AF18824045625756CE044529471B253B1F3B5FA2BBC3DCEDC457C0A42E29D -7A152AE14C8D60122C5AEAF5D4360E51BE81A84F3A6CB164181DD1B62AB204E2 -3F078794D9FE570D6115B1C9DEA193996CEBDC5A32D8EF3EA3C309B9F87C726C -5F2957494663A92639A418C450D42D027053DE7342921EEFD3CCF162DBD32E16 -9C8FF39084FE1117958230EF168E6FA9B48590EDC108D7FDCEBD76BAAAFFBD0A -4EBBA485DEA8C89778456A1A36F420FE78B0A8F854CFDE7E26E76CDC2270C983 -1D5D914F3EEEC7E4105228ADD1646013CAE11C03108C6971EAD9C13524537A4C -2CC3D193CE5CF0FED9939AF23E241FF6C82FCBE73CACA6B4B6F88C17A18CE4D3 -4F49BEFCF830777A1B26CF228DA61EA5177A826645B18F21C10E06C748E113C9 -03402DFE318270EAA54F518FF635C340FF581055C1529CD6976951F6819D5A45 -A4DD081C55E7597D257DB9E2E3DBD46B0878895155DB0C4D859B1E61291EAFFA -7F2816E365A5D6AF6EACFD49362833DE3ECA447871D071BEACE9EB8591F31EC7 -CBCE3C2EA428301FCEB42ED2E082F89476F39F7EB993044B8DC23832B25DD3AB -FD6E0A199A3CF03A79F323FF826682C8FEC47BB2B74C22A92D01F0E0CD8CEBB5 -C59ECEE83A7B02E949225EDEE26D5D11521DB381A26E30CEAC4D8E2FFB87E0F1 -44ED94C0E3C022D4B2DC2922321EEF1BB71DE6C221535B0EB6A9837C8A775440 -BDC58FAA05C859F05A654242BBB4620D92E5E8B3C5A937B98064BF97549E68B8 -8FD29B4E57EE27055217C910A199900E2A465051AE0573E3D46E5CD541BBBA59 -5062CF9444E95536CAB30FDCD35A56AF4F5038E65690633DA9890CE8229F6EB9 -E5BAA68E54F9AF6590B4FDAD42B7BC0A6708A1C2E809B743A5767ED46FCB9847 -8274E288E9B2A49803D238ED5FAEFBDE3863B29D55118E3ADC937E4B02287439 -B452DD41CE8298B10AE99AE275D45C5E0EB5680DDDE9F449855FF97B28AD1A9B -BE728BC56C8B4632938A4337D794EFDB56050F5459C031DCCBB1CFAEBBA79348 -F5514685F1F16FADF390B55DB5B671D0E020C03C8D301683FDA4BE8CDB3C7948 -2F5648A2E049A495608CE414857236A70AAEF5EBAABAF1A0950A2B0B814AFD0D -443CD6D2E0365332CEBFD557DD16FE1E3342A85057C5C8337ECEE5466406A324 -B7A5F881BBB2E442C9775A1C33B5321887E3A8E8001ABAA65B1B2BD1191D6659 -3BBD32F2B01A37BBFE2A3964BF37646262E4D667BEBCAF970226BE5AFFB86A1A -21CC0D74E7376B9634EC8BCC46D551FAA67603D4B707DCBF6C65D932FC76C2B4 -8B2D03F5E29C4E2327F5791CCE1E42395319739422607AFC0B6962680A04A5CE -B9FCA10C3EA7F9B1CFEA675F44029F68E3C9C0B90CD7751040239137508E1E3F -1FFCA19DA7B0933ACEB8239703097AFA4DBEC0FD8F94AA7854F83DF191A44326 -EA23CB5F18E342A9110D30A1D9427492564E7CA82FA80CDE8B7ADD8787B3FCDF -A5D52B14B6147262461F3563101CD20A457672F78F9BCB7F996D7699975C018C -07ABAE4E0987AEB32A45577BA6157B51E9BBC37839FCBB886B8987389D8C82C2 -0281A89F98874003140328866916A547FF0B47F24982E346FEC11458EF35C95B -033F35334E2956A631F7192A -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMR10 -%!PS-AdobeFont-1.0: CMR10 003.002 -%%Title: CMR10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMR10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup -/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMR10 def -/FontBBox {-40 -250 1009 750 }readonly def -/UniqueID 5000793 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def -/FullName (CMR10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 13 /fl put -dup 14 /ffi put -dup 33 /exclam put -dup 34 /quotedblright put -dup 36 /dollar put -dup 37 /percent put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 61 /equal put -dup 63 /question put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /quotedblleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /endash put -dup 124 /emdash put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 -569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 -24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A -2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 -8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E -3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 -D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 -D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B -03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 -767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A -8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B -DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E -94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 -22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 -72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C -8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 -344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A -64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B -07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC -1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 -78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 -CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 -7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 -BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 -4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A -5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D -EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE -EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 -4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE -0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 -C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 -314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E -DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 -EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 -DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E -DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 -7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 -1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 -69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE -EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 -7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 -CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D -38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 -22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C -0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 -BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D -4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F -3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD -B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE -15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 -849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 -FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 -4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 -1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 -84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF -7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 -CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA -4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B -3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 -F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D -F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 -DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 -D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 -56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 -8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 -59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED -49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 -87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B -8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 -C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 -D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 -D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 -F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 -0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B -5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 -229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC -17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 -01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 -F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 -3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 -689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 -4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F -A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 -DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D -364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F -7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F -26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 -43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD -8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 -C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 -94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 -C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 -B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 -4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 -7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 -204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE -B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 -7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 -279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB -E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 -CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A -65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 -BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 -6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 -B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 -63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 -4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A -A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 -67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C -DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A -5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 -C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C -9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D -B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 -963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 -D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB -B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B -72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE -B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 -8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB -3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 -668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 -ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 -69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 -C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 -3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 -407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 -11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF -2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 -4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 -2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF -9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 -CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 -DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 -0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 -5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 -9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A -EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 -09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A -2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 -AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 -324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 -486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A -EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 -52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 -9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 -4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D -B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 -BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 -6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 -B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 -16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED -E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 -546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED -6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 -559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B -C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A -ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 -04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B -7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A -8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B -A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 -94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB -C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC -41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 -7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 -18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 -9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD -E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 -5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F -4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F -E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF -9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 -89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 -7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 -AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 -3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E -61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B -F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F -D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 -652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA -07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 -6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB -EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 -BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 -2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3 -9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B -B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E -CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E0009760E9470F037FDD15E649 -93E9C8FCD9436AF02447C7F5AC380FBE69D1405189E8DBFDACF0E7DAECFA095F -E6AE1A2E9ACFC032BA9A5DEDE9DDEE22A88D9A1F1E0FD9BAE2D88FA168386D43 -4B93EFF3AD84A9C05A80462BB3A940B2F7311CF7054F501BDD4F1347213C9327 -5653B73E9D78866901235C66B0C49CBDE3A1BA3A11991E6B8443117745D96020 -38F4A74D9676E4E99291D4420C57ADE4A8D5214D07B14916D83DF15114393048 -FBE0DB83223F609ABE120AB877FEF549B6E2389487BB7ECF1979BCB0785DAD1A -2916961A1DA60AB491FC90BCD6578571226B4DFD204E75FF18FB5E72DFE8A028 -C66F8576254930567A877DBD22F8372E7BA4F23F9497ED653906F5F67A66A1B2 -51957AEB8D443550161075E5523F3D2AFF386E2640B276C3EC5EDAB74AC0DC94 -7D975D7F5781A652BD13AA7F97ADDBE68847167997ACDD038E74E930D8248F0C -2CCBC094031C7147BD8D4DD664184695CF8C474845692540FE2B8A72CDF9DB62 -BE05E15A05F59D56E5EDBE7C371BE5CB3B276FC7A03B5942057EC3136591A1B9 -15E504DC497B663A9DD1729EFD1478C233B9317351D000DC0982F061BFF25A3A -8983E560AE31E321DFB137C77C0AEC704F8DA99024232F26AA6920D58CB17DE3 -C1BC8E20988FBC4705E594569BEFC3F6666785B2FFA49367E3CC695F2A1EB846 -DEB37E120B0F4C0783C0D54655C143C4F74DA0690C6D08D07ED225F361BC0F86 -572D79540730791DCAC15823991FD5DF1AB8F25F84EF40C085B17C9070C59EE6 -31DCE45AFA78440BDE4C69A4D954C2006070A2C310179851F2D39B1B5D3EDBAA -289570BE80F25D75116BBDA61F002B832F9EF2C32B53258B15A1174225168B28 -EC3324C6EC61E5711811E658A1BA65C8D2D47CEC6071CD88DBCDE9CFD2BC34DF -1ECD2226AD588B50AF2399D171E99D8086DDE33E24640A767F249797B1B742CC -F4E95A64E1AF8D88FB128194673CDEFD6A1672DD1D03B6749E729587C0CB7C6D -13BFC785759F35578D611E924CD89FF87DFBC5C93FA7BE150624825F7D137CBB -FBFB1238C1A397826B8D1DF0A39EBDABA5F10B37FE8C27568E1C088F279A0E28 -020DFD377694024FA154AB5C06EDC3CAAC3CB5A69297E1079F5C2F351D81614C -D73ED708907A96F6F8FB0994D3247045E8D41028432E91C7ADB2F22066D6F8D2 -701298CC9FDA7928F99CA135B69808AF6FA1E0A3CCE1BFDE234E9218A565FE28 -96541CB9381E887182873FD7866F5F8415EBE92E51E7FF064D6CEB7BDBEE4DF9 -97633E53488AB11EE93137AA185AA7E4AA043BC73DF1739C92B4D3A8C46BA689 -B9F8FA73BE010D7C4F9007937AD0EE3EE4E3041C72A2C4DB92C6C5433DF33A10 -700F9E891885DAFDA44A00781BD019A9FFFDB6FDF9361520D50AA5037E654C8A -ACD179511AF61BA10DB29A0535972DDE8B838091B5EC3F6C3408E02B8CBB3FD1 -E213E2C53DB7AB14D465CB0E4FE2A2CAFA20E74BF4601CC23687FA7921CB1B86 -6DB57E04C99BF7F56FED75A052362016840676DE91888490B4A1DFE0C079C88D -C8C3BD3527F7C006E1403DABB47C3F9174208A379C221931724F06270985BDE6 -A53263227EDB00124C5677613BEA94BA029F9D6F8BD1F7B87C4426210AE554C0 -7BC707199BF6DB673E40D55741CE1F0853504A414099BA8E0BC7F5EBA5392684 -79552A5D4F7C0CD3A6D80B18014008AB011C8C66C74D32AAD748EF30C1AD484D -B56BFB090C5BB937E81189912665F332911E11E83CCE75A79DEC2838E811D5B7 -DA85AD6ACB7D8A98D15DEC66504CF2131FF06AC9A8A4FBC4CF34EFB8455C231D -0F73A50052AC8FCFB2B2ACB95033AF04078E9CB99551FBB1C46EE6C413D86C90 -AE8BD7FBDB7BA6E9087658C79C4758E242256C0546DB76A3857BC89F26A4DD9A -F4A848104BF1ADB2DCDA25C79BBBDB66CE1C1A45C7427FE7CE5BDDA7CB599B4D -B5D346B15414DC9688A9D00F0372DB98FD33E6164E5D78D6CCEEF0FEA60A7F5A -9873AA7E2A7F98893AC5A9598B71BD06D13D2766489248190A262E5EAA459888 -6D0A38261697EBFA55180F3D416C2190B36C309202D1619A405764612BAA3506 -7D157F49FA1E0A7F252FCB0B8459A30975E02748AE1A891FD6BB288E0D7C144A -1D348F1DDD145912678DAE1906796591E35012373AE01E18515F5CC3BB29A629 -F8B28B54376A9E10D0CFB29B81981E66F27B6AF44DDE0A3621B9ADADA9588201 -11A0362FEF840B200C84480177C9E3F0777350BE92707BA916A90AA81160D498 -6417DB6C7E15766EC5C9058CD51879041BDF2D2514B0D6B968CA0A300EE2E30B -6AE41238D76DF324B0502BF79D58C2DA1FF7E384891182AA59918DC8EDF92299 -BA162134FC3DADB6FA5CEABB94D1CA9BE1635F769EAA88377AD96510A4DA8F8C -5319E0C06CDBDA1BA9845302F716DECFF7B965BE413A7BCFF3C4EADC91626070 -9A5776EC64C67DDBDBBC66F16962306631D70E62616DE4997ECFE39DC6BC9A75 -D2297C2159066195F43B7002138456AE7EF69220925877C87405D06144D250E3 -55EEF1575DE8564BF98E2ED403591F2EA4F6AD71A126A9B1F5D350819058FE4A -949B8C3A7907A725B463B752EB3B44B090C731EBB86FAFE24340D1A89D3FC0A6 -B89E64C3FA480C91DFCCE4922C000B0533A052FB9305EA3B58A38A3AC2688715 -A7C7418637C393439725F0509B3B08E07DE5E0350A005E4C5DB815CD317EDACF -6460DADCF9281BC6523DC8FFFFE18CFFB2EC61884E7B324806851A91F7E0336C -F86AF2C88F1EA1EAF0F87013AFC7DAB6F6BE426D92A406437E38C75614AAC461 -4EDBD8F129D985A1385B0F9F1A4E6D9936FEC600F4E431C653DFD1D56F694471 -FABDCEC7BAAA0C266D35D7380AEE587F61DA5CD1229D99F82BFA7B1A45A165FB -658A4E7A741E11931D6E5C1358CF76056CC0DCF4B623C2A8CCED91694E46661F -BCBA0225541BA9A58EA1F2E2B2402299EF2B691C39A87AB3D5C722DB2738EDC6 -8ADEB09750D714286EB392D198A55784AD908470517724B92849D539ACAE89E7 -A8E37CF20CA87635FF92F1140DDBAA76CD52BFC0B40FBFCA768F837D0AFBC7E9 -BBC89422CBD6429B284F67AD2DF917AF69346A5BFE8DA3DA8F9597C2265F3BC5 -A90CCE79572DB45176AED6E1A5FBADC98816F0E29BF58DBCEF62EF76A8D8C845 -4C7E9AB94A0EA43D2FA271BEA800890613D8247171938596CE4948BCBC7960AD -5B2BA3E0A4384749A7D88F3DD515CC1DA7292EE9775B67F621E156020419D0D2 -1A6AF5B51E64D3EA7D182AA65AD1F663FB28739B86F9EE5880A5A96C3AE1C563 -7A002FD0ECE3AEE80AF18A0FBCA3EDD496C18C8974E856BA39226C382CF8541F -F7E2C35B3CEB1DEE3BA8F346199944BE2F350E4C3DC89D789250C3C5192236AC -513D1A3058230470BBA11E0B39141F48065B808B6FC459A897C304B749B5A656 -38B55950D6F379A535CE2816498DE36D03747FD07514C2DA1764217BF2DE17BF -C8FB2F06382136D301953DC42EA0B429489275571F6B86AAF496E6A2EB196547 -B76BD6DFF6054DAFC9CDC11FBC541426DF0351ED027FE76128411F6F62DAD159 -C116B43AC59C885B3308B158EB74405541F2BD247BEED5D3B35554EABCC133F1 -B71EA3C7C7876661EEDC141818A3E8A9C519E7054E26DC023320A0166FED1C19 -DB1C3044D23E5BA7F039D86ACFBCB5F881A6FF9135E1F5DCF910A873E6F7DF8F -11372C039D09A875DDACA3FFADB73504C1749932C3792CA80D78979CE0269AD7 -47CBE7CA39E26FCE1E71DB711D176644423FB964CF8CCDF16FBB686877B1B99B -FC570BBEE55DC7F2AED8E81FF38DFD61322F1FB69E5CD6EEB8135128A35FC23A -5ADD95D4F873B2EFD14A1FF76CD20454BD3BD2752C9A5F0C21F1E5F39C5865C6 -D4874580E6224B22FAB9240E0346C843AF0C495E7FD5B3310D90A6308D47E882 -EAF80772C87D3F7FB9DDA52F253FE4E3D1E56EBFCBDB9BB9A977DC7E9772428C -47EDCE4D4F793F4DB9C66E65827109E83723E50424A87B36D6E74DD05B327128 -E407252F937ABE315B18312C8BE965E84ED9C895D275A331EBA6E872DBCEE1BB -C6254960940B95F46CAB4F8469E7412F546E62683AA356366F454308367A789E -B1E6F3A07B87829111DD17856727E948E0FAECA4EB00192F125C2331011AABA8 -F4067FD01D56853FA445ADEAE5901242DF460ED8AEF939332F87D81DBE9A30A4 -18884AFF8A7F00530BC7DDD3A1E6C40549BE3E567B225E7C8844F0AF3E19A4A7 -E61F818A5F1BC836012FBB9AC4A5AE737FFA908EBFC88B2EAA62877B05B1B1BB -65062420B89BC4C3C4B7CFAD1148C6A373F26ABA9A8DDC74DBFE47937035DB49 -20F0B8E788C0AD02381732BEB2B9587D6B50E6F7B4E9DAD171B8C64B60A04776 -F70BDD9C6C8831AE39561701FB54D68810E4C3249C32E4D39BB40C500C8A735D -F316A68985E3A0338D8CF730881326E2B76D75BD2566D7387C0DD8C5724592D5 -1FEE9798B269DE09387D3A1EDAB20063BA852726BC7EF07CED98E2DD1957F94F -7E336F6047A935E128444DA8F525FF1E458ADBCB1B6D910B68955DCC59512591 -2F1228007F9524A0AA6113FC6805AC4ED806D5CE6E03AC9EB6830EA9A7AE975D -99A4FDA50B92FB6977BCE8BCBE2D8EA44BCE9B39718584A452205C4349561CBC -7B1E281C058D0BE636CDDE883E1C1AE3802A35C5426443AEB6FF705EC26AF94A -2A7BC536F373C0EBAB41C780E56F5BD1CA645DCED5090CF32D4F0E5A780651A0 -477CB27558B2D0E2AE3D0A02565EE38D5F437D01308A6BEF55E80422F5B5B56F -6DD11ED717B034083F9BB1536D76E321255A137E618B398875B5BB8F5AF02B6E -B4DFFB173C424B2619F448F7CC3A206BBE5A6246CC152C59C909C600F63AE940 -60ACB023DEE119BF9575D15049B5DF6441715F68B7082B9444408864120F5EAC -9AA03C7C0DC1FFE2C4F80F12B93F6735B9F0BFB8FD5009D8ECE097B08A198D7F -0DD0D8F3F32E23EEBE92D456E6C19F095F70FB5A0A4EC5A0A28E2A1B48E97728 -18BB643C3174C5B882454561D9FB758B35D8D1AEB3C6323693353496BBBB7A21 -5DEDEBA1AEAC77D8189B2F2E67A9534E197055EDA86604E54A0692BDCD66B790 -068C176C2DC9F8C808E941210A9701E7036C6090536CC8E57D7930DAAB3810F8 -CA78AC8BA0583A692B3707D8EFF67852F1D10C2316CE94B0A86565F33AA21D95 -F10EB3AC20610AD3E994906B46C6341AEFFC14D68FA18DCD7F47031862B77761 -33AA4697C83E422B68E3088C75454BEED7F2B2683DEA162D64A2C13A6FB9AEA4 -805376FC30C38D71FEAB0270ADBCBAD2783F4EB5CBFE07B3C8092CFB44CAC100 -596981C49C201729363F55CB5BD83002BD6C48EB90BD0025D0DE37FA60BD65E2 -0471A4D7603AB24B35F54D8CBFB69C66F8B7479DC373EAF98E179445C3C75D83 -A4E3F5FAD36BDF55E1277757AEDF5C5E653CD8D20E88A4E2A35C3DD1B28EF3A6 -AE0BAF0B4EE0183528D3D4D477A37B1F1C8FA2ADC6AD45436B44E7DB3CDA336C -21984BD90389BB4DDC946C5BB90DD36F3F2B717EE91AAE5DEDFCC61346445AAA -20C69B691AE897BF37C4CD53E7EBBD2A688329980006FB57DDC23A76CC50319B -664277FA194B7B3E6B367A64DA7EBE5C2F49BB2654E9F9E2F90DDAD323134ACD -7E791DD8D54952927ABDF05859F1E7A261142BC8E3FEE76D68DE3D934A6CDEA9 -EE0EE9B475A5E0A8EDD62B373557B19FB378E20CAFF7E6D7B8971397651754F2 -0C1AA7352058FFFEDF2678D577786B0A1A8D0808B3E8730B61181173E1D303F1 -F7E76AD64859FF5174978587BD32367BE92A0BF88EAC6C6CD1F4C961C2042C3D -2F30FB270135154DB5AA09BF613BB9E481B003006E230362A670175F08FC95A0 -9A04E761D19EBB5B5E35B178FA281E1F9D542012BE66BD263D5E0D33F5D9AA55 -65AA4E7455DC8DAA3B1282847D24867F1E2FFC0BD6FEB64EB3E24456C8D7BF03 -2E63825C24B8D6EB7CCE2D711A218FC3388321F35029B10C914A76A86A2979DF -065AAE38A3F880BA047D4D1DC7FF83B27D5E0364CE9BF40618E9AF2079365F3D -F3C3D03B6140A53DE5FDB0D85D448ED3EC184EBA2B807FB3013B3C1CA1A586FD -ACDB00F8DB768ADA36F90005EAAE1A89E8E40DB045F2C1095F8958D9193CAB72 -ECFFB9AF10717656BA3B2E3D09B0E7911768AA2B661A2C87D66FBE26CA23F6FF -EDEDBA40CD167F1442F4560EC101A605EF5A76972190424F0950923396C7E375 -D3B55F06B378166B6A2472B83F8E77810BA74FC39102DCA7DF768449EEDC53DF -25FF749A0212C8E77E78B7C6E53F306FC870F71F07F7202CE18ED5A1D68B8B61 -E653DA69E05E6B2C0731B3D298AC63257B63B773CB51D9C9651C5D7DD655F503 -AEBC24932ABE55B9B2FAED40FF745685F0F7DAB850521F1F28934F151CE0E760 -3C95C6FC654D51E5F280BE0301EEABDC20A53CCD02D6EBB7C743DAE40684B157 -8E69DE455563628C63938D6E77E76FC488E905753D58A74E6059F3834EE88B5B -E11BD205B63E7F44AED092763076166B8AE25CD12A3F2294B94C19724F97ADD8 -2E8FEAF5841F52D654A5E366454C625413D5D14069BDB1C02D34F8C1E04669FA -50BAF7DF9FEDB9745D3C220886B78DE4B272C043F37D8A9B97C584B63FEDAF5B -EA8FDE3A373DAE7C2C029C892C4501E140EF3ED7A1710ABD761BE6E39CB18F55 -21529A69844CD87C3E55284348E9297B5969A37FACE43C4E10870B61801CCEA4 -A236288DB3F6537F7E6EDB5A39B0BDDFB74523F3B78026A98C6C7F7647AE4005 -51F0B7333CF9DBEFAD223CF07D577F09D9E40E4DA34A7A91A6827D628FBEC964 -7BD672722BE1647A4A51ED1E53536958A13DF69165C10471CC39B939813DA837 -26506BD312569097CE4C542330127D8316574BC6B13F234B514B13B151F49F38 -5FCC1511A11B3E488E31E7EB29ED38D4D9A04D1606263ADCE796364A0E1EE611 -73145BA0ED50B329ED72DF373701AB8F83DDC0BE85D296C396C94471E617993F -34C7F27E96963A3EFEDDE4E89BDBA7C606BC6FE2AB63CE2C8C52724C004924CD -B284DBEE7559427559FC1A5C5EE739B150E03FAA4573E4FA0D16090679BEB417 -78621339D334002D01BBEFA8D4D8E02425105261E9B093CBB0337301155CC554 -7B4AFDBA72FF0D111D26AA6C89AE3D8BF0ED28CBA683301DE49049527C0F8618 -A1B48D9906D88475DF2F3A9657BEFCE34FAD0A4801B959221A49C6C7425F20E8 -889401BA118221E6196957A790C159360437D7852A27E752C05C01180F80F2E4 -5FB6D1A0B2B781546585A448E7D528769B554936849DB7AF7CDEB393B86CFE30 -0C4430F7859146D7A5E371F0C443AC6B5A6876245643A2E147806EF7E65470DC -5BA1574A7849C14F51951453FB88BCA11C8B6D5B3BDA0DFE79B68B9C3AF7CAA6 -DB4412E0AE6D40004418B10DC55DCBEF8411D6A2B4238EA63B9C4B7B7210757E -4B1148742AD2ECDD1F39E47826EB95E38F304BF507AEE75EA8F814C537FA1494 -FBF1E1177B98262B9C7B3E06028936A2BA5741F135FD20B32BC987CDAC91C6F2 -A528DE9C430ABE7B8A3DFE96B2C4B7453BD94595DDF7F726810143A8BD7F121D -4E2745AA2A2CBAF48576476D8346D0637BD329FCD2D15D164A78B4A845421D98 -2E9B65C14E8810A2E4ECF05966B2DAFD9FFC2E23A27E74AD8A8F41964B206CF5 -46CAA9F0CB4F9302113C4B84EABE1C34EA1DA560286FB89D069E933AAA6CCC8F -8AFC1A6D5CD46B2D3FC079C42A3CD448B724F859C71755DE746791E6D2663C62 -C801F5A3851EE07EC782DCB89CA9284302F1B238962F02A970221E248BA87485 -3352872C96DF0AE2A25125880852F9BC3FF3EC521E5377907E1A4823F6F71D8F -4A00F6B64393895826FA8A795A22FF0ACDD7B434BC0B6B8CF644F277B5AFC638 -CD6110E69851E986261C4FEC776D9FF446F974F01DA8B66C29AE35FDD26287CC -AFFEC304EF0F4B4D0207A48822373DB031BA5B0207A27C202B8E6A9225569269 -FF224E7A5C7952A2C9CA7C574877654F5A885AEB53157CD9E1F86FB8CE6BDEE6 -3B4B18BD0DF048CACAEB8B1653521B1CAC70674C8E0E0F52D1D20FDABF255735 -AE84F2460B88FAB55BDEBB0E92319BA90A6860DC939EAAF454D3A1E7CBB60ED9 -F94363F069F6A7209BC408E29C2769BCC287A634BCB8DA80836DCDFDDD265D6A -BFA28CA76A1ADE69A8EAF62540903706ABE09BC0E91DD87EB38D1482BF79862F -85E4131AD1B172EE0F47B627EA39F14BF808E2E7399E7A59886A48B57F06BF74 -2A81D5A429F8D96153B68EC82AFE4E3046B20CE5B56A6197196EB1BF5063E415 -F75969C72918F0FDBD0B6301A3582DF9089151515B021904659D1BE4B43B29D8 -A485C48F803C9F74186C527DCFC6322A48E4DA39A29A7DA79EC395AE61FF11BC -9860E8036B67A06CE3ACAC15BD6F5E0BEA287EEE4F16EB3C905AD31BEB76E434 -028449F1FF147AF28F382929EC5AAC6F0528D4A5600895EF0852908D4BB6986A -34BE0B0F5BFA99443441E4396ADF11820A37FD7EB079601CA692CB3C950447BA -46AEC7F4BF6EA0787F9522A015D41C58DC0A9ED32103892D3071110EA6189FCC -940C1F39290BBF3253CB42E015108018D91CA8EF5D52BAEF026FD1D20C395B55 -E0C6A8C0E199E9678594AEBADB4C7CA15CD16B1D97B9E9414077E4B9D7D37482 -A2153944B22860F6E736F0E3B88AE3B66C7FBAD2545E2867F7728A4E317360AA -51EBA228CD7BD89C5CF33F50F00382E2F38A75837487AD9D5058423A5B0D4FC6 -C40ACF7D697AA00F8C0DE7B99855022B457C2268E5316F7F496326F3C86E7EE2 -83FFC6DC42BEB91978670559466F2918BA13C5E7BCD36D589100C292D0FC124B -567BC886C60C646A20A0DA1E59620BC57F2CC3C7042C08FB6D992C2CEBAA45FC -B81B5D09D8FF740CB6DD5E908D6821B32E0EDEF8660AAAFA262844D5213914D2 -828D12AB9EEEF9EA65078B05975B4625D5505518C08CE8C150F5CF933B17C7EC -879D9839BD08BC38F84A0AC362C260CD0B56A504351AD2DEFDE3EF044F9312F5 -B9973552C834A293EE64C2BBA4D47B2A95DA434BECBF22D26624CEA215B6F364 -1902EB2150210540FF8B9678AA483FB1C3F103DD6DD86B0E3016A4DD00EB7B5A -BA836EF9E9F26307F4648603AF92FD8B9EEA19125091C3F33F50D9EFA965B7AA -E6D8F5EEA76A1874DB12C874162074F615A0C141647EBBD184AF5D53418BA286 -AA3A10106EF65F09511B26EA124725C81583B79351B96322257EA15583C600C6 -0E8307CAE7853FA002CADB2A90CDF98C8FEEA629A25037E718017B87B806145F -F20E0057F9CD60F0133CB01BDC8E502D2C4B9100DBEDF93F955A35B70900EAD5 -C045B891E0CFA1F75031BA2B346D0CF632BD629A9C5D3258C1D7E0C9D1D1593A -110BDEF6FB4B638AFC2F78DA1B4CB524A2B3502A4D62E7B13A3D55A68B00199F -5687A3D259126CEAFADF2499D0133959B0BA9629D95668D7AF12D82A906236A4 -837635EE78F931B00EC1BEFCEBD8B97D468A0D38B449841947B4A772BBD5FD5F -7B1B657B2520AAA600A439E395584E339DCBFD6D0256006F7C9D39904B55416D -507548A98EACF534C4587595D6A9E276699BBF2BF016D4CEF438CA37052FDAF3 -DA3D2D3441E31A623D3CB143119FF95A1F04BA7D3A9B5E561C492658B3F5444A -7DE7BDF42A7E211A6F624BAFFE91D61EE884FD84F06124ED9677A15B6131FF49 -205BF0B9F7CBA8D2A6BAF952F5022EBC8AC56567FBE269472A08FEA231219970 -B7A9D9842EAB692AEBDC37C749562680FB7953D8359D8307558B8624E048BDCF -C45CCE9134E120F8EA1A4186E57821CD91DFDA1512200D0F1ED8844A13554EFA -077E848618A426A480B82B4556079C11393F07F355AB53494B965A3B304DFE8B -020CFCB4782C58065F0ABA591F4B807003ECFD955C73E38F37CFCE482B2A5A30 -D32D608A142EB964B6B66C3B6F0FDCF83BB5E36E45E43EB045A7BDAF0C75953F -D382040EA2B54AD9AF2F7E9B582B19318D7987DDEA32280EAF70407FC80F3459 -F92A5F4627E229EF4ABAE598BD9C3324B07276B9E945CE4B74163B9DE723933F -6BED2E0BE0B8E95ABDE2C4FD331CEB50944C8EA073AB32C0B7BCA5AD33455872 -08A32D4C25F67FFE0ABC8DA05DAF65F6886BDDA191B493BA7A1211CC98C7FCDC -25F0A251CE379F378F73F9C3FED8DE5AEB3D4C8E2CCA39687138DFF0D1E26E96 -E9D3A4F6FBF5CB961911C0018F762BAF53CEFB2AF145C55E7AF367790D2BACB6 -411D6F5DCE3F27C4C490A9852ECF4C6A2659407FFD1FA16B5C8EA47A5BB00E34 -4BFA4446A6925E5D5752245AEDC5D4E5B2BF51908ACA64418DE64E3C1DD1A052 -BAD0CD6A1176091CF1A595BA13CF260ECE6375BA1A5ED68C0F21BF01A7EABC4C -189E2FBA359BC17FFBE565628CD01662CD4EAEF2AE0836A742381B59E4770907 -0252C2B21CA6471173CCA084F38E1A10B5D38E4D609BF30BCA7FA4223A4B44CD -8564002503E8C1FE7596CF9F3F6ED4497223A1AA2844ACD08BF7E7804BBF232A -FC2B030F1126608707757B37F2BF295B3EEB61ACA417C12C877600DF9E412EC4 -22313D45B0A92903DBC36F336B9CDEADD122024E4E9EC1719A05AF161314CF59 -550518D598C1F432F6F619D68C47250AE9631837EEB52180E307237DBC0FCA5C -D6445C5EA4284C0834AC268955B7084BA7D1384E8D4FBEFCAB3A1C8735FF57DF -CC8FFE2BBF52AB9AC097C1AF30C46548BF5CD32D71502CBDEB3982F85793C229 -F72039A25336266E5BBEB3005FE48F771ED9AA3161E88121B62F8D03976FFE66 -4D40E1DB342A9DC540225796DB48828FC2FF676382AF3D3E70E75DE05D7AFD43 -DDD0A21B5F28209FBE9C0D1713595D17EC31F94D3AE98131E25663BEEEDD8D77 -ACE63ADA18690128517D2A9C1EF0EFD2F8BC2C68F4DB891B4B5BE0A0A647FC5C -7248EC6256375DB235F48FE85AB575EB69EE092289102409A26E924F816408E9 -6A148480E3E0A426607D185993F36CCFB81468D01F25343F91969EB0C65C73AA -2407EE10DD59CFF0DF9BE2FB4069D03CC036E4EFC709B039F529F6159A3FAADC -95FA4993E57EC1DEEFC39131156A75BDC06A2659DCDC0A9FE78C4F6DF5ECFC77 -8D555E10336C4B9A873CE4F58A9607EAF7AD34C45A8C788864C39B9750E4CD30 -5BB52329B609780125FA6960DDB2CC21E368571785C1E61D4BA2CF57E996312D -8785290A893183DB2B8590E4C65F25E6B67CF08DF9713FE785DE8956BF9F6E95 -C8D0BE11BB23DB038BEF4FFD7A5C3C41F88A72A64E3C0358228DDFAE06E428B5 -2ABF80AE2D3C194A4C31DA6F294E7B988AA655D3105C5E0A01CA3D2F073F1C09 -903CAB398F3E78BBEAEE9AA555B5867D1A577BE0B7CE7B92A9C2E418C156DD6D -1C286A527A8345B852E6E364FD6DDAF9A350446AE32D8C195FB34D177BB12278 -03B0A4C993C2CC198476C3EB7E910FAA8441062670E619F06F543B4F0DBD92E8 -DDD0F9EAED33CC1717996FF3C961F1A31BC34351FE75CB3AE344D97D164C9C47 -EBC30F73E3782842FCCD01C64627602BD39C36EB76DE02AE3D71472C78112819 -A7B109DEE09357627A3AFC0D48BD43D322E9B8BF2C05EAAB45D3495B86A1E639 -5E43817B1ADCFD85BE0AE455EF4EFEF75A6C52CB8210AF749222124594646BB4 -5C6E89246CD90B89D60C2E141CD5093AAD78C31F724EB7C14F69AC451C68C700 -A520FEF0ACFFD8B4B2092A3D6534E2495D58B8AB3D76199A62EFDC2F12C39606 -EF7B0F73FB37BACDD3A3813220B4CBC66978AB207DF7164F05DEB3F9F7916F21 -647A6482D143482480CC14C7676CD04094C740EF0CCFC2AEA3B4E4DBE57DE61B -B67188036B013E93EB47CB55BC96C4DFFD6D671602E53C7807D04597708FC7C9 -F56819B28BD7E2731F3A0C71F08CEED40C354946F5CA237467DCA92069CFD851 -7BA1C0E398C721E597D47024670F64EF00BCC74036C9FF94BA8DDA00E2B5F152 -8F6D8FD9C58CE4B32D1F9E17490B76FB107AE92E4BE09378E00ADE4C7E737D4B -9B26672994CAFFA7B04EFDA7332AC5FDD175E996B4DF867A5A5B95CD40AEAF51 -5B91313A4ED9D4EE86EC9B5CAA594AB82F85D89B42AF50AACED0CA3046292E9A -D8EA95CFD0F67259D21E1C6D9E3CA990C2B159205F34F270EDD783277FA33993 -5F8EB1163FEC6C2A627218BED8BA4C38120E46BF161E75B623811C1B2E1FE99A -CF93CDF69995D628C6965CC12D5216C1A829CCC390DBB87D6FC5DCD0CBD188C7 -DFFFF86E17D5AA1162084DF13F51D139A3932B8107091A507E613F8FF9AAFC8E -EC4FB236994E73D8277EE91FAB4DE51D88E0CBEBA66BF190372DC182C643228A -9B6E7E0B61904496EF1646D7BE9BD12A49D78364706F4A2C494EE8B768230113 -80E61EC3F9A33A2BE64F7F82FBEC5A4537C4A10D7D4A902F7208572B6ED7E8EF -0A70D05D876B5D1163AC5E8E179BD0015DCC0614DEA8185FE58C207B5B559291 -A44B5D6B43208F3BBCB61185498F9C2DD395A1E27180704BECFBDB2D2E7F3350 -3E41D557D930D0BB781057C9322F2A23AD4D362D316EA4E46FF98336C761E9B8 -C638AA52F5DE03FDC7FBA76FA91DFA604B811B60227CDAB0AFD7EBA04C7F5500 -E71F6B96E79EB210BFDB3C4E17F8DE361C46A55BAE38F520504B4049F4D3C0F7 -0552AC71AE9ECD8C35F49EFE8F446088AA12607F77A0A132B78E7CF4776532AF -1B2218EA9138E76106341AD429D8609D77EB18796AF95E857EE12AE941DFD293 -2318DDB0112E3FC3916C38491E14D620033DCD1D2F568A06C120EB7694390AEE -21F3CA365EE38DCC3D67790684697DC838DFEE3BF615B7CC620928366B8A2ACD -CA3DA7A679F863BE6DA27245224DBD069AF51D28E7FC3925724903704F362772 -67A2D8C3B1E4C0F343BD5EAB5C821E9DD828A465A80A7DF48F5F1153DC56228A -15F81915064028C561A7D9DC00504A12B5212A658A992388250771ED09B25619 -08473133667466EDE64986FF166FC705DF06F970716602DDB38AE398AB0EA5D3 -FE88D039FD3CEBEE13D999870890EFE9521E30A4C78C154B9F59D2C0DB526950 -F4C803889FF887377848979FD5A5C135E541EECB1D296B053CFF2BA6BA2CB48E -137B678F06B1091389ED9E69CBE13A653E37A14A09B754B1430C265F503622EE -F87B1C22C747C6622ABBD1C3C75A8A0D980651BFCA3712291C119DE5FCE60E02 -CCC0463AAB39B8EE681FF905B4FB35D7501F95D0A87B2587FA0E16ED8B773586 -CA262BEACA20E1D3F33E07B38C9609C780472B665D577A1F868D629D84B3C8B1 -CAA7861633380407324D4FB9F3047CC3E8642B4CD1A035E3C0A10B0F43FC24C4 -92273CBAA7144D6530A256B2DE5D15AD3341E28A6561C1DA1BA572EF8AC0DC84 -274111F1CDF068595A77DD907A8381204026EBEB0C230EB3C563FD62DC5DF9B5 -4B7FB4A788BE81CCF9B912A186AD5DD1B402A5E4668DA0A28AE3C3EDE128B4BE -80DFC9DF0C000D812D932F80C2822B1640C8E3F46CEC9255FB2991EE1D3FC7C9 -F42669091B433190A5773AB2DE3B6A808EF33CE857D93D8B5DE09E2B864C1BBA -0AF8E9411252D76FF921CB6E705539D2B773F752269BD3158A25999552415708 -BFDE7B4FAB16E3E511C90EB134511BD8B13FFA2C3D92AC07962A201EFA8A9BD0 -EB9B25A7512478C70BB4985620C8C92DA55060E18C70C03C5B54A1E48B39FFA2 -C06EF56825E934988061EC893E6163D4D4663D51835DC13F98C27C5E5A186AE8 -5C63668210386C7F90B5B227A1BA65988D5E7B74B2F18CA8B30C08F1148A8A5C -7FA3F8C1047602BD4706725689C367B5024AAAB48E604AF5A54877571913672F -7266C5ABAE9E1F15581D195A8BF6913E875AD4C58999B19367801BA52193025A -B0AFFB630245F26A283A94170F1598CBDEE99DC2A1C07507BAABD4FA60039A7E -8CB91728F69F2046680A8AF6679F902F71563A0657FD94BD029DA971BD4EE571 -7BBCF3C1527987CAF4C3CACCD502BC7653632532E139F0BD2BEE36E8D37E314B -372B2F3752D3343581CCD5DEBFAE11A09BF4334F73D1FC50EEC98A00DC81E160 -E7DB6EC3916038DCB96700A607ACDDD929323DFD961CD5057F4472AB3BD98108 -6BA0C2708152EF29C77DE49615E1CD52153DC95D130758238977CCCAC94D3A16 -EF90CBACEA3BA3C4E3BB9AF83854AFEA1301F8EDEB4C448354F30F1CC469FB14 -2C85A552465AFFACE55115AA7AF3A7D7FA9F2B3186B9D0E2655F73F5FEDF7F80 -50A83D40D050E358F6904BD8FE102F19D707DB078A843AF32DF381E341FD3D4F -3B75F547CB126F70EE4C36D8B8787F0ABCB2A190B0490F22FD304041B0E4DF8B -35A64217EE77C40802292F7A4A0A92D249D789532F02A33B8CBF938381801FFB -051D924F5A52A5C539C57C13683B1D335197F069F5D5D7A43CAB5FC1B6BCB27A -FF820CB8FFAFE4425A11A3D1484B296CBD7BFD68596DAD18BFF8631B872C89E4 -E82BC21D71961677146744ECDBFFDA389AC3C1B4CEF371D02C3069788997B959 -7F56FC475657CEE7E1526829FC8EC8FEC33F5DD316A19F8F91E425A51606F987 -99495DBB3AA2EA3116BDDF6464ECE47EC9792F7A2CC58ED980DA3583C9EAF207 -FBA9912578E18A9461A42A0A7E192F83429F653E1C54CBDA83EFCE597259BD10 -EC8C15406E64E3FD1E62734462F66A1A8AA59F03C7E8D671BB2F71EF7CC9A235 -D0ACEEC8EA98B35DB4025AAF6627811B437A8E52F10AEA99FFB30C4A780450F3 -D6352D7DFDD0DC031675813F476BA4522EE91BE71BC655F2C390B56D36652058 -A203457679CFC54F75B515ECC64955A9B6F0818D835E33E8E3EC65040FF4DF88 -DB5DCC5D848557D88188161686F4195F26035B5C7E0B172A20EFABC8CBDD2E4C -11A03C4FC4D73D7D5008D67F4118F3364D1144AC4042812FF53AE2421C9794C5 -4A8C2E21B1D674C1B842AE430854AA1EF951521BC95DB6A7811A6385AC19A61A -86DFDEEBA2C8F9ABB91F6699F97A1DB7F943B49991650301C3FFBD7670E013F2 -54094C629A6819655A4C00B2A35E62D68DFDE02F682FA0341B1CA83C3CE9AC1A -C10D170B957C239F911CE1126A92F84E7C79F37F9EAB542457D8CF1C90674ECC -4F1CEAA8897E73746B4845C1AD7E7ABBEBD755AD1CEB3BF2E39B2C87A2CF45D5 -167D24FD7656A9AE53C0EB5B5F5493B9CB809DAF833CC6EF29F47AF82EF1759B -36D0C527CB5B6BA3C80DF3D409A8BBAA6E837A14D959888467C7163C6296D920 -40629C57255C4C2F93380C1C4D894E9960D980FB07D85AF29956FB705195963E -8C3B456CBE21B099EE0415EEA67C7F437CE777F1C94579890DE6639E39CADD67 -06D76B937312612E41B38016F3F4CE03D1E73064DDC7C6C9E970892A55DB007D -30BC2C5CDA0580E2DF13A4EE79A298B5BE53F30100CFAFC23E578B8ADDBE3515 -485728E382359D114C1015DE055A6BA02462C8224D8D0DED58A54E06153E42A2 -EF0977CE9129C70776A6908A6E8B7E58A4358778DBAFD944277A92D12E6E27FA -E6DAC6958F8507475AA3DA3883C5A6F3FA83324E37079E6B44A52313B3991940 -7CCD7FAFB690B86AA40A237347955E567F2370FB63CADB84FF1B9AC99FDC2355 -30A3B2C74B3F28F8F28FF30B9EC8112800AAD2419A982C3FD4480C45D91A3095 -B55FAB80ABCEFA4E1DEE7F7934D3D987BB9F2C842E8B54BF8C53615EAB170102 -4102F969A27A85B2D9059DD56B737E7A5FD13318C174ABBD72A4001093FE66C6 -4654BCD1C94C3EB35D3FE7ECE712DC781C2269530E395DA15402516F8689777B -D80A5607EB8F1710896230C61F227B96B30D90F34F95F945578C6F57EBAB5754 -AF5B56938118D79E98C816C901CB7E489689E5C3D6DFE80234237EA96BF17F19 -E3595E614C3675EE55262BF288064A9599E7AB5E22718A5B3EC97BB7ADFC352C -E3028FE22E3FCABB7717D4643AE4E291FDD07DB0015EAD90938D970ADF56660B -07B35F3D5CA96200DD491826249E7244C30FEED75325D0DEA44D42584E3979FA -BBCBA15A68B2BDB658D748D5A54FFC69E2F4777E2BC8FFD9B8222EE4AD0C7634 -E1E514FDE2A91445EF7A57F1DD74B041002A5679A0900617D776B704B82AF17D -4A4F1F9D8C655EB6E7DF245AD4A21CA0709D78CC50D3BD8605BBA89B8326C87D -08CEFFFAE3F4747E65D6166C2B77A8FF6CFF312D4997538390FF97E1F1324CB2 -D62575DDF37DAC2A5941B252AC6C53A1E4AFF31A478BDF1FA36E55DB8AF6EBBB -4CDEE70E5CB4DD2A91E9B85F5E9A1FB125E91ACC965A0A1981646396D63B510C -AB27EC3730CE29CB8B44A07696C026EF713B16A1976F981E9431D115B2FB9049 -C71DE7DBF37C93D92938518614C2F4E9027A5825812A8F8D89B44324A7072992 -9B2B3F9C5CACBA7E93C207BD6598349EBFD88ECE219BA69805109FF4A4F180DA -725B221623F04D88C18540334A0F94160878089735A78DF3A9841157EC183725 -5ECCF645CC2CE98A372AE54EF603EBD99F7F8B4AD7885D2A139E0D777A098696 -58BBBFD322CC5C4BBB41A76B4939BEAD8E0FF9FF056FFE301D5CA626D5057988 -EFBD86845BF377C99A5B8C4F305448AE05E657DCC59C69AB96E73BDD82DDCD20 -75D6BF26FB34A4E304D164ED532FBB642D418F4031D77140EEC9D2EEA628E67F -2A41A546105858D93779E8EAEAFC3C5E30B564993A65A6681A7B8F08F9A81F95 -3F1BEF143AEF54D16B69763E8699343C2DBA3B7B18F24516CC27DF4E6CFBFC51 -3D0ABFEA8661D21A8C6901AE8FAAE1C69DE48F797A4EF9E74E5D3AB4DDAB9A13 -6DA9597CAFDA19735E373C0CCB9AC00CBA8612ECE2FADB52402B5551C918ED17 -D6EE1A3271CC1BA38820A8B2277FC9082742F001FD3EB7580C12E4896F0E1FFB -2662B7838342B9C59D6871CDF40DDF37C5CF9E9DABB50EDFBA071108A505DF75 -B7F80350BF7FC5952AADED7CDBE037763C946C41229697B99F8410EEF31561B6 -AAFA8ADFA46C1A323AF857116054C3C610A7C68DD9207CA1EEC49C65D61B45A3 -BFF5A1D9D8E550D21014C230E6FE8CCB8827D4C1E9275C24EA409B9DA6982A45 -87479ACBFF83EAB2407525CC9F7171F444350724F42BD668110559BE4A0FE069 -11CF8BE111D312377F9E7A299278F2BEF5D756E0716C47DB80230FAA44E80D19 -E33FCA90BAF261127367BFA5FCB439EF490B0BADDD6FEF9B7C662CFA4568C524 -04FED1E8E476C8F4D453B5CA08CB4C93F5C845E2D55D10C4AAE4F5341C57911C -2B3AC4E44F8236F55938C35BF2209D0B0620D59E0D0959EEAE2336DCAF39E75B -6D908FD1CD7AFE1351DD3608B00D30CC5C349ED51EC5844028A2E997FFDE6DD4 -140CB0BCFA6EF678E063B8E43F2FF63D0E5C0A2B6B102EBAD19F1E7465791063 -0A87230C289B36BA2AB6C45BFC4ECADF46D2D2A9AD636A3E1C441757B5435EAD -0039B4BDD2FE49C8B274A9BC20C8C9279F66640B4CFC79B594262D8484C4DC15 -10B9C4CB8EDD33E4E4B2CA82E1EFE51F8F6474769204F442977DBF7FA93662B5 -7FB88B0FE3D01B0418C30E8CDB3A345586A77889F32C7D3B32D6CFD99D33FFBC -87A496B3ADCCB0CFFBD6F0F8503BB431AC53CFBC9CD74CA839534B0904146B6F -DA37C37E38BFD3018754C12F23CCAD2E8B9D785D0D991B6CCE7573D1A3CD11DE -5C13279763F7C01CFC080ACC80DCD121BDDE7D753F9E7EA5B081A880A3ABF6D0 -2A9E99436DF4E0D1BF51DB50836885D2BDF679547C03D32CC24EC7AE525AFA60 -2F01519855F2710166ABB6524780517CBE6CA03613BCEC4F815A3F26A325A919 -E88298FAB2029FE4809801B9F34BA5DE4913FC8AD53C2C69DB0823D341EDF7A8 -0BDD5820C5320F83136F120C62E533616962B0AC1113F7C5FEA153E53DF8DD93 -6B1275A9EB69A1AAF094FB239EB39B0FCA7DEB28FDEA4F28DEEB8D036DCED361 -A73FF212ACF355846A1ADECEBCC3130259B23D01F51EAF1D98B7C5EF0E72000C -0885CCB2229D7196EE55648E64212CB18BEF3292F638BDD0B05EF3787CC8A6E6 -B34FDDBF722CA2A4892DB03C1FEA5AFBC2BF9DE80533FCB41291E2B6B160827A -326D5A32CF971BAC82760AD86C8AC025DC943E5BD2B02B012996A58A2D7371FB -AA61478DF11B081A869AB6EB67694FDF49A60613ABD7C12AC62F19D3B7CB7F94 -9D8C61817B29DC2AE96F6A8715BAECAD56FFFFCF5D03905FDAFF3F8B9B319CB3 -25252AB3EBEB0C85C6817243E775859099B8B9CDA71851E35525DE464F6BC259 -459F6B4DDBDEBC31A1EEE64AFDA5B0D90B8E55872EE65CC571A513FD0CAE86FC -5D690AD99B291F6D4FFFEDB3BAF7214F50CE37511566D7CA2766AA5704382270 -A41379495A953F247BF4C7A4DBBA37691ED9C7E2BF2462802C3522DD6364E59C -90327ED2D7C89322361465B73A022FE3D27F35746F6E88C9B8A4F0311EE686D2 -F31D307C5F5A8F1E4723CCD8FC47E39D9FB4CD4BDC300084E2348D00E71A516D -1C65DE9428E18A31BD9F71D99552BE2C55747D7A6E499B985101FD19CF584ED1 -B30DDB63008915336EC5375503C6B126575A1251B503473E4A0D4CDF23014DC7 -BD807BD934C74EF0CADA54A1E1D0705F3C1D8AFAAD5F4CFEF35DABD67B80BDD7 -5DF273B7B6BC19E131B1BB05DB694D121199416E9DBCA7A7DEB13E64FEC3BE53 -491DA79BFE22B4D76200C73935A4D588E0F48F1C991759E2451D04E2C30942D2 -B710FAA2C7E16471ED375D1369F606C591096086AA37E9BAD2B4DE2344199EAB -1A9435041E4BEB8CE0FC53E78864E55EEE1A6E6CCE4E92B1C67D13D6D0FB1F93 -F628153EB9857ECEBF77415AE693593C57F3D4E76C56CA055799E6495E406A51 -073AA03085E104709B4DF3066ABCB45E7C3784480596E2853A512A772C576DE7 -1DB7056028D6874DA38CB6B4D00688D168D80F5E89D572921BEDCCE7FA4FC142 -1226F1F900872E91EAC1DC4427DF7F99C50BCF92B81638B2023927F92FC3A715 -A409298085299BC4BFD6EA8A97EE7F1E67DF740C08DE389FBD4AC1817C14F0F2 -919E73D99B5CF6209764D239955795B8B5F0761C092483FF96FD61E6530372D9 -222A0405937493CFE22D52B4526A45AFF7C3AB57153F802542E4AEE9E68A6FBE -5149B20449EE4F4AA47FBC0CCA17A489B48CEFB85094854B5F4EEEF84C7E5E60 -D92CF9C46D5095B8AC73C8D97C8B0507B3573756379A457CDE744B7385EFCC21 -68CFAE2165378F8EC2516E71DD89A62B0075937BA1B4F84A0F010DF2E5E964A2 -6903EA13D2D17B7B35D19150AD66F8623DCB96D043C0277C80989E59CAF6ECFA -D8BBF338EFAC34668D15B301110F7406ED65DB43B41DD438083F54897AB7B98F -838D2279C49A48C6301E9C8B616D1426BABF1DD99598B233AD30A13B5BEB8DE4 -EF136163FCC5C3BBAE35FAB402C3036C54F46EC8F5266C02A96D885660EB7FFC -E6A85A28F59F4473E1A3FB6B81664ECC7A35A73AC79D5089D5074C2D3A66026A -307D9C73187D29CB652C4800C6413B4EA752A275ADCB432021620C4DFA082707 -352ADC437DF089DCB79C7AEB371D864DC0D16287A71CDA2A958E56D37B080002 -B532E5DCF010D3B1A26B855FD25359A10F84AD3644E5D600DBB78630FE4E39B6 -4868130A1FFD534B9A4D2BDED8B0795463DF705EEF22171BA3DC6DDD0B07153D -2AAD6271E9EF6D80690E3CC1D958BC8BD09769805E7DCEDD1CC0A16CB4D824C7 -5D1EF88F46A08E53D67BC1D27204A185705972E9D9D23462A72CF60D2EBDC5CB -33BB54AB90AD5ED13C4138E2E89AE8CB5BC9528D90780C1E235305DE7713ABB7 -A3EE834577C8A81F05BFCB0D4DC15FEE6F353E891E7C1BD7E605F40ECA4DDE1D -A9DF8403483DD999FC11B68652830AC0BB8BF1346D056D52548D9F8180E01949 -3C4C5848CD5E5BEF564114D5429BACFD8035B80E19AD07D1460850618F18820F -CEE2992EC77BC22EDCC6B5B78C8F37E3E722CB691F66F1E71F004B6CB3F8558E -EE5E17E13A12FE5D59DAD2752A626A29B4AE021F9B6DB4B184EE9CA3F2BF7DA4 -0887D528AE93D547C4E7D8B1A3617F5A5DD8E067B29E88BCC5B646BE478835AD -E40538658779B671AF3A2E2BBEED302F6D5F42CDB3E0669406B48E1D46C1BB79 -502981331DEF8E4B51AFEE0FF9491FF082375562F5292104691887219C209484 -7CB6DC824CF415CA3C9D96EDB34A01904F6880AA12BCF1E1F56DE7A10DD12D69 -83FA9D950A425175F69324D1352AC3CCB76B09BDFB2950E4462CC99820C53B1A -CA33985BD0999C02DE84D9A348D25F9E361E57BA4CECDE862F7448DBA8213700 -F2C44015C4FE822F6CDFADB0B82D04F47AD18467195B3CDCB0959D60C00CEACF -8A1D1950EDD1767B818A3F57B0FA17C0101A2DBC0500929A29FC28C50800F47A -38043CCDB3F949C0D0C082929692858D08CFFD6E20652465A3CDE5E24D50DF4E -C7212B2E9AEE131B0EDD0F2E09457867F196EC7BACFB68EC476FB91AFC3CB309 -FA19C4E79430F9C343FB4DF5F8E6BDCD8DB0A2BE0A753E2265FFCC3B08D345FE -6AA038EF222E300A4707CA6F8F21DF2A9913E44C675712D5FBD6581A7718B67B -A83C19EB4044E9E131C764C7B364BC095EDE2D9DCA582C7C710D7AFD70B845A6 -E5A8605D5D86CC06E8023188501B08CB9AAED731F6EECB38A3A1D7586E26AD39 -283120121054740C3F25FE464DC2D5D00D4ABBBE26CDAC7B510588810D20E2C4 -8F0F3DA2919532DFDBFEE036D750ED0289FF00D7E6C0AA09F052C4874309EADA -EDCCA510BC3EFDD894EE7BC7E9F3539C6CCCAA3EA1D3DD6F305427B561C7552B -A02C193E21D95E0B928CA4861278156D2B03DD5F61BFDA4C57F3F9FE2CF39304 -2BEB3ADCB2A0B07210FA8D4477DC4508D446D9B2056B87702A517D083E2686C3 -279406D4E723558E527A9BAB3201E3A6408DE34A608C004C34EFC6136EE01E7A -7C52C5B48ED86BDC246979CC28A7D442C04530C9174EA9C125F0EF822C4D4A05 -A571C01B056D55AD5797D426D0813D8803E9E46630978B7712996C7F7E96CBE2 -A160E6F628CC27607B1BB5C5A76D61D0D0F8E93869B4479D63FE65CBC9F32F82 -E01C7DA4DFFA643305DF43544CEF4339F2248DEB0E1DD00728BAB0AE5251D05B -3B856A5E333A462E91480F9ED5E6431F56043779BD85A94C0FBC674CEAE4BDAC -006ADA1B24A3DA3FFFEE2DB573C43B3908707EA1F0F7DEF59E06C397F18FC328 -799423BC3508FAA5AABDC230039CDE2995B5B850228BD5EC32F5C5248F921C95 -0104E1FC2D1E59CE35F55884B6B60518AEC8FD81DA3878363C28C9FAF96019FB -2822AE4DD80318F8701DD49CD5CCB07A8740E8496251D1D6D30496F2C568EAC4 -0AC3DB6CA871F289B824E82D42A8E95AF072A304D9896F570395F5A21DBE11C8 -F483783912992D5336734B95FDE53DA67AE91CB9D9AF29BB8A52CD54A39D2070 -B996AB101C8EBFE4A04D66F407F1A5A8D0330E3954114E41D71BC8D2FE85D805 -D12A4AD9700F64A0A42E308E0F41E943ED427830E6D1ECE5A2A4F4027FCA6BF7 -F2979E60AFF9F4E6F1CFFA81451D2B508431505096D29C1002F10CD0A2434691 -D643F9C54926F866DE4EA2932E9345272734001A60330B2313D73643589309C9 -FAFA0643A869033E1B79E532C439E6FECA577EFFC89A78CDB672ED7EDCA17101 -7EDC42CF01F2B0D483690566A2836A0B96A1E9F25732284D53DCC9E54136D164 -6EB7F0A246319431B33C510118B5E93BF96AA2EA91F8EA047254F9E67CE8F7DA -7C5088149954EA430DE2BB41F40000C36913C521E6B9861D645981292CBF2558 -D14335C07BD02725418EFCE21927D10148F5ADA862A21938185F1DEE52D550ED -120DE6644FB7E51C5AC063E3848E43117B522D95AD7BDEA29729A9E85709CFAD -05A2A69CFA1544447D4B3F4A859C0FF96DC0DEFE78044A0FC85EE91D371D3204 -7937A2B9CAFC97219848E1A102A18682DCEF3D6FBA50C83D3D1F5CA6A06F1D05 -D965DD0BF0942C261D738A72D94D4ABE288E5AD81451B62456C01F1B568448A7 -533E20C38646A7B53119DF45A2E82AC51A5DDDE588DF23CDFFCD1E7DF01E6C80 -0E1DBD537D48269346A9FABEFB387845ABE11F5B951A3C9539DE4778946185F8 -86F3978D2A0FAB1CB1172BE2DE1CC2908872B03FEA2E71B6D0CCB8462E4FE5BE -2954CEFEB2A7522CBCF7973B9BB5416CD051B289984D0CD60C8A8BC59F245349 -8365315EE000B8A7F1460B15130648E7BDEEB73C983A1F9000E8735589CBA965 -1B3B3216DC4594A6C99156DC64CBBC906E9D9B8A46802CF9589546A00717F4FE -4DAEF735A0F6266FE8200B4B862FECE518B5A300BD9FFD01FD71272E3736B78D -91842B53C27AFC216C014AD8F211D924E9D41427EEC27E24B5C7B947BFAA66C4 -1CD785D1012ED2A787A3612CA3111694728D85756D003E2C18B69B58901785A6 -FECCC6DD966336AFD8D6F2A524E46567AA13A00F27C2CC69208500C8BFE21716 -27188E8D93F36DF766A29811120BA00E413269E47F057C5EDF7B750785409CF2 -9F4ED976F82CA0411DD44F11B849626D12D320DA6F95B68504FEE499B64C0A4D -14076179B9EA36B7EDCA5BD6442974C7B197F78B859E4F9F09095869AF7B44F0 -DF16566A0DF4142A2714C5F02B5A431D5B2ADAD0E0A5CCB7F425A19B15AB0CCB -8A93C64739655E59E16A1D97B3E5B6056428048B4B01DC0C8CCAC8BFACFCF045 -140241AEDBEC878FAF85D7DDC3C99642A0F330B484E00927129B6AA97121639C -6190F0EBD3BA37CEE372DD77A9F1FCBA93F45FA21E9AD8ACD837C780946AC54D -A68E986BCEB6BD70E4DA8CA42F90994C3DECE3B35875C37C806B0CADF2C76EAD -F594DFA26AB52008852E67C0BEE6AE5DA64859234BA355355DFC78065A83CB86 -194698E1CF8E13882A60A0D4B0D08D20BD80E310032843E5B441EF80BC4FEE11 -0ECC4B99F51116B65ED83F928881B0D1E0530FFAF622E99AA45D974FA7874CF4 -AF5FA16311486F0EE103BE0D70D28A76A9E4E1930F12CB9B0E43171EFFAFC4F5 -140F958EE7459E49456D3ABA60DC34AD716461A1468D9DD58D10DD5E5F915A9F -90E4F73CEADDC166B3645B0039B2CF24E8DFCA2D4A9261C7B13406E12BED3959 -6AE277F9FA06D8C70E1EFA74906D15845B3FE13EAD56F26E7EA97E2041E5D05E -283215EB8E5BAFAB596D43DCE4E7C9BA1BB5A4708CCFD769194390F104B1F209 -A1916A440E9500A4089566F29BEE23F9F93C0F3259A4B66141822394EAC11858 -A735368ADCABCB4896111445E253C49E3682641EE3470EBBA8FC08C55B8D540B -7D8A9FCC205FE1ABD98934CD76E0F2E3C041EA680BA7869547A1F337B3AF2E7D -1F293A6604B53760053B88DCAE2EE141946CEAE5D3B38554FBF17A6DA9B3FA0D -CC9AF77867AFB98FBDDDEC71DA2B392C9685D98AE10162A0C5F74EB774CF8485 -DE1ECA689996FDA1F4BEBC93914BBA88C68CA9BC146A8FE198B73C77F2393B8C -4B0718CC95051FAF56755A2EEB1D361151C1B861C8B5259713A8BE80159AAD1A -80D342F1D9B1378C15DE0E3CECAB0003B8F35454BD40FD3BC629CD89AE4C3F47 -F03F084775A6908AC1E086F17B2803FF5CA178A43F21D0848CCBA17011CB1F23 -3969BE5517762825775A8092E3ACBE1DBE58804F67F689EF82D9351E2A2E70AE -2E5B14041857F69C59CCB86C7A8C72DC54EF4485D6CB6D69B959D652BB5B7C32 -96F25817B29055302404CBDBB20C054B733C78D01A181D85F074FF168F837491 -C30F9857F4978A316771B26874946249144E9B897E097C7D54301F00E49FE807 -DE4AE0D39F5CF337DB4CF6A0B486D430864B8559CCEF874B2275D8C507C37F5B -213BBEDA0A601D422537CAB32015D5B53188E27B30259B9CA3BBBE4D77EE56BF -7AA6C092C5ACF3D3EE5564BD91E07D49C8B7C6E5A91B5E7AFD2CA6169CA23C55 -8FD406A70A7DADB1E8AF288AAB6C82790E797068552C8943D90EB9D40F5348CF -29A6BF5C19487311B3C7AD762C7A834EBB3E40A0CABC55DA1BB28E1B6E22C9CB -F8D2F1BBC00AA263894111A5C617D38A053903CBED807628BE9299848D5ADFB0 -630010AC64B48E362C9D69CD26BBD2FA5A9D6179C365195DA1815C9C8EA4E8AE -72FFD695DB419F1CEA4FBC04086F686F71A19B51AB9782C05C8572DE63B06B86 -0CB8697C2050D629CDB2BBD50F53462EEA873D9BBD8453FEB75E791433E59446 -1685A92DA218EB49A2EFC7B7E44285FB960B52D13529FFB245224CAEAD531915 -74B583979FDEFBF9166F4D2B570F14E752244A892BB0EA06597A0A737728683C -821EB7E4755AD7A59DB6983B8F721F7B1FE79316B3EB18ECCEE73D4883E69FE1 -48A58C9C2CFFE6545AA0186C1F75DD99AB87147B5FB7DED13A9E856585B1C221 -CDEB59AE15C737105FED64CF32F360C7685947703D5C727FB71AB789B4DC39B8 -F48DDD537D200589010DC21172878332B92096B9B9008028D52DC32D533D4570 -0BC551851ACAA9DEA8EE1FBD1281D2597C48386EF526D4AA194F6399C50E52A2 -447C82F5E9A963B8002126382ADE1D89143D7A210B8161D55180DC7257345554 -C951A4DDD81A586F2529EC7A34BC12434DD673B9BD775ECE74389BDF79CE3D50 -54FB70012B5C961497D01A8584E18AC73BAB2E3E958E765B5C0270D9DC6D80C7 -1E879E993825200221A13A818565248E0A6C7C192419E77DED057B081EBE725A -A696E39B2B87B75A7DC6B5F0E83F343AB190F45782054A7F2EE822AC2704A641 -563EE2A5E8E04D13BA7FAD2EB13CF5361EAAA6973051FAA8A5DE4BFE9116EBE2 -3BBD30D0A39872E8A1D34A9AE37273D91E4453C098815A6178376C5CADEEAAC3 -7A492DF7823FA2198871ABD0E2FF87F55E475D51899E915EBD0A2451815154F1 -4A6C024D214F67762BD9DD483FA26B6BC81ADF3AF215939019313B8547D3A8E8 -69BEAA3B27D317A2446AB607CE40E067273E8456EA4B07FB2BB07FDAD36B463D -F9398066AC18D59835B8585622414331EBC3925F6CF4421614D9ABD92E5FD3B9 -ACEEE36DFBA857EC8902D109B78BD6832EA9B3AFE43229EECBA30AEE9A9EED9A -46F4898797A8DAE70923FBEE4F9D936B4AB30515CEA4346AE6F351F7C48897C9 -2234FC06DD4C9F57585B7355B817006ADC0482D5FEC8DD665192FEE0C3B7B126 -F08C6FD3881ADF43EC2642B202D59A9A98FF082753EBF391C690CCD5A0409F27 -10DEE1EBA0635A057011325266A9AB924E33F17538234E2BA96D98DBF049871C -EE77458D506F6A354767EEA33D2412B16F0A3412D53FBB3AB420C1E6460AD70E -6B85912FA9A4FC1A729119EC9609D038E8948E8846F118C9A12C8A03CD691680 -49D5C12C9AA4AA35E48E658C8B3262F4C56849DD84CF8744FB5734A39375533E -390BE9CB7CDE8E04A212EAB8E58F9FCFE2C2D547F1B7964016971AC30BA2B8BC -89E8898809DBEEC910F912D1EF195819931647021AD7DCD57B17D8850FAB41D7 -9E8F1142B4D067EE0B8C0D7C90476CE63076C832DC2972CDB3B9C22DE6AF8C59 -306FF6DD83A005AE5236B1BD42CD0E32FC44B156C47B0713B94D0E8D8D04C7D1 -C4E6CB68EFE67526B017A81A399C4A0A87F6CA0139D0BC414671B90B29C51601 -8CF69066AECB360D7A1513D56E5A673559EDF06B66E17256C0E5CD09F2386E7D -937619EB018A4070F222959D217F89746478AB1568F60900367FC0BA3EA68919 -956D6990CB0114119F5015FFB3E788BFA9791AC03A2A954F8B026128BD2250EE -7E47CE5236EB13B7F144927251B207B502AB7C0B7AD2530997F4B6CD0D10765E -046CDA527F32B123BD3FF3B57FB5DD25D5FECB7D4030EDAA610B2975E7D1D539 -908E0A44A3CC6C5A35F5DC94A78158B1640C2BBB2590D2971728303E59FA956B -7028C5025DD0666A66DCFA45959743504598092EAF64F346CAD55B0BEF469C42 -98340240AEF816317A05F5822FC52376CDDA0FD6A5D3ECDDDCF04AAB183BFDAC -36774666B0E5E44B4EEDAB9B29B3CDB31A4FCE80F650018E17814E29BF6B5F08 -9332233436138D385E622EE570AEA29E4ADF8720CA0496DD517AF5F42E8C8A9B -E2663BA6BED875914553E7830D1C176CB77224ACAF50CB81AB31B775B49358CD -958A3A65618E26A660AFC91E79F3D670A6E3EBC0423A6B4C140F9A6247401C8E -0F80E40B57 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMCSC10 -%!PS-AdobeFont-1.0: CMCSC10 003.002 -%%Title: CMCSC10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMCSC10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMCSC10 known{/CMCSC10 findfont dup/UniqueID known{dup -/UniqueID get 5087402 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMCSC10 def -/FontBBox {14 -250 1077 750 }readonly def -/UniqueID 5087402 def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMCSC10.) readonly def -/FullName (CMCSC10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 45 /hyphen put -dup 47 /slash put -dup 50 /two put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 117 /u put -dup 120 /x put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BB89566A9BDEC70EB4F2 -048A6EB631F05C014D372103E37FC3FA317EBC9973565A638403DA02E48B7D31 -CFF6C241DC5CDB470561002FF46437C06EF93BC99352DF04393C661FFFBF4BA2 -0723ABD9B3E9CA9E63BA57EFDBAE684655CBBDBA15ADAE43E1A2C98A3CF060A3 -D16AF8FE3A49B50A24C20EEED716E49AF6013D4D38CD9CC41A91C17E4D04D79D -567E1EF49110AA9C34464E95D81A730ECEB2C9AF38FBA6B45E253288438B4CB3 -DC75B3A906D4357293BA41E59C35223A6C9CBD6FF5FC90C2D07CBB376C7320FF -435A6251822BFCBB612CE630EDF826C37E95F541C21B93FCE127591D5E38165E -2B58A34AAE37712BC58B63FFD70AB80F4F24612CFD2F1466BAAF3CA2BCB45148 -D0DEA0E9B8FBA4C4FF5B8B3CB02E461355051842BD1C94F41066B9B909DB83B1 -DCDCBEF7CD00A43E4C0B8191A29600CA197F0BA227FB8309BB539D2A620BAC70 -8A1AB2DFA51ADC9873B8E5582DCD3ED154E5D727D1665F99BD89883D69E6CC2F -DB3A57AEB612171A88E22F038461DE03FC357F771675E34E90D4D19B4B36891C -9D2333960400E97494F4FC4DBCE6A73C34A0409E433BBDC0AAAEBA7D3555066E -1CFBB4515C8B573C9B9DD12ED5B6ECEBE35AD0DDEA9DB004FC6CB540B5117B49 -59CABE5FD74C6F5B6482B42C20B5FF0467D1DBD7CED2CC651CA57852B6FBB402 -A6764DB342889132C911CAA713A7F2FDD8A5E849345D6C81025E02F5B8B682BA -90CC9B467FBC37362436EA6BF8EB62D784B01D5430147945BC09D1F49EE89F2E -3E2B8E6D439248A56F82F2E03EA5C7A922F2813BE6538A3A423BEBC55B345AFB -3B3C125306749E137C647D78028AE1FBF3E1A82C260132832A9668F454D39C41 -736717DED0A99F6B11F005F0E1D07FE84713AAB4C042FDC166AA146D7B5E9198 -E4F485BE5B135EA281FF1C1E616B5AAF02771F58C5840CB5A427FF9794F93E94 -17FD799C78AED1DC4810BCEF4C6C51D3C1504EA2C6F2B29805B7ECF97B5F637D -FE92E168CB9029E90404CB54FB312FC7AA8A9F2F524C03E61F03B1E31D4F061E -1677B39D5D30C9FD4673E1723F4AE3CCF38593AD6D7F61E9DF3C010E51F25085 -35D51105E1464BA146A78D7297D4D310AD91342A0BB942034A3EC0696B467367 -3E39D202D637E6B14D0EBCA6AD3CF22B07D4CA69C0FCBB6C93782B2F0DFC5AC1 -5D8A16CB5EDB671A0C1BA9D10F63CEAFCD0E06E42C730C8EF769CCFD57937245 -658F486036D37E8BDDE5670A212FB488A8753322A5B170C9662750AA958C0BBD -8E97D8239D2A08B30416504DEEC4E506013E037C91785C674F8A6A44E23FEE6F -CCC00CC5E4D355B0871FDB8ECD64F70EE32449BB5D6F84F8C8AA2D5B1A489BA9 -D7FF2DBAA8D0B84054E93D64D3E77850A3724824914A0F821EEC3D605DD851A7 -606936B8B9E24D6E932E16C448140FE94DD96C75AECB73850035ED9C04A1D93C -64B21E7D4657E030483EC5C3554AEF8BE4D0FE5B9743B875340B09E01273DAE8 -F256C50A1A8F2E0417440A8BB0173F59E11523E1CEF2593A4AC5AF2167627B00 -C5EA97D125EB8A4BD4C372877ABF10F5B7B149D73787E0834BFB3084E9508DF7 -072DD71637019599252059738D4D6BC57A9358E4B14F6AF9C4B31DB8E25C29B3 -7A15F9953BD73ACDE5F0445A5DC406BB4635FAE51C1D8202AE31730E6F355317 -1DC197DB0B6177307C60E5D38F4487363EE051B2E609A52BC4D45B14B6558B6B -5E1618748794B8340752CDBE7756C068975B559615D4CD5A97CE30BAA7B2B1A3 -2FEF2E055232B24FD8A21BECDE1B6A479A28EC80AE2CD16DB50B30B4A6CFCF06 -491C7CD5AC29FB964D4846415233947522676DEABDA0D9535F8507D33693930C -B4E4240A02B0CE7EA288516B8A6EF908D7F8BAF9012D052C6AC96D9F8F6ADB07 -8984F3559C5E7E3022A957982155FC9CD599C74E18328D3AB46F9DD15D1C4C3F -9B93ADB4489BA02CFCF57DE6270F3AD2F8597BE71786510EF08142F430EE5568 -4F9DDB792B7C46B6135E341DBBF062FBC50FABA80CD4A384157BAE57CBEA9781 -AA4416323265168AC097DE7E30A0D4750143A4FCE70A863A31876A8FA5327C3E -36E89589E363AA2B1A6E8B09F5AEB8FFFD0396067173465B6503383DE517A6EA -88C0FC08578398C2A721E5AEB29F4AC9BC990A50CD87BD35A11F9E81F68E7B85 -5E5B95A4F9A5D30379EF90D78E1E466DEF867BAEFC4F5ED2C762BFF099C1C2B3 -5E0DA1C2FB33BE1379413CDDB1EE6BB3A495331F72F2FAEB8152E8AD5FD334A8 -AAB0082A71D5574B618EA8D487B8FAF1B445F3395B1E21224F5492A0E06F5152 -7726835C900E2E52BE3B7B654183AEDEC68053DD0AF19EF6DBC10B6FC08EC7D0 -CC0E2C8FAF8C9A4C21FB7C34E074BBA4EE64226BEC8C928A784C1BEE35B72EC8 -E9295240B29DDC2539CD118BAC38DB3917D14CD33AB45FE47E827F2A2B193AFF -53C5396C52CEA4F43F06AC2D08C74CC85D608CBA267175EC31311EE25AB48DD9 -FE811B411AE426C9FC0B6044D1EBF130231623F1566CEA4D1C06D8032FD9808A -94479C842BC41B675CF6B90113BD681F8D43F51D5016D80EDC11D7640FB950D4 -E709A46184406ED90D0892A4CD9062938A8205697A200DBE1F38EB166EFEA0EC -4FCB45CDAF82EA103DD6FDD03D146F3E42EDA6496064DB3F4FC1C5280C9E604B -D5EBCA08BF2AAC90156C11EF68137DC76502EBF216F3AF3EE30DD2676D218428 -F41C655093F8B530FCA378B5769F262A6FDB4B66B83F18F050E77227E28D71F4 -5F4425CB8D51B3DAE872CD86D7804F870BC564A6DA1CA13EDB00D131CE4F6460 -7021661B99612629DCC20C85CF155EDC5111E015A77B0B82A8FC1EBB374B7EF2 -361419BA93B857D5C9944BB5B4AEDD86ABCC261542077FE09701C96370168579 -5F89D5AAA08D700E2643E88C2FB8D1D56D37AAA9744872E7C050B4CE046B47A7 -83F224FA9FD311C955EFBF173042C8FC66524135F579B1397828870D5C9DC71F -8615FADE2A1CFAEA90F732B6C266E2F3048FC43EDA7A6B6D98E9DB793CF457B3 -F5877E7A055C92B0246FEA8C72B3B3456F93BF36E2651D32CD614C3AECC0B4BC -F824C8363E593A6458D37408FC5B09883B280005DD24123E2D4B1B85F4113327 -EEDD9186A4AF2CD6439B46C5C168C125CA80F9EE9E68906620EE126CFBF26E15 -B269838A54224EDCFE2A373EB750D4829BFA410DE5F1541E428BB1E024AF496D -F5F1C151F5A645C8622F2EF9088D57A2811868A8A8BFCDBFCE3ACB8463AC35B4 -8B6F44E1C1232805842F56FA468F81FF37D5D55B81CA56058558544C142EB3BE -07CFB1F75DECB1E48C14D6AFDD455989AA6FFE8B8DC54F462B3C20E31D270BCE -8E68E2B43A6625AC7E9792704FAAD6CE8BBE0B341DA7189EBB3E9D5375B27FD4 -12506D5BCA50AEDC6955E6C3C7BAA84BACAF7ABDF3A270C7734EC3C6EC22793B -E67B0E288F99699D38DA8B79F2D21DD97945FBDDD132A8F0BF947950D3C0B4AA -EB7B2C435AFE54489E1930610311D718AC610C21A644F34CB2D1959B3066F39B -EADEAB5CFC6AF4D191D86B02402B00D1C5262707861C5308730579795EB53207 -A291A27A8B5C4DAE0A87A0C6A260026CA3CB620E1002E066A515D7990F3DEA29 -0FAC962E0B82B7A6C86B1EDC54007822BAECED673FAAEF88C8109777EB79A53F -AF3C58546974F2F56E70E9B5CB59ACB5C27CB01895557B2D82134D7F02029B24 -3331621F38E68717F5CB68A8892D0B9C0A8ED4F8BB56E80505170D44C6856128 -2DED0254ADA4875CF56B4D97372AAE730D4C77A2940DC8C178274DF88A9EE037 -215C6FE7B9D481EE4DE809B124C0270782411ACCCF89906A8B143D0BA8B2CEDE -E9B90465C3E57A4FD9AD2702323450256ABD09A1F8C26F08480317C08B75B720 -70A161C99715A35A94DD5C9647ED0F8A5337B774C8E54F9653AC859485A1FED5 -37B725A7E4BA58711CBCDA6054E34CBD8E9F9460179DA7DBD243D81A1531FDDE -BF2BD425BD9DBE75EAA333B1F5793669A215549A774597E6ADA16D323FE5601A -EDA41092730009A99BF5B5AAE281844A6BF3292D4D4EDE36B4FD8BCAEB6EB72F -AC5D3CD53D0D621CA9EA8D254FDCB2B5161EE9E80B266563F669805A3A15271A -0753983004A1ECC7FBADF62AFEA4DAB49A178C231759857DB910668BDB07CB3F -7E8EC24901863088B3231EE3FA563924032C91CA9D68DB398F9BD9AC0C651EC8 -9051C9F709CD784F3FF5951DECD7E869ACC34B83AECDB011E6594347855EE7F5 -28811F744A4BD70D4E9077EA7EC19FFCF612689F12B34332857AE41F13E6D16A -962DB9B6AAAC167B9FBDF0068EA13412F318384134B29F3F0C399F1973A3564E -F9C3C39B5BDD4C98D81A6CB476E565860B50704BD65ABD630A5F1372F2D826F3 -3AD47C08B8AD3176A170C369EF3CEEB190134006D6135C5B8CCDBE1C11FFF1EC -3F6D8C46E15C4F5EB9ED9F31A129594D542D40DC3815CD075A0DBB648D868AF5 -15A05C4BDB28BF23653A3AD96CF6AFC065DCCCB23D5D9A945F8CBB539DD3BFA8 -DB8F1FBF9B6F25B41EB4309995CA3D5D6ABD70CBB4A2F0C6364E5439AD1045FF -72F6B45A30BD3A548CFAADDCC6C15D46F6D783D3E520215751DC98335A4ED512 -D7D19235CDF911CC69F3CF4365B678EBF3E87C456A4E77339C74930083445588 -462529C22A96A28C5CE87AFA0C981F26CAED5A1C8DBCDDA612624DBE0373F026 -465185A4D8C73CCD8D71EE97116F8F7D341B87FD78F9CCB9FBDA2A7799711607 -6BBA855AE9D5C505870DC85FDFAAA130A351D56AADBFBD6A7D52055E3200F8B7 -8AE9A00092B55DEA8BDE224B4BA7FD4A191CB1FFC4CB995FEE1AC2883AB69E1A -AFFC09AB5B9AE311A030A5BA05E2213F9BBF016C8FA80689C069314D91274B20 -53FCC65C7D7B3A7504887525BFFA060304931672A078BCD7F269595686310E34 -E1ECA868899BC402D17EC36CE40D5041D7CEDA77F7764C9D98793F5334F574DF -E93CB10A5E8ADAE95CE63D2339557091B4B4911A4987CF21B7F1DBADBC2DD605 -8EB72473C1F2EABCC44E0D0339EECB55DA74085606C3F89D57ACFBF5755A5395 -CA8D4BD47E4EE8D8B882D3AB31A1F0C62E74654C7E041E4FF2693A38A9796064 -46526B0A37E6B5BF8E48E80EDEF81E34DA8F6CC9025936A4D0E6D709D61B7B5C -AB550397117F3F9D2F5A542A64DEA8E1178F7337124D6B56BA92F659AAD694D7 -391028731E01284BFEA635314A8DA8DF7A34EA3B6B2F8803BE6DCB423A9E8015 -55EBD90EBAE8A00298B3B6B1C02BA516AF528122C1F2B07EF69F5466C2C36643 -0D665D6561705509B7582D8301AF3C32E2F3B9433E3E04D62117C7E8A368BDE1 -0D4DAA1C415B2A6573116D2A169AFEF700A83F55D88813585E89C94C07802BA8 -3AE8F9BC3CDBFD9C2E35D062B1FD6E79E1EF104FC70B0AB09D12CA027F33F85A -22F0ECBB4AD55FE8C616B82C46CE69A600E4F767BD7A9C5F9B37A3196B038384 -5DEF76A8884425FE598A63AEB19FA698C2AF7CAA4983CEC789268E22BA051EE0 -20A40633D22D8F707626ED30E8273EAAD1C065F0B2E1718B5AC853ABE09330C3 -B0082A71D557169BC1559B6D285A3499D41C4CCF1F74884EC3917EB9C574371E -AFE8578DDCA459B8D22C0188A8D150437B05FB92022C95EB6FBCC954216B5FED -CBC7C90B9A1F061376A9840FB64390A6BA99CFC8279A86A730C6DBFD14C53C4B -7277D676BD42203677E9ABEEC8C97E13DAA626474513B06F8734DD784F2FBBB9 -B3B448B8E8221E380AB4A86D3A683B86A54129519D50DD4FE63B30954D805CED -A9A5D9A39C58B65B08E1C19555E927C6DBF7FD07252B2B57F62B905D6B488201 -213D106A41033B26FFBAC2E616DA6ADA6D560BADF10E68872806CFD6F6E19D7B -57CF1F7A030A7BAD374F16A977E0ECB8742D034ADAF9C247DA19C8AEA74EF6CE -DAFD6B1DC562FD3B77E4D008BDE4D8C7FCA9895DA1AC9EAA01C32A0DA712B082 -9438E77230D38FC4153E1711417B918BA6CC03203A5FF082AF880F48518D8271 -C1121E4F1386B30A7F1BC6F10EA98443F8A65C867A109336B808BC9A8E2A75AC -F950835AA84B56F59DA4C8A18859C3B68F6B6DE09A6675F639EA9107BDB67B0F -54EBC564BC2D781B61C14363A54956BA78A2BB89C9F966C94EEFC29EE9F4E23E -C0BF750144DC289F0DEE1F8A25BB52E54F656FAFEE4BD2DA57E1306BBE648051 -1D0CFD6A23A3DF082E3CF13197BF1B7FB22B2CD427BB78F455C9634DF989DC90 -7BB2AE247B1C99AB2062855B2948341B0F857ACD750B59E370A6698C6A1F5287 -72A4A9628A592E313956C242DF8277EDD2F1FDFB07CDC104275FFBF796D7518A -DF49FF3CDEC3BDFF1D290C382F244DF18005ECDABF0C5C2C64EEC4383E2E07DC -5C82587C071E59B46B7BEF31D268F39D9B12D534344FBA515E9DE8F166FAD1E2 -7D1558967AAAD3829D3F7EC6938D20E5379F414532976ABA844D97A5E9078901 -EAE4D0ED1F4C7EE7A2D80D891A5013D6409A38ACFA497F5A169EB7F9F4890DC4 -62FA6A89EA48267331F086992B9CA9305E16611E6AEE67DCDD588A25D37F45B1 -0DE75C802EE021E574B64B3969DE2E5061ED9364B646C38D4BBA86802CA6338A -94E135D2256920EBFB1AA22D9E90C7D16853F0DF9F2D942748EE540E4FCE63C6 -5380D7AB4ADD6CB00FE8F7867E4862D8DB432F28331428CC350CDF7F447A65ED -D7683ECA35A22ADD06E9FE6BAF060913AEEE7B2B8EE4798E437698CC9EB2428E -74CE73F84D0D2292DE709D71FFF8901C3505370E6F1D4E28E6B7372492C65A88 -159371B1D60D77CEC93B272B6C5394EE1D2EF9969DB2838B8E128553879A1BA5 -2884B0A596E8FC3D1E648B7E26A4AC57DF09B9CE09B2F91D8CA618CA52AB3DBD -D005A56A420366069B73146A6F58E88BA49671A1AB7C2070C3D42AA770285143 -40AE7D7868C0E1993506B07C086AD7D4F28CE2D15853FC5FBCBF9425D8012B9E -DB6E1E5002517659C8DA69DCEACA94F368537668843D281FC11782F1C5F71977 -CA215349EE6F20565DE3D8D8212A40E1227A4B22965FA64A0B02C62BFDE97E6F -C3C54FED4057EF9D258C42D7440C78C5E0CC58A40DD74ECED4152F70A93CE71A -1B3A57C46F74A6D27BF98C97CCD31A8EA487260F224A3E40F52C65490AB4098A -7B9EEB54A5A415C8C88568F7D9EFE74BBB785FA18AA27D9201F28BBC477A20A5 -D1307AA78EB8C7CAD409AB64B29E4115E45F5FADDCC80CA74B296C4265A40614 -37F2ACD8386AC0202D6FDB6711E8CB06442F209D781E940ADDD6D881D4F8E874 -357C533115923B90138FFE31D3577C6AAE60D768970FAAB682CD0DCA3E9A9A68 -6393E4B772691C1013ADFFC90C508D51B02D2518ADCC7E79F7DE5DF9D18B8435 -6129064DD1A3995E5A6F45D78287CC10A0EAFBF47223494C5EA934B1BC2F7C53 -686C5880303F9E3ADC8B100D441D944686E1FD811C646C6DD0224F6CF55FA87F -D132EF50450879A25242A18683BD6D0266F8F333F3768D1952B0F32AA75106D8 -EC0AB703F287E847CB91FFB88CD9DA174B49171822BDE34621CF41EA772230A6 -3088F8D19CF2364A329162D39E166AC728B15800222E54C40FDA8B73C48CE82B -B2B3E7EF15157FB4510BCDD7EEBBE3FDDF708EA08540D94827AF3EA1B210446C -DEA9EE0EE9B4758863AA33FC296740F0DD9B42A45861516AAE6208F189D8CB8E -BBBDDBCC34B65A7D17B8BE932148C39084A9C71516582BCE25EBF7C1E0D84314 -45B273AF903055D53313DBD159BB698038A397AEF418B4446739318E8D273642 -095B1E04CC60718A2DC2BCD99B34202878786A58AE7C2F43D985874AB8A3F204 -4DBD4B9240EE96F0487CB687830972BF302F262C6381B2C79773EEB152B712E9 -34E8229E0B59788EB9B9FC1AC1E123751D1FF032610410F0847E6B9B9A575306 -53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BA95DD600436E0BF -5E8A00CE3C92859961557763D413E79CDD37FDB07131FDC420EF525CC0B5377F -9772D3876DBFDB57FE6275D187832F2B7A635967B201E70B532E85838ED3874B -82B36AB9EAB7DD4D2B5C4140419CA04E87316E802CC93DE6336C22FEBE80C3A5 -D43A0F808E5E6A17F7BCF812FF5EE5AC1959E07F36B24C9192E375FCA3C0A84C -1D1DD2093D4F151B9FEFBA90DB4E94A1D68E49DF5A715A5BE04E7B7D8C384D61 -5DDD71F057FEF51DE7D002AB3BFE0096C47EB3AAC7B89EEEB9E2F9CFC6BCDFD9 -A438C1097D5253E49DC0DE5B6E8F976AE8894914BF8CAB5236C8A3BB2A437CE6 -374D96AFC592F1238357817E1F2836EA763A3C0DEA2DD3F7D758BA61307C21F4 -796A18638504797DD9A5131EC48DB0D23FC9A3E069B2FECA5B36A2260C6FED2E -6EBDE3AED119EDFA96B837C56202ADF7F7747291A43CDDED6EB7DB5B9373CB78 -F6FA0B92BB2C17AD8DA549E878D8DEA681028539E5E2A223E2F9BA4CA09A6FF4 -EA195F1EAE62CC33F2282888962B9032D1C83EC4EDD832866A472426EBA6080A -75E02F39CE0421C5C06B9D593022C23D675D7BE879FCE0B20A9CBB394F9D3815 -9C847518BB8DDBF3A89D699C1FA84E704B02BC85D61ADA5E548CD8DBE269A3E7 -03626A0FEE75E116F95B5D31C73BC852C5FDCF524542BFD9D05D8EB4B2A114E0 -C2FFCE282CBD87D82C1D4E64772B0492068B139B1795E287899CED7791EF5C8F -E77391C51552FF08DAA85BC8B9896CB5C792C3E1C4D44E3CAC1EAEC02E4B986F -E5059463613DD3643F8DCE2264FA66D712A0DACCF86DDAB315393219F5EBD18E -E220AD61CE3C67664615A5F9734421152382E8EA9CBED8269ACFFC37873BA329 -20649A6F684D31BF37194952496E8B962B75B83CEDE72F0DAAB761120B710677 -F3AECF2A67F512F7C423B1DA012D0D0D44F009346C4953447950F514731830D1 -59D01BFF4511CD0257D5ECC2CC4A859E0ED92627F659547C8F137DC0F49F06D6 -02F624EEBDBC779FBECB1816A88F02B3565A9C3D42E919F755F3D80F6FAB681B -585B5A49F62581EDE1D1DF1906007A8926932FE74FA2A94B92026DE9D678EA3B -ABC3C2EE5A3757317AD5F5CD361A511F4019CAF77C46C8FFE4615CD6CFDF7F8C -8CD06F1A2DDBD3BBA03FBBF8DCC898EE71E7D19CDE66971150359310D0BB68B8 -65F3E41D34C8D063A71C27B6C0F27753A9E35D291477858E5B734D72C40C4573 -203C5529340CB56BC00EA0E02B3DB54173E6480D29D957E6735146163980F0A8 -CA4086192E6095F411939DD3FF19854F8F58B39A23D3ABA22BEAE05C4B6B6845 -98968C08559A037DE955F77359FC39249C1149BC4634D10DAABB086A23D9A37A -73A61EAB63BE3B1A8D8E76ED94E731169E892B469056757EC885D8AC4FF50E5C -1D80EFE20E40E26006953C53D765B3BCB4C5396646DB3AEF01F939BD163ADD87 -FEB1E55A73722A0866DEC922EFF8B06AFDF2FC742EB1CA422822BB378310A994 -794062BE62D5BC4D44C25655C902F4FB4FA63CE21E095E4DF3723CFE7D2D961F -10A715B194ED855942588BDA460A28F1B5D849A34D85756CC8CE874E2384AD9F -3A1C348996EA94927BCE9715A8B229C0D7FCC2C07592052796D7BAE23DF895DA -1CF991E912EAC97601FD79F35616A1F23D82647BCB49C360740CF010CA4E8ADF -97A9CAC032D12919CC167CA4C2E6C60EBB4AB87C8F2BDF71E28E91A9BC96056F -5D905902AE964E5336CFDACC8C5CFC5607D75CA5F364AB8E9A65FD372BF15FA9 -0CE1519CD7DBF31F92D2A078754E4BF90F3121F6F698DEC238404EDDD4EEA153 -0335941E4EB8F08DE0104FD8633BE277E9ED26FC65D28FC1D604D8504B2F788A -11E2206ACE8AB33D14CE9D4CFC917008D44AFA2B1877C3D42455593889867784 -7CE696EABDEF95872F065DAFEFAC253F367D47127CE76FCB85BBF0684DD1663C -876E68EC35B21593A10EA5553311880B8EF744014CD1ACFC067FDFD46978BA23 -C86FBA05CEB66E67621680BEE0ABF82364D4E3235A20033437C6B84A71FB34E6 -F8A160AC477A1302B4F98D00FDDB2A35ED9B315700669D9D8A3D254F786316AF -882CAC6555A766281A0836CD45D8CD8245CA69729260D54C11DB43032A0FAC0B -05869ED0A432CEF854FE665BACB0F780C9123B4DA1E1895F8717DDE4A58BD3FD -D214195066D4587463E839EDF667E475BC04EEDAEC41422AC9BC27C238E88318 -7DFFED5D04AAFB1F63AC651B1A4113B7CE9838ABAF75632EDA8B5EE0C8474678 -58898AD595ACD99029DC34EB4BADE834C04444941C3D8280B93951A9E8554EF9 -5F0FAA218DD8224B94807CE2D8DF7E4A5E2B28C44A551DB0708B5D6D5F000B96 -0422A8E953233296B6E5EA698921F1EEEBDF0C5CC72263663895940B4C1EA28E -E0E3AF21698D5430D6495E32E0D5F5E538EF835FBCF4A96DAD8F011B145584EF -1C33809372DF602D1FB3D80A4EAB65897F672642E4317926DF178BAB6F9851C7 -63613B3DB11FF07F9C7582592B620C7767D005D7B0C28AF2D309E6CAC222055F -2C20A58AC1B407641B483D571B9E959A3AE0DEF316EFF7A4514D5313C47AAFBE -82CC583BEB32F20E4C3A5650B58812EF357B68F26882D30A6BBEBDE64E2FD910 -AB8D974CE5C968C7D34390529F4714A9F1D2373DB1D912D418225932541FB250 -9C74346749DE9C5662B1C40437E783A78A283AD6EF43B2C111DEFBEECEB17ED7 -3630AE404B310F1148C82F4969A794D945CA5E1C18F39BB6F9C46EDC8BC3C88B -FAC2116B2338E1AF9C975ECC8474BCA351E3FDF89ED4352FF6A3D6C7EF7A7BDC -DD4B2DA9E7C77F8A6623B670963D2B9B9A80F8445E17B85194AD45E02FF10484 -85E0A700BDE9F574487F9494B424646D48999EA67D469A22B9CB72123F31EA5E -51C07370BFB1C5EDB4ADE75E7111A0116C212920F1362353BF58F33D7E8EE680 -DBF8085B46AFC40ED9FFD7AE756CB267D0F321FDB71F2DD35FBD3003E91E2758 -3DED65748BE5CD0D2D244E8FA187749FED44ED0C71056AD954FCF656DE28E70B -93A79EB4D7BD59E92911EC64EA794732A79B9908B7C6DD42C99BDF07AAA06E07 -5CD6497C489BC56B09E44D22D0FE69521A9BA20ACBFDAB8EE718625711BF479E -512FEC4A8F9EC7CF66D4CC44E2D0EA1235BF17C3D0AD6859385CECA3D4A640B0 -762D325D3A449BF7115CE8469A493C494721D6636BCB9C55ACF1D0F3489E5534 -4A76A8F3E3AD6252D8CBD3EDFDAC890A7B497286241AFE35B2261B66018A1523 -4B9FD31AE07A6CCA6B91A176BC38BC03F97D71F80270E14B83B012FA5270B7B4 -73F889DED2D4BFB24536E495F96BDF408E3840AF1567E9960A4F22F0B749749B -C156336BD7F349F2F82CE54B459462CB7C9846CC090E752DCDC871FF0873076E -8885B0AEF490DB0C9FA98A8FDF84EDFD52AB0F992EEB236A79FB8FB52718EBA6 -E0D586512F81079D468A75336540163B966670B437304F3272CF6E49252662C6 -419E8B2B14D240A1DB0CF6EF14E024F9D8C6882F865D7E007B46DB65E2E6AB1A -22C5F096B255E91CABA7C441A3149FFB4E19BA97E5D43779C2A80208E279A91E -8B8A281C079B819BBB6A5B1A62F34D59B7223D9FBB5F5E96F0D9AFEBD3CE3D57 -A4C4D2345776FCA140EA95242C8AF1EE7B93D2676209B750ABFCFC8CAF50F578 -4C364CF8BC46839A4379624D56B7B917743E9D6A284E7B315D461ED66B262413 -A9AE1741C633A92061DF92AAF78A18586CDCA41248C586F7D272378F9CA76980 -202A391CC9FD46794140F06CC75AF2F4986D690939E083CDF9B96D066B1EC8F3 -DE3B68AC8FAB84970B1A199B3F3AA5BE27ED8119F306CC5F26230C16E9D9FB31 -1EE9D3F5175E4D4D7A8A2945000C37BC73816AEDE6F2AC0F09B788C9988BA69B -82CF336482F490F05725696EB080E460FC03B3E28C1B3613C8E5FE3DEA048D97 -4AC72C9955FDE282FA8C8385B30E3A7EFE247B48B370DCB439FA721BED19AF4C -FDC3D3543A25A4E0273419B6CDD7209FB336C1542BA56257E5D31B70529C12D7 -524617868F4F3B49799322EDF504750D1BAAE307ABC4843704B64ED8AD4996B7 -5193CEA660390527734BF1448AC09998E70FF15BD70F8B6388B0A987CBC783FC -990F7A5EA016EBC024F12BC9812C7C4DD6E991DB89415A49D0B265E453732F4D -2B6BB50E995E719B00DEBE74E7D1E291A739C4EAB39B5A61763DDB65BDA6E1C9 -17C49BF1A76546BE0EDAAA17310AB2D01BDF059B066263C8FFBDA53281C882DA -E2DA35ECE5B4454C8031DBECD8675B60E54261A7D1F70560C6D8CBAB436EF058 -5A0189426AF00AD7EB43FBD13976D8D769ED2639ACBF613A308C941CDB5A632F -F76E14224909A8E7E45B9B5A47BDC9B7B3E3616AEC4DEEAF2899A59B6E144802 -534109EB0E3ECD270E417B2E9CD8D27DE637AC798ED5CCF791061297A0B218A6 -1188C03BAC8DD8DD783BBBF8C4C9AE98E8F1EFC4684CA4BEE6D533458BB229ED -4E31392DC4591DF2D2D07632EBEC0A5FA2C4508C1FD48D56EE871EAF4A84AC07 -A1E34CA2CD81ED369043998A23DD01301D41C582963F07EC3417F09ABF45844E -A74F386BA813F0AC462FE268407B9D2A8813FFCA604C342CE82493DAF631B2B3 -B6D3E9F3398761C4B958569F0D833D27973B07F9DA9D84AC512C284844C04866 -74A325E4ED894F640B8F802097B7C6C4F04BBBC8A7BC6EAECC60EBBF4E676A30 -4A5D0DE4AB45D0C913CCEEB8032D1946A35928BFB0FD76AE324E7E3CEB5B99C9 -0A0A6EBAA6F6D8E4292F9C5408D3859CFDEBFC9413032FA1A6E194C5F616A3D6 -FB0FEB8966534CCC9E6D67DFCA105E8994810D8EE414DAFC80B8A95CAFA254CA -CCAA72B84130B5E485529013A35040074072A8A63B2F4384D976BBFA0A743C5A -0A079A2CD15E598801AD121303CC37A2FD3942776FD1AA0805BED2B646D4D1CD -9DE65CB859735EDC177C5A4D1A54C3E8BE7A91BCA91AB93A9DACAC90204CC207 -8432E95B2C47654DA02EC1664566E2137860F16F798E0A1EFFC819F4304B0FE2 -AA54AFE0AF6CC26D417B0CC9E3F5F6B9BD6DDDE6A2D7FC4C840E4AEF73452D16 -241FF01413DF2125BA3563B3A49EECC8EC4D0BF06283B3C8242F362A546E71B6 -21F3C6DA63882992A14E295926387D66EA6D9F296455276D4FEF0CDC706FBC25 -57169AAF546A1BC72114A3A6DC3A1A76CE001962D771C267864A987188BF6087 -183573E3E9DED10D7023965D29F19C8950B6B9B83E680010995360E54911AAAB -44D07524518EE59F58E49485E885F56FF2CF8D30FC5779770685C305AEC4262C -B8C0C194C26F5E122DF5E4153316C971460C3B3B336C1B72 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMBX12 -%!PS-AdobeFont-1.0: CMBX12 003.002 -%%Title: CMBX12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMBX12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup -/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMBX12 def -/FontBBox {-53 -251 1139 750 }readonly def -/UniqueID 5000769 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def -/FullName (CMBX12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Bold) readonly def -/ItalicAngle 0 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 33 /exclam put -dup 35 /numbersign put -dup 36 /dollar put -dup 39 /quoteright put -dup 42 /asterisk put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 74 /J put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 91 /bracketleft put -dup 93 /bracketright put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE -0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D -2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 -1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C -42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 -FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE -78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 -22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE -A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 -4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 -4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 -95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D -9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC -5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF -9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 -CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 -BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 -9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 -EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A -D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE -2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE -947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B -0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 -4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C -BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 -F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 -6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 -D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 -F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 -481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 -FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D -419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 -7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B -70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 -2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE -0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC -9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A -C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D -1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 -A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 -21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 -7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 -17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 -30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F -3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 -96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 -B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 -1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B -57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE -B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC -8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 -8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 -B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E -BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC -21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 -D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 -FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F -A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 -A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 -A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA -DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 -7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F -07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 -BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E -8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 -E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C -B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 -45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 -2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 -5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF -A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 -5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 -E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 -5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 -6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 -8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB -BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 -9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB -B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B -B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E -8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD -595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E -FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 -13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A -FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 -DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB -313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 -C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 -F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD -DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 -8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 -E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 -A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 -C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 -417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 -19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 -9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 -12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 -3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 -A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 -90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 -3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 -B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B -82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 -1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 -AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D -9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 -2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 -99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A -31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 -3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 -F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 -70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E -5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 -84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 -BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 -8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 -5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 -9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B -F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E -94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE -0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC -E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 -7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 -596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 -F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E -7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 -1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 -AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE -4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F -744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D -67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA -054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA -6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B -8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE -CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 -EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 -C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 -57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 -5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F -C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 -CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 -848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C -B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB -77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 -87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 -3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 -409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 -A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B -72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D -99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD -8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB -E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C -82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 -C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 -EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 -23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A -59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F -C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 -1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C -403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 -1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 -75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E -0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 -82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 -C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 -A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC -9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 -0693AFFF8191C1AD2A5129C8A8DDDD492F8EC8B7B93CCD6D4F240785E515C128 -D7AC38F14C1FF204DB89A8805F8D737644DED6E8EC6A58365DFAC56200AA22A9 -8F20DE1C232DE4E818CB9D2D3330ADFD72C1B5146849142B447900FDB1DA01E5 -C1BD63FB69472D782C659F7862671FEDEEAED3617266DBD34AC593EF6F483D5D -AE56A502F9E66041D58C14FD6E83DEDA7DBA041726D78EFCF51152DE72B51F2B -B65060004FC8F67755EBA2F10A2D3E496FA3BC3B664ED03F496AC074B7425C21 -18FE971025F8553EDFEFBDA53A475B36DBAB73D08985749FD3B0F0C32108EF87 -BE0C8DA94598691F774407E4D36D336BC9883D0FBB46C8D8F786780BC5EACB9A -0875E368521C0D91FEFF40A3E10837B4D590E004A9E766ED62BB3DD2E2AF78CC -29F6C250577DF1B0AD91FFC3E1EA731CF4249F91143B7224DC344849D03139B1 -D53B4AD7FF13D2A79C2C38E0D09590B499936C87E9D0D71B2B06D74B7A1D388B -5A56C9FF8C4D4EC2F469549C5E2F62303BFFAC463C9C30FF7F2B77E7671C5CDF -EE067A2E64F5A763104D3EA3320E15C45999E0A4D002EE072875ADAC6F228DFE -893664E7C2CCD757F6DFB1ACAA9F5922492B573B6536B34F3B931B8C1C761E00 -BDEF6A0D88FB24D30FF643DE610795E1730133715D14FDCA813C62188C66D7D1 -2CE172CFC1203106790E648D9A19213A88589F54603BE7A45DD5AFD1BECB8C59 -A9F476D3D6856884E41B17FB36AA81CB3DE0F664F06B5C8BC3FD00F170165DF4 -889A551DAF6B144FCB5EC9D9A64C261A7BFFB3FF437B2C44E06EC1D1D83451AB -97BBD3AD1A2D1032BD4E945842F0C8A23866E08FF7DEC3675C07595EC2307447 -3CE67B718147E3D776CDFF0685A731C4F0BCA79545E43068CFCC09A82A5DCC8C -606574A06D7DF8359C48409FE7BE5CDE96693BF7C2E3D4639862BEC53B7F923E -2836D719FF300DB7BEDB63B8149568A399DF4275649C7AB9BCD283495FFC6780 -3CC50EC4E1151DA66D84C9F307610E4F730DAF2F2DF8F8E439972ED85601FDB6 -2782E8BD391CC137B1D312EC502600FC4AEBEB3E438FFAA650E3F1F6C25588D5 -36450EFEFE7F3E6CC4CD5FFAE2F3CEDD1559688B4DCCAE69CD2A847B1CC974F7 -6C568DF48D75D0D11864E5ADE1D20B7E4585C4321128B78F7BE81CC38F950CA1 -162F144299376A02E01B4E04080EDF9711500FB1A1CBE15332A077D520F2DB73 -5B47B5E59B33994208A8B682B0C3A48A8D1E9CA8676EDE942E6130A33DDD190A -BCB3204E45FBD8481CC715AF34A75DE6BA280CFE20A0EE7E1A01F06D7C77CE6B -895327E48DCC3268E195050B3E81E4410A4A62FA96E8C92A9190B64464B7D104 -2AFB0E928C533C47F423C6E41B2B6CA3F0F6BD56955DC422CCA330A232066BF7 -1C09643DC9D0A688023BF4933D7BE3266539A2A7E1E51F96A583D8E7CAD7C192 -36CC8514A6B341DBFA654CD1E3866BAAED9024B8D4C9AFC0805138DD44D68D62 -27D0CCC6D97413117CEEF0499C9E1D820D93A614D5A158FFEF907AF77FB23E1B -9881AB2CE9037AAB8558683DDE74FD02593BD0A59E1D9F11ED12B34C0E15836A -6F063CB303679A49D028C52CE197F69A620E4054441ADCCE4C1B2D4ACD25F8BC -B8D20F29E18C74F789750764CB16C741D4239CDAAA659F69B3219AB6A537BD2B -C0EC072CD7070960633C7EA0214098B92C469ED2E6E2D0467F292A7576279E04 -9ADD778FE4D73CB746DDDFD809DD4C2A40653FD3B7643C87DD94CA2BB16003D1 -5ADCF434E15BD8F9506F64F68F17EDF5F24C719A8B84B3CDCEF3ED3F8E25C75B -2D9D56BC22C5FF4C2A6FC16A1DF3228E32F2B62FA250CCA81C4513E8968B1C2D -242415A38B1BE1BD30904A5DCFFFFF3577501AE02EA02DA6CE507732008080C7 -8C427E4C252CF2D7CFC476A734654458B182E44DE3DD178761B278E4662A2D7D -7D287DE451DE57F219B3B872C7C07948C25FEDD32A3813D1C8C47AEA450E0DC6 -3A179A44C384AD922AD1E8DA4DF9AEE5FB1C3E7D88248702670687F7E9CFB36F -A8F6A6F66B7FCAA56F52E47B7DD596A86CDE4F302ED174F13FDBCF81EF5DD164 -91C9F2E77B1FE04F904A98F7BC72CF4DF640D57B1E20460301D0B62575692453 -27038F9EFD54BF477CECCC8DA952826C7858E8DDC9AB99D68D39F7EF3FFAAFE6 -EDCA0C5AD947C49D081B86A9E8D599E4AA1F29F9A5E12729EA9C8B30D168C8DC -770959A26A93B77BFE36E7B97F37B0F1DA44A560B0A8DD2815D792F53349D73B -B0436F5C2C1E9DCE30516D78945CF14AD2E006C6F5143C4A290EAC550F0A356B -E6C348DEA586569912BF890CF73E5E2E3B6F31244CCAE55EA1169676A9AFA1B3 -D28FEB69F21D1FB36276552FF8F5119A7D7DDE2BB0F050F9AD7730713674E97C -072B31C82D87E636C2819271DF0192C54CA34AEFEC6E3D7F59044869C7C27475 -90CA1490EFFD86A04781A5197DEBBE90BA3E4D9650E9ED3DA8B3D61371141BF4 -AE162139FE195FAB276299FC72496CA55F56323E47C00623021CE7EBB72F5BF0 -9CFCF5AB81B6873996D75DAF2BE4FDAE42A6C289E03D1D64CD8376433E9D2582 -7CB2CCCF4A6D1FAE25EEEEB25C568AEDFE24C3A6A57B1D6556C832DF6CCEED62 -9E913D086F01E175A76A0CF1DBB354826553B27C8433BA50FD295B8B7CB93B13 -91E0E8F33CB9D72DBEE55542C62E32E2EA89BBC3605B91AC2A7BBCADD0AC2F00 -2C623690C4915364E7BC42C98C1EE89DFA5DB1E9A335BE485F96D92A848E9F10 -89BBAF93A8E72D348FFA253BD462B72B758BDB662F4E15812A4C483B640BAD7A -8CD2629F86FD17FF5747F0CE48858AB5CB6C58EF16229D5C89D5E90517CCF7FB -B57BE70961108A92685EF820D772BCCE4080F4A4DAB3F3764D74004F20049CB2 -17C72F41938E9013DA041A36FC5D81ABC8C471ED2E99A1A1D6BC6E81E7576F4E -E17E9A7972C98F04DECC1E06852A0BD94A47915FA2568956B452F41062D65FBE -27E5F48DB02DED360369D8DDA6BB5D84467F95CD27D3042905A06644A9271C6B -6069539FB9E381CF5CF253186228D4F534D3BA1B51994762630F09BFC03B3C3E -26FB2B18E271BB7E446A1C6F1AE51E589BD103B43617B6098829DD7E5797CF19 -8E3B0F301B2962F17E6C9847F9DF9A3C6ACE96AED712A4A1BFECC614C008E495 -3DD983BBEFB2AC681B61AE3D35108D69FE45A058CA246CD4C278AC6ADAF97AF1 -E71673F9CD8792155124F3E0886811B8FFBB9521AAB27436783643CD3445599E -4E05811C063E64A0319693AD31194A72AA14DE7887AACE76B5B79639FFA6B2BA -3EE708EF87537D04522C2508E457478DF29A5FA639906F6712869F8A7F2FB909 -A6F86722E5C2A53932B8494F88B4AA346E5319667AC6B70F3C41E6275BAB9A8A -F7197FFC71B8E00DAF27B784F6958DF7346D49A1CFC43BC041B3834E6377D3D0 -F4A5CA68EEA2769626A006C47B869D2B92C4137265C07BE5C6D9E8CB8A489609 -52482A139C5D1C72D5BB08345799F1D13A232623C9834901B95FCABD7677E198 -13D8AA82574FF22B68C1E47D22A8F6ED06E3C372A108DB2BD20A3E2112F447C9 -C948E0E053BD36116F0C79989B27D82D5117BF48412C2305124AD94CBDDDA5DE -8BC10CA15DEB62E0E8799B16C8C7E3194681D462D591847BC15A4A2CFF981950 -3C97C031DEE6104907479B3B4C8CB3037376D6D00786E54F63D19E02AB3A6331 -3EECF0FBA366A61A7B68DD53D24E331A9590206D9E23B64C1645A3A7A5792D40 -70000B430C1E25C85F05DBDD502D0293BA3AE9AC0EDD494087DB5CBD3E0B2C48 -3BF4FD5E8D95CD6A1E707574AB3BACA6AFBD8DAE27ACA904FDB334A9573CF3D9 -1ED5F66F4B96E8FA8551BA6509B3E52DD718CBE7C190DE5EDE513D685D4BFE0C -85E18A5699FB9B359E7ADF5F65B28ABF8D4BB095B9A2549409CF607CB2B9BE56 -CD37BC0B909F493DBE1BB95ECA87BA37154CF67405F6E25C28A183545F26AEF7 -96D75AC79E4694D4F67A22EDEDA7B8A24E0D6BDD2DF4BD5E2BA3602308503AEA -28115B77E3025710FE88C441BBB0F09D8F6808F59B13B4EFF54C4625875B7292 -A8C7E43407D31C15471DD41AEA02C0D39F73C7142858342720F40D18CE901B24 -CA0A530B7E9A488BCA947CE70040FDCB3EADDBE2A8039927613927249287216D -2E5B1CB2BB6E6A917A9C5DB5186B6AC77383B360C349DD1797A070FA5022E18D -EC6099E2C76FC6C14518AA866E37D6A05F6B164DB5289973A4AB9FFE11FD48F6 -531E5D841B0F43D110BFE88D06D9774D944B8F07B3DDE66FD9AFEC8405889FC1 -B0D18BE78E554227EF73BD53E20353221E75D035CD1642E497932F736AF7CBB6 -71C094AA316C1488008B3A459B56E466C2C6B9E7A05B9E0BC438605D7CD8D883 -28C6D87F000E0ACA3D7484848584D55D60377BF3D6C02485B08B6D0F8998DA5B -EB9AFF49D304731CFE336B17C268DF694B5FC6B99D03CCA8C7915C78E6BE01C7 -324F5E4CEF5CC6F279E846666D2EBB052FBDD15F0849EC9E35D3F32A58AF87EF -7C6FCC7CE42C2F4E1654278AA7893FB455FD727EF6EA9A7B37F7F9BDA17906A8 -C6BD0588D0AB6932531980DEFD016725AA5C65F0CF127B1B965B3E1E6C5FFB86 -D8B5639369EFDF32CD7E547AB383F9AAFE30935CD4635671450F538ABBC457F3 -2390D28E8208A66CC46F04AC44BF3DB7CBD94638119E5B68AAD689A51B454240 -A85EDAA394DDCC4B0984104CF71ED8432BEF69CD862893BC4BB9451D145ACB59 -6DEFFB3551F8D067760EAB1505D443685B10B4A956ED200770E1E1D4ECE6743E -8C26B70C9DA49836C35F469F9C7D8D84BAF741B671CE6F0E5A3EB017FEE30E4D -B5524CAEBF2BAD987F4B290901D18F2F161BA5B3618371A6C868C959B2BD579A -22650599481CE05481F6BE5D44D88F8BF0930352194D4750F33D78CE18E25E23 -FF68409C8490F178872BFB6EB3E3DB658CE5CBC41841BD57806BC959A06192C0 -D722C50E5BC87A595BD38404E5454CF9063FC6C757576EA0E47949F7C160C9FF -8E89C687E711204BA3855B7056616E31EAA6414205853F7EEB9171C0D57BF449 -6EB9A52AE09088C5AD3BCAFDC49B4C922625599E97A88CB1FD6C5D3EE390D872 -EF6F0852A19BEFDFE8699DAE598CBA83ED71BDF8ACDB7DCE67A2F512B8A2F891 -80E5962373CC39A50AC13A99E765FD6F5C7BF7ECAA4AB8A0A2837E4EEA7F6781 -FEAB66191F472F0552782C1CE5D058F8AC80E242E443E084E7BFB0E3063A391B -D4F256883DD600AFD75210D6AB126857D2794B4B20A303571E8FBA672BF78617 -F598256A9A74C06E420CF03AB9F93BC569F6B53736A32D712692396E3D05B7CB -D604C5E77F1D996AD7E5FD58831FB56CF74904D2C502AB61888D497A67871043 -E67680FFA11CA19668280E8318969BC0D79C9D4BA43BE7B2523B22938E33247F -23B0C9A7D3B14DCADC575DFEB95EB33B95E9801A236E82A8AA7EED0A2C9DC58C -DAA4A7A40A1967713983AC17055B310E4720B34DA6D4097264CB4A6E65DA5F72 -1DF86D980BEDE79B702DDC3E600E966210F711E747B22C9C9BDA17F6EC4E9C24 -7982AEB524484C9A2D33E4DD8D7CEAA4CBDE41445FA9968C78343A6D85627359 -94BD1CEEA272964682FE4783A590D8BF311925F76FF21D6C4F181E254D46FDB9 -586F664560D3474A39BE0044ECD5E069B97CC19EC81118B6845EC92D167A0117 -84E5213875025198BD7065B0160239A20735A2D993684ADAFE681C096B28DE5F -6915B01D680C091A7A2F6B6EACB8B1930385DAB37E7B10E10030D8C1037827BA -99215103EFB40DF5748762823D7A006A10FC7E3247A9C80C5AF60387DD6E78A6 -288FEFFFCC7FE7E0E164B7E83D10292CCC22DA046600E9D64624D7825D9317B2 -E53FF8D6A23177DCE71242540D4A3B2D522A402E464B78B856EB040D0AAC5E5C -5253777D4FBDCB87B70DC83E7C6D03D9374A19B5A234BB225CCC905DE3DFBB96 -48A8A0CBBF6381026897C53837A79B3BD921FFF51FCC20F6FDB005BF4F9B707A -D0F4D97311EBF32F746AF9641AC06F8A858209EC9294AB9EDFF667FF9341F3E0 -E70B6BF2A7326DB1D78527D30C040C8F8FD582183A937021BAAFAFB493829E49 -A381C62843B4E058EAD501971684555C8D0266CF5271A919238CED1B967D7FEC -BF62D634F01960DA58503433F0264EA735D9BB9B5236A0E2AC257B0B9F87D424 -17C8E51AD1D0F180CBCCE2D25FB2DB840F13E95B589E2ACE8D28DEE5FBF906D3 -A91357986244140CC4C01D0FC5BB7D74D01E28C1C230927194257DD387AAB4B2 -F4AD3443F07E9AC489FBA01A4B71EA0AE60D578FF7E5D6DFFC11F704A5B24ED0 -8415507E53F4ABA42EDF5A75E74976115F48D42DC59FDB47B7E5C3C84D07C221 -9B3D804A3B987B85B88AD29C86B3AA6DE4137F8B0E403FE0E0483A873071EBD0 -A9951B3DE925AC92E57939FE4CE0BE11DA975A8DF214E53CDDCBA5E9E8911EBB -B11CA565493EC47B74B2EB88396CCA83433CEBFE8683A72ADC56EE3F0434B948 -86D8C9D149DF468FB602C3C61210B20F904C2016F7E9224536468B34E00A9C7C -0EC3FC06075E5D8472761E935F83A5E0D35D7BC8748ECCA928A9F10AAD8B4BAC -AE006BA206462352C6E1C3EC96D7FFF2425A73976E3954BFD43018F97C58F013 -1199DAD9E97021E026955E8E1C6CFDCC641007032631113BD07996623EB31685 -4963BDCF8C324D7A5FDC85E54B4CBCAE58D82F08B6ABF76AD6D3A85917118099 -E0FEE836292EB04F89259B12F92881A9E2664609BAC293E43FD0554E0D0C1959 -C53120573628D96FDDDFC7164CC014BD753C8318D20550A14C8D7B0DAFA9E24E -94DAFDD818407AB99EEF38F1AA32323404FB6EE025C4C1DA4E6441BFDA568A2C -96FA853B52F0A0F42BB5047D9AEB4221EFF4D016C17C52ADFF34495DC648770B -F929820673FD4AFA144B077D0E6FDD5FBE3CED5E873474244988A065B66745E6 -ADD5AE225FA11766E0FC6650F0643DB7788A9FB8DEE0DC9E1636046B5DD23AF1 -3B9A9C0FC4A956DFAD610EC24ADA15E5D8A27FC0F2B6B3CA37962EACBCFF5488 -6F89E9AA065F71EFB0F8F445B777F10CAD08EBE6CF3AEEDA0A9C434BC4D66C6D -FBF410B1522C7F40E6F44B5F4CD5C4E3A391C7947C9E2CE6B79EE0A640FD9826 -484EA383A96339A15AFA274700425559A2A185CB0FB31CEA643513D898FF681B -85BF1910887B4EBE8BC4B8B0C1E298FADCD5C79E19F1607DBD8DDC10C2147533 -425093D1CF3858DEA8C29F3B551AA10E86F5CA78C24D9DC2FEAF0CEF9A6B52CE -A4031CE32323765A01755D375CC665FFC65D6327A7147417B8DB659D76C3D1F4 -A6084EE40D9A0BA85A7CF164AF3DCFF32AADFC1D7F4962484B0CB57431B5DC14 -0F907A5F582D325023B65EDA9AD1C5FEE939D24196218BAE0B2FC16830282E19 -2BE9B8B64DA766E087DE77010BDA7D31EDE219C0E252A5E2724FE786C3BE4AB8 -E48EFC6047C2B133ADBE43E82B57F0640FF5DAAADC39A30FC98D3CB62020BFAD -05545B25851322FBEFB027B1FA4C4CAB2BB4B52E001724460CC0C359F9737A31 -1C9253EAFC50DF77B6F3C9C251ED271AE30CC51CC479BE5DE2D6290F8DB508D1 -E92E80DE84FA2BD7B21D3504502F9F64B63388D5120C8851AAEE7FE878482D57 -461E0CA6D2E694948CFDDBCCA5C1451C0E5DDBDCBF5DAADE4101561A983BEDCF -6BF9E92F8941C5890CB026850C1588AD1938185F1DEE52D54D5BE98BA4C62782 -FA273E9FBE8B6B15B99C0C9824C4A4F82A24DB38BCDD2F09288D68D6A6588BAE -D66378287202D4B40CEB5C230765C6A3F5BF0979801937F7C85766A0AB8B4F08 -3CEDE7401BD3F4C041C5A5F23B755F68C67EAD6A8401F96AE9D0D4CC5164F59D -EAF9044AE89B1864AD6792A34BF3F791E06549FABCBE386A158F5A2BB5B808D1 -E0DE5172FE5E8AC13195D474E67818FDC9E7257DF85702616C0AE0E4E60590A4 -A75DF1ACF5F07C298BD3A676A15FF2A64742568A9CCFF589ED8CC2121633B0B2 -9067BAC92D6F69D94904F00A413F524B9DFD59F05711B396BABA68178A3E8D01 -7368F3D3C8A694B5B30B67DDEDEDC62F92C0D53C04516AAD0B51EBE3AF5BF2CA -11C4DEDBD1E9FE0E65E11B73863967A4FF7FCC6C805A5AB76F3B8C0D7687EE34 -8E0573514D99E5E5FD2FE200E99AFA016421485BC2835BE20121EA9426BDFE04 -DC57E62AC2FFED33C6A6D75A6A5CDFD69BFA0185D2F45E0A5BBC3EDE2C6ACB80 -4C9536DE1D4297B5D18C965EB2E513AAADAC9F56BA5D7456C9C557E21201FE55 -60DAB1D95F9AF5D7D123A50706761F6F4E0FA550CE6C67FC6DB317D037A508B8 -23648D896B485F3B1D0C21299E99AC2D54A279A959270024BCCF547455750888 -CFE3F656AFCA7817A2A86115C807D7AD8455772D62C8975D09663901691A5EF7 -CBC370191EB4945FE3BCFAD6F6E5094ED6C544F720406E7E30892656BCA1F589 -B7BFB3402A10CD20671DF4824222E405FA06F72DA04A475C869F2907B7497C4E -1C0879145DC7E0AC8413B23CA86BCE45C225748465F03D4628708ACC998C1BB5 -ED5962F199A94FDB5768A8DDDAC5BC5DBCED6A7849D9097E6602EDC167812A98 -BADB3063B34C7A1D8202EC31DBF15477C73283958F3A0C5E947D84BA220A54CC -7E3600EA6C15D9ACA14F1C4CAE13FB4A126C67801AC73AD4958A3CBBA7030C01 -2DBC955150F4247A6F82D061D8D3D7A77F3645BC597B16D0C08AAB3AAA12BBFB -CADA03B79492676550934B0A5F491D407EF0D3DFDD12327A35BE575B12763352 -4E5C3171406350CB2E77F72C1BF871F1E65954A19A5BD59757942DB2C1014E12 -FB86F381FB40978404A2E05896093B000800C0FF8436C84F3AA47E80322E9E46 -89300072A5EC1FF1FBB85A9CC559A58F0219D7D7A40F9F93B0A0F62B31299F7F -6C1EF2CDA9DBAB5F82E14EB2E4C286A8B15DEFC4CBB85926CF5EE3A7655B9CA4 -744FBB0EB5EC121722886F942DCCDBA5432CFA52BF760352A9DC228E6EEEB359 -E32A03072BDE96D8504EE3A1E74E2623CC0E8F930CE82A6A17ED091B4E9F3966 -F9082F6010B20E22E9016B0659EAE874B03E0521BD0B22810B2F447B8868AF10 -F4352DA9A3CBDAA1D36350E172B774720BA0C018801309AED630564CEF742E80 -F8475A0CC1DDC16FD131C7F3021D70F47B5AD9060625B29E4FB610C3BEAB90A2 -290016C6D048114093613F9BEA595DF4BDAA2B8ADCB510A72F0E92CEC708A79F -093BD179C6478BA462B62A31BF9E8D0991ACDCC144FDFFD440C62168707C6E69 -1A4D410BD213D45532ED4E3AF0359A49AD90DFA148C8AAAE58935EF481769D1D -2773E93E4333DFF0672105E768D0870A027C129212CF9D780024C75F237CFB5E -C765E6AC6279BB5FC9D436F7F328F85D6925F825A96F601259AEC22BF5EF10BE -D524C90F3D5B3C74396CECEE20FA22F4D5AAE8ED4624DD1678A05DC8B21C0FF3 -9BACDB7CF12A45D7D2FA8A13EDE7FBA91DC7DC770E56C7CB864D43CF01543F45 -F586BFB542B22944AB25D731CB4C56BA9ADFF295F50A18717CB682E547ED8FA2 -3D533B5B371F089189572755F5A01AAAE6D3FEAA723195ECC0C069FCEBC750FF -AD34DCB8DA37C92BE80252D8B8A506C1B5ABF3C47E75A8E58A672E398718076C -FDB2F75F6723A762FD3DA0D1BBE6ED287FB5B0C6CF877C6DA06759B0718045EC -6080920A2030ED955A71DA3BB874EE58B69AD9919F7885FDB4CAB1DC001DD665 -F01A562B146E56E0A0270D634D9E3CAA9A11B19163A99D286095A6AD809F25CB -64913FB20266BAD050EF759CDEFFEFAC30A8FD0D4A3E9CB280F6AD012CB348B4 -09AA0CD23750C2C9F7AD23D5DDD514DA96D63ABC3F2E073B64561BA02B8DFD46 -6CB1A691B18370A6ED126233DBC4DCA6C81B455543BD707EF9D6B960765E3ED3 -A8912C207B1F4B76B22CECF203FE5756F8E613316776687A1B2C9AE9BDBFDF7A -8A6AE77368F6E1C1591D07307ADBFD680165B2016C180D063F9A0612B5D1A914 -6D44D00620F06CBFADFF7FEE004AD00DDA1BB5C299BE9A6016B87D7324077A72 -5D176F4D024FE46308F0A45FE917E2E387635A8A1AD20041745E7DCD7E2F7314 -EF96142758CD4486AC3CD516917B7A6D53050650FE39D0EB0BB07493A4C1773A -7AAA2FFB92EF05411F7989071E752ABA3806D8C89FF04CE537DAEC5D156B619C -F01278070941EA7B4DDB11367BB5658FB8DA26B02BB41644FC3204F286987256 -83013544C5ABA11A0C0D6CC2BF268B4A606C321BF1A16C2D125EDB73F00F9E29 -8B3BB482BB62DCC0127B7D3B1F978FB1D172DA3EF0453243B0E67EF48AD4DB84 -BDB1BDB9CD752B76B601BFBA81C8F868BF2F7EF4FAF1C9CB5F410F5031CA8A72 -53B5654189EC484C69624D013B0873F4DE118088581BD133DA02CAACB6634959 -6FA9B9D491BCA7AD51003523945170B2E64CF903DA6F10E8A85DE4E9E2478B9D -E473A5E9CB0AAC3754A3972C52A3833DA7EB7ED200C9F02AA109D20419534B31 -9C929D78239285C590029052BEE1CA289893CB3DC1F49DC0101316188C1DB0C7 -1BBFC04FAE0BB6829E67E8E1DBCDD71AB69E4B9A16BD8A76B696B5CA6772133C -00F32E0CFC02553AEB9AB020822602693C0712256A1A1A77BDBA2C4D27819034 -5770C08C182BC28BB50F177A14CA722EDEEA74CA7AB052E05B1743EFDDC0412B -E5B114D19A9BB159D65452AF62A986E2EC6C02AAAAFC22C7CB8322A597E967B3 -4F9F25791BBF622D81FC25F7ACA0C21B882E857520EC45408020F8B7CC84B383 -2E7E8252C4A2E605D3279854F4B234473F86E859B59885219182B165B4BE71F1 -62B8FE89EE84D0C67E5608FF13D1DF4A1C7E4932463EB52AB14B0F791CC5E9F5 -E7566B48AF01177AE5A97F43E1D9CAEBB84D15F40618BC14CBE056225060A42D -9BCB36A6E4AB567E41FE6D99245BDF931E9AA819CABC224E8B94D9F24DA95973 -3702A9D78B00AB41E5E2EBE2765AE1A2233A08EA6B795DC6DDBF0E5BCC0BC0F0 -EEF78760C3BB3B66936D74BA33BFE63F72DC5B14BBB0F899EBBE4F8614FADA4E -26A12088CA3A7B0E6EFD496CA7B5395A59E27594EACD67A74339C39F2E7D3524 -B0B4907AE836B1A62831EA329DFD8FB498FB960E23C7735165D75C50D499C4D9 -F1460B2E3078A257827BE42E99F1BF3DB9696906E36BECBC21CA9403118BBC25 -E1E41431E92BD7F40D3EA271BFB74D25909155C60AD3A7C5AFF5DB16AB60C907 -7FF407EE593FB3ED2D7C82791934893A0A382C943995C10941A4F57818B0FA37 -94F1D12BC888B668ABD18640DA55CE3AE0C07B11C545B02C79938CD01CE6685E -A1D82862F6973E1AA906E0EBEA21BC5784716F79CD807A0AB4375DB46CBC22FF -03CEF91E01F794B548A817C626B0B7F5A510700931FDAF466136460A8ABD7E35 -58D5113BDE7030BA6FABD3CEFC98C07E4E56214170B6B58C2B92D410EB7A049F -A0027095A87C13F84F9D1B789628ECC22611535A23787B3118BC413AA46FF8BC -2378CF05B2886237F22409C4FD5FC3BC8FC0D247FAFD3F73DD37F62A92EBC32E -CD6C3F9D09CDCB3B455DD9905962A808B2ACBF86EFC1B77BD668B6562266607F -F84C42D7C3BB8224E20618D4FC975CFBC61230B85865CCC59C7F7A7A46DDD97D -A4D76FAA3F4EEAA36FD20430C153A633AF5ECEE95CAE75D3C4A0AE7AA2E91DAE -6FAE64A1585B6906E0F51D8FB108F425882A033464895E879631D70694D4080E -EF0AC2337DE4DB985D1A66A9716387EE1605F1848A2E2C71F09159C13CD2D9E7 -56C43A3DA0BFEFB8ED79E897F297B11920DBC344941749293958C56278E16754 -A45F267B2421183F7499C8983A6C5A8075EE9B820C2410E29BD160F6C00078D5 -C57D0198325AAF84EA41FD60BE2CF64566DC31B50420669DB80F9EB84D9FA360 -045509F2726CA70F8F8A18BF2F02AF5D4B2E27180FFC326909F3596E5C5271AD -22BA29D31D37175E3A8983E560AE31E3210B0A87B6B8432152F396825A2ECDDB -969544A94C3EAEB537EA22F8D02BC113133C561CD552946C398E4C37B12A33CA -803AB7A78F848B11BEC667E28E72963011287E34A58A963CB4E73054BB88032A -65265C86BDA8E879CCE3D48BDDBDBC7098DE7756EBF98F2363DAD31A4DA2A12D -A81C0CC381A6FB4CF4B46CD904DD543689B6AAC6720AF3A851AF9AA4E7C0F166 -8A3864F51DD2F5670C45023B5D330757A71C90E22BCB8651EC73A7FAA2721A8B -92D26022B2C0297F04E90EB871D7AB7BD236CD1FCD25D48FCA2F8073CBB233ED -EB6244F2C7E4EB68590795EC2F8E5D8D02FD827460718EAE728E773D9F3EDF14 -7EE7BE7ED28BBF203568F778F70888E6805044EA720F47A7B4E963C62F4F465C -76EEB76BC36D165A70DA25A9AB083F9446D8BC197E400706016A12EF34CEA55F -9D63D9620F6FC71CEED862683B2F01F9E0CD353CE5D95A6B4E07469433717DA0 -F179C3A6B4DA0A7A9CFD05BFB6C7814A9B66D4376DA678D4A391DE59690C0215 -19DD54B38A7B7F046EDC03A7092C6B9913FDC1C3E23C785F6A755DC9476E9125 -DB971B22C4D4CCF0C23A93ED8798A3D5260A5C206B5CF4F4A9471FCB6C925A65 -1A610E5F6CE6A8ABFA5497E76BB5B2FD852627C64A12FA088045039C37946EE7 -494CFBE9613A15827FDDD365DB6E0CB24B528DE8BFE5D804FDC47A9BEAA07421 -8E48EB0119A67946992405F2F7834B19EB802A7FFD94612C9E66F56F9455DF6F -06D1108DEBC8EC112D608EC57D3F7023781A70A34E826C349B934665E6B3A77F -3D610B3E9876392A43F5CFF2FD3CB5B9C1BBA338C764512418B9B0738B55990B -0F633141C2E4E79D4F3AAE449AED503D376EA16343F55419D48E812F7E4F1F52 -519F4B923C1382E5084D0B185D1249EC6206D1648A35B17F8EF45A3328BFC6DD -2D8EC3994EFAC71D8C5413543A3CDD3656EEC958799AC24DF9C3DCD59409D215 -39786030FADBCE8B9D90AE1B9A9B9674F50384052998E9A5258C382E3A4F29D6 -A1A251890CF5BFD1C7438525CB38C600AB59D6E2C27203A25238F741C61E954A -B25A33D747CA6C00CBF5AED2D8FFF33DFEDC3CD717FCCE69865252EFD6B17ED1 -344533B87F933F3AEBD58364047CAF7DBF95DDEE6133D009D10D6E402AAC8494 -3DA2C3BD728272EC1CFF3397A20B217141DEDEEEC34F178AEE64D457FFCBE41C -AEFD8FD08A3B1E9F7CEFB2D60717407BC472ABAED13B8FC42A702A14C4042E0D -FEA2E3343169845E02356B6286BCC4772275B033D105B4FDE6651D7B2CDA05D6 -62F7C17BCB390205A0EE730A146DE3FBDED3C1ED9A01CACF9341582BA552F758 -4E38CC004A94AF909859E4E40B81067E3622034248D1477267D19350E5E56243 -E31E69A878D41845DF38B9B9429F58E13EBA1215D2AAC277A801667300140156 -0F1AE36E437E4AFD755518688DB56F51A998749B5F50FE5A5265D659B164766B -CE9AD79E5BC01C8DDA3562E988648CEDC78F95BEE4CC95F5E387F1D41B1EE495 -8C477265138359138022BE90D007E03261524F741FC1D53C224CFB4EB090BBA2 -AB1E1F22B39BB4F3088CEC582DF10F267CCBE6B2C0FA16453965BF9A04DC454F -548F744F5C2E7328CA2A005561DFC19F2ABE6141C96A74F99820DE87B06F6135 -F16BF169C41F1E1496E10B4AC47B7A045C8D4FA164C5FD8FE86821785372D177 -427D628FF391F13125C2C714274E595B4EE6CBD53278E0DC5E6E0073BB2211D6 -671240041CD12443B683098F666EBE4C61D648F8B6AD2BC361136AC9FA7B1868 -CF3F5A24C6A5AA1FB2CDD2E3F7A0F2D50C235ABAA9E6F4E1A7084AE328CEEE01 -B698AB0DE731A8E7CB1F9AD9B2BEA94F79A5C2DE587C394A8F5CBB5ED7B20653 -02F978EB0A5F6BAF1683EED4CD35036DC43BCF4F124DD07DCE3D76C75C95D758 -5634E03C6C367549CF51ACA9DF68966B38EC2B19ACDD381B1D66BAD5FE899A85 -594081D43574F92D2FA71B96F59E69018B02FAC6511BA8F0F8C727FF023D3803 -474EC2023D0F9DAEAFF4BF17483CDCD2C48FBE9FAD0F48789846911C6779A481 -FFBD8074568DD1B1084365F88695B9956639F38BDDBDC3103EF19C3FC0053F18 -EB179042215E7B09FF4773D5C56AA8CE4B46860DFFC7BEDAB48C001FB9F20749 -6BE32B9C4A83E6838F32475034C09D7351F08E97760494B4C39B9BBE31859E8C -77FB4E70BFE87E14C5D471DA9D3F5D4134615B1620EDC80A5494191237801B14 -0F866977D48B5C8AB9E71EA6161CE4DCBE65FE7078137568EB63164A0141CD3E -7432852F0CBF1B4A2A9D3FFC03E9D310BC2DA4AD6C8A957254B76F1A32C3DE5F -C9F297C301297304284F9D5E0B1C42AE850660D86A3A808845F6FD3DA6A7EB68 -54B571F078B7A63AE4A3695F9CB247D4DDF7921A48573D0977F17AE74DDF4214 -6EF545E53B5D9E04FD92F0B0F816CC85F9C9A987E2812B8CA402BBA64B259AA9 -A66C05382D696C42432B591B54E94128513E39F1758F4215CDED5C7F5DC100AB -16C35A213C7F1C83E429BD0143178516D5A77E3CFD0400CDBCA7CAF1854C2CFE -495A2D12E7BAD84D7D5088AC5B8E9D830A7D6129DFF9B1B6D82064C122B613CE -4BAEE07A2A119AA496625517002C82391B38DD6E2B494E9381FD69FD90516D26 -512589EA62F1EDE7329705BA58C67A882D8788D481A5CFE3F56DDC27094E1DEA -F65EBCEF92D4A24002D8BEBB38B258D2B483DDB994D7AFEC0A79160B27A887D3 -50FD6DDE0AAFE2CDC07E95FA975656AF0C1771AB7204CCD49C97A142C3303317 -A7915465EB8E52E3158120D9E62E7CB5F0C73D6DE8CB8348CB132DFDCF45FF08 -2D5DC1FBE95C988C90DB8497C3737D1E4680AFD5CA2CC98139583F6A07836DD6 -382B84D038C33124CFBDF80DC1CBD1BFF5BEC8F82F027F4F41E19A0B222B4DF7 -2DB96842A001074E5703AE78792BE8CF1759F3AD4785D68D884460EAD63886C8 -CBB32CE7417DC6482B7694874140728E9211FE130ED7AD5C1FFE481E76A7BEC8 -6D8F82C0A13B89EDDC15D719BBC481ADF1AA24A4052018799BC08D26B62B21F8 -3F4D37CBE73AAF9112895317E4E3D39865F683997ACED55E866729066D351C4D -6306D05333785D2C737FFB560BA4146B13D03F01B1EA45059B8891624EBF7F66 -BE574A7712C9E9CCF3CDCA645F07D74E194D3209E7F4ED938BB378E5FDEC9FE7 -05398DBD8EE62434A4E57266D554395F8749A1A12AC33D0E70B8F93F56A41630 -D5F0C387207D16B5FB04AE79578959416D53736319008C76BF6BC13EFDF0DF0B -D088706A73843497EFD4DA15059814F5AA43EBEE5D0646A28654E1695F8958AE -F13209ED4EFF6F14F51DF927BB713774E61CF74E638D6442FD59F6BCFB7062D0 -5986C27671428E45ACDDB6C1A06E8C90F4CDFFBE60A7115351356C5B4772ED0A -8427F065D3E86BBD9DF604190F15325632FB03D1369DF2442C3F60E80CAAC7F7 -76ED39BDC600791D956694419242018831F607239610CFA7EDD2669BCC66DBD0 -7968732B94C613230264C67D42D18B4F1F33608DC9CCB3D3E22620FADEEDCBA3 -49E6898235E7E6C0FE05910834C2A9C48E181F73EC7B016DB43FEDB7C81DC72B -E73F7F6C07518D9C5CE6ED62D94CDDDB6B49EE05860480625E63E1B212F60BE2 -8D9D5A371BD0D3DA1F23BB59674510D0D1252F70330F964345F63683615CB959 -6AF85AB38B389E75A402B41AC02397DB6563E5789F07B1A1D6834C796A9884E7 -4A23CF00041C4A307CBED62CC5B56187A237007DB3C9A4E84E4BBD097B776EAF -854B977DB99888F2AA7ACA75291FDF4D36DFEFB4E3D8395CD7E15FA4F2F0D949 -498352685B5B744D667CFAE48D2F865C67354A8BD4D808D72B07C0771E95E000 -3D648274AB79350D70A4D046AA5DC76686C82719F3688667B57C1912F6CC6066 -88FA20D211F3BCD27653626F3C3FADFC10DE826CC1812F61020E3E85C284FAA5 -142369B6D225D322A075DE50BE48C3686CF72E9839B0105815196E197D9FD183 -B3BCD30D53C8D8B8A5002E56B7B5B768CEF6DAC28ABDDBA13B2415E4C3619F39 -A841B058700CD22F4F058EE7DA3681D16C129BB3D4B876E702C0FB1DBC053E33 -564183AEDAC340519E7983D2C074C12448AE5C9D50C2FB1F6353EBDDC099C567 -B2902DB6B7C05D5529A7B7B8F89AB0B83B7BF1D8A9139D6F191100FF23C86373 -F9E06C0CD0AED60A2CADB1BECAC35C0E37F938394E3C83DB71023EF8301965CD -327D4C9A236703C05F7496DDAAA01B0745D5368FF6137F1C51F5AE0579715E0F -56AFD7BAF3887D05769E6C0E5E5B962354D939802E7CB3129B2A1B9F86EADE5B -216A148911C4BE95FD0F5BA036748FFE9F810116BACAF70E9B571E061165F49B -74E068D5329E920B325D42552FED5126EC257A964130E56C9503A7EACC531482 -B532E015CA121D94941865163689D05AB0AE79687F4C6A4D213728433FF95965 -69CD7244212530C7A163305709371CB3821CF527A83DD1594D51332E8942ADBB -8B22D55C9F63B59B66F944A4264CB480236C83FBAACF3E77484362CF09DD12B5 -E55A29C4A1CE24D9145DF8682818B1C5DB1F3D70A99664FD7F33A275E322FD10 -59D4CEFABAB45387B2CDC780EB726F45FD16DAE62132D4319CA9078436B45189 -D9BF390C72215E3D1A9B57D0BEBF0FB25838159286AF53F4A0FF1BB61653B4B5 -CF8251590DFCC8BFFC6D79746F475DC891530E75F3B3999C8278A829D80770B2 -77D55F5C0C060BA1C3A8B20D299BF1DD89EB5C92A526B388C153DAC5C109BFEC -FF54697ED1AEA20335E9D5C2352287212817068B0B2404E5E6BE6909BA17189D -58B1E3AB0CA4AF9629DCFA97E5F279CEE27629FB59CF681A2440713EB50276EF -FE30CDB9F23A1ED2C6DE399D1A86C21DB7ABE963745A5CFBB8832511CD1580C3 -D4434A14A16C862CEA36005A4104D40EFCCF25F9DE081B9709B3B101604BC0AC -AAD9AD8C88298D4B8CFE6C8FBBDF876BE5AF40F73F7C7BAED2774547F030AAE5 -E84C09B6D8231066F7B1E8E306E3803852CE65B67F611076BB8DB49A5AB12FB2 -9B2BAD84E95B8D9074C8E7CCD4C2FD95B8EA6A3511CCC529A6DABFC12F4F4892 -597A7D6D1348A3855E3ED2404DA0A105D137F3BA9F2BDA1DE79018969EAC833E -7035C6FF4046077874DB2D158888E051BFFC2EB60EB35DC494FDB1E5A4F825BD -4B695F05A1BDF37AFAFED3AE93B40B242C5532869CF7A75CEFB11F0B22140D71 -5568AC13715DDF6F7034D0501F92290FC246DA690EA1E403CD33099A76D7069F -040E63A630A7EE329167A44965F6FC50EA11A7590CDAD389A0BB807C96236441 -D599B6C264069276F20CEF00A35C43C238B0080D59CBC6779491734701544DF6 -D2D68850784A887E362B3564E1F777361E9E40D80A9EE7248EB692401F485D62 -BA41DDF265E185A35B6A36808A6495F7314BE12B4C07860A86AA784D8C46779B -61A43D0307283298AA7312C6D45939C9425CB48DCAB45BBB8224F78B3BB58B1A -13B7C333AC9BA3EC1F4614C4BBD08093FECBBDFB7A88BB37EA47551D87E0BDBD -80652ECCF25174F6D07D849B45EB1AB793D68FF878A470F393F2CC61D0A5C60A -D3F78CDF9A6B7CE32A5ECEF01C7C9CE19FB8CCBC908E9240D752DED90D2F3B3D -6C542EB12D5ABB5470ECA1C0EF709CFA6D1361FD237B0A4F39FA9C32221F7198 -6C40B4A6BEE3B6989CFD72702E263411B7ACF3541CDA7A2B5A9E03D83E2596E0 -C20470481A590A6C8078D60E5343D8692B404B60663A2368416516FCEE2F7E49 -50E80359B85C250A343B88387F32EF38D6C2DB2B3F3BF16B3A848CF5AC13F992 -8E24B3EDA7C7BAEC90FE62B118A170AC576C451A143257215666A3F3FD2A2F3E -AA0EE89068F3074423D07C14FA407DB6259CE9677D4607127B49E486130913E6 -90F71078F052BF0F1D08768693BDD7F34EFED92FCEF87FBFC9F4BDADD8118ED9 -F13DAD900F57A2391895F8F93562848005A0FE8D9F7C90F959D80614B5C56169 -C5AC0EDB28B9019D9695E0A4FA21538C014D0CE7A2F0A98FE71133F4F09213F7 -858AB9FB2C26698BDFC8009A30CEA60F8C640251ABC3451A3F2D873027288C91 -D493BBE6D66E8ED0405708C11B5C0A74B4764303E8818AC807CA1A3170A68336 -1DC31D6E08284C49EEDB866A0AB7EDFEE1F09B2B85B67F2A35B0F13C36488B22 -08A68D1726F6CBE076BA95EE4D286E4DF8B5DC70C67B894694AF20FB5C1A45D8 -E5BE1F026B17022D2684820F2BF0084F23D4F48DE1264281550FF7376ADF1CBD -423F1F8D80EC764C6FE3BBBCCFD97EBEFC4FF8C09D1B7BD07DB426BA3F09FBEF -2F3F3E3C8323953868625B0E5FC562ECC736D6DFB5C2AE5B2AA8EFA304DD5A0E -DAD0FFD27FC061A6A5BF0D3305216799F438AD1BFD5A0B971D21F6C0052607BF -0244F5E90CB800FFDAE0582D2B8F49C5E8DCDCB7607B094545157E42171DD390 -087DC5FC53A5A1D4A42BF444A796B76693E499C550729123BEE8A0CD5C1E4F85 -FE01AE5671E324A15B384AA5015358C4F22E0E54722B12C8E070FEEA8FCA1CF4 -5333EC677B24AB1F4049C2F7D8A629DFF3479FB7C024E2E6333D06E7A27DDC6F -476CFD6B7BC429783D9759C5D49EBBCE336023835673FF54C920806C58AE6D8D -4C9414DFD0733F9DE8209A4E8E17191FD3E9C059959458A0498BBA6DF9E338AD -AD9038A6BD01B3429C9487A2F2ABC7124CB390338396702DA0671FE52416505E -E84D8792E101F35FC124E95B0FCE7C21E7F93CD9D5970CD526ED575570A1846D -D257AF9E8AA4C46A9EBAEABE45F872144185BD2F8B3365533B7618950F3C8AF5 -5B8824421D3ECE207F62A006ECCBFD233B4D40A97C58C48193A663A309477E0F -88536891252680A07CA46706F9504F263D6D9AA1A207A0E2867C88632D833052 -0E8D1105F75CFAE57A32601D97EF8B95965B490F303950EF8E8D07ADE6756DCC -CC8F246FDBBCDF16322301435235984E762EDF9FDD17B0A69A6A09125DEF7107 -BA0E6569B40B61174A161D420BD200639FE9627B4D4D910F264690B0B2B50A78 -A60863D47AB4B245DCEB5992396C11DE333AEAFCDFB7DE5695F4A06E800C6414 -43EE404F68E6655190B9484EAB0FFE8A2B6CBADCA45A947AFFC66D5510184A40 -2A0CDD5E00B2E91D338E33F3C732E674F52A996C1970D05437E051981120AAB5 -1898395502D6A47076DF3EA7E9871AB0F24167E2A6D602C832BAB91A62486C99 -8178A5C102066585374632FDD192991E310877CAA8DFB4579CC515BED8023300 -AC1547A49DFA38CEF13A21A0FB373CA97810A4362B1827265E4F8FFD8CA96382 -D1604610DDB80598FCD5BDD78E0EF43F1801ECBFB1C6605A4C16DED8A81B2C87 -C6C544B8E538A41E490633E3C7F469B6E46480255ABB9B58969A9E3F3DF31BCC -08B5FB55484CA43C8678C67D8C4B471351E59C1F18C81344FE527C59AAE7B342 -1AAF33C3EB428B9674C352131778FFDFCF2E7B1B830AAA153F952CA65BD64387 -3659AB4B7983D36503140115D81DF0C1372BF518597A8A32E62FF986C32433D5 -7BA33BC468C9AF03C47E6614E137EDA88014D8298E0202BE747D31FEC89E240D -6921685A5955C7EB87CDAF6AF80FFBB4AFBBA869D5DD9DA5FD8831A5AF75E1A1 -CF521601C5B480445D91AAA779EFB79A3D2A204B2668E60A6EA6AF2ABE5E0082 -747F8433F61E9A88675BD8BABBC02AEF296B52FC4BB0ECE30A8B4B5D72982C5B -70EF4305D2FE7C0C6B16E52F7A2EE235725B0E81BDADBA4C8943EB2CAC86D4BD -425CC9F3965D0C8666AB59AC55FC90BB9191DDFF43BB6E76 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTI10 -%!PS-AdobeFont-1.0: CMTI10 003.002 -%%Title: CMTI10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTI10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup -/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTI10 def -/FontBBox {-35 -250 1124 750 }readonly def -/UniqueID 5000828 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def -/FullName (CMTI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 12 /fi put -dup 45 /hyphen put -dup 97 /a put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 103 /g put -dup 105 /i put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 118 /v put -dup 120 /x put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E -2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A -EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD -8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF -CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 -7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC -32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 -482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF -118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 -1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC -C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA -8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 -61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 -C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 -3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 -9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A -D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 -125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 -34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A -30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 -39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 -9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 -2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF -0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 -3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D -9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 -802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 -FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 -98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 -5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF -AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD -A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 -5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 -DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 -4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC -8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B -A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 -E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F -42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 -3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 -A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F -7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 -49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 -D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C -0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 -CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 -1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB -8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 -6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 -83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 -60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 -42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 -1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A -21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA -206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 -D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 -7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B -55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 -6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 -4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 -871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E -9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 -DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 -41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 -2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F -220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 -A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D -981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F -337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 -139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B -1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC -100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A -1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 -F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB -72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 -A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D -310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 -7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 -1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 -8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 -80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 -3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C -C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 -4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB -865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B -301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 -3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 -1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B -E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 -0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 -30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E -2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 -C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 -14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A -44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC -CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 -DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 -9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 -4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 -2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 -21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 -47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 -F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 -D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F -03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 -886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 -352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD -9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 -9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 -92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F -821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 -3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 -47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 -F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B -9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 -AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 -C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 -B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED -D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD -F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E -81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 -970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C -6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 -97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 -A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE -AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 -971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 -514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 -8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C -392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 -3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F -464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE -C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E -F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 -911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 -261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED -D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA -147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D -C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 -C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB -61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD -FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 -F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C -2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C -7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 -11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C -9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 -C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 -1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 -5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 -6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 -EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E -F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 -AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D -8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 -376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 -B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B -02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 -4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF -9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD -751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 -3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A -40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 -2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 -D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A -0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E -8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 -AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510 -6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B -CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E -DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D -098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337 -900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B -41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149 -7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA -2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC -A91885E7410F56F60C29AB8B417E2D6092F8BB70A2DD5DEDD4BA1077D7CC62FD -EA43428C6F79C332342E15F75B08A1ED360B3511F823E75AD49BA7AE63B19238 -2AFE8FAC2715E2FDC895E95036D23127557837506A3B542B0E4651CE2B89C252 -31EE8ADC26E2C04E8E30A9CA12F066CE01953BE7867171FF6C7E834742C36C3B -58E74E4B482CB85FD4D24DB03D753F260A585D552CDC9E1941446F2F5B45FF24 -2DA4932B973139F328E7E92828B900BFD398B6F41DAA0D6861C66AA7F5E3299C -87A5925CE0E0F9E09AAE0792954A1F2C0AAA8288DEEFFE579E38A3CE8A943EB4 -55322A87C1634074EBEC25F724DC1BCC1BC10458CA6C4395659B0DB6B612C151 -557CC669D8DC37769E59A5AC6BF061C79FEE265DBB59520EB8FFEA273601D1E8 -2984B8AE31AE343F37D03E2BF97DC48AFE50BB6138C7B9F9B5E28672A37BD8F5 -8F8C98DC43DB22C6537028798198E2D3B0453ED72487267D653DD50F1BBBDA92 -833A987A95FC1F275B90B581B4BB62B6863A4CFAE37F715EDF3EA5A33679FEB6 -4847ABB4B3D170C275B9F1AC3156D731198DACE0B051674E85B758500AC9FBEE -ECC75EBBD85F8D62AAA328FB09C6526F853077AEF7EFBFC2B6A29D6D508B1E19 -EAFA4C67EEE44045B9F15B9762B3DDF5CE5C18B23A5C2F73A1F6DF7F8679AB78 -843AA41FD2A7DC02B45B729EB76C66A89F5F76E5C4A0C0563B1EC5E75D72EE35 -A7F1FC89216B60D82F6F2B8DBE85E4FF4D63712C689E696F60B52AB622C2A4F9 -37C380775EDB72638D3F81F61D8D74C76D813DDFFF35ABD9A502F2BC7FF65754 -2A8660A5A53E0CDC2E8A95B6E33CA153EB711DC796D313C8183D707D3F0E3EE8 -BA65E0FCE3F1C07F3D93F77056688B5496AE35A6BA0B59619DE78640A8C3F7D9 -7DC5E94894E1E63A7D80600B945B1CCA50F1B85F57673C6CE09EFC4E229D4635 -48AB466118D273BAF7C1B52A067A88C00EBFA7FCB378F1575BC0145F294E6F7F -8007602C6560476FA20BDB91831B22404DB1C4C167594B1216C25226D262FEC6 -F5D0DBAC4B8D743C669CFF2068CB9BCD2DAE8CD6EE1B33BBF7514C4E5EA79D46 -11AAEEA72B791C22A1822E686F3858E95A37D9CEF904EDEC7EBFB0E60995CF64 -57CF0EAAE6D4925126349DE06E101868BED82BB51E911852E6780772912570AF -CD5690C6DA70110DD9903BAA3BAD581D206571D1E57712C75D112254C7A3DC8C -892B66CA346EE682E7D910343C1CCD07465D9E49489839BEDA6174FB2E0DB935 -2D2CBA6B67ADDA1BAA6A51690A10C819692C9BD35BDC689F9DEFEA78BFE79C47 -C9CCFB3D04D20F1D3E0B73498FC0BDC50A3BA6DDB3FAB9458803BB26487C1397 -511717CA3493A7590E27B34C2E2E1BE2ED884CAFD5F7C185CD6EDA68951673D6 -384E6CD12944F86D178E73C8D78D9048A5B1E2FCB489E723F8178F842B362BC9 -F3E4D511B369670908B2C8087AA29F8B592B8AF7018311C0F12A8D45A3625096 -D4C88B19890571C60821F38310685F8DEE7A7A5D209265986F92AAF11143DC85 -F435BC210621851001B6A402E3A07D0F204A3B0D75DA3CD7FF6637D1F434B962 -F404DB3C6BC318EF517AA0836A975C5196976250B5D6B21DF528FB47181F5279 -E1EEBBA0F344D7EABE71904B5C1DB0FD07694C469085D50DF4990E294334E785 -5E5BCC4ADCD38685147CE535B23F3027AAC01A0D65AC751D9CA289B4A8906A64 -165427976FE6FD699442196B0C247C960C9086AB2E440885D2C32FFC5FC7105F -6C40A76A1968AADBBAD6F3C21FBC076F4F67DE62E1CECD38BE03720FFA886743 -846FFD2005F85371FFB9C962AE2D88586DC9DA2F98996DF8572551C3D49E1ED4 -41248FA76E07B2A5CB9C3451247F60C7AA164ED895CD6290427E828A7FB72F71 -7CC249C92A012C0FE99FC07EE7E084E190CCCB95E66A39EAFA7934598C69F04C -68B2C68DF99ADB347AB05F1905B8704A51FBF9471FB20CCD3CC87EF9FD75DDDE -125EA68997DDE4174DFA0ADA2664E7209E4EA1B460CBDFA79D033D33FA9C5075 -DB424689F927F06ADB87DF0C3F4600ADC9CDB197E41430047247E7645A0AAFFE -750AA1A154498C0B5371ADB099C1E273DE2E367DDE7ADEC2CAF9406A67585AB0 -D39F051BC556A8E569AB9EA4E69557A1DFCB8CD459403A616821AC61E35DE1E9 -2673435E5969EE48F3B9F9777E5F70C682FB7C10E6E7FAC5F5732C9EC2DEFD5F -9A28572ACC62C108861AB22894979195B88E6A08A533629295A58643F854BC9E -082F9073AC94EE08DC1CFC626DE4D341D7994178E708D4D8226897B54CC2B4DE -B37D5BEDC430404177977EEEFD7201713AC45FE927D4FBA0F2613A2FBCF890C1 -908E1DBCCD277E78E42363374E103BBD6C3DAD925A9422469648B9D8BE7391F6 -B448994EA40AF3A3EA7E6E938D0F93B9EBB4E09B5D2E8D9ABF1F4AAEE8A0A304 -EDBA6DF569ECD449FF362660B11DE8A13A71C6C8186273C7417C4572DDD8B993 -C96289B16223B271D026929B2CB9D3AB7A3511F09C6F303A7006705482E9AEF4 -FC76BC1B1FD42095857751315F5B06701E774FF08920342667E99EBBF5A19210 -9AAEDC8033E06007AA89BEFA5A1616095A8E90C999BC3EB266879EDE7D1218F1 -3CB238D180C463AAF853E315CA564247B6E029D8200B9DB7B13EAE09264A5DD1 -4A080EAEDA74C7FD21BB208FD8EBEC1D650C0AE392C67D65C1773A68F2CA313C -15FE2E4A0B6E7DA9CE391BF6D854431F0EEB550A818B6B95EFE6F72504AF5CE9 -73DC8E3326E2E57F4031688F10D1C272D41AB40B7EBA371ED357E67C31DBFDA0 -B8412EDBFBC2B6F26FD7331BC965DDFB1A4A17B72BB94338283A8D9139B9816F -D13C12E07B69E9FBD0C5FA9B1DAC2E51324695102DAAFA746D969E5F64980707 -228DA50443B2917FF685F5872D782CA265734036B7A7D75588C638AB9687D34D -D0221C0B3EB0A8DFE91598F07CE2C35E1C4E01E26D0358841EDADA02D3844B26 -C39D492C480244124F422EFE57D38DD912EC98582F05C74B4ED83BE81C363376 -B816F23D10C5C8CA831E1351F3BF914B07F638FA5712A1E05E3B751E756296C9 -2FF074FFC22CFC383804A92057155C4E43FA4990734C83257E810F3C2A62F42C -B5328A41BE80C23F49479EF84BA8D13BF3A45EC435781B9480659A4D58041190 -3DA62807723CDF1EE71EFA22BB67887DA88EB20DDC0D1A36A75C06BBA651DE67 -651BB57824E4F5264DEAA04927D2A29730B7293E08FE3FAE5FF493EDDC0F2232 -9476F3CA26707E823808329390EC9D8913AAC2D8DF2A6B5673E1A0F4E7E67C9A -D006E7DD429BCC550DF7323DAB781F82A837C83C80DDB8970CE699153576ABD7 -4BA82C753C82F19E30B853DD086DB119C48ADA56C39352E3C6B1FA232390BA3D -02482A6B845C324593FF845A572E1F026941AE3DDBFF83E8230FD5214B631EDC -69E178C52B5FB4BFF0C89B756E759147596D038850F0A468B20163093F8BADE8 -FB0F718C66D82C41A29EBEC417DE0B72C4F8E746EEEA33F2BFC0063E2514456D -6EC34CA68E1C667D47FB582C3A259AF4D0859C68AAC0E5F89CC91A1F508CE835 -E29B7860E6484F8B0D75C1635A32FDE55F119C8222A5D00D9C45930C9F5C97BE -A28EFB48BEF95ABD910E66CBC4C34AF6299A84CA55F780A013E8B3DBC4E57F2A -1EEE358D24775DEC537CEE09212EB3208E497330427706696335F03BA50BD193 -E022E668C6602731D51102FB7BBBF43A630BC428FCE711882EFE6E7739DC10BB -63B60272DE6FE4841F7728EA80F871F1648E3478DA71BF29F66FC3565AC3C632 -AEDBCCDDA048A807FCB6CC497A1CA11C6E802C1ABEC3BD80E116A648531484F1 -722E3EDA1EAF6DFF1D3CBB1759C4AEF33A300E7770B8A24F7EAD130B31A0AEF6 -26C369A8DDD409A1343BB66DB2B2F7882FD168C008D5721B3EF2DE8B56EA35D9 -2E456FCEF55927D78D20A99B96EE83A25BAD4DB679511BF4E27E552F871612C9 -6B8C2D5BAF77B648C654AE0D9E6402998E07906B58984B94987216AB9EDB2699 -E0EDFB6AD08E25F2575E1B93157F2F6A0D215ADCE1D21AFB6E4DCA3635E2D4B7 -825A4EAF8568D1A2ED4D6E8C9C6DBFC08D259001EEA83D3ED9A416435A79B56B -3F7B0AE9A5781694E22FC68152BB68409B61B9A59CC8D58CE1EA9C0DBB329554 -44E4D85F3A4BFCF8AD90771A203FEBD6EE00D118EA5833C96F1BC0CAABFE69FB -0BCC46E7A3280E16976D86722168F695FB6422734512954A97AA0BA8AF8155ED -2434100023E1FFCC504AFFEF6C2F70B1F2506E53648271DDCB82754F9775C323 -B77590E86374A9B01FD57FBDD3F3BF8D61CACB66909E6C95C81BA7B083913635 -30C7C0BB9EB7310F23D2991BC6D5CFA9A35AAD04B14CC5540A16C9BE0094A8DB -058B1DC4D5744C8F89257A04B1D8544C1405D8FA71A780E92D767A170C269668 -202ABE3126680D93532C2EB8EC3A140D604C79906C626AB0185669AF9A425CAA -465C3DD47810CBA44AD7E2BFCA99FCDA98EB641608032051AC5CC30329C28536 -F5637FC7E371BEFE11320FDB5B6530E513CB14122289CEFA88A97733E4F888D1 -23030714F61091B5ADFFE84E3505E32C347EE1D624AE666E8BC6F416F78CF6F5 -96FE5D12F574F8114C71A10596847A8BA0B03DEDB6AC72F218129B223F422908 -138A916F2605142D5EFF5F4BDA5627E59DAAE09A674B7D5BCECDD63BF5E7C119 -410A36161335A18A93891CABC830833D1FAC47B7A85BC9EA27BCE6F727E7D35B -348918F512C3BF7769C185A277BA930170AAAC6708F04F00C47251D2679DB455 -F9BB928838F148C1AFEA1C56AA779C54948B9DC0E827706834D9469825FEB644 -6AF843E71E44D0380311A3A6D9B7543A6A24B475BEB483D63BAC1B9421211570 -FF9BEA65E81FDAAF0E00A1555B0A69C8355143DA9B547BD1AED32120C58AFA09 -AC34163ACFBFE0E00D57A5ECC73E522AF84A2EE0C9655C6AE6E67BF4473CD8A7 -E7F95AB4EEB4AF83ADF597547CDE2426F200FB8824E2A826356096B962F31B98 -AB1B27FD681C1F67EC07FFEE7240F704E925E62749E2D2C7CD85C61F14B8A03A -666339793934155EB270C0C7B58AB8DF6C52B72038257BE0CDDD9B2A484DC97E -862C67F7AEE273480192980A5BCD8CCDDB87CBED18899B09B0A485FB4A1FB061 -79A918589500995F12211C3E636FD1A7F6F746A231E42C80152EE4E2C1E65FC4 -4075CD6B10A7183C711573498FC034C82A5B66EED4F921646F8A9AC989F7C655 -BC0C74049D81A3AA11FFC20CD823BBBEB6E58FED16B9AC143EF2E2981BCB5605 -71C71C8BE4112AF04B3D2D9C46F948C8E3862AAF882871C3A05CF720DB14ABBD -B0B2A5C41E35DA879B3109E31226C317CE405C2186F54D710AA503B8EC76BE1D -BABDC05B316D5382568D4938C7D462B3009A648BDC22C640CE6E891375DC26F2 -A7B36C4F4DBF909B2858AD23DB71783204AFA075488322462A92F0E6739E0A28 -486BD3BC19B3665275ABE63BA5B31936B0097A08717141505568962BBD257511 -B714C52EE8CA7A37B3C0322B7F5A5690BE2FB23AA9FB322107CA58B4CA4032BD -2026815102CD4688655FACF599739F8C10EE5890AB65B167C5FC0C8F855EF2E5 -0B3F95EDE6BED4CC277CBFD004B7D13734F605E1B929204850434638F7244B70 -176FDEDEEED09D16703108DF3041687BE3EF06ECC78CA7BD028A24676753F889 -32E2B027250023B80E514BCE566E9CAB8F8B516544EED082741972528E2D9D94 -29D8F03449066FA4412350A5549767945AF5E678BCBE884532DA8C66A612465F -4E2D1CA7353C2F7E0418E1C989026583844702D344900E05FB45FED3401FBED1 -F63830D700F1EC2F4AED4EF8D077EB9903AE3E1AEC126EF9A03AC25D5FB37CD1 -8CAD9A29B803EE39CD78AEA670E2304EFDF0B9E52537DF6BDDD44022F0C00895 -6EDCCFCCD3430853617597EFDC25E915E4F977F9910D640FB088085A96E7FB59 -3570E01A50A7D4903E01C398B5F461BF23638812C245AAE2F5DE500FD2D44E57 -336BDD4B538C081BBFDEE78D8FC75A19F204A15C2E18BBE879BEC3F675663D3B -73124D4FE6BB1AA1E6E5D6FAB878B479523CC51E4E734AA090DC70DF610CE359 -8357A2C4842AEC553871063A9127C952AC9A64FE3891CD4D0879B41CAAA2FF8B -0F4336BE27DC0C179FF91D867FAB89D05E382EC85C2DD1E1BFB4B66C6EF9AB3A -7A7FA0285EF3B67A1249BBB1493AAA17E355690753D2978D937FA5373D195D9C -9F2A3F7F6F71BB04BC47EFC7D24F11DAAFA20FEBBE5098976E8C002629C7A5D0 -4BC339B70105CEF46994F8780AB84FD47367F996418E00BE7002 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMMI10 -%!PS-AdobeFont-1.0: CMMI10 003.002 -%%Title: CMMI10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMMI10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup -/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMMI10 def -/FontBBox {-32 -250 1048 750 }readonly def -/UniqueID 5087385 def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def -/FullName (CMMI10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 58 /period put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 -1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C -7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B -0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 -EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 -404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 -78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF -A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE -88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 -C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC -BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 -98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 -E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 -143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 -981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 -88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 -4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 -FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F -347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F -FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB -C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 -B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 -F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA -29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 -36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 -048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 -80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C -9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B -75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E -4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC -74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B -D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 -E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 -EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D -543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 -710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 -EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F -7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 -03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 -01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 -500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F -F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 -AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE -1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 -85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C -4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 -6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F -55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 -085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 -BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 -2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D -CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E -BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E -D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 -991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 -6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 -E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 -E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 -B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 -4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 -1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB -B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 -8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA -FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 -AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E -BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 -E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD -38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 -7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 -2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 -DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D -22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 -8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB -44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 -D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A -42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF -C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E -0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE -66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 -E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 -6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E -1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 -B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B -897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E -EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 -A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 -F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA -A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 -2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 -51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 -598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F -87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE -178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 -4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 -7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 -AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 -3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 -337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 -C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 -DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA -7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD -6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC -98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 -821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 -C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 -7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 -B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 -A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 -23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF -C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 -969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 -3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B -9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 -1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 -B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 -95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 -FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE -44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 -FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 -E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA -633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D -6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F -FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD -375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 -6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 -EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C -E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D -F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 -DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 -D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 -D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 -9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B -9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 -B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 -D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF -8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 -FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 -B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F -00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 -909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 -5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF -7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA -BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 -C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 -BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 -BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D -4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 -94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 -F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 -E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA -92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 -63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A -CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 -B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 -5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E -86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 -AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 -3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC -35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD -155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 -AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 -E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F -226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 -9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B -8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B -919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE -A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 -9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 -523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7 -88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D -2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF -AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66 -B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D916672480464F7E22 -CA6E431FE38D3FC019BDD229E064B72C545C61C6EA55984565CCA88ACB01F744 -3B4593CC8944C70F30925FB48A16342CC26D444F54CA15E5A624C4A2DAA2AEF8 -404145BBA339F2A2D6FC2F3ECE54387761CA1213C8D56FF96E37C6147CA44B84 -262EA87E7CC10D931E6B5B80D7F09813498497AA84ACB4AC69BC6C8481ED2953 -084F560D7B1CF90555E69BD2AF7C5D944E8E3506165014652462BE1BC81CA341 -E1B0725159D36DA0FFF3577D1DEBC5D91AE683FB0384 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMMI12 -%!PS-AdobeFont-1.0: CMMI12 003.002 -%%Title: CMMI12 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMMI12. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup -/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMMI12 def -/FontBBox {-31 -250 1026 750 }readonly def -/UniqueID 5087386 def -/PaintType 0 def -/FontInfo 10 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI12.) readonly def -/FullName (CMMI12) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -/ascent 750 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 58 /period put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 -45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 -7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 -72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E -BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 -974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 -11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE -882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3 -2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A -7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541 -0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69 -987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7 -609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC -182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A -CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A -1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE -C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D -3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6 -D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E -E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200 -761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24 -8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F -68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D -10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4 -262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6 -922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16 -56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26 -32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA -7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460 -7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A -46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD -754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF -88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F -CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A -7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760 -8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0 -BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B -CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25 -8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B -D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300 -135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A -C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812 -1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86 -07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39 -14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D -7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D -2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D -639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3 -D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F -90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948 -10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E -1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E -8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC -D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9 -1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33 -9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875 -EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE -DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3 -60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8 -FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D -203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608 -FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09 -DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F -2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D -244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077 -31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B -724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8 -F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7 -D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA -AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907 -CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF -01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D -CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA -287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605 -8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9 -9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1 -6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5 -7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C -192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA -AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4 -A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9 -50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67 -A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912 -3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF -CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6 -5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96 -8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE -084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7 -92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2 -AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27 -97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF -92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5 -7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824 -5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199 -13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76 -6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1 -5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5 -6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83 -F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E -A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4 -7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A -9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817 -E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962 -AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD -F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8 -0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003 -1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31 -7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E -38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8 -5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F -3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B -B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85 -15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B -AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674 -6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6 -CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322 -EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82 -A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D -806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4 -461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1 -4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361 -9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C -172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6 -69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E -ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690 -356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0 -E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78 -7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C -B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A -31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF -EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7 -98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30 -C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61 -AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208 -E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900 -76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40 -8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573 -CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7 -761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A -2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138 -89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60 -D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF -C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485 -D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8 -B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39 -AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F -D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3 -866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD -207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73 -756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7 -60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD -A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A -1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4 -A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048 -C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3 -03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321 -1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B -97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE -D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8 -4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF -94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97 -201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7 -9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000 -CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7 -29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939 -4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED -66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31 -14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53 -84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74 -6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12 -49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C -224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5 -5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4 -A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498 -1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D -5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6 -40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C -E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B -C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD -CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D -2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE -710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45 -FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8 -FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736 -5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSY10 -%!PS-AdobeFont-1.0: CMSY10 003.002 -%%Title: CMSY10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSY10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup -/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSY10 def -/FontBBox {-29 -960 1116 775 }readonly def -/UniqueID 5096651 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def -/FullName (CMSY10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -14.04 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 0 /minus put -dup 13 /circlecopyrt put -dup 15 /bullet put -dup 33 /arrowright put -dup 55 /mapsto put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 -7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 -DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 -511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 -1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD -028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 -1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 -3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 -91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 -E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A -11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 -C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 -D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 -B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 -93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F -10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D -7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF -B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B -491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB -F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 -019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 -915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 -356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 -5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D -9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 -3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 -FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 -720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 -D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 -BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 -7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 -DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 -AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 -A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E -0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 -AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 -CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 -0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD -5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B -5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F -E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB -54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 -E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F -A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 -4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 -4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 -038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 -B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 -5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC -B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 -A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD -2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D -CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 -455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE -FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 -16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C -16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F -483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 -67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 -3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 -1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 -93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA -051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B -8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 -8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 -6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 -06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 -84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 -D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 -DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB -0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD -8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC -C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 -754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 -1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 -CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 -1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F -153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 -905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 -617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 -8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A -98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 -53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B -888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D -052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A -CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 -A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F -07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 -B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 -10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 -CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D -3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 -D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F -849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 -648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE -84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA -2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD -2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 -9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 -B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B -D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 -135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE -EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 -C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 -7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 -4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 -9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 -050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 -3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 -C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 -843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 -CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B -B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 -3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 -19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 -FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 -17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 -8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B -CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 -F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 -1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E -4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 -2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 -9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 -E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB -8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB -BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 -04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 -C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 -ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C -4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 -84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 -C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 -09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 -D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 -56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF -035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB -FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 -CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 -B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A -F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD -CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B -0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C -B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 -33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 -4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D -F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E -2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A -CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 -88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 -17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 -55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A -A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 -2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 -406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 -AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B -60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 -C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 -5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 -822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E -94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 -D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA -343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE -894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 -DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 -DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F -8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 -A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA -DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 -E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 -DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC -4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 -5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 -02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 -88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0 -657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE -D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808 -AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2 -3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E -7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B -A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0 -2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25 -CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D -9E592159338E1293F449380E13C21AE42E6D6952083BFD432F72DFB7B6F9257F -5784C683A6E9ACD72334E0EA8060A81E14EE32300055040E24B49810DFA1468D -A962DE1D1AEE09B49109257898F155A63A83D514996DCD2F96BC0F52796267DD -DA6229F5E9024F78B02154C27EFDB9B6E09B131C9E9E4DB41A0FAEDD93A05512 -A919AC8869C09FC929682B51174D816B85DADE28C00F6391429BA98327848AA8 -C52FEFEBB2296BB78F06BC1950A8E0405EDBA2D8C51F1F607E73F5A2173E5469 -BEB7918844D450B652DCFBC4C0D0C4AC2AD678B7165AA8F053B717C1D417ECF2 -3A2909E864E503059135C05EA8F7CF185DA45CE17FA40B4076ABDD8B167B6F02 -3C8962F09CE07257495ECE5357F755C48E49F4385DB5CE4FBACA3AD4D18E39B8 -F7057F4BF581ED26ADAEE218CE130B0CCCA0C7B273E51D7F314F53EC8EC84100 -8292750A37A4D4551A5C2A65D2382DB0941409D83FE1005752BAD1980307F153 -BD7C92FC12AEBC7C04839FD7F01BC85F0880DB22FE524204FB924445B6B3DF6E -1B657353086539BF4E60909524FFC4CCFBC8E0139F65F53ACF3EEC572C673CD0 -64AB1C29253049B26888A322E0FFCF7DF8871F701CAF5BE7B509E090C43B4755 -B100C929D5A8A4B9646E8EB39F2E705006AD23EEC58E0E1CD0C18A346D8ED66B -D0D2E215F637D25EC4F05C449FF8E25250211635C9D5121EE0D51E712B7A8699 -19E96ED8451ECBE97A7197337C65CCB44FA2522EF6735BFB60CD053EFAC10381 -C70053C2DB3B6DB8DAD720DA6DA25069131FD9759EC2182D1B649AE67FE4181D -B223BA15F5FEB0BBA498F9993F6A9C8DB9088DFACF064ECCB56FC4951EC8F9 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMSL10 -%!PS-AdobeFont-1.0: CMSL10 003.002 -%%Title: CMSL10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMSL10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup -/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMSL10 def -/FontBBox {-62 -250 1123 750 }readonly def -/UniqueID 5000798 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSL10.) readonly def -/FullName (CMSL10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle -9.46 def -/isFixedPitch false def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 11 /ff put -dup 12 /fi put -dup 14 /ffi put -dup 36 /dollar put -dup 45 /hyphen put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 -5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 -8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 -EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C -02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D -46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A -4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D -DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384 -7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0 -C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814 -25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5 -7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581 -299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8 -80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB -5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584 -8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894 -5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F -F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B -966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E -A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5 -9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4 -A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD -94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A -DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669 -E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929 -5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23 -8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5 -155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E -4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038 -44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D -8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0 -04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC -A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F -F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07 -111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344 -8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C -567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728 -C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214 -C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094 -51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01 -66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58 -9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6 -2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4 -4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7 -5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256 -0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9 -233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D -BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF -62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086 -B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88 -DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0 -C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA -CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC -38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D -FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24 -303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2 -8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1 -8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2 -C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53 -9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363 -4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29 -03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212 -93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8 -91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0 -FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27 -06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179 -95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954 -9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2 -7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972 -6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31 -5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262 -3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91 -CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1 -797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0 -DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112 -CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19 -8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51 -04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757 -78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE -730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F -021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79 -CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57 -90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD -97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0 -F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9 -4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394 -40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7 -3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B -362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7 -DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136 -7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233 -04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8 -DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B -C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049 -B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F -9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229 -3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE -D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2 -B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571 -74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A -44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5 -A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8 -3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1 -BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64 -01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4 -6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD -DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A -CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C -683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D -87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF -550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6 -2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB -17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB -3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E -F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F -B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B -1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514 -61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7 -124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2 -ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746 -0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246 -D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933 -F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2 -BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003 -75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A -8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3 -B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E -7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD -F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F -F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7 -322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E -523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017 -6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77 -66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633 -B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182 -5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1 -093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838 -B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72 -6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394 -EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF -A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966 -8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE -144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0 -7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F -172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9 -254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6 -5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71 -011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460 -B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC -0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E -3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB -E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E -993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E -0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9 -18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0 -ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F -CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228 -1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3 -A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A -6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B -BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20 -DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323 -1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761 -93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082 -E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62 -4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB -F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526 -4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1 -361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36 -95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C -AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 -50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 -88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 -AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12 -60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC -BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9 -9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C -6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687 -22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796 -38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340 -B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC -0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A -6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9 -A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D -84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61B0A2266A5D10C0D1B53 -45C41DCC3245CB3488020BF6049ED80E9A761F13650E3438D14F0EC89C11D18D -E44B6E47887F7BC25AFDE2D512647277B9CE23AAB30B7F1ED5DF84921B567F16 -CE118D5A71B65A72FE62F278D04B1311E20739AFA6D0C911CB0F041C38FC5E0F -E4CAC661E2D9102EEFB4CFE26354CA4BB30A07F2B686F1A4FD8EEB048BEB735B -A14E7905A8A538B98AC7B6C8E329B6DB2DB726C5B2B07E26F9C90A4E76C69EA1 -D928BBD0E1CA65D7402C3925A88BB09C7AA025E178D6579DA73010BF80A1332E -63C347B2A1911FF3BB0D28FCB85ED78684BDCC488A7D4D2BB91BB593ED517EFF -F0F618EF3CA13C5D281820ECE618DF32302A0EA74D7A956A0304BEC2B6CC41B1 -60A2BEE2BE369B2D9BF516E1379DF717F0D6DCDDD7855BA1475AC908334E992E -C84426AECF7209756184AE6CBDEE2005AFF66C89C743CB682403750794A927D9 -A00127CF00165DE8D171DDE90F403CD145C0B7AFA9BD46C33968D50D294148F2 -99D4B9424546FC2F0722BC22FCC5C91FA5384C95669931A721F15F0FF5752BED -6477E8A28931AC48A54699C21DA1B305EA37C12B24B00E7A0A2C9AAEC359FCF0 -18AA95A4E5701E7CFAA3D40F82C4CC20E27E9E47ED47767FEAC71CA0C22724DF -4A60B70242C35BF769D1612031ADE0B3441925EB80EFF02BD1198FABD652D0C5 -CB11A54728D9093958A5F5B9F27174BA5FF4E59A1432B21DB95C262D3999AE8D -3B41E4E5091B55780DC9F4303532CB055E7B24768E70A06F19F0F794D7F62239 -6ACB7AB588C7DBDC9B71B38A92947AB68AA4D62EF3A3A88B4D94A6B7EDE12B69 -49EABD0595AB29374374CC92553993F18AF65CAF555ADFFF11171FF7B18ACFAC -E87DBA35D6FE93754F475043791F00B1C1AC0796791775B22DE7AE5C04828EDD -DC30A00A6171300C6D65292A3FBC28EFCC8019CDFDAD405F8E29C43CCCEA3B0E -7A7E8526F631C35857CB9B29CC29A6809637444D659BE385375395A6CFD5C44E -5461CE4F66B114DEB16F2D38968512BB9F3D19D08C7E703F1FD705CCB1AB804E -107B97B09D1036A7DB5381E9B138C9233C265AD6276F5C1F9067F58B82BED76E -53B450BC3C015769AA7114DDA03FA38DBEF4A395796C7DD303CC708B118B4D63 -7A702B99D29BE641BFA37F6FA8BA2EACACFA57A1982974F77DF26A9FC28BD110 -2DFB33ABBE73E70CC60C8467CA62A943187046A0AED988A3AF7651A69DE5FA65 -F2EB7948AC50F8321CA69E02EC5DCDEF33B591CDB6B66B6B1ACC58EF567B92D9 -1A27162F811E0A5D55CD6731CD237C1F912BE6382943C1F4524D606187819BFC -A850FEB374775960D66693F2B403903FE44163FF4A0D45E21898716AAA47B981 -25274AA20F0BFDBCEB529C417FBD16B9F31AE20DEF23166A1E8D32150ECB2728 -EEAC9565BAC22C00CA9D4F47286C7034E96EADF138F320D1C18AA199446A277E -FF8FC90E337B6E04FF4C46434A8ECF1E411E2BB12175CF3997C62E1220CA6B42 -64D03960C7C5CCF873D12B4834B73A32FC8471F14EF941071B971F1BAF36B49F -8CE1310F09D42A217861210066766BE13E7103BD2D8F0486EC592B99F38B9B89 -AA15010CBD1D19BB4E4E2C321FD88C2AC255427AB2B4C77572577D4EBBF493BF -FE24B8739F771185D80120ADDAE236FACE47778E1E04A0359D60068BD20422B0 -F3467AE613FCBED36B4C9D131E854A80B01DEC5C4FE955AB5CED1021DAEDA722 -DD1254F51EBD07AAB22DC0765F57191ED0A75FDE50BB145536AF35C3017C6067 -CFF6410970179923D3B9765F633D991BB8F8BB72566E748D76A2649E21D98590 -EB4070C5777B195B8EA22F9EDC711AAAECAC4C3CDCD19181E63ECE52A9FA3B85 -08D8376FE890668FFCF11FFAB44EFBF2720375B524057D350EBD718D094D919C -F97CFA593D48847FBD6170595943405A019CAB17B75CD4DABA1610F3515CC01B -84222867AFBFD9700AFCA5E57BBDBDCC8567235F3704949CAC1B405E7EC3ADFE -6B3463E0D6B5706557B83172CF604B8B2A58538430CC7DE33A5A6E169D18506F -3FD7F0EEFB083D6300B16150FC27801760DB690FCE4418F0B410ABF1573D3F5E -603D73D40679B0F1B842F708115C547C3B3DF1E846D52AAF8615FD8A7DE426A5 -3CE27D064FE50903140620137DC9651E646A0526BCDE4BB3F1B64483C24B98EA -7361FADE8BDCC23DD19CFCED7EA733FF262A7FD65CDCA423A14B27EB321D34D5 -0F5F90FFCAA3DAC323CBE5BD09BF91E906A5EBBEB55A0190099766F2DB280096 -335E5E5E3F14181FB0699B6C267478D7CB48FB6362FF72A453A124CBBE0FA8ED -E42133899E820915B6E3A8B0EC82E76FDD1D4F4B27044C27538717ED0BE41B9E -89126E513104BDE9A5453B1A73CAD8976D13C67C785C4028860D02CDC2DC0645 -AAE179BE17C49DA8A6268AF82A8A9FB8A4F26D3E4C0B5DC7AEE18D2BC95E7B8C -F13FF31F40AC72047FE48817E2A2F71D77C81469101F19CCB7B86CCBF0364FEF -2CC8A915B20F9A949DEF1A45A1DDFFC88AEADE0FB3D638931A84CAA7FC10AE33 -02E538AA472D951F2B97B21A506D1677C5FCC30BA7B5443FBC642179D253689F -2980471A237F622A14A570F232DD885BD8F66C2449A8A434E8132F8D58A86BEC -48D627687108798FB4C8A84F5CE88721898C687E6DC0ACEB47261F89AD9A3A1F -44B63C73002F6F338BA880CA3DE4900C378542737263264B7C2EC21953744548 -DDFF14BF008F8429A12484304DDA3C4F769221081D1C75F39CF785B11DB4B6FC -BE27B473FFB49160DA29BC5C205D21CD2030BE08E406747673A0DB0720A82363 -950F059413D4994ED0A9975D4AE94D6580B1A42773F07753090A9BEFD093722A -0043130256D4A7A2ABFDEFDDEC878D8098F373E325B16EF7B3773EC72A011B76 -4357BAA1A4B56A8D8C8BE988E6F815FE40CBCD3BABEA9A1590B60D891B613C27 -7825F6058B0497C7C4393467ED8DDB8F88C15087E623AEB6D05568E4838E388C -EBB708FD7386DF5E020B27F5307EF401DA3C4397B8A475B40CBFA4E518628F5E -5A1ADD4E79E14E72DE0D3DC7C1B6EE2785D4221ED22F8A2DBA5628C897A35A5B -54A1767DF59FB0569CB787AD82CBA050B2D51275176EDCABEDFBEDF7DDFF9AB9 -8DFB0582386A7D078845811041D05C82FADD2DE71AA5004FA463B04DBD60CC44 -D0057C4C30E6095D23B6A247BA70CACAF81A4BC0373816188395888887CB6784 -E24B5A65FF3ED9DD681FEB4533B837D4C2DEB1B9AA5DD0A3118F88278A383B94 -422438257AA993C9EEB0F45C12DC1C93B5CD628B2010628422C5A66A1B7F4418 -6F7411CC00A36AB05E3C4A51124677CBD417F3E72ACD5C705F01E89CE0D1E726 -70FB8CEF1879D2152B177B3792CDE557C67C93D220457A098272879E864E020A -3878BBD1620F05303400F0B537D222E742A9371F37B781BB0A720EC93DB5C099 -AE0A2F6E55D3C694EEE143E3133B10E3B4502B8041FAB5CAF6418743A1CA7D7C -AE0A8F29973ED9B4EA82D0544DFA406C011E42865C0836191FE2392EDF93E89D -99D59DE2B4C09074DA7C8661AF0A9E37E27D6F07252B30B2CD24D2636E5256E0 -3E61FEFB743E6E87267C163D43673411F3A14F891DF034AAA2F2D2AB133793F1 -8CCC454976229F2E57874BD92979A4B94110D630E4BB02BACE6249BB738FE96E -24087A965AA5D0684A252F1C732F1C56AB9F5BD0164237A5BE15130187518A21 -FB9457DC12600A4236272499986F57240ACA7268D9990F1375877C70B742AEFF -F20557F43846233F6114F8C174FED6DBC3BF7852FE5628BD5CFA250E463E67C4 -753C56B9A10AC2A4EE4EC9440447F2E7371550BF91511C8F336EF9352BC3427C -FC17B8B8626066B1B5BABDF1D45F33C7BA4D4F0C43F5BB9FA2C36583A7FAB9A1 -EF21DF17575CD5DCBF606E564EC87C63D57B7CFC72460846448D01E007093DD9 -9BF57E18910E472790D29EB88DD1CDBA87910C6C4998308210823F992B29C38F -0C420623347BCDC52751A14B8ECC58F27B6311C31A59F7661A21D1B2B5BC11ED -68C807A086E05786B5E6091DBA26B2C4C2B4531C1A0F9AC0976F9D50A1AFF8AC -DCDAC4568B88EAFECAF7BD1566C4B0B91385CDC9BDF264E28EEA33CEF4EC51F0 -3EB360571E8CFAAABCEDCBE7A7D93E4582176E2868D2281EF5FC7F75CD7A9017 -E592C375B2512D2A3D6CB8973A6300B64738A8E4C1FA9E278A4BFAB2550A2309 -770577D0C5ADAEF4A028FF5D551952B86521144FAC12ECE5E5CFB45A80EF9D62 -731FE38839CBBC64B916BABCEB5A09DDE1135705D6AC4D611B760152CC64B7C4 -ABF78206B1992A27122D238D24BD4AFB8379EBB5B5210B2E932E983B77AE1802 -9C892AE8DF3B36DB44DA461C9030A3565557E6B15F161386A8D0A1D04C572DCE -7C23E8790A297B4D866017346EDCD257B4F0DA96FC30A4F529BC931941479BBB -261E17511C9A779AC39B22F0343153E7D835CC5932091EEAD47CF63D1E730A0E -1157D3D259EA39E202C783941A73CB7C5603A673C03742838CC7BDDE32E1350A -4A86F40FF34961241E890DC311FBE8A36E4744A1646EEE7A207DC316F5E25CC7 -E3CC4F1BBBA3E36D6705F45A4C379EF000D59DA15767720D75611496A9D632CF -5621F0969611234AB48FF342A04C6293D5472E457BF81D6064EDFC0F44A9E5AA -1B772D08F49162E5FFA2BC610C0AF91921B51EEC5D6B7D2576033356F7F33FEA -DDAC2B393312FAFBB7D17E952BB152C38A8384C3FF701CB671347EEA29D4E73B -E71D670FA1BA055DBFB487220F6BEA357AD8ECB3BCC7F77DDC236BAC7CF5FEBA -7628F5EA10233713B3891C6B67AAB0D3C6AA594D80713C1B96927AF89129B69A -6C043FCDA2F352A800802330A8238D638F798F4BBB7C54E9685C3CCEA32751B5 -717703FC2B0D796DBF4766A7083433B6D629F245E0DE0F601FD74158EBB0F134 -B72B5D7129246E2E2FC5673C1CEFDDD822C4806C9910A5326FAFFAF34215F3AD -99C3113E50EBBAEA9853BC56602BB053793DCF12E4B873D3467342E27312BBBC -D02752C3B6A47CF84A297D28BD3FD25870114A55A323551D028669C37FFAD6B3 -99D786057CA02624513B073C9C29744954FD5AF9AFFA26AE9C15959EA884E16E -620A7A138CCD2181945BF7E101D4F06E6F5DF7E9D73BE317B3661B35C1F62214 -E129ADCA71344C781E6E9E1ECC9A064386E7DCC3F768E4F5295F6E9387FFB146 -C10166BF0638FBB7662EE484158957AACFD2E82BA237DF4185924977538BB8E3 -CE992843305EAB5FD94CAA9E0574EBBC8C5AD0C608E021BF091E8B6B04A68ABC -EE8F2DF7CF10638294335F0A60E765DA7085007640C93FBE28D36C25714F79C2 -36E58ED9D7C7C2153D2F3C826332F9CCB5F8B885DA1BB7B4D50216799E96F40C -71C3D18FEBDFA61DF3ED1CE1FA509E8CA9489679253753EC72F75056B312737C -5538EC44A03324D1E1673B30BFBDC3F7F1E39F7E89A1A892F400A067C626CDA3 -4707C44558CF0EDFCDFF49AE1688FDC33C0B57B8121A747468D353DDCA12DBD2 -BC67559A8DDC13ADA201E39F2F9E9EF489DAE46F67A4D7F0FCFE5903A3414CC1 -8AB5B2D964B5B61EF371F898F904D7E0C2D61029AA0AD17A67E47729FADF757A -A480EF93A14679F98A95578342341844D7269E0E0097C5806F57423842E77D7C -A61CD293CFABEDC397979618F5FE2316FAB4176CE3F61A950A54B2F9A3DCABF8 -33947FB1B3E95324A3E647349DE49F4FF49F22E9063BB476E0AC14610EBEF55F -925B1A75F831C3C723DD24FE40D8AFA87D9469FF04CBCC871291BD6A3713B5C6 -D7EA7B5D5DDFA9CA257554746D78B2B36F4516D9CE6FF8CEDBCB31D030195FEE -9BE3D95139B498DFEC44E26CAC2A77B010FFC5A1FC4195BD901BDDA758EDF749 -5D4FEC73A568063D39ACA617DA80F65633D42B0CF1148FB1E7C5CA25B50EA90C -54441DD7FDD559ACDCDEA3B571FFE904FB56A0B771425D74B952B7EC2D068A0D -C12EECD513F6AD5F301F2DD46687EBD7244D719D77AC5D4FC76CDF4716A477FE -6D5266B9B0B13191B2435B550D1A38B17A750B64931EDA6FD26D8F90222CB8CD -BE68C829333DE429EB35BBB9F360B2FFB7780BF956B672D1E16730DC876DA3FA -8DDEB7F18E82E51FC575B1ECD64BD0CB3BA3E76145CAB6C3576FA8BFEF56BCE1 -E24E14FE2CBF26417F9C4CDC4C965D056D51307E9B2FFF45179F188B8D2D0C10 -513CC21A84D27B36FA0A14B70DEC21D427BD874B773C2EAF74CF2DCD04C0BAD8 -DA72D4BEE652348C712A391BEED641D1DB07D07AE62FEFCF89C21B427190FA84 -0269E59BD51BC2774D51CF53B7FAB70546D5F58DFCBD710A56BB6F8DEF87F1B2 -9AA5B8DBCC8E61307B42ED560CB4AA68C9DA56B9A2C2E84A57899339FF1E896D -2E78151F38F22ACC9C6CD2F0BA1DE426E42F6F8B4210AD772E9F6ADADC8D79B5 -EA761976EFE602590AF7A976D1223F68F86C2E36ECAE00825D964237E832DDBE -E4FFA28E876C61749F1C1BEA793295A5DC6E29A729FCAAFD6254E9EB5D292743 -2707953576A180A0253B6EB06C815EA1F9DA7887BB4EC2ACA690F21F1DE1B060 -001D1E80FEAFF9505F1087B35F32201F1E0E891AB42790CABFDD8BA21A80DD9E -4BB15CA6A92C2379BDE2340B54075E1E4277C27FD25331736C1594A0A1F54051 -957FC4AE2E467E386F9BB644FC26D47177AD50F20141469E0771F07407828A98 -CA3F10F1EF3431B65E9A1407E54BE5139ACF2EC930AD3478E54459C5E48E6F9D -C6EEED387822A391C1AA8793577D8CD3BFA9DE45112128A93DE58C49524A76A6 -0D86BBF7261CE424330B4DF642037C4CBD30A2B0A000B4D970CAC33F828A09A1 -605AD7F89B617C770DB19BBBDC5A4A8F52B1CF312D300D0C0575AA93E9F26418 -3C82C196AD529AA52D0EF942C8731984A668A5C89686E24F113CB5638DFA762A -90DBF8A8BDF46B1118591C7A841D8D56BF5744DB63AE3FB3538F815097193B6D -59033FF0418DDEB7C0CFF6D4517A35A7B4633A4350A9F9AA7CD5CA8E8E0AC353 -B16AB3B903579ACBA88AAC575F298B5BE14995A76E3084E578FE5230F45FB1E7 -B7B9D21BED39F5B2C117A6AA21FCC00AC8D1E2C56AB24AA15E97EC484AB788E7 -C640F05DAA0460A0B4E9C8503C20BE5D42029A3A1FB3FB29B0E4B2BBE59505A6 -F808449902CADC5620489BA1ED619B4CE1B83E516231F07472B3905CA8CAD8C9 -3AAE780F0FC1FB4F9771F9E27E3DAE55F75660904057C015CFD3C2C21394AA60 -6F67B304AD1BCF0DED6D671BB89AA2AA50BAAEDD0B1C04773886A04ADAF60C5B -CECC90C741804AB20233ACDC0EA1CEB4D3C6B0DE10AAC05FCCEA939B19B012DE -2420BB17D8A1989B12530C1A0C196207F0A653615CE0BBEA3436562DB70FA750 -5EB5C7449E0E797AD2B4D226FFE75A459867ED16D62808ECCF4F42E558D32039 -18CEBDFE50DCAB0A807C02B8914A482166D3EF5DFD7825A70A163B232BFC6D35 -44419E988103F5233D64583F54206F81D17B5C2C103CCD09552DC1DD3C7B014C -A602DEF221A959CD5BB9ADE1B392D9FECE841BF9393EBA6096E34B0E0F071A56 -3007E9BE2309AA3938CD811C204FCCEB780D718DEE7FC4B54864D6A8EC6E5A6D -CC5973F89180D77D546C98CC3F0B1BFF6CAE192F7BB56CBBD572C60EB3E32CF4 -351D25A91AAB05E506BB34103633F12F96DBD4A48F7860A5A4AEB2F5AF3C26E3 -FDCF7D711DAC9DA853C4680D3438242AA4B4F31CD30730D2BAD60D53EC855904 -52E504154986FB18D70B388BA034D613EEA3139C9D345A9C32645464DEDA4080 -5AEC9C95622FB25BB84AEFA350ED064F9F6D36D065AB5C3623BB8C530F450383 -27693BCDBEA43016499089AE96EFC1674E0C781C3D57035C9EF683EE7AA9B0D9 -129EEA4005CC5013C0125340CEB995974A3C5115A337857D9A64432C8E1DB730 -34A45C5444799FDEB48876A9FE5967E2DC5CEE966FCC7B6D44AA6646A6866705 -B03AAF1680FFD7AC4532DD9236FB93E06707CD473A784F2A0CCA080614532841 -FC6E17A3EC2071ED95630A0BFFA5E193755FBE6F5E47BB01F2D001112DC9BE21 -321BB52EAD97981DA21ED58C7EE9F1222CDDCBACBECA9EE6514F44EE67F9147F -4EE0AB51013B5347406C9E68E1B02ADB349F1683D97B11BF372E40BEB0933E53 -47B85006E4D890D1FDEBB3DF28F979B38F35D2CE40C2CF5150C2A3E89878B423 -9F276BD4DBE2D360BCD56EA90D2D2E4081FB2250041D7F91FED785256EF63DA1 -2A5E309CF063606B4D459BFF752C1FD839ED7B34CA9E35C640C74CAEC1B4E4F5 -A4E248CA558D5DD00A353E7DA3AF7F103937A1929A08501B9EBAE0C5E9370473 -D129C4D85F926E8E9EE2F66F24EA474ADAAD82BB8E7776ECB6B04D46EDCBD2C2 -3FEC310DB22C105A3781ACFDC48F4CD510E78DEC88D45551AB54D3E7A592BABA -2DB6F3D69FA6C76F824FBF91E601E53E9E1789ED7D99E1EA1C2291C2B8BDA2B5 -FC8EF6490DD3689B718A60BEA5DBC7315E90C475DC3A8777F0507D26A89FBF32 -3D65AAB9E6BA8827A40FBE05E8101D678606425930695B7212A53B06B723E99C -E8F4E1C25B6C605996E3325B03F06F8EF607C53BAD9D0457F3FD3839A5A776E0 -8009C33DA9593A898BE25FD4F9410FB0EF1D2451AC04210CFD2350D093EB0E63 -DCCFD3D9B0BD93201E22FA29EF190423156398838045FFA8A0C2D82FBDDC031D -AB5F28D4C4F599240AB650E4E464630776A69E189DB265F5CC821BF1FA583F62 -B0F3C95717D0588E37E6ABD75997E4AA9C207B2A0D72A7F210F90B9FE4ECECA0 -30C4C79401EBE7DAB29B8F8CFE9DFD8E2BEE13F60727427BC341C1C458C87C5E -2BEDCCA1C57859C5E6344E73A8EBF5C69B8696AC909FFBD1827D8627D19C6A65 -6E0B30B4A3798597BBBE6920CDC6FA7641323F9BBD55ED9594D3E7FFB8AC2A33 -103B2AC07CB3F3F13BECF1A1004CD335B66EE50070B73A1995D92D37B70A6D6A -F15C733F684ADD14D0A0FC72C4C85409EE499DE4880D0D43D254FE64BE0E0521 -299ECC1A0006A81FBB29436C1667DF12806067DA65B1065F5D13693EB6E7BFE8 -73C96D74DF79B229A14AEEFCB3BFA49AF4335E39C4F01EAADC45B8CA1985ED4D -204FA17FD2292159486E9E16036BC2DB6DFDEA0513B5EAC2E330230B3E480618 -F10FDD28EF6540BEA5176780DF7F6E1F9266C16D6B3DD4F5913F377DFFAEC6BA -5F46E222AA879FDE24C7EB91DBBFF972AC2E046580E9A08E7743652909CD36EE -C19EC34657B85CD9972F117AACA53A5CE725A4034B7C5E924E3605475A38D237 -DA7D847534A82D4C6FF313300BA22715F3D860A69218B81A428D991B9E4CE68C -E7BC3702AE8460E9E987C34B2B99447153F5A3B258946D6D89F165BADA389A2C -19AC4AE8EC3B6D3DB19A153C9418628784B0451DCA07E395DCC7703016257C84 -B9B982EAB6B28DC56EAFCC747DFF63E58017BF02BDF382C42855D313DB09C185 -115747F9037DA3A1EFCCA66A1273B89D52BB24A71B15D09CB7F064D6B8FF87D5 -2548C8C2F6263B7C1B725DAF2259092618C0626D8FE56BC5503A727A0641EFE3 -52A757AE040862B287369103FCE96987DCA9541E7572169E7685E46CD859EFD3 -ECBA9E2AAD5C0C6DBDC10691C0A33D3F2828EB8750B38A023D10F03545947991 -AE73901A3AF5D159D08FB7B0C14C318B05F606469E014C24373B22D3FB5F613C -54338D3C963D5A4BA0DB432D1C8D825C86478A9D3010CC2F61B0A78CC9421E8E -B3061AF22FB8AD68CFB67DC52256D2903FFD2C2E2625AB396F2AD254C62CD95A -3E1A80C0A683B7D46CCF682C8FF288F48940116EE40DBA2E3F2ECDC5E899613B -587C1CCDEA37B26DD65B20D1C5410B91064EAA71CC11EE1512C308DC0F531D6D -321FD8C67E1B01E2B624459F31F4935F0BA76F0156008EF59B60D1C31539151A -B99E94CF328C6D024D304FD8152DB5BDCAABE4BC885FF9C18D01727D1B07B891 -A61BDBB3AC8F10DE2974A803FEC0CBDBFD92D04A4E14AED1F275B46E485E6B1D -7C905051A643BC92E50FCC4229E08ECCD400032B99D37D34102A25E12F040027 -F6587991C200A76E654665F8B6A76B315C13F5C3A0231FA0EEF44212A07E878C -45C71818EBC120E6503681985B6E2F823767E2840575BD1F0FECDDBDB49B93DC -07952607A2FD0A5B0E70FD2D884DF7EA37D724442F9D012374D35BCF322A8C21 -CFFE14A146B5C64BD584CDC9979F02AEACDC60EBE65EE184621ADFA04D9BBD9B -C2E56BA990CC24FAF5D65EA80578A2ABEBD053780F2B9BCE917A1CCF34C8AC43 -596A571C7832DA1024A8B274A7E8628CBE9488E6B1D42E2368893EC54E7FAD55 -A207A74ADBAA302A10286906503432A3A61BE8C2A28B2B8C5A9BAFDD1DA5D618 -AB8A6567BD140318C85662F46A19169F13E07DCADE1182575D212FF6576F017B -F8C0945BC7CC00842B2D74985789C360C3AB4D76DBF4391FA9C1F47891F67F19 -2CE34FFB9ED7B6EE772B510D3390A1FED7A893865BAF4132F91A676FE24680C2 -1505FCED53401B381F3D1F0A7D475CEF103E43FBF7FC1BB18DD57C99B756FDEC -7E31B3DDC977CD34D7B577051BFDF956AA6F7C61575503474670BA367115D60B -87CD2CA6233E932EFC1F3E46E408394008815BF09908A5A62B5B314B8DCCB3A7 -9703351F62FF48B58D64792337FCDE59F66B21E948D19BE95392C79EECDD0647 -173DA0A65F174D9359A0E09FFAA5CD2A40D397DCEEF56C5F94C0EB856C40A70A -E46E0FC2364BED779584F269C4301CA425F05CBF99EC441DB67E15F6F66339E5 -D58D35085D0D659510EF769570C239A67562E92362CF1AEADED5C70C686CD434 -2D6D5087C5254AE1BAC0F58BED650E22E5EC6115B1F05185C01287E8F696F05F -34CEBF284A65342BE596CFE2C41DD8691C0CD346FEC556C2A752335E159876B0 -8E45B31F439CA3E244274F82E945EFD6F2D814E5237C51196D6B143228FCA788 -AA63CBD035E5989543F1EDB2CBD17B09283DE5380630A194F8189ECF1379EB96 -3977E67F934BF98508D20CC63AE03772C9783D7BCC4997CB8B237F7B9D7479AC -D7DA60947549215209F86833430E1977C1396CD7F60569847349FA3A89ED12AE -51D230288DC4D775332BBECD96FC4C63CDFC5C580F45BACEF0517DF7EA5E52C5 -63024775DE8D4EFF10EFE88DA538770EF6A3B11CFFC872CA021275F3311F7B08 -C0991FBCD679ECDEC5F89C1D6FFC4D328A0632CA07808DA38967E2AB1E83AE19 -990360D6E53DEC1D1B15C069C93B58E77785BD24931EC5099E97E151E663CCBB -618CB4FBB0C51183C367F44E7C9C6760E054ED47DA817941F84564C8764240D3 -6C3060868793279335D044233223157FDC3ED0C07017628F4E2FACFEFC508C98 -B8BE1F55FB67597E7742EE0135635401C0BBC1153DC40FA79A94115DAA111365 -05DED7204200D3D1324AE3C645BDA3B9D710CC10E9080C619FD3D06FE90FE2CD -15C6512FCF776DEA7DF9157728AC1FEC5CD467762B7FA1CFCA54102EB8E4AB1F -7476010D348697D06001DC098A7326E85B6AB1B07AC7AA178178E306D2A87DA9 -85FC9AB8117FD688F47BD22209B3A1D0C93083093F236C8E1B02ED15D83C33DE -11A1FB6FE719BC830824BC3328A7E49F5A873DAD276C56BD1D1AF38CAFEA899A -389C8A9DB9077118A0424DC44E7DE3DD7655FB8F6992451BDD52BE843AA1E1B8 -2BF771CB438A29F8E4DBFFC4E19C98B084E0E03A2ECFCF20A2AA0779D388A02F -72FFCA20A11F708D4D7178CB9A0EAC0D1704E183F632076BB91FB29089F2C415 -87225E605C21E978727923B2C197E8078B95397BD9C65197ABB48926A2405C10 -958A0B8BED8642D5C03C13208ECE983CCF85BF8B3E9B4245C591962E858C7E69 -6582EE85C87100C78F71B007C314CB802CFE6B7D0EB9647972E9087A58BC7F78 -B8286D4F4FEA114CD39446F7B78D3C62F09DB1788A6C222622145DB84C966ACD -9CF1CFEB0970CBA95C434F3BADD9C94FB920B61758EF7868DB006CB9573FFB63 -090FE21FB752779109B0883B8FB18E0AE30B06C311CD740349919AFF8F7CE341 -FE8AA12A4AD3C6E4C5193965012CD3B2AF97F61407D971FF1CBC88FEFB0798C5 -0AC8867C5943F906463B37AC97CC5EE1BAE2A2D5140373E47550EC7C6F8FCE28 -AA925D32635187588D606F97152A350F4F947AF926111ED0156516B8993DF0E5 -8924CF692123ABA594B0456E7B9BA4B02333D93C41A38717E37E7A712A3F890A -4A5A2D8B1533A30B3B71810A219D2208CC930C220809BCB5F36DB30A6BCCAA38 -56DE7D23ED9C96E2A8C72953B16E260D6E09EAB74156950B04C3257D9AFFE231 -0B62951CBCB49A09030B2D78A891FB32B699742D2C50DC7458946313AE2AC0D7 -EB73B761E55B2A04589FB00339405FC3159032AFEF73AF70809B709AB6B0E4CB -28623E96601DABB5F1B3AAF774D33CDC08718C0105E23858530FB96FA7C31904 -3CBEE89CDB5C2A793A0069AE0C871193A41F572B66B602B58C0296436D068802 -EA8B67BE1023512A35978D3CAAC054AD7AA7F0DA016F41637F193FC89B795FE5 -E41481E11F63E857A1C6B63D07219791842DD5B6312347D20258392D09D95A55 -3EAD367242BDBD530E3E3E2A7120702CFC9963125FBC187A232A03062ED3F96F -04B54D0F8A3F5A546DE9E7681A9B7BD3E3C8F705922DDD6CB26F695EC527CCED -DDE297B16CC18582D68002F76F0D33396783F8942837CA994BA252513C41F2BC -412B6622652B3059E9255462EE4A1CBCF81140FF1B52EB35F908E6546740F993 -E3C5E73EF0D9FFBAEF5C87F8229FC0CC6B20D23BD9AB242CA2DB98EF7728CFCE -D04763F6ADD6E73D22A432C21A4F0C7D3F1180CF70C58FA9A058588357C0A5A8 -EC78207946D27D9A92FA75F14B9E4CF297D88906C99FEAA72FB1712B096A26E0 -8516B7EE29A7FB4E371ABC9204087C14535DB58EF419C5F6FB17C19DC140F091 -D622144EB55301F2D6DA0D0DEA492C4A262DD4F154683446B5495F368A1D64FC -A002B8876566C9877B297CE3BC277846CFF0D172B8639F44DECC452B853D4D6A -5D542D09467C72F1828D28F4CDBB9F88F49B62291E893D0A34C4210EEE8C496F -373B478DEEC3CDD54E79437076FAF11AFDCA710FAD6E764A9A509876BF9B02E1 -06A72423B570EB0FEF20F16E6E00A9A0A42D360C6FDB1347610D835EFECA024F -1AC9202696B454E17857A7A7AB3A256187E056ADD478CB53EB4E59CAF829432C -75A2F22D94F64705B88AD444343D4F57C131E8E63D1C596C4862901488B32B2F -8DFE99DC26808BAE9407213AAC51F539525D37717D2A7B5010E4EC5530B5DEA2 -5FD1BDCB4801566841050E88FA011D4697D72578B7996406B8CE183F036D9335 -88DEACE05D25498E2CD79CF1A747487C3DDC42130FFD11286CF1875B4333CCFA -8442436B13CB80D5A89F3303870870E9548CB2A9E570659F0B73CCDB5F1009E9 -118CF5B44247762DEDAA6FBE729A3214B5766147988437E72B0E8B32CA1DF1DA -AC8D77B8F8BACE1D8500B6D58BC6A8288C126461AAB0EBE1E2EE7622FADB4D3E -F160AED1B52BCA0A704BECDED7CA2012D6FCB2E98CEE74A2D7C467785D5210C6 -05575C75DB41191ED6B2BACF1EB0F6A17D1CCDE10EFB0D1623C49F3A52C44A8C -9EB2AB272EE869841F39E1E72D750D1AD5CE2327A098F9D13C897BDF0EBDCEB8 -F15444E8AA1209EBBDF904850DE4571DDB125D34F143755CB048F5C5AF3B3ABE -EF05F5034BF348296F09738C06FDC144B7713132C5757D9A8DE365EB21C9AB5C -424B4930AFFD7EA03928BC200ACA870D65A6A87A9F6A885C1188387F3BD8BCF9 -AEEDDDFE6254D6AD640A25BF742A745F33F4722C5EAFCD3E67CD098491971121 -02DC643FF4DB71A9458919C8C8A266FE20D3637F0188D2ED49481CF0C0EB0BDD -F7460E837FAE3289CDF78B7CAA67F52B98E04E5ED744CA9A8D72BCA22B78F19F -14EF24C72B7D483D2F03815AAD8236E06FF5D1C4908F8EC89300E21D2336E022 -E7C02FA6266255229CA7AD057A86AE5CEE956743CCF3763B95251D4F10013790 -BBDB6F6EE8114613DA0E265DF13B74ABA350F5BCBBE53EFCC074F6F19611D88E -9F276F52BB62CA550F62B16A695C932E3515B942D2686ED2215CF411285AD334 -A63CF8D4DC2CF5A824C80DBCF7708808415CA8803707FBCE59B59523CB6AE8F9 -08E3D11996D3D7808D3AE1302149BE86E3F70946930A5EF776A234FD37D5584A -495912798C385486722D32A6D01341AA02787B42D289F23DCCEDF67F38E5CE75 -1D768A05209E55AC5AF03CA58720EB0B8F3266AE349BE0886AFC8115AEB45FB9 -F8547736A1E068674FAA085A41178D3C2A5030A622C75629F6E224BCA766E086 -114EE50337CC45D5F8F39D8F782BF4341DBC17811ABBDB6FFE8D8B8EC0813436 -A0D092C1AA0C92F0092D1B4A6D7FBBDE61D570D5B74480344C9666FC01CC07E0 -8C9202E88EF265ABDCAD12045ADE417D3C29D837A4DD066FE141697611098E81 -8100EF53433477802DF070E88B76A3BED85ABF5B93058011C8B16CAA0387A1A5 -730FFCBC09DE20A017C911BFF4A5B4DADDEDEC2365FD178D3A288194FE5AD32C -A9D6AFBEEBB05A365462F9645E03F37ADC4B46C80A2305C3D959D842C7DF5CAA -F65A4A8FE43F42B342C3B3D97FBCB31C7FC441B6E8E01DA716EB38C736B3E968 -D0EED472103E33F1624207C63E02C30032D9BD4620224073CE14F2F5F7F3ADF5 -7E835B168AB8C24DDB7C66523DE038CE91EAA70B60FCBB45979440A641F3B9CE -C032F560E902653714B803245C0B8BC46A254AA867DA7083EB2273DE81FA0F0C -13AB83BCCAE9ABC8A33475464CAB21974B4F6B9FB439DF8C1683E91C70F7A22A -D8ECE10D54D664A2684E8753448F49342505C15328708BAF94A2089CF44FC0D8 -0FE83E1860E95BD2CC330047CA486A4C1DBA61548617B0711CE9F2FFC986E9DD -69621D48462A8EF21A5C730A9AFAF9FC340D06DE2E1AD10BFC30FEF90604D72E -C151649F765A1A65B09405EB10149B2F9C3B6CB8C2498A7FD69C371850A28E15 -D001888E8821DD7A3845F2C70EFBBB08300D7CBCB976831BC2145CB8C856207B -1ECA9D27614F6B1534AD17EEFD6DF88411826A2ADC20A9E060E79DD9B3FC9425 -A19CF213F2B89D6B71409C781DAC8DBA00314319417652099BD7F637D65A9CFE -D3ED843628C740B0C7059338B2940EF373E851F722C2B475BFC1C18699148E2C -E0FDC3C012829FA69B8F42C08F36767154AFA79131D4BD6E68AEF4221B83A925 -D384E5CC415DFAB15458B1E867A4D2BDB558C21C8461677EE36503FCC9C4495E -EEAFBD937BA690826FFBB0D5C6F855BE42C907DF11C8AC7AAAAA98031533316D -D6739FB3887E2460F93991A0A7DAC9F41396638680899DB6D934E5655F9F4C27 -492AE20B322D912174F1F0BFCC88C24BC9BFDC1777FAC99238B2EB55A115C886 -CB30CB984680E6C9DC554954F5FB25362838A3F20CD715EB23E44077AFF2D5F3 -EE0407E067C202133BDF89600E40B5B50CC2D5AAB17464FA917D30FA36FAEE98 -5AE929D6624016536A3ABEE523CF597AE6DD93F51F67CF0F70356089B8398D21 -643DC8C267263301219D43345E0F60D08F9C85F542CADEFBB77A8C82CBF9BDFE -094BB5B53A91CE560D6DFF007A94A2329D072C415344A6DCAC2C3246A0A9B0B0 -AED75AB44BA60A30E06B375690DB237B340D358392F0D36CE3802638C638ED07 -334102999B4DE2F010BBFED3E2D07124E37F44C7D2BB1CDF608D76B30CB4A038 -5C483979E2A89FFDFED4ED4C56C301137205D3257005BE8A59A2A18E0FD97413 -5F9F91940128A6D0857510F3DD5EBC028F38F9951EC6159B2E7965782C284570 -8BFFFA180ADB09FEC193B7DB8E447DC2DFB0EDDD9FB0430D9FBE5141F714E2DC -AC2E2689F2A24C8FAFFB6ABB59F4E8874C588D2BAEBDB1F6DE0781C66C053B7B -BFEF8E986199F33D52FE9448B67BA40B7C970CBC92B8C06030A9A15C63233C19 -5B444218C571B9BCC07EDD39417F43B458F53B5EC2DAEC99BC9D4F83C4FCA1C6 -B86EEB2B0D9698C9DB52F50F06CB27B149D3CCDD21174B17955A68D9F8195F46 -46EBDEF81EFCC5A9259072DE9F0082CB8191D8F536A729D544C7683B7056EE10 -8FB8FC70052D988D75ED34A7FE10C4FEEB105A0EF3C2B96C20A72A77A1BF5DBD -DCEADDF4D308744F7A7397ABF6292CB1516EDF945D7CB90147E5213FED1E0B0A -5261A049778983C13D1C6A916A61773874024FC2CA69CB563708A77DAC475396 -31ADAD54ABFCFBB918C9CACD6A281139311947DAFAC6CFD0D4CABC9954EC3176 -CE6D4FF9E182039BEC3E19D08C6B70D4E93193E4CD6E01B95D9A00E693E8462D -4F49F92307515B0C76AC4FC4D864BE0A47FBAC55FBCDC8C7F299955B7D0A7BF0 -768B24879D38CFE5ADB9BF450E2A5F6A4992F792FAE4669D81778EBCA2DDEAAD -5D6FF3FED569633C82E64BDB2F49AE6C4F78E88DF6FB64856F81184DEB825149 -1D1752D36B6DE94BAE058D301A6AEF8D6447B690AA740A18F069AE107A6CF257 -0A9F8543E94DD9718EF1FD7ACEEF0706A7D5672C60261C90BCA5A5F88F111054 -1724ADC2E19E1114FFADCE989F02C2473194A361C4A1C190D82EEF2B4261E7A2 -B794A03F65130DB01BE22AC9F007DE1CF647330A5F3064EB1F4BF688B6A7C64E -801824FADBD122B593B281881C014CD1896E76CCFAEF10B2D9FAC5104A86B93B -261EA4B7A9FC1A46BB1E58D1BE20C07B5487282F2F6DCE16A27A5BCD82777DD4 -B96FFC1A83E4E0AFA129514FBF8270153A755F289AE491B9106E9F388D9C8188 -F8C4AB953C6DA15B352C9DE6F0909AFB893021980AA28FF3B9B20C3858FE2B75 -67D8986326BD73917DDB4BA8A38EC38515582A0930688E8E0608E28D504BDE86 -1AF67BC7F5D148AAC191E517E9FF35E03D160B089CC1D547E84FDC8D5FA17CE8 -5490870B089D4EA945AA47FC2B22ECE37CBBE766C0B38746601588CB91E14178 -9C6FDBD71BEDF78711AEEDE67015D056543AA7A7AA491A4FB7F3CDA7400D4F02 -21B8D1822FB22AD9CDEC77D790F693712507FAFCF7C7B688D61D791C5AEF938E -67BB2263889F70775DFE31DEA89362B2A354A66341EA25CA2B7D0B9751B063C1 -43311686A0262E6516BA3073B97B551F62B171D92A093BEEAD77F518AA47D27E -EA28F94A52B4F062EAF22A3BB55231C02ACA8F4D24575D1B20871DADAA50A45D -9DBBE67E40A4E7C73707AA92542D259D86CC2812C03D45F55F1F106389207307 -E6F819F6E72D4A3D7C7C35D501B8B4DD87B3C5245C239D50515A9DB6E6F63554 -3D539FD90D037719E641B091F043FF90DB4BE267967368ED11C7C5A978955AF2 -7E3D3FEB5DB2F73C9F17E77B29E2518C042231C0A6149CAFB0A772F2A2DD22D6 -0950A033E805DBD139D32729595752AD697749DD3AAC4E80B8EF7192A02C7E60 -C222C4BF0B4846AC80D8A503A13FE09D1E8680E701308148D04684D72F5D3924 -80D0DD922ADDC93E6C9A92746DF9F342AF9584492AEA82A3EC637875420B7784 -14B139E1540C94B5FA115AA2A414021CD04598898FF8B8634AF360B9223E968E -AEF3F4522034DF40A8D445DA9BC639EC4A33315DB7AD426B1ADB9F75BCA977CD -3FD7E509C26F319B5C4A33C82FE0C6DF3BDD7DF26A21F3B39BEFDE002A1FCFB0 -817CFCEE79B333044FCC04B0B4A9A95C35600BD6265DB61B5F6B2A679A7AA0B9 -FB0D6E5DACA9307FF3B847DFB6EB2AFE9674FF68D5528C7F5E5FC724F704C0A9 -F061FA3B46A4C382842554BA19DC3A9D452AF54B47E5C3B24D62FCD2F195AAD3 -504443027AD89DC28CC0751F1FD6BC6F730CCDCB1FCCD3A8F9984B7887A7FA1D -017F337337FD07DB4DF862A8FE056259BFC7B3A8451BD1A55DFE8B72FC716CAD -82748E02BDEDB0FD7965C2781CE769F26480D82DE5A496FD5DC8C262F2C9EA41 -691B450115B1540A0032E7CD4A1F77C1B2F9F47D60F30E4A9EC3F9B56E6038CD -00660BB8A136DA68D522DA12EC4CA4487D3563E42A0652451F406BDDD67A6733 -7516148E0DD09086F08C1D40E7EF70D176E974431DA1F2ECC17CB312C85170F8 -5AE1A8D6C0EE3C6835D853F64511A6F0B66F6CDD08DFF911A9363D16F4BAD56E -0BF03DEF1B878D1939AC19A126C5CA54FD0FD875540DFE10B2CF97BD0A11A681 -7961AFD1FB1962BD7CF163B3B9CC8FB4701D40DD739AE4280D1BFFF8922E9C6D -A4A4EBE6503CBDFEAA86A0DD12A3B524D8FEA8827E715DC3B7CA378466BCE60B -7FFA482662E85514643C5ABD7210F836F591662F331E51C7943165F8609E8A73 -E49AC4769EAED66D075AE1BB0D259FA08122D8BCFCABA7F160 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -%%BeginFont: CMTT10 -%!PS-AdobeFont-1.0: CMTT10 003.002 -%%Title: CMTT10 -%Version: 003.002 -%%CreationDate: Mon Jul 13 16:17:00 2009 -%%Creator: David M. Jones -%Copyright: Copyright (c) 1997, 2009 American Mathematical Society -%Copyright: (), with Reserved Font Name CMTT10. -% This Font Software is licensed under the SIL Open Font License, Version 1.1. -% This license is in the accompanying file OFL.txt, and is also -% available with a FAQ at: http://scripts.sil.org/OFL. -%%EndComments -FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup -/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse -{save true}{false}ifelse}{false}ifelse -11 dict begin -/FontType 1 def -/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def -/FontName /CMTT10 def -/FontBBox {-4 -233 537 696 }readonly def -/UniqueID 5000832 def -/PaintType 0 def -/FontInfo 9 dict dup begin -/version (003.002) readonly def -/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def -/FullName (CMTT10) readonly def -/FamilyName (Computer Modern) readonly def -/Weight (Medium) readonly def -/ItalicAngle 0 def -/isFixedPitch true def -/UnderlinePosition -100 def -/UnderlineThickness 50 def -end readonly def -/Encoding 256 array -0 1 255 {1 index exch /.notdef put} for -dup 33 /exclam put -dup 34 /quotedbl put -dup 35 /numbersign put -dup 36 /dollar put -dup 37 /percent put -dup 38 /ampersand put -dup 39 /quoteright put -dup 40 /parenleft put -dup 41 /parenright put -dup 42 /asterisk put -dup 43 /plus put -dup 44 /comma put -dup 45 /hyphen put -dup 46 /period put -dup 47 /slash put -dup 48 /zero put -dup 49 /one put -dup 50 /two put -dup 51 /three put -dup 52 /four put -dup 53 /five put -dup 54 /six put -dup 55 /seven put -dup 56 /eight put -dup 57 /nine put -dup 58 /colon put -dup 59 /semicolon put -dup 60 /less put -dup 61 /equal put -dup 62 /greater put -dup 63 /question put -dup 64 /at put -dup 65 /A put -dup 66 /B put -dup 67 /C put -dup 68 /D put -dup 69 /E put -dup 70 /F put -dup 71 /G put -dup 72 /H put -dup 73 /I put -dup 75 /K put -dup 76 /L put -dup 77 /M put -dup 78 /N put -dup 79 /O put -dup 80 /P put -dup 81 /Q put -dup 82 /R put -dup 83 /S put -dup 84 /T put -dup 85 /U put -dup 86 /V put -dup 87 /W put -dup 88 /X put -dup 89 /Y put -dup 90 /Z put -dup 91 /bracketleft put -dup 92 /backslash put -dup 93 /bracketright put -dup 94 /asciicircum put -dup 95 /underscore put -dup 96 /quoteleft put -dup 97 /a put -dup 98 /b put -dup 99 /c put -dup 100 /d put -dup 101 /e put -dup 102 /f put -dup 103 /g put -dup 104 /h put -dup 105 /i put -dup 106 /j put -dup 107 /k put -dup 108 /l put -dup 109 /m put -dup 110 /n put -dup 111 /o put -dup 112 /p put -dup 113 /q put -dup 114 /r put -dup 115 /s put -dup 116 /t put -dup 117 /u put -dup 118 /v put -dup 119 /w put -dup 120 /x put -dup 121 /y put -dup 122 /z put -dup 123 /braceleft put -dup 124 /bar put -dup 125 /braceright put -dup 126 /asciitilde put -readonly def -currentdict end -currentfile eexec -D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA -0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 -51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 -7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 -E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 -0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 -C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 -7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 -6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 -14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 -0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 -3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 -BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F -D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 -FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB -556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F -8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E -F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB -B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 -125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 -A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 -4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC -56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 -E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F -15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 -2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 -05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 -6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD -04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 -C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 -70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA -4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A -A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 -62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 -240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D -69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 -ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 -121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 -0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB -D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A -0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 -D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C -550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 -CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A -9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 -FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F -7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 -E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 -50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A -2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 -9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 -44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE -49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 -385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 -8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 -6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C -EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 -E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB -C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE -484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 -4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 -0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C -6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F -5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C -1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 -909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 -BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 -CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 -2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 -CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 -EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 -0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 -9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A -D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 -21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 -7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F -52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A -FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD -AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 -F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 -067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E -E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 -C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 -5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B -0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD -CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC -2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD -E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 -56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 -F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F -E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F -0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D -67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 -EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 -CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 -9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 -9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 -C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 -327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 -F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC -60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD -A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 -B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 -0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F -1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 -DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D -55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C -7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E -75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 -E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 -8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E -F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB -8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F -D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 -54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 -49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 -CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 -34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 -1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA -6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A -DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 -E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD -4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD -2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC -ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 -3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE -97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C -FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 -A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF -639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 -D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 -E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 -1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E -A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 -F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 -5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 -4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 -664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 -4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 -35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 -1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 -01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A -5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 -2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 -DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C -BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 -39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 -C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 -99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 -7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE -D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 -6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 -5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 -6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B -F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 -E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 -39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 -7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 -ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 -6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 -2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 -1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 -06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE -5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A -288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E -7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F -759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF -E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E -03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A -6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 -314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 -74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D -906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 -673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E -A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 -931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B -CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 -E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 -4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 -2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE -F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B -E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE -E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE -251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 -7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6 -46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C -E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33 -DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813 -F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46 -507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025 -46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49 -2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C -C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23 -CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176 -57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6 -788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B -A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C -C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505 -27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA -1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7 -4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46 -F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F -2FD466826D4E666E3A835B98A1D4AE5D17053A6A648E26E77BD08F9A3E02956A -AE82C4929E9666F539079846527D0E326FE7CBBF86E3722BA3E53F8A5121080B -ACF8D3C67A2A1DF624B9DB92105D3C833F5A6ECEC108E026E1D3D968967A1447 -15CEFDD09123D56606134BC3449404ADAB1330C9238DE48F3CDFBC91EB86D7B3 -8B85B5BA97376A0673E434DBFF19798EA90BFBD94493E2D21976F8106FC0C276 -C81C9B9F7D4A68120DDA56FC6EC65FFA40DB78A60A05EC270A106DEEBD2CB92B -F0622BD2B1D43771DF39AAD3ECB655F317AB483F7290C148690903AAA636583C -99DE3DBA99EFE20773D3D8DDD816A28D7BD8881DE570BAF5C7A30679179E1214 -FCFED81605FE56AEA21C1894167F93D648B474352A65C0756F812F97AB435ADD -22C031A21714A626DE35308AC51CD676DB1748DD2773532294FA77CFB2AAFD32 -A72BB7A045F12B4934A768F89217233DBBD69B900B28492A26713CA5D61A9042 -A982CB071F1F875718FAC168E4E275860DB6369B8114E1BDD4801110B62C3E3E -CF140554C826967A99F4E9726526E87D57BF845CE38E33893E5F9788769B6A4B -A4577C38C8D45AF2EDC9F4FA7DD9979AB8E14FF5D8956233AB4C02982BE8E561 -C63B7BC314793F634DB6F086E1A60D9FC3B69D3A7C20A99FBF3CB028CDBCEB60 -E803C8DC3C5F0CCAC030905E72BBAC052520CB0E40E23B46B2150DE67F61E4B1 -8C4D55904B7F90DDE4A4A78B11AE1009DE46DA396791B1C0EA63FB6897FDFA0F -42474042E7E9B06A703A7C6E672AC6705506F3C0B6861BC85CEBB9DC9BCFDE0D -43F5248CD7CAD4B89835BACABBCE6C791BC35FE7211E775C009844FC75CBF6CA -DA6A6B7B488270BFAFFA3E9950914CB0F88C8AB7CDEFD2FDE11ADA7073037EF3 -1A5CEEE37090F3A56D06FBC70597907A26498593783878C02722ECFD5D65903C -7D421CAFA78924DD27756853568535B02533C3393183D6E30DA6ED4BD6582E09 -A5A4B4404EC452E91CB44515AC6124EBADAAE8A98D8A95E7D14DA39951EBC461 -D426490071462F246794023DE1BDC04AB0F1834D50F748C3C60A07E1FB8EF400 -78DBAB90B59500BD1232A872ED51928329CC8F06E83164FBB2D0B24222223EE5 -992241E8E00D5DCCD6DB9A8E2325ADBE12FC8512AC127BBEABDA739672C1644B -554850CD75724E6779A7E76424CAF89E9455860E0AE2679231F4A535C0ED4336 -313717D6F7A4A4DA833847A1BCFC7BF99234FA645F2B85C9A9AAF7108931E3CB -077A9C571E57B0D7EFD92B56C3AA4FCEC0BCAA96005E649AE8012366BE6E62CD -9E742F8F45AE4C96BCD73AD80AFB6F061D629ABEAEC3018CFF45E41F46751953 -44E490B1355DC49C1E10BF343307263584091D122ABB1E3892E532B6DBAA105F -CD48375C112331EC5DB49E4D4CE2D126C9274B21E678E5E3EAAD4EA0CAAA29A7 -86FD8819217B195EC6E40AF23ABCD71156656DAD38C931C8730715A2773DC44C -4DEF14D92C2A054739F27D7EF349A0EB76D952BD9BA169B4F85C09D80984D232 -2CB4A3812BDE539DC79E2EDC7C221739D16B10246A5F57151C210878556D4176 -31EFF3AB6C4D78C4F0DF81692B3C9BDE4F85242BF0E84BACBFA39688BB222A81 -E85E9CB332868ED5B64E140C66E242B97A90C13B6DFBC3D285A49BA9D4BA1A47 -64D83577FFB50BF974D953F42A249ADF9AC228CC4D8E82213FD463BC757AFF26 -DF4D1678FBCD55AFD5FB3014C0380B2F8CA9D6400DF2AA041580A6FA5694ADBA -674286F00E531693DB28F7C996D5A66F80AAAF53001EDFBC065C72FA5BE3F114 -1FA3354376AEF7374AE1D0A8E9B06C58FD029922164DC9FA09343FB6652232E2 -2EE34C662F0092BE479D739ACE775C6F589775DD768B736F7391B9AEBDE7F760 -727702E145CF749DC457B2E98A36C52416107B1E59084B5F777B61511B8D17AC -88386A7933CAF852CA23FE179B67DF8DCF15800755605847ECC0FD77873727FC -1AF2BA8BC75D30E26C40913771E528724FD7C5DE284A8B58AE55A5C48AF26AC8 -02E155B8FCD6755D8F7F5A6F1AE66E4D24A13567B6463B18E65972BD75ABF732 -FB41F87A62FECE9A50C697BCEA1E3B3DF1E3DC961DCA598220CC746326F85F83 -72E803A4E69106EC5BCA01139F92171DBF9964BBEC8D3370039623CA1F927CBF -FE7DA71B04B4321EB4D3FCB27F8404994CC7DE5F26AB8FC019A203D6DF2F449D -85A4F103F7604986A1AC1F7D05D239E728FD6AD1DB5024B0A0542130D2B0E7EA -4432F910F9FD75568F5732EAC95F7A87CEBC359949C26595741533E952327791 -87E42DF84E1064E1BDD3F5A6455087B8E9C783AB9ABBCAF032E9FA32C27ED7E6 -CA7E3D1D76CD1905166090BD81A85485B9B4E976DB2E19A8E62EFB795FD6298C -9ADA57D5BDA2FEBB227F0EFEC59E4B51E06B8358006F9D79C1EFE92510D6046B -6AFEEDC793137DE622A8B3F5C9E3B21F29A98A589D9CEE75E348FD4D206415CE -508AB95A7496236AF1F6F5ED6B3ADFBAF1E35B51484F9B1E0C11C5AEAB9336F5 -A8861ACE1EC74C4A145A64E4FC8F6BEB3A16B021AFF4AEDA59B06326A8D7FCB3 -3B75F9729BFB7EEEDA8A1774728C80AED40BC35D42045E5CEEBBBEFAD2566CB1 -AD69A9A972826DF0F2303BB232367E611C115E8955DC97779B1AF269B84574C0 -9D816C88BAE3AACA6428CFC648FCF0869AD9236591E3B8FA326BD2EDE7F97286 -511C75F4EE4F7B4DA33BA2CE7F778D92AE7C1B4844CAB3ED8FCA285454D78469 -1639D24729E8002E4507A114407DF51543CF7DFFDB7E05ADB2D36E139F2DBACF -D90AF274AFB3E5AB5B38918A28EDFCF6EACA78248BEFDC2FAC0E041AD35B130F -8A91E20251CE976680FCE3F8B65B33118EF7C138CA1260D3CA855C94FCC02CC2 -B29C94A3FFD38056ACE512DE680DA29D97BCFC35FB2A85057E484FC9F72C9A7D -08AFAFCA705335C6E9AEDAFA97D884E0E463E79D8AB45DDF86C56EC922283C4B -777EAABC0D57BEE30D4D47FFA16FEAE2FA972E36516480E1FCAFFA5CE692B7E8 -8F887C5AE573B96643F10BC62FAFA4BC6CD04F5353C0D40CBCEFBBA4DE7B8960 -352E7F6497C9C4489779028934084522336B5E5DF6FF84A78158ED5035FFFC9F -F199AFD543D5D81C0155F3EE0E7F6FAF7898F7F26941D417F7AB37703FE67D37 -C263078FDC85C5430CF379E657FF9ADA0C00DBD605386F5494459C63D4AC057B -2E061B06E17B54AEF38A9EB401FD4C76C6755F2AB651473DA2F19E28C89229E3 -FD385D8559EFFEEE5D0CEF127A8A6CF9017459466E0FAC341DE1994C03A0CA5A -799CCD03DD2B41A05F7B36493638AAF8D7CD380E03726B0A18B02A46A0BCA027 -9BF16ED75AE0494C36161ED2C22DD7036FBBA2E319106B9A56FECC732B87E2F2 -596167125221D42DE9D4435DAD321F878FDA68B9E72DBC2E31178621327BAC50 -72148C123D4C8568DE822169839906B9F0ACAF3B4DCEB9352C8A9E246A9A5EA7 -31E04981D0A53F44B6905704CFFB9F0463518C02538DEF2DBDABE936D1213FBB -FCD28F833C5872057CAA92536B8E8EBA129745E2E2B5A9F07086A1212D466785 -EE640432A0E47C91CCFF3FED5669C8ABC2B43551AD04E7A2FEE2F3C16511F7D4 -048A8207351E83AD32A72360A2DB1AA8F78C5D2630D770F5E13D5C49BE166475 -79483B2F7FEBC1D73B04E0E5D9B8243DBEF7E5D201D9F644B150A230B5CF9B90 -CA34BB8474BCF408E37757B8CE5B33FE7400A68C70F542C7E2A22B8C0AB1EF9F -2BBA7A646A4C872C43C0A748F078AA98A13E882085B460050CB3F5B09B62EC01 -AB87AF8DFCA6823ED6CF8426EC115C5E4DA335FE416E1D37311B7FD56793CCA0 -BF90B579B0FD4E4E1D0A26FB0C1D490D99CF4994693630FA343960E15AFFC596 -49BB7297BFB82FD56BBCB36DC1597F94A157AEDFC53419BA867CC02C26464BC0 -2875127C688DA6902567716A908153DB4CBF710CDBCE50AB98E0CCF1DF5CC571 -00027F6582CF6AB4E584436471D3C8DA2D780E5B02A9B1717364899D51EC679D -CF5F4A4981EDC24F710E892772E4F891AD02B7B98A113FB1AD2B5A51046693A4 -19D03A75A3140C19791C85A0DDD173BB3618E9498CDDC8696CCA6EF81729AD1E -EFE4F3D6242E1766A3079371D1D1833841F46F04F2F8029D8C1943F6986A95E4 -9E77806F221CECAFB3EAE0F979DADC5D2E4715BFB5C64245CBD2300E59030B99 -0885F08417E1A0C57C3746230F9EF4E968C0F41F67706BDA2E983012BF317612 -38E9C0178F027EDA0E679F306AF71F0D8985C712C4B4BBBFC57A86AE052CC2FE -5C1BDFD948801509ADFD4FF9FA7A25E30D6CCC7C7E418EEAB34C4ECC6AC8FADA -637B5CC70136EA5A57B727EB11075755A7840215CE2B9939BBB6C3A7E22DE42E -B3725C1AD0BEE0A54C0B57CB93E6A20E319E2FE4515D80D09972E0A742D20DE0 -55117C1B9F3C181456406FCA70A7E3B757A813F7CF9E3562EB8CAE1CFB65DAA2 -B384C17AE103C20851906846AA4AA5EEE5EE989F292D42B11EB4C4FC057EE4BB -B09A4D81E8AF0CE1C851B2E328E977207A6989F13F7FF039A4E295507CF0A53F -10A345A516EDB7C5FD5763CC27543452249D229BC22099C6FC1DFCC07A35144C -6267BE8D5BDCE57F9C7C65F6A64A74DC2207C8601231477DD57BC8259B26C683 -22FD4DBF0E3BD814E31C9E194CE2EB212268A249216DB084226802B79DC72AAB -FAC4ED3AF6BC51E2D9A1D5A37F5124BEBB1E0B010C34A1B7FBCED45414AD2285 -43BE684BC7BB56C5036D182AFECC061F749522456B4DCD80E3315F48E7E8AB98 -40C4FBDE71DA957C8FD860C4AB02C97578BC8299EF448A526CFC585F27EA14E8 -88F9928CBF87C8E46F69100F0CB43E2720B0BC8DCA50D59FEFBB84383B4036A3 -0ED89F67B433AB4BF686487194107C63BF989A80D761EF3FB20146A0A496E5E9 -26375866581146F3537156051C61F82AA5C68B6E8418297DDA7704EA50262775 -B96E1E1D7643370288780188ABCF25B9B23BBE408EC5DE254F51469D5FB06FF6 -2EA926F94CF1730E014F34822ED267643B773B7CADF967D431B6F3DDC998E56A -243880E9F772F3BAB3702C19C5DC92ACF864D6A771783E178F4A7BFBAD36008A -F0A61C5B437A69E31235DDA9898B4B081F1176C197C0834CAA25FDC9BEB696AA -8ABD1FDBE17E30070690EDA533E2EBC19180DCE4CA8146D6657BDDB765DDFB21 -D0CDB86912E49DB109F66DBB9226E297945BCE9073E724EBABB58E42AD94CDA4 -C9DAEC40F79F3A3D36777B18C61DC9D22EC351324FAC3426917C893E36C8D953 -4ACFACA05F8764BC61A17F6B40D3A97177B97CF88C2B0023ECB3F29F9CB347DC -E686012FB31904DCA042679776108D9D611EEE971D341ABCEACBD0866DA21DCC -270D3DBBBC9CD438F4F651B58D1405A82960CA991CF690B8B564033154645D8D -ED5E4E059D9DFAF3A5C2BA1C1AFE1B865901C8D117262CAB210A3C7A03443544 -E22EA5577AEF1378A9A4528592F32A8AEBCB1CB6A7E4948FF78C6FD230A5892B -D8953ED89392929FB91C042D31E7E8A4912FC701E722D7FAF0308625B3B748F2 -26DE427383236E131022A95395C72B3DEBB139C81811582FA4E9C7F970FA605D -C8DBB3ED8B141428ACE6DF426B2567B10C5D68A4060F25D5D64BA262101CF5C3 -4B7948CDEB6CAC66FFFA0F1795C5F3174F7D319D252DC2D22BD08FAB54CEA742 -64C0C6B94BDF182DC0942C0C82E82A0B04654A7C2E6BE685EC3DAF1D5FE48790 -DA815DBBD0A176BB4D4424ED7F893B4CED54C2EF94D73CBB154E547CD33D874A -E754A17AD1F10C23BC5FA4E709330A10A73C93B843D8CD8A65D5A4241B35CD19 -938F2BA2FA95551F0C2FEF1CB8B056D9A9120F7607BD4C497762C577B66B2DF6 -8F3F661EBD7F3E73E3A0032790ED80F774423A026F8ADE2FA82129E1FF27DB3A -1B6E603479668FD783735606F7AC6BE9D65C17F7ECCA3B622C13F0FC95F8259D -DA4801A7EE18656AAC3D730CF2E17FCE8657AD6289850DC06E897A759F7B53CA -502E764B07FDDBE6E99D25ECF1600D6646622334871C57133A8AFD03FBBC2368 -1BCDABFA9FF4C4A9EF150045F694A3AA487BE461BDD2BF1BBB38BBC365837063 -70963C7C1E7E4809797F4E497DBF6D5A90A71D6E89BEEDD5D16B31ADCAD67A81 -A9A3085B4CA7BD93E1A9591BD4A7C88FF930EE7A131C5F3338817D88AE31813A -C09D5E7120AFA6565B0A647A40CA94B78F20905B7110FE44A90794F7F0CD63DB -E99675C781255B7BA257CEB14DFDF9C13A02701B0FE41C6A6F50CC62C028A3BA -E9A918549B7F9F206DA0909F2009CC87BBB565F281F24D0ACBCB71F12709DB31 -5D355415D97F66DB25CAC37E90BEDB51F2FA97E0A61EF85E845F702D0B3AF935 -14F3EB201323209D76C7C5970AEFCE4225FFB4A1477B177BB52332AA0539291B -9B8004F23CE4E055F7AB6D6F2A8E74C2994306A407A4FC831D1C887C42FFD0DF -EF07891681C7F4AA914AECC427057A8D73261E25F82DC3EEE7295C0870E91523 -E15187584B32B8F8B0F2E9BF4E67E5A2858F00B0C59DA1B1B59B00374C6C6AD9 -741E0998EE0DCC6F5ACD1925CC40807D5B66E971CDCFA4651BBF2490FADD15EF -C8A7EA3ECD078D34D875C3EC5EDAB74AC0DCA00F2329184455C24C97EB0AD4C5 -40B8E4AA2CE6E7816580F9DBCDAE7F01AF0533397CD37C401D4841B60CB976EB -E3093FC863F368C85AECE6E6CF7D9ADABDF628D9806C1269A0EE06FEC90948E5 -CBE40C0A2C72E08D9AD94F07470692D571F595E465CB32BF486AE9C3971B6F7B -FBBDE2699E1FC9DACB156D880DA379262A98C6708A9850FF8EE36C35FF636E46 -D8D00FB3550786C1D73E6B91F9B35D6998F33BC953E0C8AFF996F4C707F8DBAA -AFD76432E45605D5E703C2569856A0BD8C8ACB29BCAC87F1A72F859D20205328 -6272929343C1CBCB053D7E19AEC4B2EFAA765B2002F43E7F62ED5281C94ABDAE -750B2C88B3801559FC6DF0D66E55952FD67AD41718D49D35DBF2B7CCBC1E755E -800ABB45EA4D7547756CE9E6D3AE0B80D8D97D681DFFCF4D5D5330F0FD6AA729 -5BCB1475F18E9612197D6F5F7C7AE8FB931C242993D385AAE7829391D370819A -496B9518C6F913E666C27F0896C7684AA1DB1A335C7B50762B4F8445D45C907B -9E30F7FD84E403DACCB0A8DFF2940312386C315FFA700B0E42242EEE04042E2A -3F4840E719A42FAC426870CC20DF083537010550A6B43A02A330D92CE15222FB -BE6A9F6EFA44F7987224533983D96BD2E1E536437F89E2E43884AE09FF5C7902 -A284704F78AC067C332EA207F53CAB61ED51EF3FE79A9B7A373C3DF72A4F3A5D -67B4F60BB470E5D093FD880AD32809160E550CC1EE67E01CFA80318C03E6FDAD -A8E744FEA593E2761C60D2CE83F3F6D3A2B203739C62A69D4E271FA12372C45F -6C378E4CC21B9B0CBFCF43233562E4BD4D52F7A634D1F0493F8DE445D140EA4A -D3956E9971263B7C3CAEC8AC83E541D58F52E00C1C80EBD9A31F0A9D17FA2D63 -E5E0D22CA28D51E39A055C40AB769EF224AEFE2AF714E322FDCB9770EB00686B -208AAEE2160D059DEED823FF4F9769359C183A6A6398F9E4ED55397F02C68FB1 -016CB495A0599DED25BF1006343DF9AB7C3BAEBD1EB2F99F4FCB07E84AD2D959 -D1D573B89C220DAD815D9EBA41CEF4D664630082DB97645AEA6779A8F0D7765E -B76A4B8B429CF95F22474EEF2FF1C792DD525E50E1EE0A1ECD78570970B62293 -43DBE6E9B97585B754AEFE28E960B5F8B3F549EC7F168FFFC5EBB52C7CDDACCB -DF9E1FD89F2F8CEE44285E79724FDDFED021AAD2025006239EE5CA8543B86200 -C7E8522668B07608615F6F102E295003B1B89264810A2BFC3DAFECFF126B1807 -2388839274203BEEC2B319C7F263ABBE6B181FECB5FDB9516E8F0456B6A1BEAD -7F45DB0F95F4943B2ACF52CB30DFDC6EC936A6292DC2AD0BD67164900CECF3DC -097528073246A88607DDEE1DE4BCFC298892F3B73E897734D7001A466170F60E -5F2948ED36A6AC13975086A2D68B6CD8B033CD14C1B85EEE4AD3679D74DEB998 -AF62D045BF1102FB3927E5B9078F8AF93A0ADDF1937276C423CD346F30D17D3C -C57CE052053EC21A2991D063B157FD535850DD63E55890427BC2C883785DFBA2 -436BDED247251001AB1AE56EA19880B88B3F1BFA6C232876E6C002E9EA850700 -517C80537C27033737A162B10B179624F869FEC056F339D5A292E6E945E7BB31 -A271CA30990B4AA5874CAD851C1154275BBA868EDA5D156F4663E2D436DE6DD2 -74E6579AB19EC803927046D9130BD9E735D64248A6FA78F1DD6B51DF0B1DD553 -316D96795355878C426BDA09F052D54880E5F3E5C1F29786DA0A8084D81A5849 -B2A301BFF171446EEB4DAECAF40D8C4F6C489BEA6C592F8257E68C514180756D -A13569A03827561348B73584D69626B3175247018DB9DFAA9E989E55C97F9A32 -B02423EA16FADA78FE1E3C56EF4122C640EB8D77C5E957B5E425A2FBFD173423 -E8AA1758A91E1B5B85D174D7DA1F11B3AA76761346D2464BDBA290435A6DA50C -1F14E14FE29396C918E3E4C388E93D1C3F7A7161FC61DFA1543D4CA86B6A3A5D -B64FC69BADC3F3E0F7DA2AA5FD6C39700C2CB8A6C823D2620D39FBB0B507003B -6D28C8D67F57C019DE3D8A4B6BD01CF0B305163BB1229F470AAD7436D13C326C -5D205B4C818D0F765E2B9FDDE26B033D1060EBEEAD6E5C49EC8C6F395B54C259 -4E24E89DB787773423E358A1C64C3FDEE4CCBAAC4AC652012A0CD7269A062643 -0F52A1BD1DEE9401B5835752C48CD0B705476B00458D31E70599761C793987D1 -1A14288D5EB2C9452C2C4524202A40A8C773AA8A3B9D10ABFF457478532B2C58 -0DA8776E116853B77D1A8EE320C87B23A693BB5D3E77A9C419772675690DD75C -7AC5BC3ACF97BB11C70C0261EB5DECD96577D755B03EECBC66B3B8FAFAD87950 -94AA617A40E4CFE88939F28D0D36C5C6FB5B4F6E4321BDBF12DCD428BDEC76DC -192AD968A9699084DBFFA3FE06D5F79D336DD6CFCA4C9E1F427A29DB1F4F0492 -A29F5F052310D455E8AE1847083B70EE57C4799FF4B470655D855B8298FD3694 -66E00CF5D04415601598C0ABD6802FA0DC4C12965546076E46C2DE87467CCC8D -F9ED9FE429CDE1DB2AFE61363327B4D11F46C678B59E74F8F09D8B9C14C48004 -CEC93F33A4A6906CD71B2414C05B3599E4D1FC1EB839D4B5E5968711359D3BB2 -8E6E262896409C7EE86DF7A8CF1DCA1EDCB2BE723CAAF5B1D7DC94F093864855 -7FB08EF776FDCF9DD8342ECB7F7B307542880A7C04D3BD09D65BE13F80E36120 -24BBE4C422F1CC0DC956CE53261B903ABA0E0CF1CB0AA8895C0DA8127DE3DC9D -4B491926B5408AC8D29D2FE62CC3CEF548C0A57A1DA202EAEA8F4584D8B64E49 -A3D11A48600CC0913B744180AFB6873BE72DCDFF8EA2203E34082E011C87C3F8 -EE91457705ED0BD4E2C193B7E818B50DDDD734F2BA1B876D262C39D94B0FC27F -0B5A87423EAE91BDAB38BE457EB0309D05FA5E458109305C03295FC39B0D06BD -BFA2B4520DD610E12C3AF842A94296108FB67495B300991C3491F0983B5A0403 -68A8D19218D9429EE400C3B91DDE2A9F163684D9F28120B584FEC88628EAA60F -79F5988BE7BE31153A675BC7B344E7F62CE85E8850361D1996D57E71690472BB -8055755DE965D795E6D2424F7D76AE7F249AEF4BFD75103B2CE4D62FECCD2FAE -3702A57A3320C54D19D5015ABA5AF39B237C53D38DBD80773C0B9D6406574BFA -48BA4EE71769AD140E202D24D9F1691BA072E1AF182FD6DC06C2FD25E3437E38 -ED1D0033E77D2B188F3A84EAE17787110EC5462EF5CD0FEBBE5CE39976B5CDA4 -8206BE5EB8A06C7698C5E6A45EC7F59CAD3D6ED3AC19FABF3D29C9AEBEFDD74A -6B7261D349FE509BD769D9A24B16C276C917F0CBE8B25FFE19BF8528E1C46D38 -3738E3CEE8170E3EE323A464A3C8FF30B3DAD0BE87518E008E37F60DB471E3EC -110E9B8AAA5C875AF759126B39B90A8E7BCB25FA3EFA783AF7B069AED1887A19 -6A75C799940E5352C34A93F125DE82A7387CFDD7073A28C1026C9E06A1D8163B -E66DC3BAAEBBDF96B7B3143B9414AB45643D022294C2AF8C87EBFF1276EF991B -7A1C720C1A7CFD392F211A190A530A19012EB117670AFAE4CF700048D901A5BE -074F9B05AA555FA4ED6D0A92C08E4B795279F9BE48887886B5121DDD857E8A86 -A2885B9A672C72BAB990E0AF6DCCC769A7E18E65A86B3E1482D8297FD98E0510 -30B27AFCB9B261771A1AFC298F96E272E779A8B6AB6B03410ECE32B7B69369C7 -5597FDD08BF2E6CA29E093428DBB0BC53C64E5ECBF216111AC90E82822E7604B -A9AF479BE9FD2FB2ED27EBF4027C22357DB27A5A6FBC6B14607DC26F95A81BA5 -1737D6C406B19857FFF2903F966DCD56BB73B06F5F74C917517DF95D8D5E5108 -350AB839CBDFD7D1F3C687D0B6B576FFE108AE8708B967C29F9840A0D6784789 -DDD7A0D76E92082162603CC916ADAD75BB205E7C9B7A72D286C5411F3771EB6B -9F9022BB24AC9EE7700907280F52862F1D542605F3D3AB06679252DB9A8A4E41 -FD9740AE35473A9FD025F364B863DDD063AF91A114EB529A38F28C4B4551E276 -F76C254669B81BD3CA8479F0C7208AFE5A1927F2AB12FBEC47FE0BF9AC3DBF3C -340DC67125FA0D65B245260B32FB74F90CCA6D327874BDB6C252614C75425F20 -2AD8C9ADD15733715B9281DB9D73C66B9664491416643C04165C64F5939CA73F -F8D7652592F391E59B82EF0BEDA9DC7F42713005E4AEAA1111EAB4E74BD99119 -D86490DEE3DA6C021B36D7AFDF9EEDBB1E3253176EF0607469E0982034AF57A8 -83F024DD4B42B99BBA110514E52498F6BE463B3053DF5114F2D6644FA27702D3 -15DB327F632E3750171BDAD75F0B7D2A84267C712132373A2FE740BB086D53B5 -C3E9A68583159E46FE46ED3B645B0FD505D206E09D438052E27B75EFE7F5D83F -BC153E4BAD47FF241AD46BE13605E1840C5C2CE3492C29EA5FFF5550AA3986E4 -FF28A404908C88269D821EB2FBB193DC311750F6163D75872603A254B949C756 -CB97829F0BE3AD796D52969E483A0A53CA650CFB9AD57E0F4DED89C7746341EB -3D3333F06556BC61BABC3553C7B0D83DDC5B3BFDC77DBD9B6DE41680DD6439E9 -4C9FA49DF62830C86E7A4B1CBD37F2794EB6DAFC3F1676697392A6A635E626DD -3A3BC9E2378C152F9895178C694596191B37BE3DD8C0FF34C82C386289EBD7CC -B63139A3243F193EA10211A8E390B4C4046663CEC373928556F5CC99FE094ED2 -841DDF013CAA6CA5C48CD9382CB776964B38BC24BB009DF203DB81D4EE3A4463 -C5F2BD876E0C9B9B226FF39C0CE6E67589A38388A02A81D3DEA72CC031BB8B2F -66C481F00167DC0BEEE6740A78D736F429B44B82A3B01ED2127052646DB442FC -C1EC78B100F11D42512810F26EEABFFDEE3E46DD584FCC2194896F7BB5670634 -480771223C1E2641A253CE2490AD75591FD94F19B2DBA95F0CD64EE4BA03D3B2 -BB0C7A6437B610004CA4F1B914D9075051F7CBB6CDA305F6337307F317CC05C7 -8BA5A409ED6D915263680852670F8A474AB0646ACF77FA3AC35332DFE2B00CEA -FA99D25DAC950B173DB84ACD9DD99AB23973390FE32E384C6003FEB9A4D3FB1A -CA17FE87AD558921F203432EC00D0BD9E0294A0364048A9743516F46EAC01B7A -AF23DACE21FC2D26692D8F1A85F1B0AA8156D6360B322724C4804FAE55DFA814 -ACCE2F8508335CD775539E7931007A73DFDEEF7695487B10BB0D95FCA66D0F53 -6E86DD15234A025709C4F7DD08761711D05655EAD8122D8BA2F7177E820B48C2 -5EC82CD16644832ADF374ACF193975B4635FB374451D0AED47030807CFDCF240 -783160D79230AAC1F2E5066F09C327ACE24CA2D712D08749FC63C3D8EDADCE22 -B81A7E03350AE88F30BE8222B6954ED0D2910AECBA460EC21BB032C4D5DC1B12 -39F1EB91215B384CDE3F1FBDABA298E37D4460D0B07B0493053444AC73654815 -376ADD2F64BDE78BF59CD75D93A3A3BC730562E9A1F2A730A2F766AA19DE458F -06DD501B215E0C2070CD64DDE13E99719671FA4809FBCB6623E206253081A50F -5329F16F1B0F0F69276852A7A0AC023A821B8E7880F9D7AE5DA74D0483AACB4F -FF09D975ABF439500ADEADA4990CA29A50D82C0A7704F11DDE0C9C8E4DA21382 -C4F7289719D9A4A44BF2735CCAA2BCA698A5FAEC9A3BCCDDA1C88CCE18510733 -5A88B88A193C9DF15ACD00F20A965C11DD8A35CE316EF3E4716AB3FB4EC6288A -91C0F824FC9933315C9A71CA786C9305A9A30F407777F0AEA7D341D1D9605378 -72CF445A4A2E3666C0075E2F9AAC3F452811EF7E60E6C04F37F3808FE8BD39F2 -346F5E25757E3ED2232F1B9B4DADF83DA45F7F302809251973F705CF71E34C18 -7C452C4B5D29E0CB74CD6EA67637FFF0E9D9B211FF96E04FFFE9A27BE5E13BF6 -B51EF214FF4F0A58C5D5734E6BCB0ECD419AE3CF79AB67D1B3EAE70FC1E83691 -095D0C370C9CF847C2A914F0B810124D763A972464C5F2C1F69914A8672D46EE -30F9EFFA7E9628D667E5DB582C123160BF28E77DBBD77598F14A32DD74F67032 -B4A0537D0FF938CC61BB0F9798B600FFB1AD7AE6AEE67E0FC6557FC3FBAA1E4E -C793B0D207EE0395913818CB2446E9B82B880537C1625C70ACBC87F97CEA8C77 -82E6229E1734F80FBF8477F062F3836FA9DCF83A4BA49703FE3DCB5F2CF6266F -4480EDFA91B1D98FAB8BE14DA6E84B9D58B46DE5D034734496474241F59317F4 -4AE4AFFABA7CA3FA149A26CF5050B83BDCB1C56B529900AA20EE6098D135E65E -61026EF0852D497B3799DA044CB378332924CA360A1C62E24B5A0628813829AF -A1236DD728559DAA01188D6EBBF3CEF983C5201904D03A46B62A41E9C5F494DB -135F6B62BD5F3745625E96E1B401848BFD935AD1FE128507866FB807693E8376 -634F1B39763087EE7E454069D5CED93DAE8BE9D1366669A152968E2DF13EFA54 -D1A631CCCA33D914CC1DA8C0DF8ECE2FABD18641FFB43BB5E82DD0A56CC20DCC -64EC0A7A04709085C80C2A1477CF85A29D0C11F204CEA455072DFBA6F5F5C693 -CB2B56EA189926EB51E92D2B5D89F25AB94E1F7FA208916FFE89601B616B41EB -EFA70F4C8CFC3FAD1D056E4076E8CDC2C3058A2B35B34FA0A29A2ED3746060AD -1A6B6988B1B0986DE495FDE9A8C45119DA7EC756E1C83C89842C8744AC4B80DC -264792E2E8D5AE4120BC57C170C742EEB0EAE8C9C4537AE432654DA4DF89FD45 -AE0DBDD92D0DDFA0C90C4FB90FD5A7ABB522A193117153CF578A584447FCD674 -548ECB9250DA4669DDC8CDBEBBA49999F2519DE29B0CE693DEB2F420D4B0CE02 -D9AA3C2C15A6DC98495E1EA54C7670482E2B1034B91692285AC47EFD6271659E -400D6D7DC137A904647FD092B1B4D59170F1EED8E29FCD584FEA2C77642AB839 -0A44403D75504E8DDF1BDBBA6B51B7F9F64B63676B6FBDE514701B9333312126 -4D8AC19B638254A4BFDEACA80AB2CBC4DD12AB48BC34771E210FB576FA0DE013 -5C49E765028D57C056BD7C14E6941B0A92A2073CA3CCA67E9A18F18BE4934550 -EFB984B486B9036B8E3221F63D8642E2C71E6547A8E4B25FC3EC3C42D27DFD85 -E85F2D08C69CDCF3174A09E363E92A8B3D75BFD57CA37144D5267BA4D1750988 -8FA3A9B9100838AA7DFFA97C5E4D2516F5649CA756C97C5A3D500A60D2AC5039 -812B603639C2E3CE36F26CC0AFCB385A5BBD582E7BD1B5920F67DBAF9ABF9EE5 -FCF66EECB566DD87F0618AB73199C230034DE379CAC1F6BD17526305D6B6ECD5 -8C5C57FA76FA775B2A25C7F5C83C27A1F4C71DCA93487469004EDFF855A156C0 -8C8EE1972CEB91B9292F5619118F7DA38B1FCDD069D71D0DAE61BE55AF0E255B -3B8D2DE974592BCA7D92F0DE92538C74A801CF16A424621627BEE5BEC2CC5E68 -9B88BE0ADDB7C8125F7C35D74A52779C6D5D87143506EAB799765589617D08F3 -1305B15752D134A97F7D872CF330F4B3BB62946570C5EA7DB77612DF9B7F91E9 -22321623627FEC40FA04FDC1AA21DECC7AE531510375D6F68A68C6B8BD649A67 -A3E24B30E04ACC2171A510DCD77F7688E2ABD7D3346BD84E8363BCDB2EABBE0E -5BC87A595CE80F977190EF06D3D0BE12DA50EA0C33D25617A9DA8940967906B5 -F5317F4CDCE1DCC7ED48B4AC4DA131EBCCD11F7D241551AF8A2A723A5C634EAC -575113186D3B83F8B6E2E50796481B6CA50D440D5B20C5206A85F539FB7D52B8 -B831EF10B784D195BF7EFF05A9125A3B90CE131D84ADBBE6E47AAC2FBE51DDDF -1286C0DCCA8343F7803FCB25CD690EF9FB49C1C3B91BB7FCE5D330C781744502 -AE46FEC050B4C695101F3B86ACE09D502572DFF5F8534DBE6DEAE838B4000712 -4B21697BA3FCDCCB3B858251438F05B3EA1F8CABC08A502C5324D1315214E7DA -6B62576C10E6EE9A69FDB9D424FE1C7BC32CF37EE9EFC42B9F6726C486762574 -03913F9B3F5A20B1EFA8D4E072EA2F641D7AF64403C4EC76E3A81185B976499D -C78FAD546598AB094B628942EBA51C11FD572264BFC7B0E97A1715D7443F29EB -7BB4E6848383836F99850E22316C73B76B0E6848008B832E49B7373A94DADEE4 -E7EB32C428F531FFA2067E3316A47C08068D93E27525A9A2A915CD9F204AB4DE -01EF65ECE8167C184DFA747930AA322FC136DE0D412E99E6F37ACF87A788141B -3043A3B0D20DDE8C2137EF0DA77A899A581A51AC4CD5A1031F84BD428D0A17A9 -989877277917D07CB806DF051C23F1AB0049FBDE843B34CFC9DEC4147D97759E -983C395F0C9DC2832139DFDE0455002BEBC392E7617156400301F76441347A3E -E94D2FB65A31DA189BCC3CE94AFC1613B546D424A36EB2F83F3444DDAB0F03A0 -F3C270A9B8BC62465F46D83929DB7F0240E52CAC458194BFD50645F825D0C41C -773B1D6757625906C7643BDCE990E24467C011ACDAF6D4A26A62D71FAF1F475C -F14CA4D545E9E4F80BB01F3AC573D046DA7356FB9884CAE3A29DC357BC8CB255 -E5108AB355F0E087902C9BB458DCE8F341F1AEB79E468EE9A45855FE037780E7 -9EA9ADC1CFA141A3F976DFEF51A428D237F234BF5C694DAD4CCF2AE84FFAB574 -A25C1FBA2F38110C305D962420A310FE93301B8677478BDBBBDC518B8C94E819 -26BD2529D0EBF0E770CB3A1E107440D135848D2F90CE8F37693EDAF6071B79F4 -FEA5ABF4D9F2DC67F2468F2BDA3FA968EED4CAF8D7A22CB28AA43804F72F56B9 -545DBD0E3F27DD5617329305CD8577AF38CD4C472CB181CF3DBEA07CD42C6C1C -51E819286FFFC75E38F5EFF96C763F51A31A78B0848CF56DE1A2CBE2F39B0C41 -FC7C0D42D48D6C75516316B27F6C34AE6D5F5873233914790ECE044C014E9796 -20E200F53FC51ABFEC15C1E08D36E9A4DA7E58DAC014E2C0627EE8ACC6AD021A -D2E2C431ACE954602EB99D4584250637F807507A17DA18521B6820E066058B09 -8C2B4609FDEA9E02007A097F833C7A9854D74B38DC81016759DD8FC6F98071FE -620AFA1A8DE5AA974C281A1DEC9C8B866E7E350BE5EF3C7C53F82280790CF239 -C847E4C7F74BCEBED8BCC57D4C01BC4394F0E9EC5AD01852B3B06B93A477A1AB -AA97B588415A03C1984B0C9619C899DFD4766A2CE91CD6A65120E07756100696 -297345CACCE1551A2CB549077A292B73ECD47C3A098049BC49F2125BBF004DAA -8827C407B06A07E5F39CC17843FE876FB2DC6CA2ADC0A4D8812901FC82913ECF -BD04C66B3647B7A698B4BC6C2F136C04AF4792F10C31231F2A04E4B55538CC17 -AFE4B47BA2F575BB4E7E222E9F6A4F904F11CBBC6DF6C2F3C15DCF268A39D6AB -DEB9D091EFE6ECD5DF61ED23E570D484A6AFD5F8D34B7D484F76F150D3D97EBE -5E91D7A458FAB380BE167E7F2FAAC82BC2C7F3C14BDFD06D9665F5AB2CE34800 -E779AC43B70E22199D3BC4A2A14EFD5D20AF12D8CC26BCE54762ECCA9D9F5FDE -84B43104575B2D6533FD3BD245AAAA4B82314EAEC2E6E566EB32AE367D2F2BBE -8F6DF9D63F56693D701E259ED828A3E27561A5901B87F606AADBEDDD7E846AC1 -F07D1ACCEC90CF6AB18114A140FE4BC918EDC9B06284B40E2C82D4BE3C1EAB92 -E2E2F0DE115737561F7ACA173B81C9AF7EFCD6797BC1AE6366646C8F1ADC38A9 -F1928933BFB6AB474FA81D8C006AA11B76461ED98DB4DCB95D7772E3D15C2A29 -F116DF0437225E8EA1FC5C3997633CD63539069F7788AAB84BC9FA8A1A61316D -2C0F07D2914A61B0418912B276561540BE5DBC1F7A20241E85ED95BB775E16D4 -1F22262C8128967F53031EBA86D0A2184DEB01D51D4F7E15BADE50B7DE246C05 -38B9B49D264A4B29A372FCBF57323308C71A0E14748850B56D51BB932B1DCAA3 -A1469E84536A42B0D8B55A0292C8050D6CD1BFDCC4D287B15082801EA40AB8DE -CD8628D0E1252DBC57333D74841246D7A6392F158EAA9FD5BC6CB2E535DDBEAB -F16FF32617952596187203D41342DF7FC1E0CAEA2EE8F012236DAB0208A626E4 -5FC5EC819580727F7890BF2B114523A3006CFE3B67F19419A009826C635C4B2C -10CED88293D753A6FC63C5C17A424E911169E316DAC022EE37A5F93A6D7BB446 -5402EDB1F758FFCCBE83F7842CF09E84DAC17CC8A5D0521CDBCA8B320D90F24F -32AA9B86DAFD068FB0D234C94EC0889134DCCF83F8B0C89F67D660EC4D6E2B34 -D4CC5E094049ACFA09767E7C0AFD789767D0660825FC94878BFCA40105597194 -BDF88A8636D180BAFEF635601218B47E1242497D1E90E7A0F1098FE4161E6C7D -D1E920DBECEDE54FD9D8EA40E25881F0E31C3FECCA22ED507DF496122D25AF56 -E6E690952EC746BE46F4D228D54C634B04D036DD33252E5A5B6309E559EB9CF9 -DD17101EF262D5FEBE9C207007A2E7F3BCCCE3243333F0A79C1779E727414D60 -B451BDC14BA3FFCBB9D49641DE51BE92C7D136C2C910559A6EE106DC05CB4890 -322BC12FD592C4789FD8368DFB7827A67FF8FADE351646D0B4B35F74A924E229 -DDCBE1B5D24D049CBD4424B123B6AAE7F5AF8AEEC7F862431541F6B755A272CE -177CAB058D297A35041646435664056644B2422B2CB890080C3BEC3C52C6363C -B843F24977C482C7A37CF18DEDE4E8FECB280E86263BBB5BD413A9BE19329817 -EC424B1AEEEF713A52D68143AF0DC2B02F293425F041A616D148ABED9E7FA7A0 -AE99B5762A52E38BE8E7148EF22808632CBDEA8613948D8E3D576580FA3F4B3E -0B5F9E1B240BC7D0744FB1D121E3231994DEDE24B919A72869C15B839DDD9917 -D3BF2466E673B142E4B527B17893D3405603E1271E2D005A6318DC98CFA3D25C -3A7B59A16B1D6C5C31F267B964E951DFDB1143F8D9005E378A3D4F5B072911CC -814C191A806A989BC176544E45BA9A5CB16281394572CC6275A96865BEAB6F9D -06DD94701FB30DEAC86652473C182379F43877528F28AB0B5FD9669347003055 -2E6169601690053E00E18BE7FA7143DA61EA74326BE8122E56485E65B0572821 -BBE05576C1D9706EE219A8377338E93DFFFEE5E37E6054412A9B875A092C948C -C4663F161AEBAFBB964859E9056D42B76A806A2B1C435318459E272DD51339B6 -B16BC73787ADF1D7A2CD630CA98F8B6C479693BA427D7096E83AAC35B6D1CCAE -B5879B03B706C6AA3FC1A1D180315A2252DE59C45E9429E107D7A73A645AB182 -6FCD53B44907874A1B286BC50D9051160CBFB374856E59C961C376C3B553454B -108BC5FFAC60EB8C7426A70A1FFC2CE80D8989A3EEC43A9AD51771D48884BB32 -1749E328FDCCD4FDD104E80EB6813FB98D83139791DD2A2C9ED7A70BC458DB09 -5D73B21DAF0FFC110324B8F2BC145FA61962C5D78B4D6C8D014D6938AF09F36A -2A3E5634A140A1A525BFCAA00616AA1D8195A8A68E4260B8ADDDF789B131C074 -01EF325E06AEA94A459CE1F51F312C3C19142528AC941551F324BE2653BBCF38 -46DDC6BDF7EF77D68C32F4DE7D8604E63A632AB2108086C77B94DC31D926D1E7 -1D3653D8B35CC5AC431368B7B2D7C3A565FEE9D9B2E366F265A627FE7B4378C4 -81A0C4DBDDE6F7DD940F08764D307A5B09097320431AA76A41C4ADE92C260588 -522B197B802DC488FA2169BC2E13AE36A98591E1673C1CAC29B4E0E15D2227E7 -80928CA4C060FECE89B014C3FB6A42313FC438E448DDD73CB66ADEF1FACF2E2A -4601F76ECFF658D97BC22C765C0B1B04B03EE08A41E2C778A8E5954CABE7B386 -BFC2DC7C60E720BAB2B1A726D8AF4933355F21731FD7C930F31720C1E16F6C01 -C0C8B6747961B605CDFFB02FD6D6A7758B1097AA1D47C6DA9DBF0F87E55672AD -FE93D17DA6FE7B2E3A5360C5BF0C3F4715165CC6748BC95CFA74D4AD57B481B9 -3784040A6B1BB028CA9F69B6AE52CFF8FF3FD169FDE1A85B52651D99B4042E72 -D5E952BD9F976EFA21C935F2ECBF5C8D4D8BA0AA97DD1458650F6DB9C80B3B21 -F60761C150944567DE98E9DED3BB831A57DE2A5C8CC4417D0D02BF24EB09C2A7 -B8262EFB223FDEDB45E75E2559190060C676B43721B5894EA52440AAAF72B77D -42138ABF062B92255DCE006EC18492D4CC0CA6FE753E8851305B967B4B01D481 -85D8A1B78CAEBEB99ED44E5BD7B0CD242B46F8C3C4B1DCE6B103497A89D0C48A -FCA2DDB3CBEF2CC076673FE28DD397F4975BF03EABF542C8ECAE8311822A6564 -14C20DE022F9AFBF672B31D124F96E2475073E6B53F8032685A45AC7181B0158 -A6FDBF2DFCC9D842D42E098BC02AEFABA6D571821604BBDC389E80931BC8A767 -A92DC7CE49EDDC3C89521CD3AF5AEFF121EAA27B74A37BF043B1AC045A0D9A38 -8767D85D15DBF0F5ABC495207AA3AD05BE201642206044F470EFDF4A8D52C050 -D600F04B97ACED3F7FC8A56E7640A6A4AAAE1816F3A77D887A378AA0B130B509 -72A8ADBD5808E9BBB7F83216D995EC74FD168D5A3D171AB9C52A0E21169172A2 -9C680D926D2327A314835700D399CE25A8311D22D1127B43CB8A9D900133C4D1 -CA1F71C4331F37DBE7F26650B4D512C5E192635CD8CF4C560AB5BFFE0671424D -456BA00271A643AA2477DAB650F682D89B932BEBB5A66EBC9072A469EE78E0B3 -86F58B1BA76F31B978C167A0E5CE18889C4DA968CEF94EFA70060960E1D53535 -17230FC0C8AA0E878AD3D6E306533800DB46BF785219872DBCAAEC33A236A8AA -E86D9C9316CEE8D75888217824D56420EF7AFE70E18C6AC6E7E71161373D574A -D399548B201868F2D1B2DEC136ECFEFE25C307630331F2F893FE36E0CCC8113F -9D7A6DE87881BC713E6B438F1E804B2C6F00DAA4FF0A33F2B051EE2655BD8583 -9AA5BB2F7A4AD400F34963FA1BD28D5AB933EAE84C047D636122BE431DB097BC -85D7CB6C30B09333A567F7DFC0A0482E4373512294562297BACC2F53E2BF1718 -4E23AA470CB1879235832D66846522B8EC1536E17172B8DA9DEB14877C9405D4 -531E548E8ACEBE66D41992C0D0A25CE7FE2641DC2F06A1399C864A7C1155DDD4 -20A2D292688E6426B147572C2CD3706C96C22C977A4A6C4A30A54C7DDD50DCB9 -7BBC5C0B744CD85DF88166B916C0F1909A38742C6BCB58045C4223B70F4B3BAD -74EBBE8395A3F64A14D6838554EB6AB7CE417DD7448EBB4F3EE10B13B454C4EA -949AF16A87E72ED21159408171A4847199C5E403FADCC67D0FFA5A58452ADC67 -FC3C597826B20BD85A1AC7BFA715531D99DDA5155185E3FBF29DDF559A103F75 -538AC8CC0B4C4041288E89B387F6ABE04F90E8CEB2099293D1DC4FE00647C80C -5DBE532282708D050BC6A226F45DBC314D109554BB25CF04770ED4874EED1B1F -E18E006F254BB4297C435B416A9AFC6FC51568D89317BCDD9885E2D1ED15F4F7 -AF253B5FAEE5CC44BF9D860982B7F4706C8B8018E6488E337B773A4A7AAF9998 -6796B30721736F7AB66CE22EBEF616FE5847929A2E08D64DA7E912F4CA899F73 -6A0A1F1F2163886A7C5E6999D98AB9708EADE2030050B2D05AEF0AA9447F8698 -7C191DD81DB9131D0DC19BB7CD0CD9A60AEBBA3FAD203CA51B6FECB75EC91C14 -EE75CBB49420594C7B9A56EDE29343B5D1817AFF27B71F0BF2B8D59D8198C2B7 -A9F4091A085C973412051D6ACCD3F0B37D502D8FE193CD5E42769D1F497847CF -B986233F0DE24FE2F4ED03BFA105DD04182887D3C6CB827A1D5B00170B8DFA5E -EB1BE4FEEACCC82A5BB4BCE2C8320CBCF6EEBFC955025F3980763F51170EA440 -C2144AD36893326E5A3DC214AF59FF505E8168593AB9543FC6690F0D63262FBB -978B833906430E5D2DC99D729D1CCE7A0A91725537BCF91DFBF8073EEE494A2B -E38F1AA3D81C602D05FAD3CA3A8A5A7E1F0A7F7CA736B561F3C29275E68D01E1 -FA253D089243988C475ABF8077C71DD93F1414E69FAEE565F42C863C61BE554B -44C92919D78D898E70510D9EA1FCAB702FD53337263606A777A001224390AA6C -D8CA04FE8F34D61F03E083D0A050EA3985ED026479142A7184494C615A7AC675 -97B6196C56F2034850A77938B7585B18AEEA2D249E41D25302DFF2416FCADC13 -E69030FD907778821C66F93220A31991386640AC2315A5B7DB80B4AE91A6A4D7 -8BC19E632295CFECA8D65B4045C5A7614852CD48686A27D61F6DC6ED6120D30D -92C97F4D0B5135823FA4A59DFB7633 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000 -cleartomark -{restore}if -%%EndFont -TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi) -@start /Fa 130[62 1[62 123[{}2 119.552 /CMTT12 rf /Fb -133[34 41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 23 -21 43 38 23 34 43 34 43 38 8[58 4[43 57 1[52 60 58 70 -3[28 58 3[59 1[54 58 7[38 38 38 38 38 38 38 38 38 38 -3[21 31[43 12[{}50 74.7198 /CMR9 rf /Fc 197[21 58[{}1 -74.7198 /CMMI9 rf /Fd 134[39 39 2[39 39 39 39 2[39 39 -39 39 2[39 39 2[39 3[39 19[39 27[39 39 2[39 45[{}18 74.7198 -/CMSLTT10 rf /Fe 129[39 39 1[39 39 39 39 39 39 39 39 -39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 -39 39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 1[39 39 -39 39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 1[39 -39 39 5[39 39 39 39 39 39 39 39 39 1[39 39 39 39 39 1[39 -39 1[39 33[{}81 74.7198 /CMTT9 rf /Ff 167[62 3[60 46 -2[57 1[62 76 52 1[43 1[62 65 54 1[63 60 67[{}13 83.022 -/CMR10 rf /Fg 135[67 2[67 1[50 2[61 69 5[33 1[70 2[68 -52[60 47[{}9 109.174 /CMCSC10 rf /Fh 140[56 3[56 56 1[56 -2[56 56 56 57[56 45[{}8 109.091 /CMTT12 rf /Fi 134[48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 1[48 2[48 3[48 3[48 1[48 1[48 1[48 -48 48 1[48 48 48 1[48 48 48 48 1[48 6[48 6[48 48 48 48 -2[48 5[48 39[{}49 90.9091 /CMSLTT10 rf /Fj 134[65 65 -89 65 68 48 48 50 65 68 61 68 102 34 65 1[34 68 61 37 -56 68 55 68 60 34 6[93 1[127 1[94 85 68 92 92 84 92 96 -116 74 96 1[46 96 96 77 81 94 89 87 93 1[58 5[61 61 61 -61 61 61 61 61 61 61 1[34 41 34 4[34 26[68 72 11[{}64 -109.091 /CMBX12 rf /Fk 135[42 1[42 1[30 37 38 1[46 46 -51 74 23 2[28 1[42 1[42 46 42 1[46 51[33 32[51 12[{}18 -90.9091 /CMTI10 rf /Fl 135[56 2[56 1[42 55 1[51 58 56 -68 47 2[27 1[58 49 51 57 54 53 56 46[50 2[50 1[34 45[{}20 -90.9091 /CMCSC10 rf /Fm 197[25 58[{}1 90.9091 /CMMI10 -rf /Fn 197[33 58[{}1 119.552 /CMMI12 rf /Fo 134[85 85 -1[85 90 63 64 66 1[90 81 90 134 45 1[49 45 90 81 49 74 -90 72 90 78 10[122 124 112 90 120 3[126 153 97 1[83 60 -126 127 101 106 124 117 115 122 7[81 81 81 81 81 81 81 -81 81 81 35[90 94 11[{}52 143.462 /CMBX12 rf /Fp 200[0 -21[91 17[45 1[91 12[71{}5 90.9091 /CMSY10 rf /Fq 134[48 -48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 -28 40 51 40 51 45 7[68 68 93 1[68 66 51 67 1[62 71 68 -83 57 71 1[33 68 71 59 62 69 66 64 68 12[45 45 45 45 -3[30 8[45 21[76 1[51 53 11[{}56 90.9091 /CMSL10 rf /Fr -134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 71 41 37 -75 67 41 61 75 60 75 65 3[37 1[37 1[102 102 139 102 103 -94 75 100 101 92 101 105 128 81 105 69 50 105 106 85 -88 103 97 96 102 105 64 4[37 67 67 67 67 67 67 67 67 -67 67 1[37 45 37 1[67 5[67 112 1[41 20[75 78 11[{}73 -119.552 /CMBX12 rf /Fs 129[48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 -48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93 90.9091 -/CMTT10 rf /Ft 131[91 45 40 48 48 66 48 51 35 36 36 48 -51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 -45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71 -47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 -45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 71 -76 45 1[45 25 18[76 51 51 53 11[{}89 90.9091 /CMR10 rf -/Fu 138[108 1[76 79 3[108 1[54 3[108 1[59 88 1[86 1[94 -14[144 4[184 10[138 66[{}13 172.154 /CMBX12 rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -/setpagedevice where -{ pop << /PageSize [612 792] >> setpagedevice } -{ /letter where { pop letter } if } -ifelse -%%EndPaperSize - end -%%EndSetup -%%Page: 1 1 -TeXDict begin 1 0 bop 150 1318 a Fu(Bash)64 b(Reference)j(Man)-5 -b(ual)p 150 1385 3600 34 v 2361 1481 a Ft(Reference)31 -b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.2,)g(for)f -Fs(Bash)g Ft(V)-8 b(ersion)31 b(4.2.)3218 1697 y(Jan)m(uary)f(2013)150 -4935 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 -b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 -b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 -b(oundation)p 150 5141 3600 17 v eop end -%%Page: 2 2 -TeXDict begin 2 1 bop 150 4279 a Ft(This)35 b(text)h(is)g(a)g(brief)f -(description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.2,)c(8)e(Jan)m(uary)g -(2013\).)150 4523 y(This)e(is)i(Edition)f(4.2,)i(last)f(up)s(dated)e(8) -h(Jan)m(uary)g(2013,)i(of)f Fq(The)e(GNU)i(Bash)g(Reference)g(Man)m -(ual)p Ft(,)g(for)150 4633 y Fs(Bash)p Ft(,)f(V)-8 b(ersion)31 -b(4.2.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767 -y Fp(\015)f Ft(1988{2013)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 -b(oundation;)53 b(with)44 b(no)g(In)m(v)-5 b(arian)m(t)46 -b(Sections,)j(no)390 5230 y(F)-8 b(ron)m(t-Co)m(v)m(er)31 -b(T)-8 b(exts,)30 b(and)f(no)f(Bac)m(k-Co)m(v)m(er)k(T)-8 -b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 -5340 y(in)h(the)h(section)g(en)m(titled)h(\\GNU)f(F)-8 -b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end -%%Page: -1 3 -TeXDict begin -1 2 bop 3725 -116 a Ft(i)150 299 y Fo(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fr(1)135 b(In)l(tro)t -(duction)13 b Fn(:)19 b(:)h(:)f(:)h(:)f(:)g(:)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(:)57 b Fr(1)275 778 y Ft(1.1)92 -b(What)31 b(is)f(Bash?)22 b Fm(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)52 b Ft(1)275 888 y(1.2)92 b(What)31 -b(is)f(a)h(shell?)13 b Fm(:)j(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)44 b Ft(1)150 1130 y Fr(2)135 b(De\014nitions)13 -b Fn(:)20 b(:)f(:)h(:)f(:)g(:)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(:)h(:)f(:)57 b Fr(3)150 1400 y(3)135 b(Basic)45 -b(Shell)g(F)-11 b(eatures)27 b Fn(:)21 b(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h -(:)f(:)72 b Fr(5)275 1537 y Ft(3.1)92 b(Shell)30 b(Syn)m(tax)25 -b Fm(:)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(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 -b Ft(5)399 1646 y(3.1.1)93 b(Shell)30 b(Op)s(eration)c -Fm(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Ft(5)399 1756 -y(3.1.2)93 b(Quoting)15 b Fm(:)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(:)h(:)f(:)h(:)f(:)45 b Ft(6)524 1866 y(3.1.2.1)93 b(Escap)s(e)30 -b(Character)11 b Fm(:)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(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(6)524 1975 y(3.1.2.2)93 -b(Single)31 b(Quotes)d Fm(:)15 b(:)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(:)58 b Ft(6)524 -2085 y(3.1.2.3)93 b(Double)31 b(Quotes)26 b Fm(:)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(:)56 -b Ft(6)524 2194 y(3.1.2.4)93 b(ANSI-C)30 b(Quoting)d -Fm(:)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(:)57 b Ft(6)524 2304 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c) -32 b(T)-8 b(ranslation)8 b Fm(:)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(:)h -(:)38 b Ft(7)399 2413 y(3.1.3)93 b(Commen)m(ts)26 b Fm(:)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(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56 b -Ft(7)275 2523 y(3.2)92 b(Shell)30 b(Commands)21 b Fm(:)14 -b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)51 b Ft(8)399 -2633 y(3.2.1)93 b(Simple)30 b(Commands)c Fm(:)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(:)57 -b Ft(8)399 2742 y(3.2.2)93 b(Pip)s(elines)18 b Fm(:)d(:)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(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Ft(8)399 -2852 y(3.2.3)93 b(Lists)30 b(of)h(Commands)15 b Fm(:)f(:)h(:)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(:)45 -b Ft(9)399 2961 y(3.2.4)93 b(Comp)s(ound)28 b(Commands)22 -b Fm(:)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(:)54 b Ft(9)524 3071 y(3.2.4.1)93 b(Lo)s(oping)30 -b(Constructs)8 b Fm(:)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(:)38 b Ft(10)524 3181 y(3.2.4.2)93 b(Conditional)31 -b(Constructs)18 b Fm(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 -b Ft(10)524 3290 y(3.2.4.3)93 b(Grouping)30 b(Commands)15 -b Fm(:)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(:)45 -b Ft(14)399 3400 y(3.2.5)93 b(Copro)s(cesses)18 b Fm(:)d(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)47 b Ft(15)399 3509 y(3.2.6)93 -b(GNU)31 b(P)m(arallel)c Fm(:)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(:)f(:)g(:)h(:)f(:)55 -b Ft(15)275 3619 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)29 -b Fm(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 -b Ft(16)275 3729 y(3.4)92 b(Shell)30 b(P)m(arameters)17 -b Fm(:)f(:)f(:)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(:)46 b Ft(18)399 -3838 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)20 -b Fm(:)d(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)50 b Ft(19)399 3948 y(3.4.2)93 b(Sp)s(ecial)30 -b(P)m(arameters)16 b Fm(:)h(:)f(:)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(:)46 b Ft(19)275 4057 -y(3.5)92 b(Shell)30 b(Expansions)17 b Fm(:)d(:)h(:)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(:)46 b Ft(20)399 4167 y(3.5.1)93 b(Brace)31 -b(Expansion)21 b Fm(:)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(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Ft(21)399 -4276 y(3.5.2)93 b(Tilde)30 b(Expansion)10 b Fm(:)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(:)40 b Ft(21)399 4386 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i -(Expansion)18 b Fm(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -48 b Ft(22)399 4496 y(3.5.4)93 b(Command)29 b(Substitution)12 -b Fm(:)j(:)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 -(:)42 b Ft(27)399 4605 y(3.5.5)93 b(Arithmetic)31 b(Expansion)19 -b Fm(:)c(:)g(:)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(:)48 b Ft(28)399 4715 y(3.5.6)93 b(Pro)s(cess)30 -b(Substitution)d Fm(:)15 b(:)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(:)57 b Ft(28)399 4824 y(3.5.7)93 -b(W)-8 b(ord)31 b(Splitting)20 b Fm(:)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(:)49 -b Ft(28)399 4934 y(3.5.8)93 b(Filename)32 b(Expansion)13 -b Fm(:)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(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)43 b Ft(29)524 5044 y(3.5.8.1)93 b(P)m(attern)31 -b(Matc)m(hing)d Fm(:)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(:) -h(:)f(:)g(:)h(:)f(:)56 b Ft(29)399 5153 y(3.5.9)93 b(Quote)31 -b(Remo)m(v)-5 b(al)9 b Fm(:)17 b(:)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(:)g(:)h(:)f(:)39 -b Ft(31)275 5263 y(3.6)92 b(Redirections)26 b Fm(:)15 -b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55 -b Ft(31)p eop end -%%Page: -2 4 -TeXDict begin -2 3 bop 3699 -116 a Ft(ii)399 83 y(3.6.1)93 -b(Redirecting)31 b(Input)23 b Fm(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)52 -b Ft(32)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)26 -b Fm(:)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(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)56 b Ft(32)399 302 y(3.6.3)93 b(App)s(ending)28 -b(Redirected)k(Output)12 b Fm(:)h(:)j(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -41 b Ft(32)399 412 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h -(and)f(Standard)h(Error)d Fm(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)58 -b Ft(32)399 521 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and) -h(Standard)f(Error)19 b Fm(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)48 -b Ft(33)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)c -Fm(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)56 b Ft(33)399 741 y(3.6.7)93 -b(Here)31 b(Strings)c Fm(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 -b Ft(33)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)16 -b Fm(:)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(:)46 -b Ft(34)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)19 -b Fm(:)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(:)49 -b Ft(34)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)19 b Fm(:)e(:)e(:)h(:)f(:)h(:)f(:) -49 b Ft(34)275 1179 y(3.7)92 b(Executing)31 b(Commands)17 -b Fm(:)d(:)h(:)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(:)46 b Ft(34)399 1289 y(3.7.1)93 -b(Simple)30 b(Command)f(Expansion)23 b Fm(:)15 b(:)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(:)52 b Ft(34)399 1398 y(3.7.2)93 b(Command)29 -b(Searc)m(h)i(and)f(Execution)d Fm(:)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(:)56 -b Ft(35)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m(vironmen)m -(t)8 b Fm(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38 b Ft(36)399 1617 -y(3.7.4)93 b(En)m(vironmen)m(t)18 b Fm(:)d(:)h(:)f(:)g(:)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(:)47 b Ft(37)399 1727 y(3.7.5)93 b(Exit)31 b(Status)c -Fm(:)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(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)57 b -Ft(37)399 1836 y(3.7.6)93 b(Signals)15 b Fm(:)g(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)44 b Ft(38)275 1946 -y(3.8)92 b(Shell)30 b(Scripts)23 b Fm(:)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(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)53 b Ft(38)150 2188 y Fr(4)135 -b(Shell)45 b(Builtin)g(Commands)22 b Fn(:)e(:)g(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)67 -b Fr(40)275 2325 y Ft(4.1)92 b(Bourne)30 b(Shell)g(Builtins)e -Fm(:)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(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)57 b Ft(40)275 2435 y(4.2)92 -b(Bash)30 b(Builtin)h(Commands)24 b Fm(:)15 b(:)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(:)54 -b Ft(47)275 2545 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)9 -b Fm(:)17 b(:)f(:)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(:)39 b Ft(57)399 2654 y(4.3.1)93 b(The)30 -b(Set)g(Builtin)c Fm(:)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(:)55 b -Ft(57)399 2764 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)13 -b Fm(:)j(:)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(:)43 b Ft(61)275 2873 y(4.4)92 b(Sp)s(ecial)30 -b(Builtins)21 b Fm(:)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(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50 -b Ft(67)150 3116 y Fr(5)135 b(Shell)45 b(V)-11 b(ariables)19 -b Fn(:)h(:)g(:)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(:)64 -b Fr(68)275 3253 y Ft(5.1)92 b(Bourne)30 b(Shell)g(V)-8 -b(ariables)22 b Fm(:)16 b(:)g(:)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(:)51 b Ft(68)275 -3362 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)16 b Fm(:)h(:)f(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)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(:)46 b Ft(68)150 3605 y -Fr(6)135 b(Bash)44 b(F)-11 b(eatures)13 b Fn(:)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(:)58 b Fr(79)275 -3742 y Ft(6.1)92 b(In)m(v)m(oking)31 b(Bash)d Fm(:)16 -b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b -Ft(79)275 3851 y(6.2)92 b(Bash)30 b(Startup)g(Files)20 -b Fm(:)c(:)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(:)49 b Ft(81)275 -3961 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)11 b Fm(:)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(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Ft(82)399 -4071 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)17 -b Fm(:)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(:)47 b -Ft(83)399 4180 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m(e?) -14 b Fm(:)k(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -44 b Ft(83)399 4290 y(6.3.3)93 b(In)m(teractiv)m(e)33 -b(Shell)d(Beha)m(vior)23 b Fm(:)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(:)52 b Ft(83)275 4399 y(6.4)92 b(Bash)30 -b(Conditional)h(Expressions)22 b Fm(:)14 b(:)i(:)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(:)51 b Ft(84)275 4509 y(6.5)92 -b(Shell)30 b(Arithmetic)c Fm(:)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(:)g(:)h(:)f -(:)55 b Ft(86)275 4619 y(6.6)92 b(Aliases)12 b Fm(:)k(:)g(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)42 -b Ft(87)275 4728 y(6.7)92 b(Arra)m(ys)17 b Fm(:)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(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47 -b Ft(88)275 4838 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)e -Fm(:)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(:)58 b Ft(90)399 4947 y(6.8.1)93 -b(Directory)32 b(Stac)m(k)f(Builtins)14 b Fm(:)i(:)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(:)44 b Ft(90)275 -5057 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)24 b -Fm(:)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(:)54 b Ft(91)275 5166 y(6.10)92 b(The)30 -b(Restricted)h(Shell)23 b Fm(:)16 b(:)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(:)53 -b Ft(92)275 5276 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)9 -b Fm(:)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(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Ft(93)p eop -end -%%Page: -3 5 -TeXDict begin -3 4 bop 3674 -116 a Ft(iii)150 83 y Fr(7)135 -b(Job)45 b(Con)l(trol)24 b Fn(:)c(:)g(:)f(:)h(:)f(:)h(:)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(:)f(:)h(:)f(:)g(:)69 b Fr(97)275 220 y -Ft(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)17 b Fm(:)f(:)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(:)47 b Ft(97)275 330 y(7.2)92 b(Job)30 b(Con)m(trol)h -(Builtins)25 b Fm(:)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(:)f(:)g(:)55 b Ft(98)275 -439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)17 -b Fm(:)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(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)47 b Ft(100)150 657 y Fr(8)135 -b(Command)45 b(Line)g(Editing)19 b Fn(:)i(:)e(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)63 -b Fr(101)275 794 y Ft(8.1)92 b(In)m(tro)s(duction)30 -b(to)h(Line)f(Editing)24 b Fm(:)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(:)54 b Ft(101)275 904 y(8.2)92 b(Readline)31 -b(In)m(teraction)c Fm(:)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(:)56 b Ft(101)399 -1013 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)26 -b Fm(:)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(:)55 -b Ft(102)399 1123 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i -(Commands)24 b Fm(:)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(:)55 b -Ft(102)399 1233 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)16 -b Fm(:)f(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)46 b -Ft(103)399 1342 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)9 -b Fm(:)15 b(:)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(:)39 b Ft(103)399 1452 y(8.2.5)93 b(Searc)m(hing)31 -b(for)f(Commands)f(in)h(the)h(History)c Fm(:)15 b(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b Ft(103)275 -1561 y(8.3)92 b(Readline)31 b(Init)f(File)20 b Fm(:)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(:)g -(:)h(:)f(:)h(:)50 b Ft(104)399 1671 y(8.3.1)93 b(Readline)31 -b(Init)f(File)i(Syn)m(tax)12 b Fm(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)42 b Ft(104)399 1781 y(8.3.2)93 b(Conditional)31 -b(Init)f(Constructs)25 b Fm(:)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(:)56 b Ft(111)399 1890 y(8.3.3)93 b(Sample)30 b(Init)g(File)12 -b Fm(:)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(:)42 b Ft(112)275 2000 y(8.4)92 -b(Bindable)30 b(Readline)h(Commands)11 b Fm(:)k(:)g(:)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(:)41 b Ft(115)399 2109 y(8.4.1)93 -b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)e Fm(:)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(:)58 b Ft(115)399 -2219 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f -(History)17 b Fm(:)g(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)47 b Ft(116)399 2328 y(8.4.3)93 b(Commands)29 b(F)-8 -b(or)31 b(Changing)f(T)-8 b(ext)21 b Fm(:)c(:)e(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -51 b Ft(117)399 2438 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 -b(anking)22 b Fm(:)17 b(:)e(:)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(:)52 b Ft(118)399 2548 y(8.4.5)93 b(Sp)s(ecifying)30 -b(Numeric)g(Argumen)m(ts)17 b Fm(:)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(:)47 -b Ft(119)399 2657 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)12 b Fm(:)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(:)42 -b Ft(120)399 2767 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)21 -b Fm(:)16 b(:)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(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)51 b Ft(121)399 2876 y(8.4.8)93 b(Some)30 -b(Miscellaneous)j(Commands)24 b Fm(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 -b Ft(122)275 2986 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)20 -b Fm(:)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(:)f(:)h(:)f(:)g(:)50 b Ft(124)275 -3096 y(8.6)92 b(Programmable)30 b(Completion)16 b Fm(:)g(:)f(:)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(:)46 -b Ft(124)275 3205 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)c -Fm(:)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(:)56 b Ft(126)275 -3315 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)20 -b Fm(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)50 b Ft(130)150 3533 y Fr(9)135 -b(Using)45 b(History)h(In)l(teractiv)l(ely)39 b Fn(:)19 -b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)80 -b Fr(133)275 3670 y Ft(9.1)92 b(Bash)30 b(History)h(F)-8 -b(acilities)21 b Fm(:)d(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)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(:)51 b Ft(133)275 3779 -y(9.2)92 b(Bash)30 b(History)h(Builtins)19 b Fm(:)d(:)g(:)f(:)g(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)49 -b Ft(133)275 3889 y(9.3)92 b(History)31 b(Expansion)21 -b Fm(:)15 b(:)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(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)52 b Ft(135)399 3999 -y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)10 b Fm(:)18 -b(:)d(:)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(:)40 b Ft(136)399 4108 y(9.3.2)93 b(W)-8 b(ord)31 -b(Designators)17 b Fm(:)g(:)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(:)h(:)47 b Ft(136)399 4218 -y(9.3.3)93 b(Mo)s(di\014ers)26 b Fm(:)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(:)57 b Ft(137)150 4436 y Fr(10)135 b(Installing)46 -b(Bash)24 b Fn(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)68 -b Fr(138)275 4573 y Ft(10.1)92 b(Basic)32 b(Installation)20 -b Fm(:)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(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Ft(138)275 4682 -y(10.2)92 b(Compilers)30 b(and)g(Options)8 b Fm(:)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(:)38 b Ft(139)275 4792 y(10.3)92 b(Compiling)30 -b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)21 b Fm(:)c(:)e(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)52 b Ft(139)275 4902 y(10.4)92 b(Installation)32 b(Names)13 -b Fm(:)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(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)43 b Ft(139)275 5011 y(10.5)92 -b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s(e)12 b Fm(:)j(:)g(:)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(:)42 b Ft(139)275 -5121 y(10.6)92 b(Sharing)30 b(Defaults)15 b Fm(:)i(:)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 -(:)f(:)g(:)46 b Ft(140)275 5230 y(10.7)92 b(Op)s(eration)30 -b(Con)m(trols)24 b Fm(:)16 b(:)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(:)54 b Ft(140)275 -5340 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)10 b Fm(:)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(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)40 b Ft(140)p eop end -%%Page: -4 6 -TeXDict begin -4 5 bop 3677 -116 a Ft(iv)150 83 y Fr(App)t(endix)44 -b(A)160 b(Rep)t(orting)46 b(Bugs)35 b Fn(:)20 b(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)80 b Fr(145)150 -353 y(App)t(endix)44 b(B)166 b(Ma)7 b(jor)45 b(Di\013erences)i(F)-11 -b(rom)44 b(The)419 486 y(Bourne)g(Shell)35 b Fn(:)19 -b(:)h(:)f(:)g(:)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(:)78 -b Fr(146)275 623 y Ft(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h -(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)13 b Fm(:)i(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)43 b Ft(150)150 865 y Fr(App)t(endix)h(C)165 -b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)439 -998 y Fn(:)19 b(:)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(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)64 -b Fr(152)150 1268 y(App)t(endix)44 b(D)159 b(Indexes)15 -b Fn(:)20 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)59 b Fr(160)275 -1405 y Ft(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h(Commands)16 -b Fm(:)e(:)i(:)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(:)46 b Ft(160)275 -1514 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 -b(ords)12 b Fm(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)42 -b Ft(161)275 1624 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 -b(ariable)32 b(Index)20 b Fm(:)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(:)50 b Ft(161)275 1733 y(D.4)92 b(F)-8 b(unction)31 -b(Index)16 b Fm(:)f(:)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(:)47 -b Ft(163)275 1843 y(D.5)92 b(Concept)30 b(Index)d Fm(:)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(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)57 b Ft(165)p -eop end -%%Page: 1 7 -TeXDict begin 1 6 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(In)m(tro)s(duction)2592 b(1)150 299 y Fo(1)80 b(In)l(tro)t(duction) -150 602 y Fr(1.1)68 b(What)45 b(is)g(Bash?)150 762 y -Ft(Bash)38 b(is)g(the)g(shell,)i(or)d(command)h(language)h(in)m -(terpreter,)h(for)e(the)g Fl(gnu)f Ft(op)s(erating)h(system.)63 -b(The)150 871 y(name)33 b(is)g(an)g(acron)m(ym)g(for)g(the)g(`)p -Fs(Bourne-Again)27 b(SHell)p Ft(',)32 b(a)i(pun)d(on)i(Stephen)f -(Bourne,)h(the)g(author)150 981 y(of)f(the)f(direct)h(ancestor)h(of)e -(the)h(curren)m(t)f(Unix)g(shell)h Fs(sh)p Ft(,)f(whic)m(h)g(app)s -(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1091 -y(Bell)g(Labs)e(Researc)m(h)h(v)m(ersion)g(of)f(Unix.)275 -1220 y(Bash)f(is)g(largely)i(compatible)f(with)f Fs(sh)g -Ft(and)g(incorp)s(orates)g(useful)g(features)g(from)g(the)g(Korn)g -(shell)150 1330 y Fs(ksh)37 b Ft(and)h(the)g(C)g(shell)g -Fs(csh)p Ft(.)64 b(It)38 b(is)g(in)m(tended)g(to)h(b)s(e)f(a)g -(conforman)m(t)h(implemen)m(tation)h(of)e(the)g Fl(ieee)150 -1439 y(posix)c Ft(Shell)g(and)g(T)-8 b(o)s(ols)35 b(p)s(ortion)f(of)g -(the)h Fl(ieee)f(posix)f Ft(sp)s(eci\014cation)j(\()p -Fl(ieee)e Ft(Standard)f(1003.1\).)56 b(It)150 1549 y(o\013ers)31 -b(functional)f(impro)m(v)m(emen)m(ts)i(o)m(v)m(er)g Fs(sh)d -Ft(for)i(b)s(oth)e(in)m(teractiv)m(e)k(and)d(programming)g(use.)275 -1679 y(While)h(the)g Fl(gnu)f Ft(op)s(erating)h(system)g(pro)m(vides)f -(other)h(shells,)g(including)f(a)h(v)m(ersion)g(of)g -Fs(csh)p Ft(,)f(Bash)150 1788 y(is)j(the)h(default)f(shell.)49 -b(Lik)m(e)34 b(other)g Fl(gnu)f Ft(soft)m(w)m(are,)i(Bash)f(is)f(quite) -h(p)s(ortable.)49 b(It)33 b(curren)m(tly)g(runs)f(on)150 -1898 y(nearly)c(ev)m(ery)g(v)m(ersion)g(of)f(Unix)h(and)e(a)i(few)f -(other)h(op)s(erating)g(systems)f Fp(\000)g Ft(indep)s(enden)m -(tly-supp)s(orted)150 2008 y(p)s(orts)j(exist)h(for)f -Fl(ms-dos)p Ft(,)f Fl(os/2)p Ft(,)i(and)f(Windo)m(ws)g(platforms.)150 -2231 y Fr(1.2)68 b(What)45 b(is)g(a)h(shell?)150 2390 -y Ft(A)m(t)32 b(its)f(base,)h(a)f(shell)g(is)h(simply)e(a)h(macro)h -(pro)s(cessor)f(that)g(executes)i(commands.)42 b(The)30 -b(term)h(macro)150 2500 y(pro)s(cessor)25 b(means)g(functionalit)m(y)i -(where)d(text)j(and)d(sym)m(b)s(ols)h(are)h(expanded)e(to)i(create)h -(larger)f(expres-)150 2609 y(sions.)275 2739 y(A)34 b(Unix)h(shell)g -(is)f(b)s(oth)g(a)h(command)g(in)m(terpreter)g(and)f(a)h(programming)f -(language.)55 b(As)35 b(a)g(com-)150 2848 y(mand)30 b(in)m(terpreter,)i -(the)g(shell)f(pro)m(vides)g(the)h(user)e(in)m(terface)j(to)f(the)f -(ric)m(h)h(set)g(of)f Fl(gnu)g Ft(utilities.)44 b(The)150 -2958 y(programming)30 b(language)h(features)f(allo)m(w)h(these)g -(utilities)g(to)g(b)s(e)e(com)m(bined.)41 b(Files)31 -b(con)m(taining)g(com-)150 3068 y(mands)e(can)i(b)s(e)e(created,)j(and) -d(b)s(ecome)i(commands)f(themselv)m(es.)42 b(These)30 -b(new)f(commands)h(ha)m(v)m(e)i(the)150 3177 y(same)f(status)h(as)f -(system)g(commands)g(in)g(directories)h(suc)m(h)f(as)g(`)p -Fs(/bin)p Ft(',)g(allo)m(wing)i(users)d(or)h(groups)f(to)150 -3287 y(establish)h(custom)f(en)m(vironmen)m(ts)h(to)g(automate)h(their) -f(common)f(tasks.)275 3417 y(Shells)j(ma)m(y)h(b)s(e)f(used)g(in)m -(teractiv)m(ely)k(or)d(non-in)m(teractiv)m(ely)-8 b(.)54 -b(In)33 b(in)m(teractiv)m(e)j(mo)s(de,)f(they)e(accept)150 -3526 y(input)21 b(t)m(yp)s(ed)h(from)g(the)h(k)m(eyb)s(oard.)37 -b(When)22 b(executing)i(non-in)m(teractiv)m(ely)-8 b(,)27 -b(shells)c(execute)g(commands)150 3636 y(read)30 b(from)g(a)h(\014le.) -275 3765 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e -Fl(gnu)g Ft(commands,)i(b)s(oth)e(sync)m(hronously)f(and)h(async)m -(hronously)-8 b(.)150 3875 y(The)29 b(shell)g(w)m(aits)i(for)e(sync)m -(hronous)f(commands)h(to)h(complete)h(b)s(efore)e(accepting)i(more)e -(input;)g(asyn-)150 3985 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)h -(to)f(execute)h(in)e(parallel)i(with)f(the)f(shell)h(while)g(it)g -(reads)g(and)f(executes)150 4094 y(additional)35 b(commands.)50 -b(The)33 b Fq(redirection)h Ft(constructs)g(p)s(ermit)f(\014ne-grained) -g(con)m(trol)i(of)f(the)g(input)150 4204 y(and)40 b(output)f(of)i -(those)f(commands.)70 b(Moreo)m(v)m(er,)45 b(the)c(shell)f(allo)m(ws)h -(con)m(trol)h(o)m(v)m(er)g(the)e(con)m(ten)m(ts)i(of)150 -4313 y(commands')30 b(en)m(vironmen)m(ts.)275 4443 y(Shells)k(also)i -(pro)m(vide)g(a)f(small)h(set)f(of)g(built-in)g(commands)g(\()p -Fq(builtins)t Ft(\))g(implemen)m(ting)h(function-)150 -4553 y(alit)m(y)i(imp)s(ossible)e(or)g(incon)m(v)m(enien)m(t)j(to)e -(obtain)g(via)g(separate)g(utilities.)61 b(F)-8 b(or)37 -b(example,)i Fs(cd)p Ft(,)e Fs(break)p Ft(,)150 4662 -y Fs(continue)p Ft(,)28 b(and)i Fs(exec)f Ft(cannot)i(b)s(e)f(implemen) -m(ted)h(outside)g(of)f(the)h(shell)f(b)s(ecause)h(they)f(directly)h -(ma-)150 4772 y(nipulate)d(the)g(shell)g(itself.)41 b(The)27 -b Fs(history)p Ft(,)g Fs(getopts)p Ft(,)f Fs(kill)p Ft(,)i(or)g -Fs(pwd)f Ft(builtins,)h(among)g(others,)h(could)150 4881 -y(b)s(e)34 b(implemen)m(ted)g(in)g(separate)h(utilities,)i(but)d(they)g -(are)g(more)h(con)m(v)m(enien)m(t)h(to)f(use)f(as)g(builtin)g(com-)150 -4991 y(mands.)40 b(All)31 b(of)f(the)h(shell)f(builtins)g(are)h -(describ)s(ed)e(in)h(subsequen)m(t)g(sections.)275 5121 -y(While)39 b(executing)h(commands)e(is)g(essen)m(tial,)43 -b(most)c(of)g(the)g(p)s(o)m(w)m(er)f(\(and)g(complexit)m(y\))j(of)e -(shells)150 5230 y(is)34 b(due)f(to)i(their)f(em)m(b)s(edded)f -(programming)h(languages.)52 b(Lik)m(e)35 b(an)m(y)f(high-lev)m(el)i -(language,)h(the)d(shell)150 5340 y(pro)m(vides)c(v)-5 -b(ariables,)32 b(\015o)m(w)e(con)m(trol)i(constructs,)f(quoting,)g(and) -f(functions.)p eop end -%%Page: 2 8 -TeXDict begin 2 7 bop 150 -116 a Ft(Chapter)30 b(1:)41 -b(In)m(tro)s(duction)2592 b(2)275 299 y(Shells)21 b(o\013er)i(features) -f(geared)h(sp)s(eci\014cally)g(for)f(in)m(teractiv)m(e)j(use)d(rather)g -(than)g(to)h(augmen)m(t)g(the)f(pro-)150 408 y(gramming)32 -b(language.)48 b(These)32 b(in)m(teractiv)m(e)j(features)d(include)g -(job)g(con)m(trol,)j(command)c(line)i(editing,)150 518 -y(command)d(history)g(and)g(aliases.)42 b(Eac)m(h)31 -b(of)g(these)g(features)f(is)h(describ)s(ed)e(in)h(this)g(man)m(ual.)p -eop end -%%Page: 3 9 -TeXDict begin 3 8 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(De\014nitions)2662 b(3)150 299 y Fo(2)80 b(De\014nitions)150 -552 y Ft(These)30 b(de\014nitions)g(are)h(used)e(throughout)h(the)h -(remainder)f(of)g(this)h(man)m(ual.)150 720 y Fs(POSIX)240 -b Ft(A)27 b(family)g(of)g(op)s(en)f(system)g(standards)g(based)g(on)h -(Unix.)39 b(Bash)27 b(is)g(primarily)f(concerned)630 -830 y(with)k(the)h(Shell)f(and)g(Utilities)i(p)s(ortion)e(of)h(the)f -Fl(posix)g Ft(1003.1)j(standard.)150 995 y Fs(blank)240 -b Ft(A)30 b(space)h(or)g(tab)f(c)m(haracter.)150 1161 -y Fs(builtin)144 b Ft(A)35 b(command)g(that)g(is)g(implemen)m(ted)g(in) -m(ternally)h(b)m(y)f(the)g(shell)g(itself,)i(rather)d(than)h(b)m(y)630 -1271 y(an)30 b(executable)i(program)e(somewhere)h(in)f(the)g(\014le)h -(system.)150 1436 y Fs(control)d(operator)630 1546 y -Ft(A)20 b Fs(token)f Ft(that)i(p)s(erforms)e(a)i(con)m(trol)g -(function.)37 b(It)21 b(is)f(a)h Fs(newline)d Ft(or)j(one)f(of)h(the)f -(follo)m(wing:)630 1655 y(`)p Fs(||)p Ft(',)31 b(`)p -Fs(&&)p Ft(',)f(`)p Fs(&)p Ft(',)h(`)p Fs(;)p Ft(',)g(`)p -Fs(;;)p Ft(',)f(`)p Fs(|)p Ft(',)h(`)p Fs(|&)p Ft(',)f(`)p -Fs(\()p Ft(',)h(or)g(`)p Fs(\))p Ft('.)150 1821 y Fs(exit)e(status)630 -1931 y Ft(The)f(v)-5 b(alue)29 b(returned)e(b)m(y)h(a)h(command)f(to)h -(its)g(caller.)41 b(The)28 b(v)-5 b(alue)29 b(is)f(restricted)h(to)h -(eigh)m(t)630 2040 y(bits,)h(so)f(the)h(maxim)m(um)f(v)-5 -b(alue)31 b(is)f(255.)150 2206 y Fs(field)240 b Ft(A)27 -b(unit)g(of)g(text)h(that)g(is)f(the)g(result)g(of)g(one)h(of)f(the)g -(shell)g(expansions.)40 b(After)27 b(expansion,)630 2315 -y(when)e(executing)h(a)g(command,)h(the)f(resulting)f(\014elds)g(are)h -(used)f(as)h(the)g(command)f(name)630 2425 y(and)30 b(argumen)m(ts.)150 -2591 y Fs(filename)96 b Ft(A)30 b(string)h(of)f(c)m(haracters)i(used)e -(to)h(iden)m(tify)g(a)f(\014le.)150 2756 y Fs(job)336 -b Ft(A)31 b(set)h(of)f(pro)s(cesses)g(comprising)g(a)g(pip)s(eline,)g -(and)g(an)m(y)g(pro)s(cesses)g(descended)g(from)f(it,)630 -2866 y(that)h(are)g(all)g(in)f(the)h(same)f(pro)s(cess)g(group.)150 -3031 y Fs(job)f(control)630 3141 y Ft(A)22 b(mec)m(hanism)g(b)m(y)f -(whic)m(h)h(users)f(can)h(selectiv)m(ely)i(stop)e(\(susp)s(end\))e(and) -h(restart)i(\(resume\))630 3251 y(execution)32 b(of)e(pro)s(cesses.)150 -3416 y Fs(metacharacter)630 3526 y Ft(A)25 b(c)m(haracter)i(that,)g -(when)d(unquoted,)i(separates)g(w)m(ords.)38 b(A)26 b(metac)m(haracter) -i(is)d(a)g Fs(blank)630 3635 y Ft(or)30 b(one)h(of)g(the)f(follo)m -(wing)i(c)m(haracters:)42 b(`)p Fs(|)p Ft(',)31 b(`)p -Fs(&)p Ft(',)g(`)p Fs(;)p Ft(',)g(`)p Fs(\()p Ft(',)f(`)p -Fs(\))p Ft(',)h(`)p Fs(<)p Ft(',)g(or)f(`)p Fs(>)p Ft('.)150 -3801 y Fs(name)288 b Ft(A)37 b Fs(word)f Ft(consisting)i(solely)h(of)e -(letters,)j(n)m(um)m(b)s(ers,)e(and)f(underscores,)h(and)f(b)s -(eginning)630 3910 y(with)23 b(a)g(letter)h(or)f(underscore.)38 -b Fs(Name)p Ft(s)22 b(are)h(used)f(as)i(shell)f(v)-5 -b(ariable)24 b(and)e(function)h(names.)630 4020 y(Also)31 -b(referred)f(to)h(as)f(an)h Fs(identifier)p Ft(.)150 -4186 y Fs(operator)96 b Ft(A)38 b Fs(control)28 b(operator)36 -b Ft(or)h(a)i Fs(redirection)27 b(operator)p Ft(.)61 -b(See)38 b(Section)g(3.6)h([Redirec-)630 4295 y(tions],)f(page)f(31,)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 Fs(metacharacter)p Ft(.)150 4570 -y Fs(process)f(group)630 4680 y Ft(A)i(collection)k(of)c(related)h(pro) -s(cesses)g(eac)m(h)g(ha)m(ving)g(the)g(same)f(pro)s(cess)g(group)g -Fl(id)p Ft(.)150 4846 y Fs(process)e(group)h(ID)630 4955 -y Ft(A)h(unique)g(iden)m(ti\014er)h(that)f(represen)m(ts)h(a)g -Fs(process)d(group)h Ft(during)g(its)i(lifetime.)150 -5121 y Fs(reserved)d(word)630 5230 y Ft(A)h Fs(word)e -Ft(that)i(has)f(a)h(sp)s(ecial)g(meaning)f(to)h(the)g(shell.)40 -b(Most)30 b(reserv)m(ed)e(w)m(ords)g(in)m(tro)s(duce)630 -5340 y(shell)j(\015o)m(w)f(con)m(trol)i(constructs,)f(suc)m(h)f(as)g -Fs(for)g Ft(and)g Fs(while)p Ft(.)p eop end -%%Page: 4 10 -TeXDict begin 4 9 bop 150 -116 a Ft(Chapter)30 b(2:)41 -b(De\014nitions)2662 b(4)150 299 y Fs(return)29 b(status)630 -408 y Ft(A)h(synon)m(ym)g(for)g Fs(exit)g(status)p Ft(.)150 -568 y Fs(signal)192 b Ft(A)40 b(mec)m(hanism)h(b)m(y)e(whic)m(h)h(a)h -(pro)s(cess)e(ma)m(y)i(b)s(e)e(noti\014ed)h(b)m(y)g(the)h(k)m(ernel)f -(of)g(an)g(ev)m(en)m(t)630 677 y(o)s(ccurring)30 b(in)g(the)h(system.) -150 837 y Fs(special)d(builtin)630 946 y Ft(A)j(shell)f(builtin)g -(command)h(that)g(has)f(b)s(een)g(classi\014ed)h(as)g(sp)s(ecial)g(b)m -(y)f(the)h Fl(posix)f Ft(stan-)630 1056 y(dard.)150 1215 -y Fs(token)240 b Ft(A)38 b(sequence)h(of)f(c)m(haracters)h(considered)f -(a)h(single)g(unit)e(b)m(y)h(the)h(shell.)64 b(It)38 -b(is)g(either)h(a)630 1325 y Fs(word)29 b Ft(or)i(an)f -Fs(operator)p Ft(.)150 1484 y Fs(word)288 b Ft(A)28 b(sequence)g(of)g -(c)m(haracters)h(treated)g(as)f(a)g(unit)f(b)m(y)h(the)g(shell.)40 -b(W)-8 b(ords)28 b(ma)m(y)g(not)g(include)630 1594 y(unquoted)i -Fs(metacharacters)p Ft(.)p eop end -%%Page: 5 11 -TeXDict begin 5 10 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(5)150 299 -y Fo(3)80 b(Basic)54 b(Shell)e(F)-13 b(eatures)150 603 -y Ft(Bash)21 b(is)g(an)f(acron)m(ym)i(for)e(`)p Fs(Bourne-Again)27 -b(SHell)p Ft('.)37 b(The)20 b(Bourne)g(shell)h(is)g(the)g(traditional)h -(Unix)f(shell)150 712 y(originally)h(written)f(b)m(y)f(Stephen)g -(Bourne.)38 b(All)21 b(of)g(the)g(Bourne)f(shell)h(builtin)f(commands)g -(are)i(a)m(v)-5 b(ailable)150 822 y(in)26 b(Bash,)h(The)f(rules)f(for)h -(ev)-5 b(aluation)28 b(and)d(quoting)h(are)h(tak)m(en)g(from)f(the)g -Fl(posix)f Ft(sp)s(eci\014cation)i(for)f(the)150 931 -y(`standard')k(Unix)g(shell.)275 1089 y(This)h(c)m(hapter)i(brie\015y)e -(summarizes)h(the)h(shell's)f(`building)g(blo)s(c)m(ks':)45 -b(commands,)32 b(con)m(trol)i(struc-)150 1199 y(tures,)k(shell)e -(functions,)h(shell)g Fk(p)-5 b(ar)g(ameters)p Ft(,)41 -b(shell)36 b(expansions,)i Fk(r)-5 b(e)g(dir)g(e)g(ctions)p -Ft(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m(y)h(to)150 1308 -y(direct)31 b(input)e(and)h(output)g(from)g(and)g(to)h(named)f -(\014les,)g(and)g(ho)m(w)g(the)h(shell)g(executes)g(commands.)150 -1576 y Fr(3.1)68 b(Shell)45 b(Syn)l(tax)150 1735 y Ft(When)40 -b(the)h(shell)g(reads)f(input,)i(it)f(pro)s(ceeds)f(through)g(a)h -(sequence)g(of)g(op)s(erations.)71 b(If)40 b(the)h(input)150 -1845 y(indicates)31 b(the)f(b)s(eginning)f(of)h(a)g(commen)m(t,)h(the)f -(shell)g(ignores)g(the)g(commen)m(t)h(sym)m(b)s(ol)f(\(`)p -Fs(#)p Ft('\),)h(and)e(the)150 1954 y(rest)i(of)f(that)h(line.)275 -2112 y(Otherwise,)h(roughly)f(sp)s(eaking,)i(the)f(shell)g(reads)g(its) -g(input)f(and)h(divides)f(the)i(input)e(in)m(to)h(w)m(ords)150 -2222 y(and)23 b(op)s(erators,)j(emplo)m(ying)e(the)g(quoting)h(rules)e -(to)h(select)i(whic)m(h)d(meanings)h(to)h(assign)f(v)-5 -b(arious)23 b(w)m(ords)150 2331 y(and)30 b(c)m(haracters.)275 -2489 y(The)38 b(shell)h(then)f(parses)g(these)h(tok)m(ens)h(in)m(to)f -(commands)g(and)f(other)h(constructs,)i(remo)m(v)m(es)f(the)150 -2598 y(sp)s(ecial)31 b(meaning)f(of)g(certain)h(w)m(ords)f(or)g(c)m -(haracters,)i(expands)d(others,)h(redirects)h(input)e(and)g(output)150 -2708 y(as)d(needed,)g(executes)g(the)g(sp)s(eci\014ed)e(command,)j(w)m -(aits)f(for)f(the)g(command's)g(exit)i(status,)f(and)f(mak)m(es)150 -2818 y(that)31 b(exit)g(status)g(a)m(v)-5 b(ailable)33 -b(for)d(further)f(insp)s(ection)h(or)h(pro)s(cessing.)150 -3040 y Fj(3.1.1)63 b(Shell)41 b(Op)s(eration)150 3187 -y Ft(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 -3297 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h -(follo)m(wing:)199 3454 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(38\),)k -(from)41 b(a)i(string)330 3564 y(supplied)26 b(as)i(an)f(argumen)m(t)g -(to)h(the)g(`)p Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)i(option)f(\(see)g -(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)330 3673 y(page)j(79\),)h(or) -e(from)g(the)h(user's)f(terminal.)199 3820 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 3929 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 Fs(metacharacters)p Ft(.)36 b(Alias)330 -4039 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(87\).)199 4185 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 -4294 y(mands],)30 b(page)h(8\).)199 4441 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(20\),)330 4550 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 4660 y(pansion],)30 -b(page)h(29\))h(and)e(commands)g(and)g(argumen)m(ts.)199 -4806 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(31\))g(and)e(re-)330 -4915 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(34\).)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(37\).)p -eop end -%%Page: 6 12 -TeXDict begin 6 11 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(6)150 299 -y Fj(3.1.2)63 b(Quoting)150 446 y Ft(Quoting)32 b(is)h(used)e(to)i -(remo)m(v)m(e)h(the)e(sp)s(ecial)h(meaning)f(of)h(certain)g(c)m -(haracters)g(or)f(w)m(ords)g(to)h(the)f(shell.)150 555 -y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m -(t)h(for)e(sp)s(ecial)h(c)m(haracters,)i(to)e(prev)m(en)m(t)g(reserv)m -(ed)150 665 y(w)m(ords)i(from)g(b)s(eing)g(recognized)h(as)g(suc)m(h,)f -(and)g(to)h(prev)m(en)m(t)g(parameter)g(expansion.)275 -793 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f -(Chapter)e(2)i([De\014nitions],)h(page)f(3\))g(has)e(sp)s(ecial)i -(meaning)150 902 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g -(quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 -b(When)39 b(the)h(command)f(history)150 1012 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(135\),)47 b(the)150 1122 y Fq(history)30 -b(expansion)h Ft(c)m(haracter,)h(usually)f(`)p Fs(!)p -Ft(',)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 1231 y(Section)22 b(9.1)g([Bash)f(History)h(F) --8 b(acilities],)26 b(page)c(133,)j(for)20 b(more)h(details)h -(concerning)g(history)f(expansion.)275 1359 y(There)36 -b(are)i(three)f(quoting)g(mec)m(hanisms:)55 b(the)37 -b Fq(escap)s(e)h(c)m(haracter)7 b Ft(,)40 b(single)d(quotes,)j(and)c -(double)150 1469 y(quotes.)150 1655 y Fj(3.1.2.1)63 b(Escap)s(e)41 -b(Character)150 1802 y Ft(A)36 b(non-quoted)f(bac)m(kslash)h(`)p -Fs(\\)p Ft(')g(is)f(the)h(Bash)g(escap)s(e)f(c)m(haracter.)58 -b(It)36 b(preserv)m(es)f(the)h(literal)h(v)-5 b(alue)36 -b(of)150 1911 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i -(with)d(the)h(exception)g(of)g Fs(newline)p Ft(.)38 b(If)26 -b(a)h Fs(\\newline)d Ft(pair)i(app)s(ears,)150 2021 y(and)k(the)h(bac)m -(kslash)g(itself)g(is)g(not)g(quoted,)g(the)f Fs(\\newline)f -Ft(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h(\(that)150 -2131 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i -(and)f(e\013ectiv)m(ely)j(ignored\).)150 2317 y Fj(3.1.2.2)63 -b(Single)42 b(Quotes)150 2464 y Ft(Enclosing)24 b(c)m(haracters)h(in)e -(single)h(quotes)g(\(`)p Fs(')p Ft('\))g(preserv)m(es)g(the)f(literal)i -(v)-5 b(alue)24 b(of)g(eac)m(h)g(c)m(haracter)h(within)150 -2573 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s -(ccur)g(b)s(et)m(w)m(een)g(single)h(quotes,)f(ev)m(en)h(when)d -(preceded)i(b)m(y)g(a)150 2683 y(bac)m(kslash.)150 2869 -y Fj(3.1.2.3)63 b(Double)42 b(Quotes)150 3016 y Ft(Enclosing)24 -b(c)m(haracters)h(in)f(double)f(quotes)h(\(`)p Fs(")p -Ft('\))g(preserv)m(es)g(the)g(literal)h(v)-5 b(alue)24 -b(of)g(all)g(c)m(haracters)h(within)150 3125 y(the)34 -b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Fs($)p -Ft(',)h(`)p Fs(`)p Ft(',)g(`)p Fs(\\)p Ft(',)g(and,)f(when)f(history)g -(expansion)h(is)g(enabled,)h(`)p Fs(!)p Ft('.)150 3235 -y(The)25 b(c)m(haracters)h(`)p Fs($)p Ft(')g(and)f(`)p -Fs(`)p Ft(')g(retain)h(their)f(sp)s(ecial)h(meaning)f(within)g(double)g -(quotes)h(\(see)g(Section)g(3.5)150 3345 y([Shell)j(Expansions],)g -(page)h(20\).)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 3454 y(b)m(y)41 -b(one)f(of)h(the)g(follo)m(wing)h(c)m(haracters:)63 b(`)p -Fs($)p Ft(',)43 b(`)p Fs(`)p Ft(',)h(`)p Fs(")p Ft(',)g(`)p -Fs(\\)p Ft(',)f(or)e Fs(newline)p Ft(.)69 b(Within)41 -b(double)f(quotes,)150 3564 y(bac)m(kslashes)25 b(that)h(are)f(follo)m -(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m(haracters)h(are)f(remo)m(v)m -(ed.)40 b(Bac)m(kslashes)26 b(preceding)150 3673 y(c)m(haracters)35 -b(without)e(a)h(sp)s(ecial)f(meaning)h(are)f(left)h(unmo)s(di\014ed.)47 -b(A)34 b(double)f(quote)g(ma)m(y)h(b)s(e)f(quoted)150 -3783 y(within)h(double)h(quotes)g(b)m(y)g(preceding)g(it)g(with)g(a)g -(bac)m(kslash.)55 b(If)35 b(enabled,)h(history)f(expansion)g(will)150 -3892 y(b)s(e)f(p)s(erformed)g(unless)g(an)h(`)p Fs(!)p -Ft(')g(app)s(earing)f(in)h(double)f(quotes)i(is)f(escap)s(ed)g(using)f -(a)h(bac)m(kslash.)55 b(The)150 4002 y(bac)m(kslash)31 -b(preceding)f(the)h(`)p Fs(!)p Ft(')f(is)h(not)g(remo)m(v)m(ed.)275 -4130 y(The)41 b(sp)s(ecial)h(parameters)f(`)p Fs(*)p -Ft(')h(and)f(`)p Fs(@)p Ft(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g -(when)f(in)g(double)g(quotes)h(\(see)150 4240 y(Section)31 -b(3.5.3)h([Shell)f(P)m(arameter)h(Expansion],)e(page)h(22\).)150 -4426 y Fj(3.1.2.4)63 b(ANSI-C)40 b(Quoting)150 4573 y -Ft(W)-8 b(ords)41 b(of)h(the)f(form)g Fs($')p Fi(string)11 -b Fs(')38 b Ft(are)k(treated)g(sp)s(ecially)-8 b(.)75 -b(The)41 b(w)m(ord)g(expands)f(to)i Fq(string)8 b Ft(,)44 -b(with)150 4682 y(bac)m(kslash-escap)s(ed)g(c)m(haracters)h(replaced)f -(as)g(sp)s(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 -b(Bac)m(kslash)150 4792 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,) -h(are)g(deco)s(ded)f(as)g(follo)m(ws:)150 4938 y Fs(\\a)384 -b Ft(alert)31 b(\(b)s(ell\))150 5084 y Fs(\\b)384 b Ft(bac)m(kspace)150 -5230 y Fs(\\e)150 5340 y(\\E)g Ft(an)30 b(escap)s(e)h(c)m(haracter)h -(\(not)f(ANSI)f(C\))p eop end -%%Page: 7 13 -TeXDict begin 7 12 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 -y Fs(\\f)384 b Ft(form)30 b(feed)150 488 y Fs(\\n)384 -b Ft(newline)150 678 y Fs(\\r)g Ft(carriage)32 b(return)150 -868 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)150 1057 -y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)150 1247 y Fs(\\\\)384 -b Ft(bac)m(kslash)150 1436 y Fs(\\')g Ft(single)31 b(quote)150 -1626 y Fs(\\")384 b Ft(double)30 b(quote)150 1816 y Fs(\\)p -Fi(nnn)288 b Ft(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 Fq(nnn)e -Ft(\(one)i(to)g(three)g(digits\))150 2005 y Fs(\\x)p -Fi(HH)288 b Ft(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 -Fq(HH)46 b Ft(\(one)37 b(or)f(t)m(w)m(o)630 2115 y(hex)30 -b(digits\))150 2304 y Fs(\\u)p Fi(HHHH)192 b Ft(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 -2414 y Fq(HHHH)41 b Ft(\(one)31 b(to)g(four)f(hex)g(digits\))150 -2604 y Fs(\\U)p Fi(HHHHHHHH)630 2713 y Ft(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 2823 y Fq(HHHHHHHH)42 -b Ft(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3012 -y Fs(\\c)p Fi(x)336 b Ft(a)31 b(con)m(trol-)p Fq(x)38 -b Ft(c)m(haracter)150 3217 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 3446 y Fj(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)150 3593 y Ft(A)28 b(double-quoted)g(string)f -(preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Fs($)p -Ft('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 -3703 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 Fs(C)g -Ft(or)g Fs(POSIX)p Ft(,)f(the)h(dollar)h(sign)f(is)g(ignored.)150 -3813 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 3977 y(Some)20 -b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g -Fs(LC_MESSAGES)c Ft(shell)k(v)-5 b(ariable.)39 b(Others)150 -4087 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 Fs(TEXTDOMAIN)c Ft(shell)j(v)-5 -b(ariable,)150 4196 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p -Fs(.mo)p Ft('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Fs(TEXTDOMAIN)c -Ft(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 -4306 y(the)22 b Fs(TEXTDOMAINDIR)d Ft(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 4416 y(v)-5 b(ariables)31 -b(in)f(this)g(fashion:)41 b Fs(TEXTDOMAINDIR)p Ft(/)p -Fs(LC_MESSAGES)p Ft(/LC)p 2528 4416 28 4 v 34 w(MESSA)m(GES/)p -Fs(TEXTDOMAIN)p Ft(.mo.)150 4645 y Fj(3.1.3)63 b(Commen)m(ts)150 -4792 y Ft(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 Fs(interactive_comments) -16 b Ft(option)150 4902 y(to)40 b(the)f Fs(shopt)e Ft(builtin)h(is)h -(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e -(61\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p -Fs(#)p Ft(')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 -Fs(interactive_comments)38 b Ft(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 Fs -(interactive_comments)c Ft(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(82,)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 -TeXDict begin 8 13 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)150 299 -y Fr(3.2)68 b(Shell)45 b(Commands)150 458 y Ft(A)d(simple)g(shell)g -(command)f(suc)m(h)h(as)g Fs(echo)29 b(a)h(b)g(c)41 b -Ft(consists)i(of)f(the)f(command)h(itself)h(follo)m(w)m(ed)g(b)m(y)150 -568 y(argumen)m(ts,)31 b(separated)g(b)m(y)f(spaces.)275 -714 y(More)h(complex)h(shell)f(commands)g(are)g(comp)s(osed)g(of)g -(simple)g(commands)g(arranged)g(together)h(in)150 824 -y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 b(in)31 -b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f(command)h -(b)s(ecomes)f(the)h(input)f(of)150 933 y(a)h(second,)f(in)h(a)f(lo)s -(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g -(grouping.)150 1144 y Fj(3.2.1)63 b(Simple)41 b(Commands)150 -1291 y Ft(A)29 b(simple)f(command)g(is)h(the)g(kind)e(of)i(command)f -(encoun)m(tered)h(most)g(often.)40 b(It's)29 b(just)f(a)h(sequence)g -(of)150 1401 y(w)m(ords)22 b(separated)i(b)m(y)e Fs(blank)p -Ft(s,)i(terminated)f(b)m(y)g(one)g(of)g(the)g(shell's)g(con)m(trol)h -(op)s(erators)f(\(see)h(Chapter)f(2)150 1510 y([De\014nitions],)37 -b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i(generally)g(sp)s -(eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j(with)150 -1620 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 1766 y(The)h(return)h(status)g(\(see)i -(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(37\))g(of)g(a)g(simple)f -(command)g(is)h(its)150 1876 y(exit)38 b(status)f(as)g(pro)m(vided)f(b) -m(y)h(the)g Fl(posix)f Ft(1003.1)j Fs(waitpid)c Ft(function,)j(or)f -(128)p Fs(+)p Fq(n)g Ft(if)g(the)g(command)150 1986 y(w)m(as)31 -b(terminated)g(b)m(y)f(signal)h Fq(n)p Ft(.)150 2197 -y Fj(3.2.2)63 b(Pip)s(elines)150 2343 y Ft(A)35 b Fs(pipeline)e -Ft(is)j(a)f(sequence)h(of)f(simple)g(commands)g(separated)h(b)m(y)f -(one)g(of)h(the)f(con)m(trol)i(op)s(erators)150 2453 -y(`)p Fs(|)p Ft(')31 b(or)f(`)p Fs(|&)p Ft('.)275 2599 -y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 2746 -y Fs([time)46 b([-p]])h([!])g Fi(command1)56 b Fs([)47 -b(|)h(or)f(|&)g Fi(command2)56 b Fs(])47 b(...)150 2892 -y Ft(The)25 b(output)f(of)i(eac)m(h)g(command)f(in)f(the)i(pip)s(eline) -e(is)i(connected)g(via)f(a)h(pip)s(e)e(to)i(the)f(input)f(of)h(the)h -(next)150 3001 y(command.)40 b(That)29 b(is,)h(eac)m(h)h(command)e -(reads)g(the)h(previous)f(command's)g(output.)40 b(This)29 -b(connection)150 3111 y(is)h(p)s(erformed)f(b)s(efore)h(an)m(y)h -(redirections)g(sp)s(eci\014ed)f(b)m(y)g(the)g(command.)275 -3257 y(If)h(`)p Fs(|&)p Ft(')h(is)g(used,)f Fq(command1)7 -b Ft('s)33 b(standard)e(output)g(and)h(standard)f(error)g(are)i -(connected)f(to)h Fq(com-)150 3367 y(mand2)7 b Ft('s)27 -b(standard)f(input)h(through)f(the)h(pip)s(e;)h(it)g(is)f(shorthand)f -(for)h Fs(2>&1)i(|)p Ft(.)39 b(This)26 b(implicit)j(redirec-)150 -3477 y(tion)i(of)f(the)h(standard)f(error)f(is)i(p)s(erformed)e(after)i -(an)m(y)f(redirections)h(sp)s(eci\014ed)f(b)m(y)g(the)h(command.)275 -3623 y(The)36 b(reserv)m(ed)g(w)m(ord)g Fs(time)g Ft(causes)h(timing)g -(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h(pip)s(eline)f(once) -h(it)150 3732 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e -(consist)h(of)f(elapsed)h(\(w)m(all-clo)s(c)m(k\))i(time)e(and)f(user)f -(and)h(system)150 3842 y(time)28 b(consumed)e(b)m(y)h(the)h(command's)f -(execution.)40 b(The)27 b(`)p Fs(-p)p Ft(')g(option)h(c)m(hanges)g(the) -f(output)g(format)g(to)150 3952 y(that)34 b(sp)s(eci\014ed)e(b)m(y)h -Fl(posix)p Ft(.)49 b(When)33 b(the)g(shell)g(is)h(in)e -Fl(posix)h Ft(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150 -4061 y(Mo)s(de],)40 b(page)f(93\),)i(it)d(do)s(es)f(not)h(recognize)i -Fs(time)c Ft(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 4171 y(with)33 b(a)g(`)p Fs(-)p Ft('.)49 -b(The)33 b Fs(TIMEFORMAT)d Ft(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 -4280 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(68,)i(for)e(a)150 4390 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 Fs(time)f -Ft(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150 -4499 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s -(elines.)63 b(An)38 b(external)h Fs(time)e Ft(command)h(cannot)g(time) -150 4609 y(these)31 b(easily)-8 b(.)275 4755 y(When)29 -b(the)h(shell)h(is)f(in)f Fl(posix)g Ft(mo)s(de)h(\(see)h(Section)f -(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(93\),)g Fs(time)150 -4865 y Ft(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 4975 y(consumed)33 b(b)m(y)h(the)h -(shell)f(and)f(its)i(c)m(hildren.)51 b(The)34 b Fs(TIMEFORMAT)d -Ft(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150 -5084 y(the)c(format)f(of)h(the)f(time)h(information.)275 -5230 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m -(hronously)f(\(see)h(Section)g(3.2.3)h([Lists],)g(page)e(9\),)i(the)f -(shell)150 5340 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s -(eline)g(to)h(complete.)p eop end -%%Page: 9 15 -TeXDict begin 9 14 bop 150 -116 a Ft(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(36\).)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 Fs(pipefail)e Ft(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 -(57\).)53 b(If)34 b Fs(pipefail)e Ft(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 Fs(!)p Ft(')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 Fj(3.2.3)63 b(Lists)41 b(of)h(Commands)150 -1409 y Ft(A)37 b Fs(list)e Ft(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 Fs(;)p Ft(',)i(`)p Fs(&)p Ft(',)150 1518 y(`)p Fs(&&)p -Ft(',)31 b(or)f(`)p Fs(||)p Ft(',)g(and)g(optionally)i(terminated)f(b)m -(y)f(one)h(of)f(`)p Fs(;)p Ft(',)h(`)p Fs(&)p Ft(',)g(or)f(a)h -Fs(newline)p Ft(.)275 1651 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p -Fs(&&)p Ft(')d(and)g(`)p Fs(||)p Ft(')h(ha)m(v)m(e)h(equal)f -(precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Fs(;)p Ft(')g(and)f(`)p -Fs(&)p Ft(',)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 -(app)s(ear)f(in)h(a)g Fs(list)e Ft(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 -(is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p -Fs(&)p Ft(',)h(the)e(shell)h(executes)h(the)f(command)150 -2245 y(async)m(hronously)g(in)g(a)h(subshell.)39 b(This)28 -b(is)g(kno)m(wn)g(as)h(executing)h(the)e(command)h(in)f(the)g -Fq(bac)m(kground)t Ft(.)150 2355 y(The)g(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)g(con)m(trol)h -(is)g(not)f(activ)m(e)i(\(see)f(Chapter)f(7)h([Job)f(Con)m(trol],)j -(page)e(97\),)j(the)d(standard)e(input)g(for)150 2574 -y(async)m(hronous)k(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 Fs(/dev/null)p Ft(.)275 2816 y(Commands)19 b(separated)j(b)m(y)f -(a)g(`)p Fs(;)p Ft(')g(are)h(executed)g(sequen)m(tially;)k(the)21 -b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150 2926 -y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i(is)f -(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275 -3059 y Fl(and)g Ft(and)h Fl(or)g Ft(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 Fs(&&)p Ft(')f(and)g(`)p -Fs(||)p Ft(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fl(and)30 -b Ft(and)f Fl(or)h Ft(lists)h(are)g(executed)g(with)f(left)h(asso)s -(ciativit)m(y)-8 b(.)275 3301 y(An)30 b Fl(and)f Ft(list)i(has)f(the)h -(form)390 3434 y Fi(command1)56 b Fs(&&)47 b Fi(command2)150 -3566 y Fq(command2)38 b Ft(is)30 b(executed)i(if,)e(and)g(only)g(if,)h -Fq(command1)38 b Ft(returns)29 b(an)h(exit)h(status)g(of)g(zero.)275 -3699 y(An)f Fl(or)f Ft(list)i(has)f(the)h(form)390 3832 -y Fi(command1)56 b Fs(||)47 b Fi(command2)150 3965 y -Fq(command2)38 b Ft(is)30 b(executed)i(if,)e(and)g(only)g(if,)h -Fq(command1)38 b Ft(returns)29 b(a)i(non-zero)g(exit)g(status.)275 -4097 y(The)h(return)g(status)i(of)f Fl(and)f Ft(and)h -Fl(or)f Ft(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 Fj(3.2.4)63 b(Comp)s(ound)42 b(Commands)150 4550 y -Ft(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(31\))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 -eop end -%%Page: 10 16 -TeXDict begin 10 15 bop 150 -116 a Ft(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 -(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 Fj(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150 -756 y Ft(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 -Fs(;)p Ft(')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 Fs(until)240 b Ft(The)30 -b(syn)m(tax)h(of)f(the)h Fs(until)e Ft(command)h(is:)870 -1297 y Fs(until)46 b Fi(test-commands)11 b Fs(;)44 b(do)j -Fi(consequent-commands)11 b Fs(;)42 b(done)630 1432 y -Ft(Execute)g Fq(consequen)m(t-commands)k Ft(as)41 b(long)h(as)f -Fq(test-commands)46 b Ft(has)41 b(an)g(exit)h(status)630 -1542 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 Fq(consequen)m(t-commands)t -Ft(,)h(or)g(zero)g(if)f(none)h(w)m(as)f(executed.)150 -1812 y Fs(while)240 b Ft(The)30 b(syn)m(tax)h(of)f(the)h -Fs(while)e Ft(command)h(is:)870 1947 y Fs(while)46 b -Fi(test-commands)11 b Fs(;)44 b(do)j Fi(consequent-commands)11 -b Fs(;)42 b(done)630 2082 y Ft(Execute)g Fq(consequen)m(t-commands)k -Ft(as)41 b(long)h(as)f Fq(test-commands)46 b Ft(has)41 -b(an)g(exit)h(status)630 2192 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 Fq(consequen)m(t-commands)t -Ft(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150 -2462 y Fs(for)336 b Ft(The)30 b(syn)m(tax)h(of)f(the)h -Fs(for)e Ft(command)i(is:)870 2597 y Fs(for)47 b Fi(name)57 -b Fs([)48 b([in)e([)p Fi(words)57 b Fs(...)o(])48 b(])f(;)h(])f(do)g -Fi(commands)11 b Fs(;)45 b(done)630 2732 y Ft(Expand)31 -b Fq(w)m(ords)t Ft(,)i(and)e(execute)j Fq(commands)i -Ft(once)d(for)f(eac)m(h)i(mem)m(b)s(er)e(in)g(the)g(resultan)m(t)630 -2841 y(list,)d(with)f Fq(name)33 b Ft(b)s(ound)26 b(to)j(the)f(curren)m -(t)g(mem)m(b)s(er.)40 b(If)27 b(`)p Fs(in)j Fi(words)11 -b Ft(')27 b(is)h(not)g(presen)m(t,)h(the)630 2951 y Fs(for)g -Ft(command)g(executes)i(the)e Fq(commands)k Ft(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 -Fs(in)j("$@")p Ft(')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(19\).)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)37 b(there)h(are)g(no) -g(items)g(in)g(the)g(expansion)g(of)f Fq(w)m(ords)t Ft(,)j(no)d -(commands)h(are)g(executed,)630 3389 y(and)30 b(the)g(return)g(status)g -(is)h(zero.)630 3524 y(An)f(alternate)i(form)e(of)h(the)f -Fs(for)g Ft(command)g(is)g(also)h(supp)s(orted:)870 3659 -y Fs(for)47 b(\(\()g Fi(expr1)57 b Fs(;)47 b Fi(expr2)57 -b Fs(;)48 b Fi(expr3)57 b Fs(\)\))47 b(;)g(do)g Fi(commands)57 -b Fs(;)47 b(done)630 3794 y Ft(First,)38 b(the)f(arithmetic)h -(expression)e Fq(expr1)43 b Ft(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 -(86\).)77 b(The)42 b(arithmetic)630 4014 y(expression)33 -b Fq(expr2)41 b Ft(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 Fq(expr2)30 -b Ft(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h(v)-5 b(alue,)25 -b Fq(commands)h Ft(are)d(executed)g(and)g(the)g(arith-)630 -4233 y(metic)29 b(expression)f Fq(expr3)36 b Ft(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 -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 Fq(commands)j Ft(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 Fs(break)g Ft(and)h Fs(continue)e Ft(builtins)i(\(see)h -(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(40\))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 Fj(3.2.4.2)63 b(Conditional)42 b(Constructs)150 -5095 y Fs(if)384 b Ft(The)30 b(syn)m(tax)h(of)f(the)h -Fs(if)f Ft(command)g(is:)870 5230 y Fs(if)47 b Fi(test-commands)11 -b Fs(;)44 b(then)965 5340 y Fi(consequent-commands)11 -b Fs(;)p eop end -%%Page: 11 17 -TeXDict begin 11 16 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)870 299 -y Fs([elif)46 b Fi(more-test-commands)11 b Fs(;)42 b(then)965 -408 y Fi(more-consequents)11 b Fs(;])870 518 y([else)46 -b Fi(alternate-consequents)11 b Fs(;])870 628 y(fi)630 -757 y Ft(The)53 b Fq(test-commands)58 b Ft(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 Fq(consequen)m(t-commands)44 b Ft(list)d(is)f -(executed.)70 b(If)40 b Fq(test-commands)k Ft(returns)39 -b(a)h(non-zero)630 976 y(status,)45 b(eac)m(h)e Fs(elif)d -Ft(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 -Fq(more-consequen)m(ts)42 b Ft(is)c(executed)g(and)f(the)h(command)g -(completes.)63 b(If)630 1196 y(`)p Fs(else)29 b Fi -(alternate-consequents)11 b Ft(')23 b(is)30 b(presen)m(t,)f(and)g(the)g -(\014nal)g(command)f(in)h(the)g(\014nal)630 1305 y Fs(if)44 -b Ft(or)g Fs(elif)f Ft(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j -(then)c Fq(alternate-consequen)m(ts)51 b Ft(is)630 1415 -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 Fs(case)288 b -Ft(The)30 b(syn)m(tax)h(of)f(the)h Fs(case)e Ft(command)h(is:)870 -1803 y Fs(case)47 b Fi(word)57 b Fs(in)47 b([)g([\(])g -Fi(pattern)57 b Fs([|)47 b Fi(pattern)11 b Fs(]...)l(\))48 -b Fi(command-list)55 b Fs(;;]...)46 b(esac)630 1933 y(case)20 -b Ft(will)i(selectiv)m(ely)j(execute)e(the)e Fq(command-list)k -Ft(corresp)s(onding)20 b(to)i(the)g(\014rst)f Fq(pattern)630 -2042 y Ft(that)42 b(matc)m(hes)g Fq(w)m(ord)t Ft(.)71 -b(If)41 b(the)g(shell)g(option)g Fs(nocasematch)d Ft(\(see)k(the)f -(description)g(of)630 2152 y Fs(shopt)34 b Ft(in)h(Section)h(4.3.2)h -([The)e(Shopt)f(Builtin],)k(page)e(61\))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 Fs(|)p Ft(')h(is)g(used)630 2371 y(to)e(separate)g(m)m(ultiple)g -(patterns,)g(and)e(the)i(`)p Fs(\))p Ft(')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 -Fq(clause)5 b Ft(.)630 2610 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g -(terminated)h(with)e(`)p Fs(;;)p Ft(',)45 b(`)p Fs(;&)p -Ft(',)f(or)d(`)p Fs(;;&)p Ft('.)73 b(The)41 b Fq(w)m(ord)j -Ft(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 Fq(pattern)630 2939 y Ft(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 Fs(case)f Ft(clauses,)i(eac)m -(h)g(terminated)g(b)m(y)e(a)i(`)p Fs(;;)p Ft(',)630 3288 -y(`)p Fs(;&)p Ft(',)c(or)e(`)p Fs(;;&)p Ft('.)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 b(executed.)55 -b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p Fs(*)p -Ft(')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 -Fs(case)g Ft(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 Fs(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 Ft(If)25 -b(the)h(`)p Fs(;;)p Ft(')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 Fs(;&)p -Ft(')f(in)h(place)g(of)g(`)p Fs(;;)p Ft(')g(causes)g(execution)h(to)f -(con)m(tin)m(ue)h(with)f(the)630 5121 y Fq(command-list)39 -b Ft(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 Fs(;;&)p Ft(')f(in)g(place)h(of)630 -5230 y(`)p Fs(;;)p Ft(')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 -Fq(command-list)h Ft(on)d(a)h(successful)f(matc)m(h.)p -eop end -%%Page: 12 18 -TeXDict begin 12 17 bop 150 -116 a Ft(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 Fq(pattern)g -Ft(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 Fq(command-list)i -Ft(executed.)150 564 y Fs(select)630 697 y Ft(The)g Fs(select)f -Ft(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 -Fs(for)e Ft(command:)870 939 y Fs(select)46 b Fi(name)57 -b Fs([in)47 b Fi(words)57 b Fs(...)o(];)47 b(do)h Fi(commands)11 -b Fs(;)44 b(done)630 1072 y Ft(The)d(list)i(of)e(w)m(ords)h(follo)m -(wing)h Fs(in)e Ft(is)h(expanded,)i(generating)f(a)f(list)g(of)g -(items.)75 b(The)630 1181 y(set)41 b(of)f(expanded)f(w)m(ords)g(is)i -(prin)m(ted)e(on)h(the)g(standard)f(error)h(output)g(stream,)j(eac)m(h) -630 1291 y(preceded)30 b(b)m(y)g(a)h(n)m(um)m(b)s(er.)40 -b(If)29 b(the)i(`)p Fs(in)f Fi(words)11 b Ft(')29 b(is)h(omitted,)i -(the)e(p)s(ositional)i(parameters)630 1401 y(are)22 b(prin)m(ted,)h(as) -f(if)f(`)p Fs(in)30 b("$@")p Ft(')21 b(had)g(b)s(een)f(sp)s(eci\014ed.) -37 b(The)21 b Fs(PS3)g Ft(prompt)g(is)g(then)g(displa)m(y)m(ed)630 -1510 y(and)38 b(a)h(line)g(is)f(read)h(from)f(the)h(standard)e(input.) -65 b(If)38 b(the)h(line)g(consists)g(of)f(a)h(n)m(um)m(b)s(er)630 -1620 y(corresp)s(onding)33 b(to)i(one)f(of)g(the)g(displa)m(y)m(ed)h(w) -m(ords,)f(then)g(the)g(v)-5 b(alue)34 b(of)h Fq(name)k -Ft(is)34 b(set)g(to)630 1729 y(that)g(w)m(ord.)49 b(If)32 -b(the)i(line)f(is)h(empt)m(y)-8 b(,)35 b(the)e(w)m(ords)g(and)f(prompt) -h(are)g(displa)m(y)m(ed)h(again.)50 b(If)630 1839 y Fs(EOF)23 -b Ft(is)g(read,)j(the)d Fs(select)f Ft(command)i(completes.)40 -b(An)m(y)23 b(other)h(v)-5 b(alue)24 b(read)g(causes)g -Fq(name)630 1948 y Ft(to)31 b(b)s(e)f(set)h(to)g(n)m(ull.)41 -b(The)29 b(line)i(read)f(is)h(sa)m(v)m(ed)g(in)f(the)h(v)-5 -b(ariable)31 b Fs(REPLY)p Ft(.)630 2081 y(The)42 b Fq(commands)j -Ft(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h -Fs(break)d Ft(command)i(is)630 2191 y(executed,)32 b(at)f(whic)m(h)f(p) -s(oin)m(t)g(the)h Fs(select)d Ft(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 -(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 Fs(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 Fi(expression)56 -b Fs(\)\))630 3425 y Ft(The)33 b(arithmetic)i Fq(expression)f -Ft(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(86\).)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 -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 Fs(let)47 b(")p Fi(expression)11 -b Fs(")630 4019 y Ft(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i -(page)f(47,)i(for)c(a)i(full)f(description)g(of)g(the)h -Fs(let)e Ft(builtin.)150 4175 y Fs([[...)o(]])870 4308 -y([[)47 b Fi(expression)56 b Fs(]])630 4440 y Ft(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 Fq(expression)p Ft(.)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(84.)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 Fs([[)g Ft(and)f -Fs(]])p Ft(;)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 -Fs(-f)p Ft(')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 Fs([[)p -Ft(,)h(the)f(`)p Fs(<)p Ft(')g(and)g(`)p Fs(>)p Ft(')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 -%%Page: 13 19 -TeXDict begin 13 18 bop 150 -116 a Ft(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 Fs(==)p Ft(')f(and)g(`)p Fs(!=)p -Ft(')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)23 b(3.5.8.1)i([P)m(attern)f(Matc)m -(hing],)i(page)d(29.)39 b(The)22 b(`)p Fs(=)p Ft(')g(op)s(erator)h(is)f -(iden)m(tical)j(to)e(`)p Fs(==)p Ft('.)630 628 y(If)33 -b(the)h(shell)g(option)g Fs(nocasematch)c Ft(\(see)35 -b(the)f(description)f(of)h Fs(shopt)e Ft(in)i(Section)g(4.3.2)630 -737 y([The)23 b(Shopt)g(Builtin],)j(page)e(61\))h(is)e(enabled,)i(the)f -(matc)m(h)g(is)g(p)s(erformed)e(without)h(regard)630 -847 y(to)28 b(the)g(case)g(of)g(alphab)s(etic)f(c)m(haracters.)42 -b(The)26 b(return)h(v)-5 b(alue)28 b(is)f(0)h(if)f(the)g(string)h(matc) -m(hes)630 956 y(\(`)p Fs(==)p Ft('\))36 b(or)g(do)s(es)g(not)g(matc)m -(h)h(\(`)p Fs(!=)p Ft('\)the)f(pattern,)i(and)d(1)h(otherwise.)58 -b(An)m(y)36 b(part)g(of)g(the)630 1066 y(pattern)30 b(ma)m(y)h(b)s(e)f -(quoted)h(to)g(force)g(the)f(quoted)h(p)s(ortion)f(to)h(b)s(e)f(matc)m -(hed)h(as)f(a)h(string.)630 1207 y(An)i(additional)i(binary)e(op)s -(erator,)i(`)p Fs(=~)p Ft(',)g(is)f(a)m(v)-5 b(ailable,)37 -b(with)c(the)h(same)g(precedence)h(as)630 1316 y(`)p -Fs(==)p Ft(')29 b(and)f(`)p Fs(!=)p Ft('.)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 1426 y(ered)34 b(an)g(extended)g(regular)g -(expression)g(and)f(matc)m(hed)i(accordingly)g(\(as)f(in)g -Fk(r)-5 b(e)g(gex)11 b Ft(3\)\).)630 1536 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 1645 y(regular)e(expression) -g(is)h(syn)m(tactically)i(incorrect,)f(the)e(conditional)i -(expression's)e(return)630 1755 y(v)-5 b(alue)40 b(is)g(2.)68 -b(If)39 b(the)h(shell)f(option)h Fs(nocasematch)d Ft(\(see)j(the)g -(description)g(of)f Fs(shopt)f Ft(in)630 1864 y(Section)32 -b(4.3.2)g([The)f(Shopt)f(Builtin],)i(page)g(61\))g(is)f(enabled,)g(the) -g(matc)m(h)h(is)e(p)s(erformed)630 1974 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 2084 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 -2193 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 -2303 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 -2412 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 -2522 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 -2632 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 Fs(BASH_REMATCH)p -Ft(.)630 2741 y(The)30 b(elemen)m(t)i(of)e Fs(BASH_REMATCH)d -Ft(with)j(index)g(0)h(is)g(the)f(p)s(ortion)g(of)h(the)f(string)h(matc) -m(h-)630 2851 y(ing)j(the)g(en)m(tire)g(regular)g(expression.)50 -b(The)34 b(elemen)m(t)h(of)f Fs(BASH_REMATCH)c Ft(with)j(index)g -Fq(n)630 2960 y Ft(is)d(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m -(hing)i(the)e Fq(n)p Ft(th)g(paren)m(thesized)h(sub)s(expression.)630 -3101 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 Fq(line)5 b Ft(\))28 b(if)630 3211 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 3320 y(zero,)31 -b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f(instances)h(of)g(`)p -Fs(a)p Ft(',)f(then)g(a)h(`)p Fs(b)p Ft(':)870 3461 y -Fs([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c(]])630 -3602 y Ft(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p -Fs(aab)p Ft(')e(and)h(`)30 b Fs(aaaaaab)p Ft(')22 b(will)i(matc)m(h,)j -(as)d(will)g(a)g(line)g(con)m(taining)630 3712 y(a)31 -b(`)p Fs(b)p Ft(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630 -3853 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 3962 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 -4072 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 -4181 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 -4291 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 4401 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 4542 y Fs(pattern='[[:space:]]*\(a\))o -(?b')870 4651 y([[)47 b($line)g(=~)g($pattern)e(]])630 -4792 y Ft(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 4902 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 5011 y(pattern)e(`)p Fs(xxx.txt)p Ft(',)g(the)h(`)p -Fs(.)p Ft(')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 5121 y(expression)g(meaning\),)i(but)e(in) -g(the)h(pattern)f(`)p Fs("xxx.txt")p Ft(')f(it)i(can)g(only)f(matc)m(h) -i(a)e(literal)630 5230 y(`)p Fs(.)p Ft('.)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 5340 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)p eop end -%%Page: 14 20 -TeXDict begin 14 19 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299 -y(meaning)28 b(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 -408 y Fk(not)40 b Ft(equiv)-5 b(alen)m(t:)870 544 y Fs(pattern='\\.') -870 764 y([[)47 b(.)h(=~)f($pattern)e(]])870 873 y([[)i(.)h(=~)f(\\.)g -(]])870 1092 y([[)g(.)h(=~)f("$pattern")e(]])870 1202 -y([[)i(.)h(=~)f('\\.')f(]])630 1338 y Ft(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 1447 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 1557 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 Fs(.)p Ft(',)h(so)g(the)630 1667 -y(literal)f(`)p Fs(.)p Ft(')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 1776 y(`)p Fs(.)p Ft(',)g(sa)m(y)g(`)p -Fs(a)p Ft(',)g(the)f(pattern)g(w)m(ould)g(not)h(matc)m(h,)h(b)s(ecause) -e(the)g(quoted)g(`)p Fs(.)p Ft(')h(in)e(the)i(pattern)630 -1886 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 2022 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 2131 y(order)30 b(of)g(precedence:)630 -2293 y Fs(\()g Fi(expression)38 b Fs(\))1110 2403 y Ft(Returns)30 -b(the)h(v)-5 b(alue)31 b(of)g Fq(expression)p Ft(.)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 -2513 y(normal)e(precedence)h(of)g(op)s(erators.)630 2675 -y Fs(!)f Fi(expression)1110 2784 y Ft(T)-8 b(rue)30 b(if)g -Fq(expression)g Ft(is)h(false.)630 2947 y Fi(expression1)38 -b Fs(&&)30 b Fi(expression2)1110 3056 y Ft(T)-8 b(rue)30 -b(if)g(b)s(oth)g Fq(expression1)38 b Ft(and)29 b Fq(expression2)38 -b Ft(are)31 b(true.)630 3218 y Fi(expression1)38 b Fs(||)30 -b Fi(expression2)1110 3328 y Ft(T)-8 b(rue)30 b(if)g(either)h -Fq(expression1)38 b Ft(or)30 b Fq(expression2)38 b Ft(is)30 -b(true.)630 3490 y(The)25 b Fs(&&)g Ft(and)g Fs(||)f -Ft(op)s(erators)i(do)f(not)h(ev)-5 b(aluate)27 b Fq(expression2)33 -b Ft(if)26 b(the)f(v)-5 b(alue)26 b(of)g Fq(expression1)630 -3600 y Ft(is)k(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 -3802 y Fj(3.2.4.3)63 b(Grouping)43 b(Commands)150 3949 -y Ft(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 4058 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 4168 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 4332 y Fs(\(\))870 4468 y(\()47 -b Fi(list)58 b Fs(\))630 4603 y Ft(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 4713 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(36\),)630 -4823 y(and)d(eac)m(h)i(of)e(the)h(commands)f(in)g Fq(list)j -Ft(to)f(b)s(e)e(executed)h(in)f(that)h(subshell.)39 b(Since)28 -b(the)f Fq(list)630 4932 y Ft(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 5042 y(subshell)g(completes.)150 5204 -y Fs({})870 5340 y({)47 b Fi(list)11 b Fs(;)46 b(})p -eop end -%%Page: 15 21 -TeXDict begin 15 20 bop 150 -116 a Ft(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 -(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 -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 Fq(list)h Ft(is)d(required.)275 -693 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 -803 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 Fs(reserved)28 b(words)p Ft(,)40 -b(so)g(they)f(m)m(ust)150 912 y(b)s(e)d(separated)h(from)f(the)g -Fq(list)j Ft(b)m(y)e Fs(blank)p Ft(s)e(or)h(other)h(shell)f(metac)m -(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 1022 -y Fs(operators)p Ft(,)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 1131 y(from)30 b(the)g Fq(list)j Ft(b)m(y)e(whitespace.) -275 1276 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 Fq(list)r -Ft(.)150 1486 y Fj(3.2.5)63 b(Copro)s(cesses)150 1633 -y Ft(A)37 b Fs(coprocess)c Ft(is)k(a)g(shell)f(command)h(preceded)f(b)m -(y)g(the)h Fs(coproc)d Ft(reserv)m(ed)j(w)m(ord.)59 b(A)36 -b(copro)s(cess)h(is)150 1742 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 1852 y(`)p Fs(&)p Ft(')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 1962 y(copro)s(cess.)275 -2106 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 -2251 y Fs(coproc)46 b([)p Fi(NAME)11 b Fs(])46 b Fi(command)56 -b Fs([)p Fi(redirections)11 b Fs(])150 2396 y Ft(This)41 -b(creates)i(a)g(copro)s(cess)f(named)f Fq(NAME)5 b Ft(.)43 -b(If)f Fq(NAME)47 b Ft(is)42 b(not)g(supplied,)i(the)e(default)g(name)g -(is)150 2506 y Fq(COPR)m(OC)8 b Ft(.)22 b Fq(NAME)29 -b Ft(m)m(ust)23 b(not)g(b)s(e)g(supplied)e(if)i Fq(command)k -Ft(is)c(a)g(simple)g(command)g(\(see)h(Section)g(3.2.1)150 -2615 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 -2725 y(command.)275 2870 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 2979 y([Arra)m(ys],)32 -b(page)g(88\))h(named)e Fs(NAME)f Ft(in)h(the)h(con)m(text)h(of)e(the)h -(executing)g(shell.)44 b(The)31 b(standard)f(output)150 -3089 y(of)g Fq(command)j Ft(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 3199 y(descriptor)i(is)f(assigned)h(to)g -Fs(NAME)p Ft([0].)45 b(The)31 b(standard)g(input)f(of)i -Fq(command)j Ft(is)d(connected)h(via)f(a)g(pip)s(e)150 -3308 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 -Fs(NAME)p Ft([1].)150 3418 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 3527 y([Redirections],)25 -b(page)e(31\).)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 -3637 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 3746 y(subshells.)275 3891 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 4001 y(the)k(v)-5 b(ariable)33 b Fs(NAME)p -850 4001 28 4 v 39 w Ft(PID.)g(The)f Fs(wait)f Ft(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 -4110 y(to)e(terminate.)275 4255 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 -Fs(coproc)d Ft(command)i(alw)m(a)m(ys)150 4365 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 Fq(command)t Ft(.)150 4575 -y Fj(3.2.6)63 b(GNU)41 b(P)m(arallel)150 4721 y Ft(GNU)36 -b(P)m(arallel,)k(as)c(its)g(name)g(suggests,)i(can)e(b)s(e)f(used)g(to) -h(build)f(and)g(run)g(commands)g(in)h(parallel.)150 4831 -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 4941 y(usernames,)30 b(hostnames,)h(or)f(lines)h -(read)f(from)g(\014les.)275 5086 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 5195 y(should)d(pro)m(vide)i(a) -g(brief)e(in)m(tro)s(duction)i(to)g(its)g(use.)275 5340 -y(F)-8 b(or)31 b(example,)g(it)g(is)f(easy)h(to)g(pre\014x)f(eac)m(h)h -(line)g(in)f(a)h(text)g(\014le)g(with)f(a)g(sp)s(eci\014ed)g(string:)p -eop end -%%Page: 16 22 -TeXDict begin 16 21 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)390 299 -y Fs(cat)47 b(file)g(|)g(parallel)f(-k)h(echo)f(prefix_string)150 -435 y Ft(The)30 b(`)p Fs(-k)p Ft(')g(option)h(is)f(required)g(to)h -(preserv)m(e)g(the)f(lines')h(order.)275 572 y(Similarly)-8 -b(,)31 b(y)m(ou)g(can)f(app)s(end)f(a)i(sp)s(eci\014ed)e(string)i(to)g -(eac)m(h)g(line)g(in)f(a)h(text)g(\014le:)390 708 y Fs(cat)47 -b(file)g(|)g(parallel)f(-k)h(echo)f({})i(append_string)275 -845 y Ft(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 954 y(is)c(to)s(o)i(large)f(to)g(pro)s(cess) -f(with)g(one)h Fs(mv)f Ft(in)m(v)m(o)s(cation:)390 1091 -y Fs(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275 1227 -y Ft(As)35 b(y)m(ou)h(can)f(see,)j(the)d Fs({})g Ft(is)g(replaced)h -(with)f(eac)m(h)i(line)f(read)f(from)g(standard)f(input.)55 -b(This)35 b(will)150 1337 y(run)f(as)h(man)m(y)g Fs(mv)g -Ft(commands)g(as)g(there)h(are)f(\014les)g(in)g(the)h(curren)m(t)f -(directory)-8 b(.)56 b(Y)-8 b(ou)35 b(can)h(em)m(ulate)h(a)150 -1446 y(parallel)31 b Fs(xargs)e Ft(b)m(y)i(adding)f(the)g(`)p -Fs(-X)p Ft(')g(option:)390 1583 y Fs(ls)47 b(|)h(parallel)d(-X)i(mv)h -({})f(destdir)275 1719 y Ft(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 1829 y(\(in)e(this)h(case,)g(\014lenames\):)390 -1966 y Fs(for)47 b(x)g(in)h($\(cat)e(list\);)g(do)390 -2075 y(do-something1)e($x)j(config-$x)390 2185 y(do-something2)d(<)k -($x)390 2294 y(done)f(|)g(process-output)150 2431 y Ft(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 2567 y Fs(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 -2704 y Ft(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 2813 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g -(renaming:)390 2950 y Fs(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h -({})g(|)g(bzip2)g(>{.}.bz2)e(&&)j(rm)f({}")150 3086 y -Ft(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 -3196 y(running)g(one)h(job)g(p)s(er)g(CPU)g(\(-j)p Fs(+)p -Ft(0\))h(in)f(parallel.)275 3332 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 3442 y(F)-8 b(or)31 -b(instance,)g(the)g(follo)m(wing)h(command)390 3578 y -Fs({)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 -3715 y Ft(will)28 b(displa)m(y)g(as)f(output)g(the)h(traceroute)h(in)m -(v)m(o)s(cation)h(that)e(\014nishes)e(\014rst.)39 b(Using)28 -b(the)g(`)p Fs(-k)p Ft(')f(option,)i(as)150 3824 y(w)m(e)i(sa)m(w)g(ab) -s(o)m(v)m(e)390 3961 y Fs({)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 4097 y Ft(will)31 b(ensure)e(that)i(the)g(output)f(of)g -Fs(traceroute)e(foss.org.my)f Ft(is)k(displa)m(y)m(ed)g(\014rst.)150 -4333 y Fr(3.3)68 b(Shell)45 b(F)-11 b(unctions)150 4492 -y Ft(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 4602 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e) -h(a)g Fs(")p Ft(regular)p Fs(")f Ft(command.)54 b(When)35 -b(the)h(name)f(of)g(a)h(shell)150 4711 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 4821 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 4931 y(pro)s(cess)30 -b(is)g(created)i(to)f(in)m(terpret)g(them.)275 5067 y(F)-8 -b(unctions)30 b(are)h(declared)g(using)f(this)g(syn)m(tax:)390 -5204 y Fi(name)57 b Fs(\(\))47 b Fi(compound-command)54 -b Fs([)48 b Fi(redirections)55 b Fs(])275 5340 y Ft(or)p -eop end -%%Page: 17 23 -TeXDict begin 17 22 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)390 299 -y Fs(function)46 b Fi(name)57 b Fs([\(\)])46 b Fi(compound-command)54 -b Fs([)48 b Fi(redirections)55 b Fs(])275 445 y Ft(This)31 -b(de\014nes)h(a)g(shell)h(function)f(named)g Fq(name)5 -b Ft(.)47 b(The)32 b(reserv)m(ed)h(w)m(ord)f Fs(function)e -Ft(is)i(optional.)48 b(If)150 555 y(the)39 b Fs(function)f -Ft(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 Fq(b)s(o)s(dy)45 b Ft(of)40 -b(the)150 664 y(function)h(is)h(the)g(comp)s(ound)e(command)h -Fq(comp)s(ound-command)j Ft(\(see)e(Section)h(3.2.4)g([Comp)s(ound)150 -774 y(Commands],)33 b(page)g(9\).)48 b(That)33 b(command)g(is)f -(usually)h(a)g Fq(list)i Ft(enclosed)e(b)s(et)m(w)m(een)h -Fs({)e Ft(and)g Fs(})p Ft(,)h(but)f(ma)m(y)150 883 y(b)s(e)27 -b(an)m(y)h(comp)s(ound)e(command)h(listed)h(ab)s(o)m(v)m(e.)41 -b Fq(comp)s(ound-command)30 b Ft(is)e(executed)g(whenev)m(er)g -Fq(name)150 993 y Ft(is)j(sp)s(eci\014ed)f(as)g(the)h(name)g(of)g(a)g -(command.)41 b(When)31 b(the)f(shell)h(is)g(in)f Fl(posix)g -Ft(mo)s(de)g(\(see)i(Section)f(6.11)150 1103 y([Bash)36 -b(POSIX)f(Mo)s(de],)j(page)e(93\),)j Fq(name)i Ft(ma)m(y)36 -b(not)h(b)s(e)e(the)h(same)g(as)g(one)g(of)g(the)g(sp)s(ecial)h -(builtins)150 1212 y(\(see)24 b(Section)g(4.4)g([Sp)s(ecial)g -(Builtins],)h(page)f(67\).)40 b(An)m(y)23 b(redirections)h(\(see)g -(Section)g(3.6)g([Redirections],)150 1322 y(page)31 b(31\))h(asso)s -(ciated)g(with)e(the)g(shell)h(function)f(are)h(p)s(erformed)d(when)i -(the)g(function)g(is)h(executed.)275 1468 y(A)41 b(function)f -(de\014nition)h(ma)m(y)g(b)s(e)g(deleted)g(using)g(the)g(`)p -Fs(-f)p Ft(')g(option)g(to)h(the)f Fs(unset)e Ft(builtin)i(\(see)150 -1577 y(Section)31 b(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(40\).) -275 1724 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 1833 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 1943 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 -2089 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 -2198 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 Fs(blank)p -Ft(s)f(or)h(newlines.)62 b(This)150 2308 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 2418 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 2527 -y(using)i(the)g(braces,)h(the)g Fq(list)i Ft(m)m(ust)d(b)s(e)g -(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p Fs(&)p -Ft(',)h(or)g(a)f(newline.)275 2673 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 2783 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 2892 y(sp)s(ecial)37 -b(parameter)f(`)p Fs(#)p Ft(')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 -3002 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35 -b(parameter)h Fs(0)f Ft(is)g(unc)m(hanged.)54 b(The)35 -b(\014rst)f(elemen)m(t)j(of)e(the)g Fs(FUNCNAME)150 3112 -y Ft(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 -3258 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 3367 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 -b(the)36 b Fs(DEBUG)d Ft(and)h Fs(RETURN)g Ft(traps)g(are)i(not)f -(inherited)f(unless)h(the)150 3477 y(function)26 b(has)g(b)s(een)f(giv) -m(en)i(the)g Fs(trace)d Ft(attribute)j(using)f(the)g -Fs(declare)e Ft(builtin)i(or)g(the)h Fs(-o)i(functrace)150 -3587 y Ft(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g -Fs(set)f Ft(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f(functions)e -(inherit)h(the)g Fs(DEBUG)150 3696 y Ft(and)33 b Fs(RETURN)f -Ft(traps\),)j(and)e(the)h Fs(ERR)f Ft(trap)h(is)g(not)g(inherited)f -(unless)g(the)h Fs(-o)c(errtrace)h Ft(shell)j(option)150 -3806 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(40,)i(for)c(the)i(description)f(of)150 -3915 y(the)c Fs(trap)e Ft(builtin.)275 4061 y(The)38 -b Fs(FUNCNEST)f Ft(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 -4171 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 4281 y(to)31 b(ab)s(ort.)275 -4427 y(If)37 b(the)g(builtin)g(command)h Fs(return)d -Ft(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h -(and)150 4536 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 4646 y(with)36 b(the)h Fs(RETURN)d Ft(trap)i(is)h(executed) -g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g -(completes,)150 4756 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 -Fs(#)p Ft(')g(are)h(restored)f(to)h(the)150 4865 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 -Fs(return)p Ft(,)150 4975 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 5084 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Fs(return)p Ft(.)275 5230 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 Fs(local)f Ft(builtin.)40 b(These)29 b(v)-5 b(ariables)150 -5340 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.)p eop end -%%Page: 18 24 -TeXDict begin 18 23 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299 -y(F)-8 b(unction)47 b(names)g(and)f(de\014nitions)g(ma)m(y)h(b)s(e)f -(listed)i(with)e(the)h(`)p Fs(-f)p Ft(')f(option)i(to)f(the)g -Fs(declare)150 408 y Ft(\()p Fs(typeset)p Ft(\))39 b(builtin)i(command) -f(\(see)i(Section)f(4.2)h([Bash)f(Builtins],)j(page)d(47\).)73 -b(The)40 b(`)p Fs(-F)p Ft(')g(option)150 518 y(to)29 -b Fs(declare)d Ft(or)i Fs(typeset)f Ft(will)h(list)h(the)f(function)g -(names)h(only)f(\(and)g(optionally)h(the)g(source)f(\014le)h(and)150 -628 y(line)k(n)m(um)m(b)s(er,)g(if)f(the)h Fs(extdebug)e -Ft(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 737 y(subshells)f -(automatically)37 b(ha)m(v)m(e)d(them)g(de\014ned)e(with)h(the)g(`)p -Fs(-f)p Ft(')h(option)g(to)g(the)f Fs(export)f Ft(builtin)h(\(see)150 -847 y(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(40\).)47 -b(Note)33 b(that)g(shell)f(functions)g(and)f(v)-5 b(ariables)33 -b(with)150 956 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 1066 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 1198 y(F)-8 b(unctions)33 -b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Fs(FUNCNEST)f -Ft(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 1308 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 1418 -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 1646 y Fr(3.4)68 b(Shell)45 b(P)l(arameters)150 -1805 y Ft(A)23 b Fq(parameter)31 b Ft(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 -Fs(name)p Ft(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s -(ecial)150 1915 y(c)m(haracters)i(listed)f(b)s(elo)m(w.)39 -b(A)24 b Fq(v)-5 b(ariable)29 b Ft(is)24 b(a)g(parameter)g(denoted)f(b) -m(y)h(a)g Fs(name)p Ft(.)37 b(A)24 b(v)-5 b(ariable)24 -b(has)f(a)h Fq(v)-5 b(alue)150 2025 y Ft(and)33 b(zero)i(or)e(more)h -Fq(attributes)t Ft(.)51 b(A)m(ttributes)34 b(are)g(assigned)g(using)f -(the)h Fs(declare)e Ft(builtin)h(command)150 2134 y(\(see)e(the)g -(description)f(of)h(the)f Fs(declare)f Ft(builtin)h(in)g(Section)h(4.2) -g([Bash)g(Builtins],)g(page)g(47\).)275 2267 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 2376 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 Fs(unset)f Ft(builtin)h(command.)275 2509 -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 2641 y Fi(name)11 -b Fs(=[)p Fi(value)g Fs(])150 2774 y Ft(If)34 b Fq(v)-5 -b(alue)40 b Ft(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 Fq(v)-5 b(alue)5 b Ft(s)35 b(undergo)f(tilde)h(ex-)150 -2883 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36 -b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150 -2993 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 Fs(integer)e -Ft(attribute)i(set,)j(then)150 3102 y Fq(v)-5 b(alue)38 -b Ft(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 Fs($\(\(...)o(\)\))f Ft(expansion)h(is)g(not)g -(used)150 3212 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f -(page)h(28\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s -(erformed,)f(with)150 3322 y(the)35 b(exception)h(of)f -Fs("$@")f Ft(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 -3431 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 Fs(alias)p Ft(,)e Fs(declare)p -Ft(,)g Fs(typeset)p Ft(,)g Fs(export)p Ft(,)150 3541 -y Fs(readonly)p Ft(,)41 b(and)f Fs(local)f Ft(builtin)h(commands.)71 -b(When)40 b(in)h Fl(posix)e Ft(mo)s(de)i(\(see)g(Section)g(6.11)i -([Bash)150 3650 y(POSIX)36 b(Mo)s(de],)k(page)e(93\),)i(these)e -(builtins)f(ma)m(y)h(app)s(ear)e(in)h(a)h(command)f(after)h(one)f(or)h -(more)f(in-)150 3760 y(stances)31 b(of)g(the)f Fs(command)f -Ft(builtin)h(and)f(retain)i(these)g(assignmen)m(t)g(statemen)m(t)h -(prop)s(erties.)275 3892 y(In)d(the)h(con)m(text)i(where)d(an)h -(assignmen)m(t)h(statemen)m(t)h(is)e(assigning)g(a)h(v)-5 -b(alue)30 b(to)h(a)f(shell)g(v)-5 b(ariable)31 b(or)150 -4002 y(arra)m(y)f(index)g(\(see)h(Section)g(6.7)g([Arra)m(ys],)g(page)g -(88\),)g(the)f(`)p Fs(+=)p Ft(')g(op)s(erator)g(can)h(b)s(e)e(used)g -(to)i(app)s(end)d(to)150 4112 y(or)36 b(add)g(to)h(the)f(v)-5 -b(ariable's)37 b(previous)f(v)-5 b(alue.)59 b(When)36 -b(`)p Fs(+=)p Ft(')g(is)g(applied)g(to)h(a)g(v)-5 b(ariable)37 -b(for)f(whic)m(h)g(the)150 4221 y Fq(in)m(teger)46 b -Ft(attribute)38 b(has)f(b)s(een)g(set,)k Fq(v)-5 b(alue)43 -b Ft(is)38 b(ev)-5 b(aluated)39 b(as)f(an)f(arithmetic)i(expression)f -(and)f(added)150 4331 y(to)f(the)f(v)-5 b(ariable's)36 -b(curren)m(t)f(v)-5 b(alue,)37 b(whic)m(h)e(is)g(also)h(ev)-5 -b(aluated.)56 b(When)35 b(`)p Fs(+=)p Ft(')g(is)h(applied)f(to)g(an)g -(arra)m(y)150 4440 y(v)-5 b(ariable)26 b(using)e(comp)s(ound)f -(assignmen)m(t)j(\(see)f(Section)h(6.7)f([Arra)m(ys],)i(page)f(88\),)h -(the)e(v)-5 b(ariable's)25 b(v)-5 b(alue)150 4550 y(is)32 -b(not)f(unset)h(\(as)g(it)g(is)f(when)g(using)g(`)p Fs(=)p -Ft('\),)i(and)e(new)g(v)-5 b(alues)32 b(are)g(app)s(ended)d(to)k(the)f -(arra)m(y)g(b)s(eginning)150 4660 y(at)27 b(one)f(greater)i(than)e(the) -g(arra)m(y's)h(maxim)m(um)f(index)g(\(for)g(indexed)g(arra)m(ys\),)i -(or)e(added)g(as)g(additional)150 4769 y(k)m(ey-v)-5 -b(alue)35 b(pairs)e(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 -b(.)51 b(When)33 b(applied)g(to)h(a)g(string-v)-5 b(alued)34 -b(v)-5 b(ariable,)35 b Fq(v)-5 b(alue)39 b Ft(is)150 -4879 y(expanded)30 b(and)f(app)s(ended)g(to)i(the)g(v)-5 -b(ariable's)31 b(v)-5 b(alue.)275 5011 y(A)37 b(v)-5 -b(ariable)38 b(can)g(b)s(e)f(assigned)h(the)f Fq(nameref)55 -b Ft(attribute)38 b(using)f(the)h(`)p Fs(-n)p Ft(')f(option)h(to)g(the) -g Fs(\\)p Ft(fBde-)150 5121 y(clare)p Fs(\\)p Ft(fP)44 -b(or)f Fs(\\)p Ft(fBlo)s(cal)p Fs(\\)p Ft(fP)h(builtin)e(commands)h -(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)j(page)d(47\))g(to)150 -5230 y(create)36 b(a)e Fq(nameref)17 b Ft(,)35 b(or)f(a)h(reference)f -(to)h(another)f(v)-5 b(ariable.)53 b(This)33 b(allo)m(ws)i(v)-5 -b(ariables)35 b(to)f(b)s(e)g(manipu-)150 5340 y(lated)d(indirectly)-8 -b(.)43 b(Whenev)m(er)31 b(the)g(nameref)f(v)-5 b(ariable)32 -b(is)e(referenced)h(or)f(assigned)h(to,)h(the)e(op)s(eration)p -eop end -%%Page: 19 25 -TeXDict begin 19 24 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299 -y(is)32 b(actually)h(p)s(erformed)d(on)i(the)g(v)-5 b(ariable)33 -b(sp)s(eci\014ed)e(b)m(y)g(the)h(nameref)g(v)-5 b(ariable's)33 -b(v)-5 b(alue.)45 b(A)32 b(nameref)150 408 y(is)h(commonly)g(used)e -(within)h(shell)h(functions)f(to)h(refer)f(to)i(a)f(v)-5 -b(ariable)33 b(whose)f(name)h(is)f(passed)g(as)h(an)150 -518 y(argumen)m(t)g(to)g(the)g(function.)46 b(F)-8 b(or)33 -b(instance,)h(if)e(a)h(v)-5 b(ariable)33 b(name)g(is)f(passed)g(to)h(a) -g(shell)g(function)f(as)150 628 y(its)f(\014rst)e(argumen)m(t,)i -(running)390 758 y Fs(declare)46 b(-n)h(ref=$1)150 887 -y Ft(inside)31 b(the)h(function)f(creates)i(a)g(nameref)e(v)-5 -b(ariable)32 b Fq(ref)49 b Ft(whose)32 b(v)-5 b(alue)32 -b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150 997 -y(as)42 b(the)g(\014rst)f(argumen)m(t.)74 b(References)43 -b(and)e(assignmen)m(ts)h(to)g Fq(ref)59 b Ft(are)42 b(treated)h(as)f -(references)g(and)150 1107 y(assignmen)m(ts)31 b(to)g(the)g(v)-5 -b(ariable)31 b(whose)f(name)g(w)m(as)h(passed)f(as)h -Fs($1)p Ft(.)275 1236 y(If)38 b(the)i(con)m(trol)g(v)-5 -b(ariable)40 b(in)f(a)g Fs(for)g Ft(lo)s(op)g(has)g(the)g(nameref)g -(attribute,)k(the)c(list)h(of)f(w)m(ords)g(can)150 1346 -y(b)s(e)c(a)i(list)f(of)g(shell)h(v)-5 b(ariables,)38 -b(and)d(a)h(name)g(reference)h(will)f(b)s(e)f(established)i(for)e(eac)m -(h)j(w)m(ord)d(in)h(the)150 1456 y(list,)30 b(in)f(turn,)g(when)f(the)i -(lo)s(op)f(is)g(executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 -b(cannot)g(b)s(e)e(giv)m(en)i(the)g(`)p Fs(-n)p Ft(')f(attribute.)150 -1565 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 1675 y(Namerefs)32 b(can)h(b)s(e)e -(unset)h(using)f(the)h(`)p Fs(-n)p Ft(')g(option)h(to)g(the)f -Fs(unset)e Ft(builtin)i(\(see)h(Section)g(4.1)g([Bourne)150 -1784 y(Shell)43 b(Builtins],)j(page)e(40\).)79 b(Otherwise,)45 -b(if)e Fs(unset)e Ft(is)i(executed)h(with)e(the)h(name)g(of)g(a)g -(nameref)150 1894 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 2084 y Fj(3.4.1)63 -b(P)m(ositional)41 b(P)m(arameters)150 2231 y Ft(A)28 -b Fq(p)s(ositional)h(parameter)35 b Ft(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 -2341 y(digit)34 b Fs(0)p Ft(.)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 2450 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using) -e(the)h Fs(set)g Ft(builtin)f(command.)67 b(P)m(ositional)41 -b(parameter)e Fs(N)g Ft(ma)m(y)h(b)s(e)150 2560 y(referenced)34 -b(as)h Fs(${N})p Ft(,)g(or)f(as)h Fs($N)e Ft(when)h Fs(N)g -Ft(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37 -b(parameters)d(ma)m(y)150 2669 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 Fs(set)g -Ft(and)g Fs(shift)f Ft(builtins)h(are)h(used)f(to)150 -2779 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h -(Builtin)g(Commands],)h(page)f(40\).)68 b(The)39 b(p)s(ositional)150 -2888 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 -2998 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(16\).)275 -3128 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 -3238 y(b)s(e)h(enclosed)h(in)f(braces.)150 3428 y Fj(3.4.2)63 -b(Sp)s(ecial)41 b(P)m(arameters)150 3574 y Ft(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 -3684 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 -3834 y Fs(*)432 b Ft(Expands)29 b(to)h(the)h(p)s(ositional)f -(parameters,)h(starting)g(from)e(one.)41 b(When)30 b(the)g(expansion) -630 3944 y(o)s(ccurs)e(within)f(double)h(quotes,)h(it)g(expands)e(to)i -(a)f(single)h(w)m(ord)f(with)g(the)g(v)-5 b(alue)29 b(of)f(eac)m(h)630 -4053 y(parameter)i(separated)g(b)m(y)f(the)g(\014rst)g(c)m(haracter)i -(of)e(the)h Fs(IFS)e Ft(sp)s(ecial)i(v)-5 b(ariable.)41 -b(That)30 b(is,)630 4163 y Fs("$*")h Ft(is)i(equiv)-5 -b(alen)m(t)33 b(to)h Fs("$1)p Fi(c)11 b Fs($2)p Fi(c)g -Fs(...)l(")p Ft(,)33 b(where)f Fq(c)38 b Ft(is)32 b(the)h(\014rst)e(c)m -(haracter)j(of)f(the)f(v)-5 b(alue)630 4273 y(of)30 b(the)g -Fs(IFS)g Ft(v)-5 b(ariable.)41 b(If)30 b Fs(IFS)f Ft(is)h(unset,)g(the) -g(parameters)g(are)h(separated)f(b)m(y)g(spaces.)41 b(If)630 -4382 y Fs(IFS)29 b Ft(is)i(n)m(ull,)f(the)h(parameters)g(are)f(joined)h -(without)f(in)m(terv)m(ening)i(separators.)150 4532 y -Fs(@)432 b Ft(Expands)29 b(to)h(the)h(p)s(ositional)f(parameters,)h -(starting)g(from)e(one.)41 b(When)30 b(the)g(expansion)630 -4642 y(o)s(ccurs)c(within)g(double)f(quotes,)j(eac)m(h)f(parameter)g -(expands)e(to)i(a)g(separate)g(w)m(ord.)39 b(That)630 -4751 y(is,)29 b Fs("$@")e Ft(is)i(equiv)-5 b(alen)m(t)30 -b(to)f Fs("$1")g("$2")h(...)o Ft(.)40 b(If)28 b(the)g(double-quoted)h -(expansion)f(o)s(ccurs)630 4861 y(within)d(a)h(w)m(ord,)g(the)g -(expansion)f(of)h(the)g(\014rst)f(parameter)h(is)f(joined)h(with)f(the) -h(b)s(eginning)630 4971 y(part)f(of)g(the)g(original)g(w)m(ord,)h(and)e -(the)h(expansion)g(of)g(the)g(last)h(parameter)f(is)g(joined)f(with)630 -5080 y(the)37 b(last)g(part)g(of)f(the)h(original)h(w)m(ord.)59 -b(When)36 b(there)h(are)g(no)f(p)s(ositional)h(parameters,)630 -5190 y Fs("$@")29 b Ft(and)h Fs($@)g Ft(expand)f(to)j(nothing)e -(\(i.e.,)i(they)e(are)h(remo)m(v)m(ed\).)150 5340 y Fs(#)432 -b Ft(Expands)29 b(to)i(the)g(n)m(um)m(b)s(er)e(of)h(p)s(ositional)h -(parameters)g(in)f(decimal.)p eop end -%%Page: 20 26 -TeXDict begin 20 25 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299 -y Fs(?)432 b Ft(Expands)29 b(to)i(the)g(exit)g(status)g(of)f(the)h -(most)f(recen)m(tly)i(executed)f(foreground)f(pip)s(eline.)150 -444 y Fs(-)432 b Ft(\(A)31 b(h)m(yphen.\))42 b(Expands)30 -b(to)h(the)g(curren)m(t)g(option)h(\015ags)f(as)g(sp)s(eci\014ed)f(up)s -(on)g(in)m(v)m(o)s(cation,)630 553 y(b)m(y)35 b(the)h -Fs(set)e Ft(builtin)h(command,)h(or)g(those)g(set)f(b)m(y)h(the)f -(shell)h(itself)g(\(suc)m(h)f(as)h(the)f(`)p Fs(-i)p -Ft(')630 663 y(option\).)150 808 y Fs($)432 b Ft(Expands)39 -b(to)j(the)f(pro)s(cess)f Fl(id)h Ft(of)g(the)g(shell.)73 -b(In)40 b(a)h Fs(\(\))f Ft(subshell,)j(it)e(expands)f(to)i(the)630 -918 y(pro)s(cess)30 b Fl(id)g Ft(of)h(the)g(in)m(v)m(oking)g(shell,)g -(not)g(the)f(subshell.)150 1063 y Fs(!)432 b Ft(Expands)39 -b(to)i(the)g(pro)s(cess)e Fl(id)i Ft(of)f(the)h(most)g(recen)m(tly)g -(executed)g(bac)m(kground)g(\(asyn-)630 1172 y(c)m(hronous\))30 -b(command.)150 1317 y Fs(0)432 b Ft(Expands)20 b(to)j(the)f(name)g(of)g -(the)g(shell)g(or)f(shell)h(script.)38 b(This)21 b(is)h(set)g(at)h -(shell)f(initialization.)630 1427 y(If)44 b(Bash)g(is)g(in)m(v)m(ok)m -(ed)i(with)e(a)g(\014le)g(of)h(commands)e(\(see)j(Section)f(3.8)g -([Shell)f(Scripts],)630 1536 y(page)39 b(38\),)i Fs($0)d -Ft(is)g(set)g(to)h(the)f(name)g(of)g(that)h(\014le.)64 -b(If)37 b(Bash)i(is)f(started)g(with)g(the)g(`)p Fs(-c)p -Ft(')630 1646 y(option)i(\(see)g(Section)h(6.1)f([In)m(v)m(oking)h -(Bash],)h(page)e(79\),)j(then)d Fs($0)e Ft(is)i(set)g(to)g(the)g -(\014rst)630 1756 y(argumen)m(t)31 b(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 1865 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 -2010 y Fs(_)432 b Ft(\(An)27 b(underscore.\))39 b(A)m(t)29 -b(shell)e(startup,)h(set)f(to)h(the)g(absolute)g(pathname)f(used)f(to)i -(in)m(v)m(ok)m(e)630 2120 y(the)22 b(shell)g(or)g(shell)g(script)f(b)s -(eing)h(executed)h(as)f(passed)f(in)g(the)h(en)m(vironmen)m(t)h(or)e -(argumen)m(t)630 2229 y(list.)72 b(Subsequen)m(tly)-8 -b(,)43 b(expands)c(to)j(the)e(last)i(argumen)m(t)f(to)g(the)g(previous) -f(command,)630 2339 y(after)35 b(expansion.)54 b(Also)36 -b(set)f(to)h(the)f(full)f(pathname)h(used)f(to)h(in)m(v)m(ok)m(e)i(eac) -m(h)f(command)630 2449 y(executed)42 b(and)e(placed)i(in)e(the)h(en)m -(vironmen)m(t)h(exp)s(orted)f(to)g(that)h(command.)72 -b(When)630 2558 y(c)m(hec)m(king)32 b(mail,)f(this)g(parameter)g(holds) -e(the)i(name)f(of)h(the)g(mail)g(\014le.)150 2776 y Fr(3.5)68 -b(Shell)45 b(Expansions)150 2936 y Ft(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 Fs(token)p Ft(s.)38 b(There)28 b(are)150 3045 y(sev)m(en)j(kinds) -e(of)i(expansion)f(p)s(erformed:)225 3173 y Fp(\017)60 -b Ft(brace)31 b(expansion)225 3300 y Fp(\017)60 b Ft(tilde)31 -b(expansion)225 3427 y Fp(\017)60 b Ft(parameter)31 b(and)f(v)-5 -b(ariable)31 b(expansion)225 3554 y Fp(\017)60 b Ft(command)30 -b(substitution)225 3682 y Fp(\017)60 b Ft(arithmetic)32 -b(expansion)225 3809 y Fp(\017)60 b Ft(w)m(ord)30 b(splitting)225 -3936 y Fp(\017)60 b Ft(\014lename)31 b(expansion)275 -4081 y(The)i(order)g(of)h(expansions)g(is:)47 b(brace)34 -b(expansion,)h(tilde)g(expansion,)f(parameter,)i(v)-5 -b(ariable,)36 b(and)150 4191 y(arithmetic)46 b(expansion)f(and)g -(command)f(substitution)h(\(done)g(in)g(a)g(left-to-righ)m(t)j -(fashion\),)h(w)m(ord)150 4301 y(splitting,)31 b(and)f(\014lename)h -(expansion.)275 4428 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 Fq(pro)s(cess)150 4537 y(substitution)p -Ft(.)61 b(This)36 b(is)h(p)s(erformed)f(at)i(the)f(same)h(time)f(as)h -(parameter,)h(v)-5 b(ariable,)40 b(and)d(arithmetic)150 -4647 y(expansion)30 b(and)g(command)g(substitution.)275 -4774 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 -4884 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 4993 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f -(expansions)g(of)h Fs("$@")e Ft(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f -(P)m(arameters],)150 5103 y(page)e(19\))h(and)d Fs("${)p -Fi(name)11 b Fs([@]}")27 b Ft(\(see)k(Section)h(6.7)f([Arra)m(ys],)g -(page)g(88\).)275 5230 y(After)41 b(all)i(expansions,)h -Fs(quote)29 b(removal)40 b Ft(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m -(v)-5 b(al],)47 b(page)42 b(31\))h(is)150 5340 y(p)s(erformed.)p -eop end -%%Page: 21 27 -TeXDict begin 21 26 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299 -y Fj(3.5.1)63 b(Brace)40 b(Expansion)150 446 y Ft(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 -555 y(anism)35 b(is)h(similar)f(to)h Fq(\014lename)g(expansion)f -Ft(\(see)i(Section)f(3.5.8)h([Filename)g(Expansion],)f(page)g(29\),)150 -665 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 775 y(an)i(optional)i Fq(pream)m(ble)5 -b Ft(,)30 b(follo)m(w)m(ed)i(b)m(y)d(either)h(a)g(series)g(of)g -(comma-separated)h(strings)e(or)h(a)g(sequence)150 884 -y(expression)36 b(b)s(et)m(w)m(een)g(a)g(pair)g(of)g(braces,)i(follo)m -(w)m(ed)f(b)m(y)f(an)g(optional)h Fq(p)s(ostscript)r -Ft(.)56 b(The)36 b(pream)m(ble)g(is)150 994 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 -1103 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) -m(t.)275 1240 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 1350 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 1486 y Fs(bash$)46 -b(echo)h(a{d,c,b}e)390 1596 y(ade)g(ace)g(abe)275 1733 -y Ft(A)20 b(sequence)h(expression)g(tak)m(es)h(the)f(form)f -Fs({)p Fi(x)11 b Fs(..)p Fi(y)g Fs([..)p Fi(incr)g Fs(]})p -Ft(,)18 b(where)i Fq(x)27 b Ft(and)20 b Fq(y)28 b Ft(are)22 -b(either)f(in)m(tegers)150 1842 y(or)42 b(single)h(c)m(haracters,)j -(and)c Fq(incr)7 b Ft(,)44 b(an)e(optional)h(incremen)m(t,)j(is)c(an)g -(in)m(teger.)77 b(When)41 b(in)m(tegers)j(are)150 1952 -y(supplied,)e(the)f(expression)g(expands)f(to)h(eac)m(h)h(n)m(um)m(b)s -(er)e(b)s(et)m(w)m(een)h Fq(x)47 b Ft(and)40 b Fq(y)8 -b Ft(,)44 b(inclusiv)m(e.)73 b(Supplied)150 2062 y(in)m(tegers)33 -b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Fs(0)p Ft(')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 2171 y Fq(x)43 b Ft(or)36 b Fq(y)44 -b Ft(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 -2281 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 2390 y(expression)24 b(expands)e(to)j(eac)m(h)g(c)m(haracter)g -(lexicographically)i(b)s(et)m(w)m(een)d Fq(x)30 b Ft(and)23 -b Fq(y)8 b Ft(,)25 b(inclusiv)m(e,)h(using)e(the)150 -2500 y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e -Fq(x)39 b Ft(and)31 b Fq(y)40 b Ft(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 -2610 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 2719 y(as)i(appropriate.)275 2856 -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 -2965 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 3075 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 3185 -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 Fs(${)p Ft(')g(is)g(not)g(considered)g -(eligible)i(for)150 3294 y(brace)31 b(expansion.)275 -3431 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 -3541 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 3650 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 -3787 y(A)25 b Fs({)g Ft(or)g(`)p Fs(,)p Ft(')g(ma)m(y)h(b)s(e)f(quoted) -g(with)g(a)h(bac)m(kslash)f(to)h(prev)m(en)m(t)g(its)g(b)s(eing)f -(considered)g(part)g(of)g(a)h(brace)150 3897 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 Fs(${)p Ft(')g(is)g(not)g(considered) -150 4006 y(eligible)e(for)e(brace)h(expansion.)275 4143 -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 -4252 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 4389 y Fs(mkdir)46 b(/usr/local/src/bash/{old,n)o -(ew,)o(dist)o(,bug)o(s})275 4526 y Ft(or)390 4663 y Fs(chown)g(root)h -(/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150 -4864 y Fj(3.5.2)63 b(Tilde)41 b(Expansion)150 5011 y -Ft(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 Fs(~)p Ft('\),)g(all)g(of)f(the)g(c)m(haracters)h(up) -d(to)j(the)f(\014rst)150 5121 y(unquoted)23 b(slash)h(\(or)h(all)g(c)m -(haracters,)i(if)d(there)g(is)h(no)f(unquoted)f(slash\))h(are)h -(considered)f(a)g Fq(tilde-pre\014x)6 b Ft(.)150 5230 -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 -5340 y(follo)m(wing)28 b(the)f(tilde)g(are)g(treated)h(as)f(a)g(p)s -(ossible)f Fq(login)i(name)5 b Ft(.)40 b(If)26 b(this)g(login)i(name)f -(is)f(the)h(n)m(ull)g(string,)p eop end -%%Page: 22 28 -TeXDict begin 22 27 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299 -y(the)35 b(tilde)g(is)g(replaced)g(with)f(the)h(v)-5 -b(alue)35 b(of)g(the)g Fs(HOME)e Ft(shell)i(v)-5 b(ariable.)54 -b(If)34 b Fs(HOME)g Ft(is)h(unset,)g(the)g(home)150 408 -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 -518 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 650 -y(If)g(the)h(tilde-pre\014x)f(is)h(`)p Fs(~+)p Ft(',)g(the)g(v)-5 -b(alue)33 b(of)g(the)g(shell)g(v)-5 b(ariable)34 b Fs(PWD)d -Ft(replaces)j(the)f(tilde-pre\014x.)47 b(If)150 760 y(the)31 -b(tilde-pre\014x)f(is)g(`)p Fs(~-)p Ft(',)h(the)f(v)-5 -b(alue)31 b(of)g(the)f(shell)h(v)-5 b(ariable)31 b Fs(OLDPWD)p -Ft(,)e(if)h(it)h(is)g(set,)g(is)f(substituted.)275 891 -y(If)e(the)i(c)m(haracters)g(follo)m(wing)h(the)e(tilde)h(in)f(the)g -(tilde-pre\014x)h(consist)f(of)h(a)f(n)m(um)m(b)s(er)f -Fq(N)10 b Ft(,)30 b(optionally)150 1001 y(pre\014xed)22 -b(b)m(y)h(a)h(`)p Fs(+)p Ft(')f(or)h(a)f(`)p Fs(-)p Ft(',)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 1111 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 -Fs(dirs)g Ft(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters) -150 1220 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 1330 y(page)c(90\).)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 Fs(+)p Ft(')g(or)150 1439 y(`)p Fs(-)p -Ft(',)31 b(`)p Fs(+)p Ft(')f(is)h(assumed.)275 1571 y(If)e(the)i(login) -g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f -(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275 -1703 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 1813 y(a)d(`)p Fs(:)p Ft(')g(or)g(the)g(\014rst)f(`)p -Fs(=)p Ft('.)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 1922 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g -(assignmen)m(ts)g(to)h Fs(PATH)p Ft(,)f Fs(MAILPATH)p -Ft(,)e(and)h Fs(CDPATH)p Ft(,)g(and)h(the)g(shell)150 -2032 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 2164 -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 2318 y Fs(~)432 b Ft(The)30 -b(v)-5 b(alue)31 b(of)f Fs($HOME)150 2472 y(~/foo)240 -b Ft(`)p Fs($HOME/foo)p Ft(')150 2627 y Fs(~fred/foo)630 -2736 y Ft(The)30 b(sub)s(directory)f Fs(foo)h Ft(of)g(the)h(home)f -(directory)h(of)g(the)f(user)g Fs(fred)150 2890 y(~+/foo)192 -b Ft(`)p Fs($PWD/foo)p Ft(')150 3045 y Fs(~-/foo)g Ft(`)p -Fs(${OLDPWD-'~-'}/foo)p Ft(')150 3199 y Fs(~)p Fi(N)384 -b Ft(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 Fs(dirs)g(+)p Fi(N)11 b Ft(')150 3353 y Fs(~+)p -Fi(N)336 b Ft(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 Fs(dirs)g(+)p Fi(N)11 b Ft(')150 3507 -y Fs(~-)p Fi(N)336 b Ft(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 Fs(dirs)g(-)p Fi(N)11 -b Ft(')150 3701 y Fj(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150 -3848 y Ft(The)g(`)p Fs($)p Ft(')h(c)m(haracter)i(in)m(tro)s(duces)d -(parameter)h(expansion,)j(command)d(substitution,)i(or)e(arithmetic)150 -3958 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 4068 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 4177 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 4309 -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 Fs(})p Ft(')g(not)g(escap)s(ed)h(b)m(y)f(a) -150 4419 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 -4528 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 -4660 y(The)40 b(basic)h(form)g(of)g(parameter)h(expansion)e(is)h($)p -Fs({)p Fq(parameter)7 b Fs(})p Ft(.)73 b(The)40 b(v)-5 -b(alue)42 b(of)f Fq(parameter)48 b Ft(is)150 4770 y(substituted.)43 -b(The)31 b Fq(parameter)39 b Ft(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 -4879 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(88\).)42 -b(The)29 b(braces)150 4989 y(are)j(required)g(when)f -Fq(parameter)39 b Ft(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 5098 y Fq(parameter)37 -b Ft(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 -5230 y(If)36 b(the)h(\014rst)f(c)m(haracter)i(of)f Fq(parameter)44 -b Ft(is)37 b(an)f(exclamation)j(p)s(oin)m(t)e(\(!\),)i(it)f(in)m(tro)s -(duces)e(a)h(lev)m(el)i(of)150 5340 y(v)-5 b(ariable)31 -b(indirection.)41 b(Bash)30 b(uses)f(the)h(v)-5 b(alue)31 -b(of)f(the)g(v)-5 b(ariable)30 b(formed)g(from)f(the)h(rest)g(of)g -Fq(parameter)p eop end -%%Page: 23 29 -TeXDict begin 23 28 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299 -y(as)26 b(the)g(name)g(of)g(the)h(v)-5 b(ariable;)28 -b(this)e(v)-5 b(ariable)27 b(is)f(then)f(expanded)g(and)h(that)g(v)-5 -b(alue)27 b(is)f(used)f(in)h(the)g(rest)150 408 y(of)34 -b(the)f(substitution,)i(rather)e(than)g(the)h(v)-5 b(alue)34 -b(of)g Fq(parameter)40 b Ft(itself.)51 b(This)33 b(is)g(kno)m(wn)g(as)h -Fs(indirect)150 518 y(expansion)p Ft(.)81 b(The)44 b(exceptions)i(to)f -(this)g(are)g(the)g(expansions)f(of)h($)p Fs({)p Ft(!)p -Fq(pre\014x)6 b Ft(*)p Fs(})44 b Ft(and)g($)p Fs({)p -Ft(!)p Fq(name)5 b Ft([)p Fs(@)p Ft(])p Fs(})150 628 -y Ft(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 737 y(in)m(tro)s(duce)i(indirection.)275 -870 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m(w,)i -Fq(w)m(ord)h Ft(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j -(parameter)e(expansion,)150 980 y(command)30 b(substitution,)g(and)g -(arithmetic)i(expansion.)275 1113 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 Fs(:-)p Ft('\),)150 1223 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 1332 -y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31 -b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f -(the)h(op)s(erator)g(tests)150 1442 y(for)36 b(b)s(oth)g -Fq(parameter)7 b Ft('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 1551 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 -1708 y Fs(${)p Fi(parameter)11 b Fs(:)p Fp(\000)p Fi(word)g -Fs(})630 1817 y Ft(If)30 b Fq(parameter)37 b Ft(is)30 -b(unset)g(or)h(n)m(ull,)f(the)h(expansion)f(of)g Fq(w)m(ord)k -Ft(is)c(substituted.)40 b(Otherwise,)630 1927 y(the)31 -b(v)-5 b(alue)30 b(of)h Fq(parameter)37 b Ft(is)31 b(substituted.)150 -2084 y Fs(${)p Fi(parameter)11 b Fs(:=)p Fi(word)g Fs(})630 -2193 y Ft(If)32 b Fq(parameter)40 b Ft(is)32 b(unset)g(or)h(n)m(ull,)g -(the)f(expansion)h(of)f Fq(w)m(ord)k Ft(is)d(assigned)f(to)i -Fq(parameter)7 b Ft(.)630 2303 y(The)30 b(v)-5 b(alue)32 -b(of)f Fq(parameter)38 b Ft(is)31 b(then)g(substituted.)42 -b(P)m(ositional)33 b(parameters)e(and)f(sp)s(ecial)630 -2412 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 2569 y Fs(${)p Fi(parameter)11 -b Fs(:?)p Fi(word)g Fs(})630 2679 y Ft(If)26 b Fq(parameter)33 -b Ft(is)26 b(n)m(ull)g(or)g(unset,)h(the)f(expansion)g(of)g -Fq(w)m(ord)k Ft(\(or)c(a)h(message)g(to)g(that)f(e\013ect)630 -2788 y(if)i Fq(w)m(ord)j Ft(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 2898 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30 -b(the)h(v)-5 b(alue)31 b(of)f Fq(parameter)38 b Ft(is)30 -b(substituted.)150 3054 y Fs(${)p Fi(parameter)11 b Fs(:+)p -Fi(word)g Fs(})630 3164 y Ft(If)35 b Fq(parameter)42 -b Ft(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i -(otherwise)e(the)h(expansion)630 3273 y(of)31 b Fq(w)m(ord)i -Ft(is)e(substituted.)150 3430 y Fs(${)p Fi(parameter)11 -b Fs(:)p Fi(offset)g Fs(})150 3540 y(${)p Fi(parameter)g -Fs(:)p Fi(offset)g Fs(:)p Fi(le)o(ngt)o(h)g Fs(})630 -3649 y Ft(This)30 b(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41 -b(It)31 b(expands)f(to)h(up)f(to)h Fq(length)g Ft(c)m(harac-)630 -3759 y(ters)k(of)g(the)g(v)-5 b(alue)35 b(of)h Fq(parameter)41 -b Ft(starting)36 b(at)g(the)f(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)h -Fq(o\013set)r Ft(.)55 b(If)630 3868 y Fq(parameter)32 -b Ft(is)26 b(`)p Fs(@)p Ft(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e -(b)m(y)h(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)g(or)g(an)f(asso)s -(ciativ)m(e)j(ar-)630 3978 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 Fq(length)g -Ft(is)g(omitted,)i(it)f(expands)630 4088 y(to)e(the)g(substring)f(of)g -(the)h(v)-5 b(alue)27 b(of)g Fq(parameter)33 b Ft(starting)28 -b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630 -4197 y Fq(o\013set)37 b Ft(and)d(extending)g(to)h(the)f(end)g(of)g(the) -g(v)-5 b(alue.)53 b Fq(length)34 b Ft(and)g Fq(o\013set)j -Ft(are)e(arithmetic)630 4307 y(expressions)30 b(\(see)h(Section)g(6.5)h -([Shell)e(Arithmetic],)i(page)f(86\).)630 4440 y(If)39 -b Fq(o\013set)k Ft(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 4549 y(in)33 b(c)m(haracters)i(from)d(the)i(end)e(of)i -(the)f(v)-5 b(alue)34 b(of)f Fq(parameter)7 b Ft(.)49 -b(If)33 b Fq(length)h Ft(ev)-5 b(aluates)35 b(to)f(a)630 -4659 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 4769 y(the)31 b(v)-5 b(alue)31 b(of)g Fq(parameter)38 -b Ft(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 4878 y(is)39 b(the)g(c)m(haracters)i(b)s(et) -m(w)m(een)f Fq(o\013set)i Ft(and)c(that)i(result.)67 -b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 4988 -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 -5097 y(with)j(the)h(`)p Fs(:-)p Ft(')f(expansion.)630 -5230 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f -(expansion)g(on)g(parameters)h(and)630 5340 y(subscripted)29 -b(arra)m(ys:)p eop end -%%Page: 24 30 -TeXDict begin 24 29 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)630 299 -y Fs($)47 b(string=01234567890abcdefgh)630 408 y($)g(echo)g -(${string:7})630 518 y(7890abcdefgh)630 628 y($)g(echo)g(${string:7:0}) -630 847 y($)g(echo)g(${string:7:2})630 956 y(78)630 1066 -y($)g(echo)g(${string:7:-2})630 1176 y(7890abcdef)630 -1285 y($)g(echo)g(${string:)e(-7})630 1395 y(bcdefgh)630 -1504 y($)i(echo)g(${string:)e(-7:0})630 1724 y($)i(echo)g(${string:)e -(-7:2})630 1833 y(bc)630 1943 y($)i(echo)g(${string:)e(-7:-2})630 -2052 y(bcdef)630 2162 y($)i(set)g(--)h(01234567890abcdefgh)630 -2271 y($)f(echo)g(${1:7})630 2381 y(7890abcdefgh)630 -2491 y($)g(echo)g(${1:7:0})630 2710 y($)g(echo)g(${1:7:2})630 -2819 y(78)630 2929 y($)g(echo)g(${1:7:-2})630 3039 y(7890abcdef)630 -3148 y($)g(echo)g(${1:)g(-7})630 3258 y(bcdefgh)630 3367 -y($)g(echo)g(${1:)g(-7:0})630 3587 y($)g(echo)g(${1:)g(-7:2})630 -3696 y(bc)630 3806 y($)g(echo)g(${1:)g(-7:-2})630 3915 -y(bcdef)630 4025 y($)g(array[0]=01234567890abcdef)o(gh)630 -4134 y($)g(echo)g(${array[0]:7})630 4244 y(7890abcdefgh)630 -4354 y($)g(echo)g(${array[0]:7:0})630 4573 y($)g(echo)g -(${array[0]:7:2})630 4682 y(78)630 4792 y($)g(echo)g(${array[0]:7:-2}) -630 4902 y(7890abcdef)630 5011 y($)g(echo)g(${array[0]:)e(-7})630 -5121 y(bcdefgh)630 5230 y($)i(echo)g(${array[0]:)e(-7:0})p -eop end -%%Page: 25 31 -TeXDict begin 25 30 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)630 299 -y Fs($)47 b(echo)g(${array[0]:)e(-7:2})630 408 y(bc)630 -518 y($)i(echo)g(${array[0]:)e(-7:-2})630 628 y(bcdef)630 -756 y Ft(If)22 b Fq(parameter)30 b Ft(is)23 b(`)p Fs(@)p -Ft(',)i(the)e(result)f(is)h Fq(length)g Ft(p)s(ositional)h(parameters)f -(b)s(eginning)f(at)i Fq(o\013set)r Ft(.)630 865 y(A)36 -b(negativ)m(e)j Fq(o\013set)g Ft(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 -975 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 1084 y(expansion)i(error)g(if)h -Fq(length)f Ft(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i -(than)f(zero.)630 1212 y(The)i(follo)m(wing)i(examples)f(illustrate)h -(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630 -1322 y(eters:)630 1450 y Fs($)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 1559 -y($)g(echo)g(${@:7})630 1669 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 1778 y($)g(echo)g(${@:7:0})630 1998 y($)g(echo)g(${@:7:2}) -630 2107 y(7)g(8)630 2217 y($)g(echo)g(${@:7:-2})630 -2326 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 -2436 y($)g(echo)g(${@:)g(-7:2})630 2545 y(b)g(c)630 2655 -y($)g(echo)g(${@:0})630 2765 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 2874 y($)f(echo)g(${@:0:2}) -630 2984 y(./bash)f(1)630 3093 y($)h(echo)g(${@:)g(-7:0})630 -3331 y Ft(If)36 b Fq(parameter)43 b Ft(is)36 b(an)g(indexed)g(arra)m(y) -g(name)g(subscripted)f(b)m(y)h(`)p Fs(@)p Ft(')g(or)h(`)p -Fs(*)p Ft(',)h(the)e(result)g(is)630 3440 y(the)h Fq(length)g -Ft(mem)m(b)s(ers)f(of)h(the)g(arra)m(y)g(b)s(eginning)f(with)h -Fs(${)p Fi(parameter)11 b Fs([)p Fi(offset)g Fs(])o(})p -Ft(.)54 b(A)630 3550 y(negativ)m(e)33 b Fq(o\013set)g -Ft(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 3660 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 -Fq(length)f Ft(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630 -3769 y(than)30 b(zero.)630 3897 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 4025 y Fs($)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 4134 -y($)f(echo)g(${array[@]:7})630 4244 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 4354 y($)g(echo)g(${array[@]:7:2})630 -4463 y(7)g(8)630 4573 y($)g(echo)g(${array[@]:)e(-7:2})630 -4682 y(b)i(c)630 4792 y($)g(echo)g(${array[@]:)e(-7:-2})630 -4902 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 -5011 y($)g(echo)g(${array[@]:0})630 5121 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 5230 -y($)g(echo)g(${array[@]:0:2})630 5340 y(0)g(1)p eop end -%%Page: 26 32 -TeXDict begin 26 31 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)630 299 -y Fs($)47 b(echo)g(${array[@]:)e(-7:0})630 545 y Ft(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 682 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 792 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 Fq(o\013set)k Ft(is)d(0,)g(and)f(the)h(p)s(ositional)630 -902 y(parameters)h(are)f(used,)g Fs($@)g Ft(is)g(pre\014xed)g(to)h(the) -f(list.)150 1066 y Fs(${!)p Fi(prefix)11 b Fs(*})150 -1176 y(${!)p Fi(prefix)g Fs(@})630 1285 y Ft(Expands)23 -b(to)i(the)g(names)f(of)h(v)-5 b(ariables)25 b(whose)f(names)g(b)s -(egin)g(with)g Fq(pre\014x)6 b Ft(,)25 b(separated)g(b)m(y)630 -1395 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Fs(IFS)f -Ft(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Fs(@)p -Ft(')g(is)g(used)f(and)h(the)g(expan-)630 1504 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 -1614 y(w)m(ord.)150 1778 y Fs(${!)p Fi(name)11 b Fs([@]})150 -1888 y(${!)p Fi(name)g Fs([*]})630 1998 y Ft(If)26 b -Fq(name)32 b Ft(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 2107 y(in)c Fq(name)5 b Ft(.)39 b(If)23 -b Fq(name)30 b Ft(is)24 b(not)g(an)g(arra)m(y)-8 b(,)27 -b(expands)c(to)i(0)f(if)h Fq(name)k Ft(is)24 b(set)h(and)e(n)m(ull)h -(otherwise.)630 2217 y(When)39 b(`)p Fs(@)p Ft(')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 2326 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 -2491 y Fs(${#)p Fi(parameter)11 b Fs(})630 2600 y Ft(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 Fq(parameter)47 b Ft(is)40 b(substituted.)630 -2710 y(If)i Fq(parameter)50 b Ft(is)43 b(`)p Fs(*)p Ft(')g(or)g(`)p -Fs(@)p Ft(',)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 2819 y(parameters.)i(If)32 -b Fq(parameter)38 b Ft(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m -(y)g(`)p Fs(*)p Ft(')h(or)g(`)p Fs(@)p Ft(',)g(the)g(v)-5 -b(alue)630 2929 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 Fq(parameter)38 b Ft(is)31 b(an)f(indexed)630 3039 -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 -3148 y(relativ)m(e)47 b(to)e(one)h(greater)g(than)e(the)h(maxim)m(um)g -(index)f(of)h Fq(parameter)7 b Ft(,)49 b(so)c(negativ)m(e)630 -3258 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 -3367 y(last)g(elemen)m(t.)150 3532 y Fs(${)p Fi(parameter)11 -b Fs(#)p Fi(word)g Fs(})150 3641 y(${)p Fi(parameter)g -Fs(##)p Fi(word)g Fs(})630 3751 y Ft(The)31 b Fq(w)m(ord)k -Ft(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 3861 y(Section)k(3.5.8)h([Filename) -g(Expansion],)g(page)f(29\).)56 b(If)35 b(the)h(pattern)f(matc)m(hes)i -(the)e(b)s(e-)630 3970 y(ginning)g(of)g(the)g(expanded)f(v)-5 -b(alue)36 b(of)f Fq(parameter)7 b Ft(,)36 b(then)f(the)g(result)g(of)g -(the)g(expansion)630 4080 y(is)28 b(the)g(expanded)e(v)-5 -b(alue)28 b(of)g Fq(parameter)35 b Ft(with)27 b(the)h(shortest)g(matc)m -(hing)h(pattern)f(\(the)g(`)p Fs(#)p Ft(')630 4189 y(case\))e(or)f(the) -g(longest)g(matc)m(hing)h(pattern)f(\(the)g(`)p Fs(##)p -Ft(')g(case\))h(deleted.)39 b(If)24 b Fq(parameter)32 -b Ft(is)25 b(`)p Fs(@)p Ft(')630 4299 y(or)j(`)p Fs(*)p -Ft(',)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 -4408 y(turn,)i(and)g(the)h(expansion)g(is)g(the)g(resultan)m(t)g(list.) -45 b(If)32 b Fq(parameter)38 b Ft(is)32 b(an)g(arra)m(y)g(v)-5 -b(ariable)630 4518 y(subscripted)39 b(with)g(`)p Fs(@)p -Ft(')h(or)g(`)p Fs(*)p Ft(',)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 -4628 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 4792 -y Fs(${)p Fi(parameter)11 b Fs(\045)p Fi(word)g Fs(})150 -4902 y(${)p Fi(parameter)g Fs(\045\045)p Fi(word)g Fs(})630 -5011 y Ft(The)35 b Fq(w)m(ord)k Ft(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 5121 y(the)43 b(pattern)f(matc)m(hes)i(a)e(trailing)i(p)s -(ortion)e(of)g(the)h(expanded)e(v)-5 b(alue)43 b(of)g -Fq(parameter)7 b Ft(,)630 5230 y(then)39 b(the)g(result)g(of)h(the)f -(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fq(parameter)46 -b Ft(with)39 b(the)h(shortest)630 5340 y(matc)m(hing)31 -b(pattern)e(\(the)h(`)p Fs(\045)p Ft(')g(case\))h(or)e(the)h(longest)h -(matc)m(hing)f(pattern)g(\(the)g(`)p Fs(\045\045)p Ft(')g(case\))p -eop end -%%Page: 27 33 -TeXDict begin 27 32 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299 -y(deleted.)49 b(If)32 b Fq(parameter)40 b Ft(is)33 b(`)p -Fs(@)p Ft(')g(or)g(`)p Fs(*)p Ft(',)h(the)f(pattern)g(remo)m(v)-5 -b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 408 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 518 y Fq(parameter)38 -b Ft(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h -(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)g(the)f(pattern)h(remo)m(v)-5 -b(al)630 628 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 737 y(the)h(resultan)m(t)g(list.)150 897 y Fs(${)p -Fi(parameter)11 b Fs(/)p Fi(pattern)g Fs(/)p Fi(s)o(tri)o(ng)f -Fs(})630 1007 y Ft(The)37 b Fq(pattern)g Ft(is)g(expanded)g(to)h(pro)s -(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630 -1116 y Fq(P)m(arameter)46 b Ft(is)38 b(expanded)f(and)g(the)i(longest)g -(matc)m(h)g(of)f Fq(pattern)g Ft(against)h(its)f(v)-5 -b(alue)39 b(is)630 1226 y(replaced)33 b(with)f Fq(string)8 -b Ft(.)47 b(If)33 b Fq(pattern)f Ft(b)s(egins)g(with)h(`)p -Fs(/)p Ft(',)g(all)h(matc)m(hes)f(of)g Fq(pattern)g Ft(are)g(re-)630 -1335 y(placed)27 b(with)f Fq(string)8 b Ft(.)40 b(Normally)27 -b(only)g(the)g(\014rst)f(matc)m(h)h(is)g(replaced.)40 -b(If)26 b Fq(pattern)g Ft(b)s(egins)630 1445 y(with)33 -b(`)p Fs(#)p Ft(',)i(it)f(m)m(ust)f(matc)m(h)i(at)f(the)g(b)s(eginning) -f(of)g(the)h(expanded)f(v)-5 b(alue)34 b(of)g Fq(parameter)7 -b Ft(.)630 1555 y(If)34 b Fq(pattern)g Ft(b)s(egins)g(with)g(`)p -Fs(\045)p Ft(',)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 1664 y Fq(parameter)7 -b Ft(.)40 b(If)29 b Fq(string)36 b Ft(is)29 b(n)m(ull,)h(matc)m(hes)g -(of)f Fq(pattern)g Ft(are)g(deleted)h(and)e(the)h Fs(/)f -Ft(follo)m(wing)630 1774 y Fq(pattern)34 b Ft(ma)m(y)g(b)s(e)f -(omitted.)51 b(If)33 b Fq(parameter)41 b Ft(is)33 b(`)p -Fs(@)p Ft(')h(or)g(`)p Fs(*)p Ft(',)g(the)g(substitution)f(op)s -(eration)630 1883 y(is)38 b(applied)g(to)g(eac)m(h)h(p)s(ositional)g -(parameter)f(in)g(turn,)h(and)e(the)h(expansion)g(is)g(the)g(re-)630 -1993 y(sultan)m(t)f(list.)59 b(If)36 b Fq(parameter)43 -b Ft(is)36 b(an)g(arra)m(y)h(v)-5 b(ariable)37 b(subscripted)e(with)h -(`)p Fs(@)p Ft(')g(or)h(`)p Fs(*)p Ft(',)h(the)630 2102 -y(substitution)30 b(op)s(eration)h(is)f(applied)g(to)h(eac)m(h)g(mem)m -(b)s(er)f(of)g(the)h(arra)m(y)g(in)f(turn,)f(and)h(the)630 -2212 y(expansion)g(is)h(the)f(resultan)m(t)h(list.)150 -2372 y Fs(${)p Fi(parameter)11 b Fs(^)p Fi(pattern)g -Fs(})150 2481 y(${)p Fi(parameter)g Fs(^^)p Fi(pattern)g -Fs(})150 2591 y(${)p Fi(parameter)g Fs(,)p Fi(pattern)g -Fs(})150 2701 y(${)p Fi(parameter)g Fs(,,)p Fi(pattern)g -Fs(})630 2810 y Ft(This)35 b(expansion)h(mo)s(di\014es)f(the)h(case)h -(of)f(alphab)s(etic)h(c)m(haracters)g(in)f Fq(parameter)7 -b Ft(.)57 b(The)630 2920 y Fq(pattern)33 b Ft(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 3029 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 -b(alue)31 b(of)f Fq(parameter)37 b Ft(is)30 b(tested)h(against)h -Fq(pattern)p Ft(,)e(and,)g(if)630 3139 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 3249 y(to)f(matc)m(h)g(more)f -(than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Fs(^)p -Ft(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630 -3358 y(matc)m(hing)i Fq(pattern)f Ft(to)h(upp)s(ercase;)h(the)e(`)p -Fs(,)p Ft(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s -(ercase)630 3468 y(letters)e(to)f(lo)m(w)m(ercase.)50 -b(The)32 b(`)p Fs(^^)p Ft(')h(and)f(`)p Fs(,,)p Ft(')g(expansions)h -(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630 -3577 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30 -b(the)e(`)p Fs(^)p Ft(')g(and)g(`)p Fs(,)p Ft(')g(expansions)g(matc)m -(h)h(and)f(con)m(v)m(ert)i(only)630 3687 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 Fq(pattern)g Ft(is)h(omitted,)i(it)e(is)f(treated)630 -3796 y(lik)m(e)h(a)f(`)p Fs(?)p Ft(',)i(whic)m(h)d(matc)m(hes)i(ev)m -(ery)f(c)m(haracter.)61 b(If)37 b Fq(parameter)43 b Ft(is)37 -b(`)p Fs(@)p Ft(')g(or)f(`)p Fs(*)p Ft(',)j(the)e(case)630 -3906 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 -4016 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65 -b(If)37 b Fq(parameter)46 b Ft(is)38 b(an)g(arra)m(y)g(v)-5 -b(ariable)39 b(subscripted)630 4125 y(with)26 b(`)p Fs(@)p -Ft(')f(or)h(`)p Fs(*)p Ft(',)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 -4235 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 4434 y Fj(3.5.4)63 b(Command)41 -b(Substitution)150 4581 y Ft(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 -4691 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 4826 y Fs($\()p Fi(command)11 -b Fs(\))150 4961 y Ft(or)390 5096 y Fs(`)p Fi(command)g -Fs(`)150 5230 y Ft(Bash)45 b(p)s(erforms)f(the)h(expansion)f(b)m(y)h -(executing)i Fq(command)h Ft(and)c(replacing)i(the)f(command)g(sub-)150 -5340 y(stitution)c(with)f(the)g(standard)g(output)g(of)g(the)g -(command,)j(with)d(an)m(y)h(trailing)g(newlines)f(deleted.)p -eop end -%%Page: 28 34 -TeXDict begin 28 33 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)150 299 -y(Em)m(b)s(edded)30 b(newlines)h(are)h(not)f(deleted,)i(but)e(they)g -(ma)m(y)h(b)s(e)f(remo)m(v)m(ed)i(during)d(w)m(ord)h(splitting.)44 -b(The)150 408 y(command)21 b(substitution)g Fs($\(cat)29 -b Fi(file)11 b Fs(\))20 b Ft(can)i(b)s(e)f(replaced)g(b)m(y)h(the)g -(equiv)-5 b(alen)m(t)22 b(but)f(faster)h Fs($\(<)30 b -Fi(file)11 b Fs(\))p Ft(.)275 542 y(When)33 b(the)i(old-st)m(yle)h(bac) -m(kquote)f(form)f(of)g(substitution)g(is)g(used,)h(bac)m(kslash)f -(retains)h(its)f(literal)150 651 y(meaning)k(except)h(when)e(follo)m(w) -m(ed)j(b)m(y)e(`)p Fs($)p Ft(',)j(`)p Fs(`)p Ft(',)f(or)e(`)p -Fs(\\)p Ft('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g -(b)m(y)g(a)150 761 y(bac)m(kslash)j(terminates)g(the)f(command)g -(substitution.)69 b(When)40 b(using)g(the)g Fs($\()p -Fi(command)11 b Fs(\))37 b Ft(form,)42 b(all)150 870 -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 1004 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 1113 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m -(kslashes.)275 1247 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 1356 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -1553 y Fj(3.5.5)63 b(Arithmetic)40 b(Expansion)150 1700 -y Ft(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 1809 y(of)31 b(the)f(result.)41 b(The)30 -b(format)g(for)g(arithmetic)i(expansion)e(is:)390 1943 -y Fs($\(\()47 b Fi(expression)55 b Fs(\)\))275 2076 y -Ft(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 -2186 y(the)27 b(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8 -b(.)41 b(All)27 b(tok)m(ens)h(in)e(the)h(expression)g(undergo)f -(parameter)h(ex-)150 2295 y(pansion,)h(command)f(substitution,)h(and)f -(quote)i(remo)m(v)-5 b(al.)41 b(Arithmetic)28 b(expansions)g(ma)m(y)g -(b)s(e)f(nested.)275 2428 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 2538 y(Arithmetic],)32 -b(page)f(86\).)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 -2648 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s -(ccurs.)150 2844 y Fj(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 -2991 y Ft(Pro)s(cess)i(substitution)g(is)g(supp)s(orted)f(on)h(systems) -g(that)h(supp)s(ort)d(named)i(pip)s(es)f(\()p Fl(fif)n(o)p -Ft(s\))i(or)f(the)150 3101 y(`)p Fs(/dev/fd)p Ft(')29 -b(metho)s(d)h(of)g(naming)g(op)s(en)g(\014les.)41 b(It)30 -b(tak)m(es)i(the)f(form)f(of)390 3234 y Fs(<\()p Fi(list)11 -b Fs(\))150 3367 y Ft(or)390 3501 y Fs(>\()p Fi(list)g -Fs(\))150 3634 y Ft(The)23 b(pro)s(cess)g Fq(list)j Ft(is)d(run)f(with) -h(its)h(input)f(or)g(output)g(connected)h(to)h(a)e Fl(fif)n(o)g -Ft(or)h(some)g(\014le)f(in)g(`)p Fs(/dev/fd)p Ft('.)150 -3743 y(The)28 b(name)h(of)g(this)f(\014le)h(is)g(passed)f(as)h(an)f -(argumen)m(t)h(to)h(the)f(curren)m(t)f(command)h(as)f(the)h(result)g -(of)g(the)150 3853 y(expansion.)40 b(If)28 b(the)h Fs(>\()p -Fi(list)11 b Fs(\))26 b Ft(form)h(is)i(used,)f(writing)h(to)g(the)f -(\014le)h(will)g(pro)m(vide)f(input)g(for)g Fq(list)r -Ft(.)41 b(If)28 b(the)150 3963 y Fs(<\()p Fi(list)11 -b Fs(\))23 b Ft(form)h(is)i(used,)f(the)h(\014le)f(passed)g(as)g(an)g -(argumen)m(t)h(should)e(b)s(e)h(read)g(to)h(obtain)g(the)f(output)g(of) -150 4072 y Fq(list)r Ft(.)41 b(Note)31 b(that)f(no)f(space)h(ma)m(y)g -(app)s(ear)f(b)s(et)m(w)m(een)h(the)g Fs(<)f Ft(or)h -Fs(>)f Ft(and)g(the)g(left)h(paren)m(thesis,)h(otherwise)150 -4182 y(the)g(construct)f(w)m(ould)g(b)s(e)g(in)m(terpreted)h(as)f(a)h -(redirection.)275 4315 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 4425 y(v)-5 b(ariable)31 -b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -150 4621 y Fj(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -4768 y Ft(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 -4878 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h -(quotes)h(for)f(w)m(ord)g(splitting.)275 5011 y(The)43 -b(shell)h(treats)h(eac)m(h)h(c)m(haracter)f(of)g Fs($IFS)e -Ft(as)h(a)g(delimiter,)49 b(and)43 b(splits)h(the)h(results)e(of)i(the) -150 5121 y(other)40 b(expansions)f(in)m(to)i(w)m(ords)e(on)h(these)g(c) -m(haracters.)70 b(If)39 b Fs(IFS)g Ft(is)h(unset,)i(or)d(its)h(v)-5 -b(alue)40 b(is)g(exactly)150 5230 y Fs()p -Ft(,)26 b(the)32 b(default,)g(then)f(sequences)h(of)62 -b Fs()p Ft(,)30 b Fs()p Ft(,)h(and)f Fs()150 -5340 y Ft(at)39 b(the)f(b)s(eginning)g(and)f(end)h(of)g(the)h(results)f -(of)g(the)g(previous)g(expansions)g(are)g(ignored,)j(and)d(an)m(y)p -eop end -%%Page: 29 35 -TeXDict begin 29 34 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)150 299 -y(sequence)31 b(of)g Fs(IFS)f Ft(c)m(haracters)j(not)e(at)g(the)g(b)s -(eginning)g(or)f(end)h(serv)m(es)g(to)h(delimit)f(w)m(ords.)42 -b(If)30 b Fs(IFS)g Ft(has)150 408 y(a)g(v)-5 b(alue)30 -b(other)g(than)g(the)g(default,)g(then)f(sequences)h(of)g(the)g -(whitespace)g(c)m(haracters)h Fs(space)e Ft(and)g Fs(tab)150 -518 y Ft(are)36 b(ignored)g(at)g(the)g(b)s(eginning)f(and)g(end)g(of)h -(the)g(w)m(ord,)h(as)f(long)g(as)g(the)g(whitespace)h(c)m(haracter)g -(is)150 628 y(in)f(the)g(v)-5 b(alue)36 b(of)g Fs(IFS)f -Ft(\(an)h Fs(IFS)f Ft(whitespace)h(c)m(haracter\).)60 -b(An)m(y)35 b(c)m(haracter)j(in)d Fs(IFS)g Ft(that)i(is)f(not)g -Fs(IFS)150 737 y Ft(whitespace,)27 b(along)f(with)f(an)m(y)g(adjacen)m -(t)h Fs(IFS)e Ft(whitespace)i(c)m(haracters,)i(delimits)e(a)f(\014eld.) -38 b(A)26 b(sequence)150 847 y(of)35 b Fs(IFS)f Ft(whitespace)h(c)m -(haracters)i(is)d(also)i(treated)g(as)f(a)g(delimiter.)55 -b(If)34 b(the)h(v)-5 b(alue)35 b(of)g Fs(IFS)f Ft(is)h(n)m(ull,)h(no) -150 956 y(w)m(ord)30 b(splitting)h(o)s(ccurs.)275 1090 -y(Explicit)44 b(n)m(ull)f(argumen)m(ts)g(\()p Fs("")g -Ft(or)h Fs('')p Ft(\))f(are)g(retained.)80 b(Unquoted)43 -b(implicit)h(n)m(ull)f(argumen)m(ts,)150 1199 y(resulting)24 -b(from)f(the)g(expansion)g(of)h(parameters)g(that)g(ha)m(v)m(e)h(no)e -(v)-5 b(alues,)25 b(are)f(remo)m(v)m(ed.)40 b(If)23 b(a)g(parameter)150 -1309 y(with)30 b(no)g(v)-5 b(alue)31 b(is)g(expanded)e(within)h(double) -g(quotes,)h(a)g(n)m(ull)f(argumen)m(t)h(results)f(and)g(is)g(retained.) -275 1442 y(Note)h(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h -(splitting)g(is)f(p)s(erformed.)150 1639 y Fj(3.5.8)63 -b(Filename)41 b(Expansion)150 1786 y Ft(After)26 b(w)m(ord)g -(splitting,)i(unless)d(the)i(`)p Fs(-f)p Ft(')f(option)g(has)g(b)s(een) -f(set)i(\(see)g(Section)g(4.3.1)h([The)e(Set)g(Builtin],)150 -1895 y(page)h(57\),)i(Bash)d(scans)h(eac)m(h)h(w)m(ord)e(for)g(the)h(c) -m(haracters)g(`)p Fs(*)p Ft(',)h(`)p Fs(?)p Ft(',)g(and)e(`)p -Fs([)p Ft('.)39 b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 -2005 y(app)s(ears,)h(then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g -Fq(pattern)p Ft(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h -(sorted)150 2115 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(29\).)43 b(If)150 2224 y(no)26 b(matc)m(hing)i(\014lenames)e -(are)h(found,)f(and)g(the)h(shell)f(option)h Fs(nullglob)d -Ft(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left)150 2334 -y(unc)m(hanged.)40 b(If)30 b(the)g Fs(nullglob)e Ft(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 2443 y(If)i(the)g Fs(failglob)e Ft(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 2553 y(and)e(the)g(command)g(is)h(not)f(executed.) -42 b(If)30 b(the)g(shell)h(option)g Fs(nocaseglob)c Ft(is)k(enabled,)f -(the)h(matc)m(h)g(is)150 2663 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 -2796 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 Fs(.)p Ft(')f(at)g(the)g(start)g -(of)g(a)g(\014lename)150 2905 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 Fs(dotglob)150 -3015 y Ft(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 3125 y(In)30 b(other)g(cases,)i(the)e(`)p -Fs(.)p Ft(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 -b(.)275 3258 y(See)28 b(the)g(description)g(of)g Fs(shopt)e -Ft(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g(61,)g(for)f -(a)g(descrip-)150 3367 y(tion)j(of)f(the)h Fs(nocaseglob)p -Ft(,)d Fs(nullglob)p Ft(,)g Fs(failglob)p Ft(,)h(and)g -Fs(dotglob)g Ft(options.)275 3501 y(The)j Fs(GLOBIGNORE)f -Ft(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 3610 -y(pattern.)k(If)25 b Fs(GLOBIGNORE)e Ft(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 3720 y(in)33 b Fs(GLOBIGNORE)d Ft(is)j(remo)m(v)m(ed)h -(from)e(the)i(list)f(of)g(matc)m(hes.)50 b(The)33 b(\014lenames)g(`)p -Fs(.)p Ft(')g(and)f(`)p Fs(..)p Ft(')h(are)g(alw)m(a)m(ys)150 -3829 y(ignored)g(when)e Fs(GLOBIGNORE)f Ft(is)j(set)g(and)f(not)h(n)m -(ull.)48 b(Ho)m(w)m(ev)m(er,)35 b(setting)f Fs(GLOBIGNORE)c -Ft(to)j(a)g(non-n)m(ull)150 3939 y(v)-5 b(alue)34 b(has)f(the)h -(e\013ect)h(of)f(enabling)g(the)g Fs(dotglob)e Ft(shell)h(option,)j(so) -e(all)g(other)g(\014lenames)g(b)s(eginning)150 4049 y(with)43 -b(a)h(`)p Fs(.)p Ft(')f(will)h(matc)m(h.)80 b(T)-8 b(o)44 -b(get)h(the)e(old)h(b)s(eha)m(vior)f(of)h(ignoring)f(\014lenames)h(b)s -(eginning)f(with)g(a)150 4158 y(`)p Fs(.)p Ft(',)c(mak)m(e)g(`)p -Fs(.*)p Ft(')e(one)g(of)g(the)h(patterns)f(in)g Fs(GLOBIGNORE)p -Ft(.)58 b(The)37 b Fs(dotglob)e Ft(option)j(is)f(disabled)g(when)150 -4268 y Fs(GLOBIGNORE)28 b Ft(is)i(unset.)150 4465 y Fj(3.5.8.1)63 -b(P)m(attern)40 b(Matc)m(hing)150 4611 y Ft(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 -4721 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 b(The)29 -b Fl(nul)h Ft(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 4831 -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 4940 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 5073 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 5230 y Fs(*)432 -b Ft(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 Fs(globstar)e Ft(shell)i(option)630 -5340 y(is)37 b(enabled,)h(and)e(`)p Fs(*)p Ft(')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 -Fs(*)p Ft('s)p eop end -%%Page: 30 36 -TeXDict begin 30 35 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299 -y(used)37 b(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 -408 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p -Fs(/)p Ft(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Fs(*)p Ft('s)e(will)g -(matc)m(h)h(only)f(directories)630 518 y(and)k(sub)s(directories.)150 -682 y Fs(?)432 b Ft(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)150 -846 y Fs([...)o(])241 b Ft(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 956 y(h)m(yphen)k(denotes)i(a)g -Fq(range)g(expression)p Ft(;)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 1065 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 1175 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 -Fs([)p Ft(')h(is)f(a)h(`)p Fs(!)p Ft(')f(or)g(a)h(`)p -Fs(^)p Ft(')g(then)f(an)m(y)630 1284 y(c)m(haracter)c(not)f(enclosed)g -(is)g(matc)m(hed.)40 b(A)25 b(`)p Fp(\000)p Ft(')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 1394 -y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 -b(A)33 b(`)p Fs(])p Ft(')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 1503 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 1613 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 -Fs(LC_COLLATE)d Ft(and)i Fs(LC_ALL)630 1723 y Ft(shell)31 -b(v)-5 b(ariables,)31 b(if)f(set.)630 1859 y(F)-8 b(or)34 -b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p -Fs([a-dx-z])p Ft(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p -Fs([abcdxyz])p Ft('.)630 1969 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m -(haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s -(cales)630 2079 y(`)p Fs([a-dx-z])p Ft(')36 b(is)i(t)m(ypically)i(not)e -(equiv)-5 b(alen)m(t)39 b(to)g(`)p Fs([abcdxyz])p Ft(';)g(it)g(migh)m -(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 2188 y(to)34 b(`)p -Fs([aBbCcDdxXyYz])p Ft(',)c(for)j(example.)49 b(T)-8 -b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630 -2298 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g -(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630 -2407 y(the)c Fs(LC_COLLATE)e Ft(or)i Fs(LC_ALL)f Ft(en)m(vironmen)m(t)i -(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p -Fs(C)p Ft(',)g(or)f(enable)h(the)630 2517 y Fs(globasciiranges)c -Ft(shell)31 b(option.)630 2654 y(Within)23 b(`)p Fs([)p -Ft(')h(and)e(`)p Fs(])p Ft(',)j Fq(c)m(haracter)g(classes)j -Ft(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f -Fs([:)p Fq(class)t Fs(:])p Ft(,)630 2763 y(where)30 b -Fq(class)35 b Ft(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f -(de\014ned)e(in)h(the)h Fl(posix)f Ft(standard:)870 2900 -y Fs(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower) -870 3010 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 -3146 y Ft(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 Fs(word)630 3256 y Ft(c)m(haracter)32 b(class)f(matc)m(hes)h -(letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Fs(_)p Ft('.)630 3393 y(Within)25 b(`)p Fs([)p Ft(')f(and)g(`)p -Fs(])p Ft(',)i(an)e Fq(equiv)-5 b(alence)26 b(class)j -Ft(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Fs([=)p Fq(c)6 b Fs(=])p Ft(,)630 3502 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 3612 -y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fq(c)6 b Ft(.)630 3749 y(Within)21 b(`)p Fs([)p Ft(')h(and)e(`)p -Fs(])p Ft(',)j(the)f(syn)m(tax)f Fs([.)p Fq(sym)m(b)s(ol)t -Fs(.])f Ft(matc)m(hes)i(the)f(collating)j(sym)m(b)s(ol)c -Fq(sym)m(b)s(ol)t Ft(.)275 3915 y(If)29 b(the)g Fs(extglob)f -Ft(shell)h(option)h(is)g(enabled)f(using)g(the)h Fs(shopt)e -Ft(builtin,)h(sev)m(eral)i(extended)f(pattern)150 4024 -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 Fq(pattern-list)j -Ft(is)d(a)g(list)g(of)150 4134 y(one)d(or)f(more)h(patterns)f -(separated)h(b)m(y)f(a)h(`)p Fs(|)p Ft('.)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 -4244 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -4410 y Fs(?\()p Fi(pattern-list)11 b Fs(\))630 4519 y -Ft(Matc)m(hes)32 b(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m -(en)g(patterns.)150 4683 y Fs(*\()p Fi(pattern-list)11 -b Fs(\))630 4793 y Ft(Matc)m(hes)32 b(zero)f(or)g(more)f(o)s -(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)150 4957 -y Fs(+\()p Fi(pattern-list)11 b Fs(\))630 5066 y Ft(Matc)m(hes)32 -b(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m(en)i(patterns.) -150 5230 y Fs(@\()p Fi(pattern-list)11 b Fs(\))630 5340 -y Ft(Matc)m(hes)32 b(one)f(of)f(the)h(giv)m(en)g(patterns.)p -eop end -%%Page: 31 37 -TeXDict begin 31 36 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299 -y Fs(!\()p Fi(pattern-list)11 b Fs(\))630 408 y Ft(Matc)m(hes)32 -b(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g(patterns.)150 -606 y Fj(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)150 753 -y Ft(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 Fs(\\)p -Ft(',)g(`)p Fs(')p Ft(',)f(and)g(`)p Fs(")p Ft(')150 -863 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 1093 y Fr(3.6)68 -b(Redirections)150 1253 y Ft(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 Fq(redirected)k -Ft(using)c(a)i(sp)s(ecial)f(no-)150 1362 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 1472 -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 1582 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 1691 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 1801 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 1910 y(in)g(the)h(order)f -(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)275 -2044 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 2154 y(preceded)41 b(b)m(y)g(a)g(w)m(ord)g(of)g(the)g(form)g -Fs({)p Fq(v)-5 b(arname)5 b Fs(})p Ft(.)72 b(In)40 b(this)h(case,)k -(for)c(eac)m(h)h(redirection)g(op)s(erator)150 2263 y(except)30 -b Fs(>)p Ft(&-)f(and)f Fs(<)p Ft(&-,)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 2373 y Fs({)p Fq(v)-5 b(arname)5 b Fs(})p -Ft(.)42 b(If)31 b Fs(>)p Ft(&-)f(or)h Fs(<)p Ft(&-)g(is)g(preceded)g(b) -m(y)g Fs({)p Fq(v)-5 b(arname)5 b Fs(})p Ft(,)31 b(the)g(v)-5 -b(alue)31 b(of)g Fq(v)-5 b(arname)37 b Ft(de\014nes)30 -b(the)h(\014le)150 2482 y(descriptor)f(to)h(close.)275 -2616 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g -(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g -(c)m(har-)150 2726 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g -(is)g(`)p Fs(<)p Ft(',)i(the)e(redirection)g(refers)g(to)g(the)g -(standard)f(input)f(\(\014le)150 2835 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 Fs(>)p Ft(',)h(the)f(redirection) -g(refers)150 2945 y(to)e(the)g(standard)e(output)h(\(\014le)h -(descriptor)f(1\).)275 3078 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 3188 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 3298 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 3407 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 -3541 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 -3675 y Fs(ls)47 b(>)h Fi(dirlist)56 b Fs(2>&1)150 3808 -y Ft(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 3918 y(\014le)h Fq(dirlist)r Ft(,)h(while)f(the)h(command)390 -4051 y Fs(ls)47 b(2>&1)g(>)g Fi(dirlist)150 4185 y Ft(directs)28 -b(only)f(the)g(standard)g(output)g(to)h(\014le)f Fq(dirlist)r -Ft(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)g(made)h(a)f(cop)m -(y)150 4295 y(of)k(the)f(standard)g(output)g(b)s(efore)g(the)g -(standard)g(output)g(w)m(as)g(redirected)h(to)g Fq(dirlist)r -Ft(.)275 4428 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 4538 y(in)k(the)h(follo)m(wing)g(table:)150 -4696 y Fs(/dev/fd/)p Fi(fd)630 4805 y Ft(If)f Fq(fd)j -Ft(is)d(a)h(v)-5 b(alid)31 b(in)m(teger,)h(\014le)e(descriptor)h -Fq(fd)i Ft(is)d(duplicated.)150 4963 y Fs(/dev/stdin)630 -5073 y Ft(File)i(descriptor)e(0)h(is)f(duplicated.)150 -5230 y Fs(/dev/stdout)630 5340 y Ft(File)i(descriptor)e(1)h(is)f -(duplicated.)p eop end -%%Page: 32 38 -TeXDict begin 32 37 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)150 299 -y Fs(/dev/stderr)630 408 y Ft(File)32 b(descriptor)e(2)h(is)f -(duplicated.)150 574 y Fs(/dev/tcp/)p Fi(host)11 b Fs(/)p -Fi(port)630 684 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 -b(alid)41 b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c -Fq(p)s(ort)j Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 793 -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 -959 y Fs(/dev/udp/)p Fi(host)11 b Fs(/)p Fi(port)630 -1069 y Ft(If)41 b Fq(host)i Ft(is)f(a)g(v)-5 b(alid)41 -b(hostname)h(or)f(In)m(ternet)h(address,)i(and)c Fq(p)s(ort)j -Ft(is)f(an)f(in)m(teger)i(p)s(ort)630 1178 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 1347 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 1488 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 1598 y(con\015ict)i(with)f(\014le)h -(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 -b(.)150 1803 y Fj(3.6.1)63 b(Redirecting)40 b(Input)150 -1950 y Ft(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 Fq(w)m(ord)k -Ft(to)d(b)s(e)150 2060 y(op)s(ened)d(for)g(reading)g(on)g(\014le)h -(descriptor)f Fs(n)p Ft(,)h(or)f(the)g(standard)g(input)f(\(\014le)i -(descriptor)f(0\))h(if)f Fs(n)g Ft(is)h(not)150 2169 -y(sp)s(eci\014ed.)275 2310 y(The)c(general)j(format)e(for)h -(redirecting)g(input)e(is:)390 2451 y Fs([)p Fi(n)11 -b Fs(]<)p Fi(word)150 2657 y Fj(3.6.2)63 b(Redirecting)40 -b(Output)150 2804 y Ft(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 -Fq(w)m(ord)i Ft(to)f(b)s(e)150 2913 y(op)s(ened)d(for)g(writing)g(on)g -(\014le)h(descriptor)f Fq(n)p Ft(,)g(or)g(the)h(standard)e(output)h -(\(\014le)h(descriptor)f(1\))h(if)g Fq(n)e Ft(is)i(not)150 -3023 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 3164 y(The)e(general)j(format)e(for) -h(redirecting)g(output)f(is:)390 3304 y Fs([)p Fi(n)11 -b Fs(]>[|])p Fi(word)275 3445 y Ft(If)30 b(the)h(redirection)g(op)s -(erator)g(is)g(`)p Fs(>)p Ft(',)g(and)f(the)h Fs(noclobber)d -Ft(option)j(to)g(the)g Fs(set)f Ft(builtin)g(has)h(b)s(een)150 -3555 y(enabled,)i(the)f(redirection)h(will)f(fail)h(if)f(the)g(\014le)g -(whose)g(name)g(results)g(from)g(the)g(expansion)g(of)g -Fq(w)m(ord)150 3664 y Ft(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 -Fs(>|)p Ft(',)h(or)f(the)h(redirection)g(op)s(erator)g(is)150 -3774 y(`)p Fs(>)p Ft(')36 b(and)f(the)g Fs(noclobber)e -Ft(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 3884 y(named)30 b(b)m(y)g -Fq(w)m(ord)k Ft(exists.)150 4089 y Fj(3.6.3)63 b(App)s(ending)42 -b(Redirected)e(Output)150 4236 y Ft(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 4346 y Fq(w)m(ord)28 -b Ft(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g -(descriptor)g Fq(n)p Ft(,)g(or)g(the)g(standard)f(output)h(\(\014le)g -(descriptor)150 4455 y(1\))31 b(if)f Fq(n)g Ft(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 4596 y(The)f(general)j(format)e(for)h(app)s(ending)e -(output)h(is:)390 4737 y Fs([)p Fi(n)11 b Fs(]>>)p Fi(word)150 -4943 y Fj(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g -(Standard)g(Error)150 5090 y Ft(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 5199 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 Fq(w)m(ord)t Ft(.)275 5340 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:)p eop end -%%Page: 33 39 -TeXDict begin 33 38 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)390 299 -y Fs(&>)p Fi(word)150 433 y Ft(and)390 567 y Fs(>&)p -Fi(word)150 701 y Ft(Of)30 b(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 835 y Fs(>)p Fi(word)57 b Fs(2>&1)275 -969 y Ft(When)41 b(using)g(the)h(second)f(form,)k Fq(w)m(ord)f -Ft(ma)m(y)e(not)g(expand)f(to)h(a)g(n)m(um)m(b)s(er)f(or)g(`)p -Fs(-)p Ft('.)75 b(If)41 b(it)h(do)s(es,)150 1078 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 -1188 y(reasons.)150 1386 y Fj(3.6.5)63 b(App)s(ending)42 -b(Standard)f(Output)g(and)g(Standard)g(Error)150 1533 -y Ft(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 1642 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 -Fq(w)m(ord)t Ft(.)275 1776 y(The)f(format)i(for)f(app)s(ending)f -(standard)h(output)g(and)f(standard)h(error)g(is:)390 -1910 y Fs(&>>)p Fi(word)150 2044 y Ft(This)g(is)g(seman)m(tically)j -(equiv)-5 b(alen)m(t)32 b(to)390 2178 y Fs(>>)p Fi(word)57 -b Fs(2>&1)275 2312 y Ft(\(see)31 b(Duplicating)h(File)f(Descriptors)g -(b)s(elo)m(w\).)150 2510 y Fj(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 -2657 y Ft(This)c(t)m(yp)s(e)h(of)f(redirection)i(instructs)e(the)h -(shell)f(to)i(read)e(input)g(from)g(the)h(curren)m(t)f(source)h(un)m -(til)g(a)150 2767 y(line)31 b(con)m(taining)g(only)g -Fq(w)m(ord)i Ft(\(with)d(no)h(trailing)g(blanks\))f(is)g(seen.)41 -b(All)31 b(of)f(the)h(lines)f(read)g(up)f(to)i(that)150 -2876 y(p)s(oin)m(t)f(are)h(then)f(used)g(as)g(the)h(standard)f(input)f -(for)h(a)h(command.)275 3010 y(The)e(format)i(of)g(here-do)s(cumen)m -(ts)f(is:)390 3144 y Fs(<<[)p Fp(\000)p Fs(])p Fi(word)772 -3254 y(here-document)390 3363 y(delimiter)275 3497 y -Ft(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h(command)f -(substitution,)h(arithmetic)g(expansion,)g(or)150 3607 -y(\014lename)38 b(expansion)f(is)h(p)s(erformed)e(on)h -Fq(w)m(ord)t Ft(.)62 b(If)37 b(an)m(y)h(c)m(haracters)h(in)e -Fq(w)m(ord)k Ft(are)d(quoted,)i(the)e Fq(de-)150 3716 -y(limiter)h Ft(is)32 b(the)g(result)g(of)g(quote)g(remo)m(v)-5 -b(al)33 b(on)f Fq(w)m(ord)t Ft(,)g(and)f(the)h(lines)g(in)g(the)g -(here-do)s(cumen)m(t)f(are)i(not)150 3826 y(expanded.)71 -b(If)40 b Fq(w)m(ord)k Ft(is)d(unquoted,)h(all)g(lines)f(of)g(the)f -(here-do)s(cumen)m(t)h(are)g(sub)5 b(jected)41 b(to)g(param-)150 -3936 y(eter)c(expansion,)i(command)d(substitution,)i(and)e(arithmetic)i -(expansion,)g(the)f(c)m(haracter)i(sequence)150 4045 -y Fs(\\newline)28 b Ft(is)j(ignored,)f(and)g(`)p Fs(\\)p -Ft(')h(m)m(ust)f(b)s(e)g(used)f(to)i(quote)g(the)g(c)m(haracters)h(`)p -Fs(\\)p Ft(',)e(`)p Fs($)p Ft(',)h(and)f(`)p Fs(`)p Ft('.)275 -4179 y(If)21 b(the)i(redirection)g(op)s(erator)g(is)f(`)p -Fs(<<-)p Ft(',)i(then)e(all)h(leading)g(tab)g(c)m(haracters)h(are)e -(stripp)s(ed)f(from)h(input)150 4289 y(lines)33 b(and)e(the)i(line)g -(con)m(taining)h Fq(delimiter)7 b Ft(.)47 b(This)31 b(allo)m(ws)j -(here-do)s(cumen)m(ts)f(within)e(shell)i(scripts)f(to)150 -4398 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150 -4596 y Fj(3.6.7)63 b(Here)41 b(Strings)150 4743 y Ft(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 4877 y Fs(<<<)47 b Fi(word)275 5011 y Ft(The)21 -b Fq(w)m(ord)k Ft(undergo)s(es)c(brace)h(expansion,)i(tilde)e -(expansion,)i(parameter)e(and)f(v)-5 b(ariable)23 b(expansion,)150 -5121 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 -5230 y(w)m(ord)j(splitting)i(are)f(not)g(p)s(erformed.)39 -b(The)29 b(result)h(is)g(supplied)e(as)i(a)h(single)f(string)g(to)g -(the)g(command)150 5340 y(on)g(its)h(standard)f(input.)p -eop end -%%Page: 34 40 -TeXDict begin 34 39 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299 -y Fj(3.6.8)63 b(Duplicating)41 b(File)g(Descriptors)150 -446 y Ft(The)30 b(redirection)h(op)s(erator)390 585 y -Fs([)p Fi(n)11 b Fs(]<&)p Fi(word)150 723 y Ft(is)35 -b(used)e(to)j(duplicate)f(input)f(\014le)g(descriptors.)53 -b(If)34 b Fq(w)m(ord)k Ft(expands)c(to)h(one)g(or)g(more)g(digits,)h -(the)f(\014le)150 833 y(descriptor)e(denoted)h(b)m(y)g -Fq(n)f Ft(is)g(made)h(to)g(b)s(e)f(a)h(cop)m(y)g(of)g(that)g(\014le)g -(descriptor.)50 b(If)33 b(the)h(digits)g(in)f Fq(w)m(ord)150 -942 y Ft(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 Fq(w)m(ord)j Ft(ev)-5 b(aluates)150 1052 y(to)31 -b(`)p Fs(-)p Ft(',)g(\014le)g(descriptor)g Fq(n)f Ft(is)g(closed.)43 -b(If)30 b Fq(n)g Ft(is)g(not)h(sp)s(eci\014ed,)f(the)h(standard)f -(input)g(\(\014le)h(descriptor)f(0\))150 1162 y(is)g(used.)275 -1300 y(The)f(op)s(erator)390 1439 y Fs([)p Fi(n)11 b -Fs(]>&)p Fi(word)150 1578 y Ft(is)40 b(used)g(similarly)h(to)g -(duplicate)f(output)g(\014le)h(descriptors.)70 b(If)40 -b Fq(n)f Ft(is)i(not)f(sp)s(eci\014ed,)i(the)f(standard)150 -1687 y(output)30 b(\(\014le)g(descriptor)g(1\))h(is)f(used.)39 -b(If)30 b(the)g(digits)h(in)e Fq(w)m(ord)34 b Ft(do)29 -b(not)i(sp)s(ecify)e(a)i(\014le)f(descriptor)g(op)s(en)150 -1797 y(for)35 b(output,)h(a)g(redirection)g(error)e(o)s(ccurs.)55 -b(If)35 b Fq(w)m(ord)j Ft(ev)-5 b(aluates)37 b(to)f(`)p -Fs(-)p Ft(',)h(\014le)e(descriptor)g Fq(n)g Ft(is)g(closed.)150 -1906 y(As)f(a)g(sp)s(ecial)h(case,)h(if)e Fq(n)f Ft(is)h(omitted,)i -(and)e Fq(w)m(ord)j Ft(do)s(es)d(not)g(expand)f(to)i(one)f(or)g(more)g -(digits)h(or)f(`)p Fs(-)p Ft(',)150 2016 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 2219 y Fj(3.6.9)63 b(Mo)m(ving)41 -b(File)h(Descriptors)150 2366 y Ft(The)30 b(redirection)h(op)s(erator) -390 2505 y Fs([)p Fi(n)11 b Fs(]<&)p Fi(digit)g Fs(-)150 -2644 y Ft(mo)m(v)m(es)33 b(the)f(\014le)g(descriptor)f -Fq(digit)k Ft(to)d(\014le)g(descriptor)g Fq(n)p Ft(,)f(or)h(the)g -(standard)f(input)f(\(\014le)j(descriptor)e(0\))150 2753 -y(if)f Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)40 b Fq(digit)33 -b Ft(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h -Fq(n)p Ft(.)275 2892 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 3031 y Fs([)p Fi(n)11 b Fs(]>&)p Fi(digit)g -Fs(-)150 3169 y Ft(mo)m(v)m(es)29 b(the)g(\014le)f(descriptor)f -Fq(digit)k Ft(to)e(\014le)f(descriptor)g Fq(n)p Ft(,)g(or)g(the)g -(standard)f(output)h(\(\014le)g(descriptor)g(1\))150 -3279 y(if)i Fq(n)g Ft(is)h(not)f(sp)s(eci\014ed.)150 -3483 y Fj(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 3629 y Ft(The)30 -b(redirection)h(op)s(erator)390 3768 y Fs([)p Fi(n)11 -b Fs(]<>)p Fi(word)150 3907 y Ft(causes)39 b(the)g(\014le)g(whose)g -(name)g(is)g(the)g(expansion)g(of)g Fq(w)m(ord)j Ft(to)d(b)s(e)g(op)s -(ened)f(for)g(b)s(oth)h(reading)g(and)150 4016 y(writing)33 -b(on)f(\014le)h(descriptor)f Fq(n)p Ft(,)h(or)g(on)f(\014le)h -(descriptor)g(0)g(if)f Fq(n)g Ft(is)h(not)g(sp)s(eci\014ed.)47 -b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 4126 y(exist,)e(it)g(is)g -(created.)150 4365 y Fr(3.7)68 b(Executing)46 b(Commands)150 -4589 y Fj(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 -4736 y Ft(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 -4846 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) -199 4984 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 5094 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 -5230 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 5340 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g -(20\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h -(the)e(\014rst)p eop end -%%Page: 35 41 -TeXDict begin 35 40 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)330 299 -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 -408 y(men)m(ts.)199 537 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(31\).)199 666 y(4.)61 b(The)25 -b(text)h(after)f(the)g(`)p Fs(=)p Ft(')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 776 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 886 y(b)s(eing)30 b(assigned)h(to)g(the)f(v)-5 -b(ariable.)275 1034 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 1143 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 1253 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 1363 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 1472 y(status.)275 1601 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 1711 -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 -1840 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 1949 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 2059 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 2168 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 -2278 y(zero.)150 2466 y Fj(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h -(Execution)150 2613 y Ft(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 2723 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 2852 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 2961 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 3071 y(F)-8 b(unctions],)31 b(page)h(16.)199 -3200 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 3309 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 3438 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 -3548 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Fs($PATH)d -Ft(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m -(y)g(that)330 3657 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 3767 y(a)m(v)m(oid)e(m)m(ultiple)f Fs(PATH)f -Ft(searc)m(hes)i(\(see)f(the)g(description)g(of)f Fs(hash)g -Ft(in)g(Section)i(4.1)f([Bourne)g(Shell)330 3877 y(Builtins],)37 -b(page)f(40\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h -(in)f Fs($PATH)e Ft(is)i(p)s(erformed)f(only)h(if)g(the)330 -3986 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 4096 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e -Fs(command_not_found_handle)p Ft(.)32 b(If)23 b(that)h(function)f -(exists,)330 4205 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 4315 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 4425 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 4534 y(127.)199 4663 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 4773 -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 -4882 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 4992 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 5121 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 5230 y(a)d(directory)-8 b(,)34 -b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fq(shell)g(script)h -Ft(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330 -5340 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(38.)p -eop end -%%Page: 36 42 -TeXDict begin 36 41 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)199 299 -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 408 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 -608 y Fj(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 -755 y Ft(The)30 b(shell)g(has)h(an)f Fq(execution)h(en)m(vironmen)m(t)r -Ft(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225 -890 y Fp(\017)60 b Ft(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 1000 y(the)g Fs(exec)e -Ft(builtin)225 1135 y Fp(\017)60 b Ft(the)28 b(curren)m(t)g(w)m(orking) -h(directory)g(as)f(set)h(b)m(y)f Fs(cd)p Ft(,)g Fs(pushd)p -Ft(,)g(or)g Fs(popd)p Ft(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at) -330 1244 y(in)m(v)m(o)s(cation)225 1379 y Fp(\017)60 -b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f -Fs(umask)f Ft(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225 -1514 y Fp(\017)60 b Ft(curren)m(t)30 b(traps)g(set)h(b)m(y)f -Fs(trap)225 1648 y Fp(\017)60 b Ft(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 -Fs(set)f Ft(or)i(inherited)f(from)g(the)330 1758 y(shell's)i(paren)m(t) -f(in)g(the)h(en)m(vironmen)m(t)225 1893 y Fp(\017)60 -b Ft(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 -2002 y(en)m(vironmen)m(t)225 2137 y Fp(\017)60 b Ft(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 2247 -y(b)m(y)c Fs(set)225 2381 y Fp(\017)60 b Ft(options)31 -b(enabled)f(b)m(y)g Fs(shopt)f Ft(\(see)j(Section)f(4.3.2)h([The)e -(Shopt)g(Builtin],)h(page)g(61\))225 2516 y Fp(\017)60 -b Ft(shell)31 b(aliases)g(de\014ned)f(with)g Fs(alias)f -Ft(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(87\))225 -2651 y Fp(\017)60 b Ft(v)-5 b(arious)50 b(pro)s(cess)f -Fl(id)p Ft(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 2761 y(page)31 -b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Fs($$)p Ft(,)g(and)g(the)h(v)-5 -b(alue)31 b(of)f Fs($PPID)275 2921 y Ft(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 3030 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 3140 y(noted,)31 -b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225 -3275 y Fp(\017)60 b Ft(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 3384 y(the)g(command)225 3519 -y Fp(\017)60 b Ft(the)31 b(curren)m(t)f(w)m(orking)g(directory)225 -3654 y Fp(\017)60 b Ft(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -3789 y Fp(\017)60 b Ft(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 3898 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(37\))225 4033 y Fp(\017)60 b -Ft(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 4143 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) -275 4303 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 -4412 y(en)m(vironmen)m(t.)275 4547 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 4657 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 4767 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 -4876 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 4986 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 -5095 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -5230 y(Subshells)24 b(spa)m(wned)h(to)i(execute)g(command)f -(substitutions)g(inherit)g(the)g(v)-5 b(alue)26 b(of)g(the)h(`)p -Fs(-e)p Ft(')e(option)150 5340 y(from)20 b(the)h(paren)m(t)g(shell.)37 -b(When)21 b(not)f(in)h Fl(posix)f Ft(mo)s(de,)i(Bash)f(clears)g(the)g -(`)p Fs(-e)p Ft(')f(option)h(in)g(suc)m(h)f(subshells.)p -eop end -%%Page: 37 43 -TeXDict begin 37 42 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299 -y(If)38 b(a)h(command)f(is)g(follo)m(w)m(ed)j(b)m(y)d(a)h(`)p -Fs(&)p Ft(')g(and)f(job)g(con)m(trol)i(is)e(not)h(activ)m(e,)k(the)c -(default)g(standard)150 408 y(input)e(for)g(the)h(command)f(is)h(the)g -(empt)m(y)g(\014le)f(`)p Fs(/dev/null)p Ft('.)61 b(Otherwise,)39 -b(the)f(in)m(v)m(ok)m(ed)h(command)150 518 y(inherits)30 -b(the)h(\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 738 y Fj(3.7.4)63 -b(En)m(vironmen)m(t)150 885 y Ft(When)28 b(a)i(program)e(is)h(in)m(v)m -(ok)m(ed)h(it)f(is)g(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)f(called)i -(the)f Fq(en)m(vironmen)m(t)r Ft(.)41 b(This)28 b(is)h(a)150 -994 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g -Fs(name=value)p Ft(.)275 1149 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 1259 -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 -1368 y(marking)26 b(it)g(for)g Fq(exp)s(ort)h Ft(to)g(c)m(hild)f(pro)s -(cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m -(t.)39 b(The)150 1478 y Fs(export)c Ft(and)i(`)p Fs(declare)29 -b(-x)p Ft(')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 1588 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 1697 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 -1807 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 1916 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 Fs(unset)e Ft(and)h(`)p Fs(export)j(-n)p Ft(')e(commands,)g -(plus)150 2026 y(an)m(y)k(additions)f(via)h(the)g Fs(export)d -Ft(and)i(`)p Fs(declare)f(-x)p Ft(')h(commands.)275 2181 -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 -2290 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 -2400 y(page)g(18.)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 2555 y(If)d(the)h(`)p Fs(-k)p Ft(')g(option)g(is)g(set)g -(\(see)h(Section)f(4.3.1)i([The)e(Set)g(Builtin],)h(page)f(57\),)i -(then)e(all)g(parameter)150 2665 y(assignmen)m(ts)i(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 2774 y(command)g(name.)275 -2929 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 Fs($_)p Ft(')f(is)g(set)h(to)f(the)g(full)g -(pathname)150 3039 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 3258 y Fj(3.7.5)63 -b(Exit)40 b(Status)150 3405 y Ft(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 Fq(w)m(aitpid)k Ft(system)d(call)g(or)150 3515 -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 3624 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 -3734 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 -3844 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 3999 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 4108 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 4218 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 4327 y(failure)37 b(mo)s(des.)61 b(When)37 -b(a)g(command)g(terminates)h(on)f(a)g(fatal)i(signal)f(whose)f(n)m(um)m -(b)s(er)e(is)i Fq(N)10 b Ft(,)38 b(Bash)150 4437 y(uses)30 -b(the)g(v)-5 b(alue)31 b(128)p Fs(+)p Fq(N)42 b Ft(as)30 -b(the)h(exit)g(status.)275 4592 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 4701 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 -4856 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 -4966 y(is)c(greater)i(than)e(zero.)275 5121 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 5230 -y(ditional)i(Constructs],)h(page)f(10\))g(and)e(some)i(of)f(the)g(list) -g(constructs)g(\(see)h(Section)f(3.2.3)i([Lists],)150 -5340 y(page)31 b(9\).)p eop end -%%Page: 38 44 -TeXDict begin 38 43 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)275 299 -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 -408 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 518 y(return)29 b(an)i(exit)g(status)g(of)f(2)h -(to)g(indicate)g(incorrect)h(usage.)150 722 y Fj(3.7.6)63 -b(Signals)150 869 y Ft(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 -Fs(SIGTERM)d Ft(\(so)j(that)g(`)p Fs(kill)150 979 y(0)p -Ft(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j(shell\),)f(and)d -Fs(SIGINT)f Ft(is)i(caugh)m(t)h(and)f(handled)f(\(so)h(that)h(the)f -Fs(wait)150 1088 y Ft(builtin)24 b(is)h(in)m(terruptible\).)39 -b(When)24 b(Bash)g(receiv)m(es)j(a)d Fs(SIGINT)p Ft(,)h(it)g(breaks)f -(out)h(of)f(an)m(y)h(executing)h(lo)s(ops.)150 1198 y(In)31 -b(all)h(cases,)h(Bash)f(ignores)g Fs(SIGQUIT)p Ft(.)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 1307 y(page)f(97\),)h(Bash)e(ignores)h -Fs(SIGTTIN)p Ft(,)e Fs(SIGTTOU)p Ft(,)g(and)g Fs(SIGTSTP)p -Ft(.)275 1446 y(Non-builtin)i(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 1556 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m -(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f(e\013ect,)k -(async)m(hronous)c(commands)150 1666 y(ignore)f Fs(SIGINT)e -Ft(and)h Fs(SIGQUIT)e Ft(in)j(addition)f(to)i(these)f(inherited)f -(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 1775 y(result)27 -b(of)h(command)f(substitution)h(ignore)g(the)g(k)m(eyb)s -(oard-generated)g(job)g(con)m(trol)h(signals)f Fs(SIGTTIN)p -Ft(,)150 1885 y Fs(SIGTTOU)p Ft(,)h(and)g Fs(SIGTSTP)p -Ft(.)275 2024 y(The)h(shell)i(exits)g(b)m(y)f(default)g(up)s(on)f -(receipt)i(of)f(a)h Fs(SIGHUP)p Ft(.)42 b(Before)32 b(exiting,)h(an)e -(in)m(teractiv)m(e)j(shell)150 2134 y(resends)41 b(the)i -Fs(SIGHUP)e Ft(to)i(all)g(jobs,)i(running)c(or)h(stopp)s(ed.)76 -b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g Fs(SIGCONT)d -Ft(to)150 2243 y(ensure)32 b(that)h(they)g(receiv)m(e)i(the)e -Fs(SIGHUP)p Ft(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)g(from) -g(sending)f(the)h Fs(SIGHUP)e Ft(signal)150 2353 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 Fs(disown)e Ft(builtin)h(\(see)150 -2462 y(Section)f(7.2)g([Job)f(Con)m(trol)h(Builtins],)g(page)g(98\))h -(or)e(mark)m(ed)g(to)h(not)f(receiv)m(e)i Fs(SIGHUP)d -Ft(using)h Fs(disown)150 2572 y(-h)p Ft(.)275 2711 y(If)38 -b(the)h Fs(huponexit)e Ft(shell)i(option)g(has)g(b)s(een)f(set)i(with)f -Fs(shopt)e Ft(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150 -2821 y(Builtin],)31 b(page)g(61\),)h(Bash)f(sends)e(a)i -Fs(SIGHUP)e Ft(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login) -e(shell)g(exits.)275 2960 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g -(command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic) -m(h)h(a)g(trap)150 3069 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g -(not)g(b)s(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55 -b(When)35 b(Bash)g(is)150 3179 y(w)m(aiting)j(for)f(an)g(async)m -(hronous)g(command)g(via)h(the)f Fs(wait)f Ft(builtin,)i(the)g -(reception)g(of)f(a)g(signal)h(for)150 3289 y(whic)m(h)d(a)g(trap)g -(has)g(b)s(een)f(set)h(will)h(cause)f(the)g Fs(wait)f -Ft(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 -3398 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) -f(the)h(trap)f(is)g(executed.)150 3638 y Fr(3.8)68 b(Shell)45 -b(Scripts)150 3797 y Ft(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) -f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h -(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 3907 y(non-option)i -(argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)e(neither)h(the)g(`) -p Fs(-c)p Ft(')g(nor)g(`)p Fs(-s)p Ft(')g(option)g(is)g(supplied)150 -4016 y(\(see)25 b(Section)h(6.1)f([In)m(v)m(oking)h(Bash],)g(page)f -(79\),)i(Bash)e(reads)f(and)g(executes)i(commands)e(from)g(the)h -(\014le,)150 4126 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s -(eration)f(creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 -b(The)31 b(shell)i(\014rst)e(searc)m(hes)150 4235 y(for)d(the)g(\014le) -g(in)g(the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e -(the)i(directories)g(in)e Fs($PATH)g Ft(if)h(not)g(found)e(there.)275 -4375 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f -(sp)s(ecial)i(parameter)f Fs(0)f Ft(to)h(the)g(name)g(of)g(the)g -(\014le,)150 4484 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j -(and)d(the)h(p)s(ositional)g(parameters)f(are)h(set)g(to)g(the)g -(remain-)150 4594 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m -(en.)67 b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h -(the)f(p)s(ositional)150 4703 y(parameters)31 b(are)f(unset.)275 -4842 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m -(y)e(using)g(the)h Fs(chmod)e Ft(command)h(to)h(turn)e(on)i(the)150 -4952 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h -(\014le)f(while)g(searc)m(hing)h(the)f Fs($PATH)f Ft(for)h(a)h -(command,)h(it)150 5062 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h -(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 5201 -y Fs(filename)46 b Fi(arguments)150 5340 y Ft(is)30 b(equiv)-5 -b(alen)m(t)32 b(to)f(executing)p eop end -%%Page: 39 45 -TeXDict begin 39 44 bop 150 -116 a Ft(Chapter)30 b(3:)41 -b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)390 299 -y Fs(bash)47 b(filename)e Fi(arguments)150 433 y Ft(if)30 -b Fs(filename)d Ft(is)j(an)f(executable)j(shell)e(script.)40 -b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e -(e\013ect)150 543 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g -(in)m(v)m(ok)m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h -(exception)h(that)f(the)150 653 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 Fs(hash)f Ft(in)h(Section)h(4.1)150 -762 y([Bourne)30 b(Shell)h(Builtins],)g(page)g(40\))h(are)e(retained)h -(b)m(y)f(the)h(c)m(hild.)275 897 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 1006 y(mec)m(hanism.)50 b(If)33 -b(the)g(\014rst)g(line)h(of)f(a)h(script)f(b)s(egins)g(with)g(the)g(t)m -(w)m(o)i(c)m(haracters)g(`)p Fs(#!)p Ft(',)f(the)g(remainder)150 -1116 y(of)d(the)g(line)h(sp)s(eci\014es)e(an)h(in)m(terpreter)g(for)g -(the)g(program.)43 b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i -Fs(awk)p Ft(,)e(P)m(erl,)150 1225 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.)275 1360 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 1469 y(in)m(terpreter)33 b(name)h(on)f(the)g -(\014rst)f(line)i(of)f(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y) -e(the)g(name)g(of)g(the)h(script)f(\014le,)150 1579 y(follo)m(w)m(ed)g -(b)m(y)f(the)f(rest)h(of)g(the)f(argumen)m(ts.)45 b(Bash)31 -b(will)h(p)s(erform)e(this)i(action)h(on)e(op)s(erating)h(systems)150 -1689 y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40 -b(Note)25 b(that)f(some)g(older)g(v)m(ersions)f(of)h(Unix)f(limit)i -(the)f(in)m(terpreter)150 1798 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g -(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 1933 y(Bash)h(scripts)g -(often)g(b)s(egin)g(with)g Fs(#!)e(/bin/bash)g Ft(\(assuming)i(that)h -(Bash)f(has)g(b)s(een)f(installed)i(in)150 2042 y(`)p -Fs(/bin)p Ft('\),)25 b(since)e(this)g(ensures)f(that)i(Bash)f(will)h(b) -s(e)e(used)h(to)h(in)m(terpret)f(the)g(script,)i(ev)m(en)f(if)f(it)h -(is)f(executed)150 2152 y(under)29 b(another)h(shell.)p -eop end -%%Page: 40 46 -TeXDict begin 40 45 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(40)150 299 y Fo(4)80 -b(Shell)53 b(Builtin)f(Commands)150 541 y Ft(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 -651 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f -(simple)h(command)f(\(see)h(Section)g(3.2.1)h([Simple)f(Commands],)150 -760 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f -(directly)-8 b(,)24 b(without)d(in)m(v)m(oking)h(another)f(program.)37 -b(Builtin)150 870 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g -(functionalit)m(y)h(imp)s(ossible)e(or)h(incon)m(v)m(enien)m(t)h(to)f -(obtain)150 979 y(with)30 b(separate)h(utilities.)275 -1117 y(This)c(section)j(brie\015y)e(describ)s(es)g(the)h(builtins)f -(whic)m(h)g(Bash)h(inherits)f(from)g(the)h(Bourne)g(Shell,)g(as)150 -1226 y(w)m(ell)i(as)g(the)g(builtin)e(commands)h(whic)m(h)h(are)f -(unique)g(to)h(or)f(ha)m(v)m(e)i(b)s(een)d(extended)i(in)f(Bash.)275 -1363 y(Sev)m(eral)45 b(builtin)e(commands)h(are)h(describ)s(ed)e(in)h -(other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 -1473 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 1583 y(page)40 b(98\),)j(the)c(directory)h(stac)m(k)g -(\(see)g(Section)g(6.8.1)h([Directory)g(Stac)m(k)f(Builtins],)i(page)e -(90\),)j(the)150 1692 y(command)23 b(history)h(\(see)g(Section)g(9.2)h -([Bash)f(History)g(Builtins],)h(page)g(133\),)h(and)d(the)h -(programmable)150 1802 y(completion)32 b(facilities)g(\(see)g(Section)f -(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(126\).)275 -1939 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 Fl(posix)g Ft(or)g(Bash.)275 2076 y(Unless)39 -b(otherwise)h(noted,)i(eac)m(h)f(builtin)e(command)g(do)s(cumen)m(ted)g -(as)h(accepting)h(options)f(pre-)150 2186 y(ceded)33 -b(b)m(y)h(`)p Fs(-)p Ft(')f(accepts)i(`)p Fs(--)p Ft(')e(to)h(signify)f -(the)h(end)e(of)i(the)f(options.)50 b(The)33 b Fs(:)p -Ft(,)h Fs(true)p Ft(,)f Fs(false)p Ft(,)f(and)h Fs(test)150 -2295 y Ft(builtins)i(do)g(not)h(accept)g(options)g(and)f(do)g(not)h -(treat)g(`)p Fs(--)p Ft(')f(sp)s(ecially)-8 b(.)57 b(The)35 -b Fs(exit)p Ft(,)h Fs(logout)p Ft(,)f Fs(break)p Ft(,)150 -2405 y Fs(continue)p Ft(,)29 b Fs(let)p Ft(,)i(and)g -Fs(shift)f Ft(builtins)g(accept)j(and)e(pro)s(cess)g(argumen)m(ts)g(b)s -(eginning)g(with)g(`)p Fs(-)p Ft(')g(with-)150 2515 y(out)f(requiring)f -(`)p Fs(--)p Ft('.)41 b(Other)29 b(builtins)h(that)g(accept)h(argumen)m -(ts)f(but)g(are)g(not)g(sp)s(eci\014ed)f(as)h(accepting)150 -2624 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s(eginning)e(with)h -(`)p Fs(-)p Ft(')h(as)f(in)m(v)-5 b(alid)25 b(options)g(and)e(require)h -(`)p Fs(--)p Ft(')g(to)h(prev)m(en)m(t)150 2734 y(this)30 -b(in)m(terpretation.)150 2970 y Fr(4.1)68 b(Bourne)45 -b(Shell)g(Builtins)150 3130 y Ft(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 3239 y(are)31 b(implemen)m(ted)g(as)f(sp)s -(eci\014ed)g(b)m(y)g(the)h Fl(posix)e Ft(standard.)150 -3403 y Fs(:)h Ft(\(a)h(colon\))870 3512 y Fs(:)47 b([)p -Fi(arguments)11 b Fs(])630 3648 y Ft(Do)43 b(nothing)f(b)s(ey)m(ond)g -(expanding)f Fq(argumen)m(ts)46 b Ft(and)c(p)s(erforming)f -(redirections.)76 b(The)630 3758 y(return)29 b(status)i(is)f(zero.)150 -3920 y Fs(.)g Ft(\(a)h(p)s(erio)s(d\))870 4029 y Fs(.)47 -b Fi(filename)57 b Fs([)p Fi(arguments)11 b Fs(])630 -4165 y Ft(Read)34 b(and)f(execute)i(commands)e(from)g(the)h -Fq(\014lename)39 b Ft(argumen)m(t)34 b(in)f(the)h(curren)m(t)g(shell) -630 4275 y(con)m(text.)45 b(If)31 b Fq(\014lename)37 -b Ft(do)s(es)31 b(not)g(con)m(tain)i(a)e(slash,)h(the)g -Fs(PATH)e Ft(v)-5 b(ariable)32 b(is)f(used)f(to)i(\014nd)630 -4384 y Fq(\014lename)5 b Ft(.)51 b(When)34 b(Bash)g(is)g(not)g(in)f -Fl(posix)g Ft(mo)s(de,)i(the)f(curren)m(t)f(directory)i(is)e(searc)m -(hed)630 4494 y(if)e Fq(\014lename)36 b Ft(is)31 b(not)h(found)d(in)i -Fs($PATH)p Ft(.)41 b(If)31 b(an)m(y)g Fq(argumen)m(ts)k -Ft(are)c(supplied,)f(they)i(b)s(ecome)630 4604 y(the)e(p)s(ositional)h -(parameters)g(when)e Fq(\014lename)35 b Ft(is)30 b(executed.)42 -b(Otherwise)30 b(the)g(p)s(ositional)630 4713 y(parameters)43 -b(are)h(unc)m(hanged.)79 b(The)42 b(return)g(status)i(is)f(the)g(exit)h -(status)g(of)f(the)g(last)630 4823 y(command)37 b(executed,)k(or)c -(zero)h(if)g(no)f(commands)g(are)h(executed.)63 b(If)36 -b Fq(\014lename)43 b Ft(is)38 b(not)630 4932 y(found,)22 -b(or)f(cannot)g(b)s(e)f(read,)j(the)e(return)f(status)h(is)g(non-zero.) -38 b(This)20 b(builtin)h(is)f(equiv)-5 b(alen)m(t)630 -5042 y(to)31 b Fs(source)p Ft(.)150 5204 y Fs(break)870 -5340 y(break)46 b([)p Fi(n)11 b Fs(])p eop end -%%Page: 41 47 -TeXDict begin 41 46 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(41)630 299 y(Exit)45 -b(from)f(a)g Fs(for)p Ft(,)k Fs(while)p Ft(,)e Fs(until)p -Ft(,)h(or)d Fs(select)f Ft(lo)s(op.)83 b(If)44 b Fq(n)g -Ft(is)g(supplied,)j(the)e Fq(n)p Ft(th)630 408 y(enclosing)c(lo)s(op)f -(is)h(exited.)70 b Fq(n)40 b Ft(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i -(equal)f(to)h(1.)70 b(The)40 b(return)630 518 y(status)31 -b(is)f(zero)h(unless)f Fq(n)g Ft(is)g(not)h(greater)g(than)g(or)f -(equal)h(to)g(1.)150 677 y Fs(cd)870 812 y(cd)47 b([-L|[-P)f([-e]]])g -([)p Fi(directory)11 b Fs(])630 946 y Ft(Change)26 b(the)g(curren)m(t)g -(w)m(orking)g(directory)h(to)f Fq(directory)8 b Ft(.)40 -b(If)25 b Fq(directory)35 b Ft(is)26 b(not)g(supplied,)630 -1056 y(the)g(v)-5 b(alue)26 b(of)f(the)h Fs(HOME)e Ft(shell)i(v)-5 -b(ariable)26 b(is)g(used.)38 b(An)m(y)25 b(additional)i(argumen)m(ts)e -(follo)m(wing)630 1166 y Fq(directory)39 b Ft(are)31 -b(ignored.)41 b(If)30 b(the)h(shell)g(v)-5 b(ariable)31 -b Fs(CDPATH)e Ft(exists,)i(it)g(is)g(used)f(as)g(a)h(searc)m(h)630 -1275 y(path:)39 b(eac)m(h)28 b(directory)g(name)f(in)g -Fs(CDPATH)e Ft(is)j(searc)m(hed)f(for)g Fq(directory)8 -b Ft(,)29 b(with)e(alternativ)m(e)630 1385 y(directory)k(names)g(in)f -Fs(CDPATH)f Ft(separated)j(b)m(y)e(a)h(colon)h(\(`)p -Fs(:)p Ft('\).)43 b(If)30 b Fq(directory)39 b Ft(b)s(egins)30 -b(with)630 1494 y(a)h(slash,)f Fs(CDPATH)f Ft(is)h(not)h(used.)630 -1629 y(The)c(`)p Fs(-P)p Ft(')h(option)g(means)g(to)h(not)f(follo)m(w)h -(sym)m(b)s(olic)f(links:)39 b(sym)m(b)s(olic)28 b(links)g(are)g(resolv) -m(ed)630 1738 y(while)41 b Fs(cd)f Ft(is)h(tra)m(v)m(ersing)h -Fq(directory)49 b Ft(and)40 b(b)s(efore)g(pro)s(cessing)h(an)f -(instance)i(of)f(`)p Fs(..)p Ft(')f(in)630 1848 y Fq(directory)8 -b Ft(.)630 1983 y(By)30 b(default,)g(or)g(when)f(the)h(`)p -Fs(-L)p Ft(')f(option)i(is)f(supplied,)e(sym)m(b)s(olic)j(links)e(in)g -Fq(directory)39 b Ft(are)630 2092 y(resolv)m(ed)31 b(after)g -Fs(cd)f Ft(pro)s(cesses)g(an)g(instance)h(of)g(`)p Fs(..)p -Ft(')f(in)g Fq(directory)8 b Ft(.)630 2227 y(If)34 b(`)p -Fs(..)p Ft(')g(app)s(ears)g(in)g Fq(directory)8 b Ft(,)36 -b(it)e(is)h(pro)s(cessed)f(b)m(y)g(remo)m(ving)h(the)g(immediately)g -(pre-)630 2336 y(ceding)c(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g -(a)g(slash)f(or)h(the)f(b)s(eginning)g(of)g Fq(directory)8 -b Ft(.)630 2471 y(If)25 b(the)g(`)p Fs(-e)p Ft(')g(option)h(is)f -(supplied)f(with)g(`)p Fs(-P)p Ft(')h(and)g(the)g(curren)m(t)g(w)m -(orking)h(directory)f(cannot)630 2580 y(b)s(e)37 b(successfully)g -(determined)g(after)i(a)e(successful)h(directory)g(c)m(hange,)i -Fs(cd)d Ft(will)h(return)630 2690 y(an)28 b(unsuccessful)f(status.)41 -b(If)28 b Fq(directory)36 b Ft(is)29 b(`)p Fs(-)p Ft(',)g(it)g(is)f -(con)m(v)m(erted)i(to)f Fs($OLDPWD)e Ft(b)s(efore)h(the)630 -2800 y(directory)j(c)m(hange)g(is)g(attempted.)630 2934 -y(If)i(a)h(non-empt)m(y)g(directory)g(name)f(from)g Fs(CDPATH)f -Ft(is)h(used,)h(or)g(if)f(`)p Fs(-)p Ft(')h(is)f(the)h(\014rst)f(argu-) -630 3044 y(men)m(t,)28 b(and)e(the)h(directory)g(c)m(hange)h(is)f -(successful,)h(the)f(absolute)g(pathname)g(of)f(the)h(new)630 -3153 y(w)m(orking)k(directory)g(is)f(written)g(to)i(the)e(standard)g -(output.)630 3288 y(The)f(return)g(status)h(is)f(zero)i(if)e(the)h -(directory)g(is)g(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 -3397 y(erwise.)150 3557 y Fs(continue)870 3691 y(continue)46 -b([)p Fi(n)11 b Fs(])630 3826 y Ft(Resume)32 b(the)g(next)g(iteration)i -(of)e(an)g(enclosing)h Fs(for)p Ft(,)f Fs(while)p Ft(,)f -Fs(until)p Ft(,)g(or)h Fs(select)f Ft(lo)s(op.)630 3935 -y(If)f Fq(n)h Ft(is)g(supplied,)e(the)j(execution)g(of)f(the)g -Fq(n)p Ft(th)f(enclosing)i(lo)s(op)f(is)f(resumed.)42 -b Fq(n)30 b Ft(m)m(ust)h(b)s(e)630 4045 y(greater)39 -b(than)f(or)g(equal)g(to)h(1.)63 b(The)38 b(return)e(status)j(is)e -(zero)i(unless)e Fq(n)h Ft(is)g(not)g(greater)630 4154 -y(than)30 b(or)g(equal)h(to)g(1.)150 4314 y Fs(eval)870 -4448 y(eval)47 b([)p Fi(arguments)11 b Fs(])630 4583 -y Ft(The)25 b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f -(a)g(single)h(command,)f(whic)m(h)g(is)f(then)630 4692 -y(read)35 b(and)g(executed,)j(and)d(its)h(exit)g(status)g(returned)e -(as)h(the)h(exit)g(status)g(of)g Fs(eval)p Ft(.)54 b(If)630 -4802 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.)150 -4961 y Fs(exec)870 5096 y(exec)47 b([-cl])f([-a)h Fi(name)11 -b Fs(])46 b([)p Fi(command)56 b Fs([)p Fi(arguments)11 -b Fs(]])630 5230 y Ft(If)36 b Fq(command)k Ft(is)c(supplied,)h(it)g -(replaces)h(the)e(shell)h(without)f(creating)i(a)f(new)f(pro)s(cess.) -630 5340 y(If)h(the)g(`)p Fs(-l)p Ft(')g(option)h(is)f(supplied,)g(the) -h(shell)f(places)h(a)g(dash)e(at)i(the)f(b)s(eginning)f(of)i(the)p -eop end -%%Page: 42 48 -TeXDict begin 42 47 bop 150 -116 a Ft(Chapter)30 b(4:)h(Shell)f -(Builtin)h(Commands)2079 b(42)630 299 y(zeroth)36 b(argumen)m(t)g -(passed)f(to)h Fq(command)t Ft(.)56 b(This)34 b(is)i(what)f(the)h -Fs(login)e Ft(program)h(do)s(es.)630 408 y(The)e(`)p -Fs(-c)p Ft(')h(option)g(causes)g Fq(command)j Ft(to)e(b)s(e)e(executed) -i(with)e(an)h(empt)m(y)g(en)m(vironmen)m(t.)630 518 y(If)d(`)p -Fs(-a)p Ft(')g(is)h(supplied,)f(the)g(shell)h(passes)f -Fq(name)37 b Ft(as)31 b(the)h(zeroth)g(argumen)m(t)g(to)g -Fq(command)t Ft(.)630 628 y(If)g Fq(command)j Ft(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 737 y(unless)27 b(the)g Fs(execfail)e Ft(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 847 y(in)m(teractiv)m(e)d(shell)d(returns)f(failure)h(if)g -(the)g(\014le)g(cannot)g(b)s(e)g(executed.)52 b(If)33 -b(no)h Fq(command)630 956 y Ft(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 1066 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 1176 y(status)d(is)f(non-zero.)150 1348 y -Fs(exit)870 1489 y(exit)47 b([)p Fi(n)11 b Fs(])630 1630 -y Ft(Exit)30 b(the)g(shell,)h(returning)d(a)j(status)f(of)g -Fq(n)f Ft(to)h(the)g(shell's)g(paren)m(t.)41 b(If)30 -b Fq(n)f Ft(is)h(omitted,)h(the)630 1739 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 Fs(EXIT)f Ft(is)i(executed)630 1849 y(b)s(efore)j(the)h -(shell)f(terminates.)150 2021 y Fs(export)870 2162 y(export)46 -b([-fn])g([-p])h([)p Fi(name)11 b Fs([=)p Fi(value)g -Fs(]])630 2303 y Ft(Mark)40 b(eac)m(h)h Fq(name)k Ft(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 2412 y(`)p Fs(-f)p -Ft(')29 b(option)h(is)g(supplied,)f(the)g Fq(name)5 b -Ft(s)30 b(refer)f(to)h(shell)g(functions;)f(otherwise)h(the)g(names)630 -2522 y(refer)36 b(to)i(shell)e(v)-5 b(ariables.)60 b(The)36 -b(`)p Fs(-n)p Ft(')h(option)g(means)f(to)h(no)g(longer)g(mark)f(eac)m -(h)i Fq(name)630 2632 y Ft(for)h(exp)s(ort.)65 b(If)39 -b(no)g Fq(names)j Ft(are)d(supplied,)h(or)f(if)g(the)g(`)p -Fs(-p)p Ft(')g(option)g(is)g(giv)m(en,)j(a)d(list)h(of)630 -2741 y(names)27 b(of)h(all)h(exp)s(orted)e(v)-5 b(ariables)28 -b(is)g(displa)m(y)m(ed.)40 b(The)27 b(`)p Fs(-p)p Ft(')g(option)h -(displa)m(ys)g(output)f(in)630 2851 y(a)32 b(form)e(that)i(ma)m(y)g(b)s -(e)e(reused)h(as)g(input.)43 b(If)30 b(a)i(v)-5 b(ariable)32 -b(name)f(is)g(follo)m(w)m(ed)i(b)m(y)e(=)p Fq(v)-5 b(alue)5 -b Ft(,)630 2960 y(the)31 b(v)-5 b(alue)30 b(of)h(the)g(v)-5 -b(ariable)31 b(is)f(set)h(to)g Fq(v)-5 b(alue)5 b Ft(.)630 -3101 y(The)29 b(return)e(status)j(is)f(zero)h(unless)e(an)h(in)m(v)-5 -b(alid)29 b(option)h(is)f(supplied,)f(one)i(of)f(the)g(names)630 -3211 y(is)h(not)h(a)f(v)-5 b(alid)31 b(shell)f(v)-5 b(ariable)31 -b(name,)f(or)h(`)p Fs(-f)p Ft(')f(is)g(supplied)f(with)g(a)i(name)f -(that)h(is)f(not)h(a)630 3320 y(shell)g(function.)150 -3493 y Fs(getopts)870 3634 y(getopts)46 b Fi(optstring)56 -b(name)h Fs([)p Fi(args)11 b Fs(])630 3774 y(getopts)28 -b Ft(is)i(used)g(b)m(y)g(shell)g(scripts)g(to)g(parse)g(p)s(ositional)h -(parameters.)41 b Fq(optstring)d Ft(con-)630 3884 y(tains)k(the)g -(option)f(c)m(haracters)i(to)g(b)s(e)d(recognized;)49 -b(if)42 b(a)f(c)m(haracter)j(is)d(follo)m(w)m(ed)i(b)m(y)f(a)630 -3994 y(colon,)33 b(the)f(option)g(is)g(exp)s(ected)g(to)h(ha)m(v)m(e)g -(an)e(argumen)m(t,)i(whic)m(h)f(should)e(b)s(e)h(separated)630 -4103 y(from)40 b(it)g(b)m(y)g(whitespace.)70 b(The)40 -b(colon)h(\(`)p Fs(:)p Ft('\))g(and)e(question)h(mark)g(\(`)p -Fs(?)p Ft('\))h(ma)m(y)f(not)h(b)s(e)630 4213 y(used)d(as)g(option)h(c) -m(haracters.)67 b(Eac)m(h)39 b(time)g(it)g(is)f(in)m(v)m(ok)m(ed,)k -Fs(getopts)37 b Ft(places)i(the)g(next)630 4322 y(option)29 -b(in)f(the)g(shell)h(v)-5 b(ariable)29 b Fq(name)5 b -Ft(,)29 b(initializing)h Fq(name)k Ft(if)28 b(it)h(do)s(es)f(not)g -(exist,)i(and)e(the)630 4432 y(index)33 b(of)g(the)h(next)f(argumen)m -(t)h(to)g(b)s(e)e(pro)s(cessed)h(in)m(to)h(the)g(v)-5 -b(ariable)34 b Fs(OPTIND)p Ft(.)48 b Fs(OPTIND)630 4542 -y Ft(is)41 b(initialized)i(to)f(1)f(eac)m(h)h(time)g(the)f(shell)g(or)g -(a)g(shell)g(script)g(is)g(in)m(v)m(ok)m(ed.)74 b(When)41 -b(an)630 4651 y(option)36 b(requires)e(an)h(argumen)m(t,)i -Fs(getopts)c Ft(places)j(that)g(argumen)m(t)g(in)m(to)g(the)f(v)-5 -b(ariable)630 4761 y Fs(OPTARG)p Ft(.)55 b(The)35 b(shell)g(do)s(es)h -(not)g(reset)g Fs(OPTIND)e Ft(automatically;)41 b(it)36 -b(m)m(ust)f(b)s(e)g(man)m(ually)630 4870 y(reset)i(b)s(et)m(w)m(een)g -(m)m(ultiple)h(calls)f(to)g Fs(getopts)e Ft(within)h(the)h(same)g -(shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 4980 y(new)30 -b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)630 -5121 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k -Fs(getopts)39 b Ft(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 -5230 y(greater)32 b(than)e(zero.)41 b Fs(OPTIND)29 b -Ft(is)h(set)h(to)g(the)g(index)f(of)g(the)h(\014rst)f(non-option)g -(argumen)m(t,)630 5340 y(and)g Fq(name)35 b Ft(is)c(set)g(to)g(`)p -Fs(?)p Ft('.)p eop end -%%Page: 43 49 -TeXDict begin 43 48 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(43)630 299 y Fs(getopts)27 -b Ft(normally)j(parses)e(the)i(p)s(ositional)g(parameters,)g(but)e(if)i -(more)f(argumen)m(ts)h(are)630 408 y(giv)m(en)h(in)f -Fq(args)t Ft(,)h Fs(getopts)e Ft(parses)g(those)i(instead.)630 -540 y Fs(getopts)h Ft(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m -(a)m(ys.)51 b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d -Fq(optstring)42 b Ft(is)34 b(a)630 650 y(colon,)g Fq(silen)m(t)h -Ft(error)d(rep)s(orting)f(is)i(used.)45 b(In)31 b(normal)h(op)s -(eration,)h(diagnostic)h(messages)630 759 y(are)c(prin)m(ted)e(when)g -(in)m(v)-5 b(alid)30 b(options)g(or)f(missing)g(option)g(argumen)m(ts)h -(are)f(encoun)m(tered.)630 869 y(If)34 b(the)g(v)-5 b(ariable)35 -b Fs(OPTERR)d Ft(is)i(set)h(to)f(0,)i(no)e(error)g(messages)h(will)f(b) -s(e)f(displa)m(y)m(ed,)j(ev)m(en)f(if)630 978 y(the)c(\014rst)e(c)m -(haracter)j(of)f Fs(optstring)d Ft(is)i(not)h(a)f(colon.)630 -1110 y(If)39 b(an)h(in)m(v)-5 b(alid)41 b(option)f(is)g(seen,)i -Fs(getopts)c Ft(places)j(`)p Fs(?)p Ft(')f(in)m(to)h -Fq(name)k Ft(and,)d(if)e(not)g(silen)m(t,)630 1219 y(prin)m(ts)f(an)h -(error)f(message)h(and)f(unsets)g Fs(OPTARG)p Ft(.)67 -b(If)39 b Fs(getopts)f Ft(is)i(silen)m(t,)j(the)c(option)630 -1329 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f Fs(OPTARG)f -Ft(and)h(no)g(diagnostic)i(message)f(is)g(prin)m(ted.)630 -1461 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f -Fs(getopts)f Ft(is)i(not)h(silen)m(t,)h(a)e(question)g(mark)630 -1570 y(\(`)p Fs(?)p Ft('\))35 b(is)g(placed)g(in)g Fq(name)5 -b Ft(,)36 b Fs(OPTARG)d Ft(is)h(unset,)i(and)e(a)h(diagnostic)h -(message)f(is)g(prin)m(ted.)630 1680 y(If)e Fs(getopts)f -Ft(is)h(silen)m(t,)j(then)d(a)i(colon)f(\(`)p Fs(:)p -Ft('\))h(is)e(placed)h(in)g Fq(name)k Ft(and)33 b Fs(OPTARG)f -Ft(is)i(set)g(to)630 1789 y(the)d(option)f(c)m(haracter)i(found.)150 -1943 y Fs(hash)870 2074 y(hash)47 b([-r])f([-p)h Fi(filename)11 -b Fs(])45 b([-dt])h([)p Fi(name)11 b Fs(])630 2206 y -Ft(Eac)m(h)32 b(time)g Fs(hash)e Ft(is)h(in)m(v)m(ok)m(ed,)j(it)d -(remem)m(b)s(ers)g(the)g(full)g(pathnames)g(of)h(the)f(commands)630 -2315 y(sp)s(eci\014ed)i(as)i Fq(name)k Ft(argumen)m(ts,)c(so)g(they)f -(need)g(not)g(b)s(e)f(searc)m(hed)i(for)f(on)g(subsequen)m(t)630 -2425 y(in)m(v)m(o)s(cations.)79 b(The)41 b(commands)h(are)h(found)e(b)m -(y)h(searc)m(hing)i(through)d(the)i(directories)630 2534 -y(listed)33 b(in)g Fs($PATH)p Ft(.)47 b(An)m(y)33 b(previously-remem)m -(b)s(ered)f(pathname)h(is)g(discarded.)48 b(The)32 b(`)p -Fs(-p)p Ft(')630 2644 y(option)i(inhibits)e(the)i(path)f(searc)m(h,)i -(and)e Fq(\014lename)38 b Ft(is)c(used)e(as)i(the)f(lo)s(cation)i(of)f -Fq(name)5 b Ft(.)630 2754 y(The)35 b(`)p Fs(-r)p Ft(')g(option)g -(causes)h(the)g(shell)f(to)h(forget)g(all)g(remem)m(b)s(ered)f(lo)s -(cations.)56 b(The)35 b(`)p Fs(-d)p Ft(')630 2863 y(option)c(causes)f -(the)g(shell)h(to)f(forget)i(the)e(remem)m(b)s(ered)f(lo)s(cation)j(of) -e(eac)m(h)h Fq(name)5 b Ft(.)41 b(If)30 b(the)630 2973 -y(`)p Fs(-t)p Ft(')35 b(option)h(is)g(supplied,)f(the)h(full)f -(pathname)g(to)i(whic)m(h)e(eac)m(h)h Fq(name)41 b Ft(corresp)s(onds)34 -b(is)630 3082 y(prin)m(ted.)39 b(If)26 b(m)m(ultiple)h -Fq(name)32 b Ft(argumen)m(ts)27 b(are)g(supplied)e(with)h(`)p -Fs(-t)p Ft(')g(the)h Fq(name)32 b Ft(is)26 b(prin)m(ted)630 -3192 y(b)s(efore)f(the)h(hashed)e(full)h(pathname.)39 -b(The)25 b(`)p Fs(-l)p Ft(')h(option)f(causes)h(output)f(to)i(b)s(e)d -(displa)m(y)m(ed)630 3302 y(in)31 b(a)g(format)h(that)f(ma)m(y)h(b)s(e) -f(reused)f(as)h(input.)42 b(If)31 b(no)g(argumen)m(ts)h(are)f(giv)m -(en,)i(or)e(if)g(only)630 3411 y(`)p Fs(-l)p Ft(')44 -b(is)f(supplied,)j(information)e(ab)s(out)g(remem)m(b)s(ered)f -(commands)g(is)h(prin)m(ted.)80 b(The)630 3521 y(return)25 -b(status)h(is)f(zero)i(unless)e(a)h Fq(name)31 b Ft(is)26 -b(not)g(found)e(or)i(an)g(in)m(v)-5 b(alid)26 b(option)g(is)g -(supplied.)150 3674 y Fs(pwd)870 3806 y(pwd)47 b([-LP])630 -3937 y Ft(Prin)m(t)24 b(the)h(absolute)g(pathname)g(of)f(the)h(curren)m -(t)f(w)m(orking)h(directory)-8 b(.)40 b(If)23 b(the)i(`)p -Fs(-P)p Ft(')f(option)630 4047 y(is)36 b(supplied,)f(the)h(pathname)f -(prin)m(ted)g(will)h(not)g(con)m(tain)h(sym)m(b)s(olic)f(links.)55 -b(If)35 b(the)h(`)p Fs(-L)p Ft(')630 4156 y(option)44 -b(is)g(supplied,)i(the)e(pathname)f(prin)m(ted)h(ma)m(y)g(con)m(tain)h -(sym)m(b)s(olic)f(links.)80 b(The)630 4266 y(return)26 -b(status)h(is)h(zero)g(unless)e(an)h(error)g(is)g(encoun)m(tered)g -(while)h(determining)f(the)g(name)630 4376 y(of)k(the)f(curren)m(t)g -(directory)h(or)f(an)h(in)m(v)-5 b(alid)31 b(option)g(is)f(supplied.) -150 4529 y Fs(readonly)870 4661 y(readonly)46 b([-aAf])g([-p])g([)p -Fi(name)11 b Fs([=)p Fi(value)g Fs(]])43 b(...)630 4792 -y Ft(Mark)24 b(eac)m(h)h Fq(name)k Ft(as)24 b(readonly)-8 -b(.)39 b(The)24 b(v)-5 b(alues)24 b(of)g(these)g(names)g(ma)m(y)g(not)g -(b)s(e)g(c)m(hanged)g(b)m(y)630 4902 y(subsequen)m(t)e(assignmen)m(t.) -39 b(If)22 b(the)h(`)p Fs(-f)p Ft(')f(option)i(is)e(supplied,)h(eac)m -(h)h Fq(name)k Ft(refers)22 b(to)i(a)f(shell)630 5011 -y(function.)39 b(The)26 b(`)p Fs(-a)p Ft(')h(option)g(means)g(eac)m(h)h -Fq(name)k Ft(refers)26 b(to)i(an)e(indexed)h(arra)m(y)g(v)-5 -b(ariable;)630 5121 y(the)26 b(`)p Fs(-A)p Ft(')g(option)h(means)f(eac) -m(h)h Fq(name)32 b Ft(refers)25 b(to)i(an)f(asso)s(ciativ)m(e)j(arra)m -(y)e(v)-5 b(ariable.)40 b(If)26 b(b)s(oth)630 5230 y(options)h(are)g -(supplied,)f(`)p Fs(-A)p Ft(')g(tak)m(es)i(precedence.)40 -b(If)26 b(no)h Fq(name)32 b Ft(argumen)m(ts)26 b(are)h(giv)m(en,)i(or) -630 5340 y(if)h(the)h(`)p Fs(-p)p Ft(')f(option)h(is)g(supplied,)e(a)i -(list)g(of)g(all)g(readonly)f(names)h(is)f(prin)m(ted.)41 -b(The)30 b(other)p eop end -%%Page: 44 50 -TeXDict begin 44 49 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(44)630 299 y(options)36 -b(ma)m(y)g(b)s(e)g(used)f(to)h(restrict)h(the)f(output)f(to)h(a)h -(subset)e(of)h(the)g(set)g(of)g(readonly)630 408 y(names.)63 -b(The)37 b(`)p Fs(-p)p Ft(')h(option)g(causes)g(output)f(to)i(b)s(e)e -(displa)m(y)m(ed)h(in)g(a)g(format)g(that)g(ma)m(y)630 -518 y(b)s(e)32 b(reused)h(as)g(input.)48 b(If)33 b(a)g(v)-5 -b(ariable)34 b(name)f(is)h(follo)m(w)m(ed)g(b)m(y)f(=)p -Fq(v)-5 b(alue)5 b Ft(,)35 b(the)e(v)-5 b(alue)33 b(of)h(the)630 -628 y(v)-5 b(ariable)38 b(is)f(set)h(to)g Fq(v)-5 b(alue)5 -b Ft(.)62 b(The)37 b(return)f(status)h(is)h(zero)g(unless)e(an)h(in)m -(v)-5 b(alid)38 b(option)g(is)630 737 y(supplied,)f(one)g(of)g(the)g -Fq(name)42 b Ft(argumen)m(ts)37 b(is)g(not)g(a)g(v)-5 -b(alid)37 b(shell)g(v)-5 b(ariable)38 b(or)e(function)630 -847 y(name,)31 b(or)f(the)h(`)p Fs(-f)p Ft(')f(option)h(is)f(supplied)f -(with)h(a)h(name)f(that)h(is)g(not)f(a)h(shell)g(function.)150 -1000 y Fs(return)870 1132 y(return)46 b([)p Fi(n)11 b -Fs(])630 1263 y Ft(Cause)37 b(a)g(shell)h(function)f(to)g(stop)h -(executing)g(and)e(return)h(the)g(v)-5 b(alue)37 b Fq(n)g -Ft(to)h(its)f(caller.)630 1373 y(If)h Fq(n)h Ft(is)g(not)g(supplied,)h -(the)f(return)e(v)-5 b(alue)40 b(is)f(the)g(exit)g(status)g(of)g(the)g -(last)h(command)630 1482 y(executed)35 b(in)f(the)h(function.)53 -b Fs(return)33 b Ft(ma)m(y)i(also)g(b)s(e)f(used)f(to)j(terminate)f -(execution)h(of)630 1592 y(a)e(script)g(b)s(eing)g(executed)g(with)g -(the)g Fs(.)g Ft(\()p Fs(source)p Ft(\))f(builtin,)h(returning)f -(either)i Fq(n)e Ft(or)h(the)630 1702 y(exit)j(status)f(of)g(the)g -(last)h(command)e(executed)i(within)e(the)h(script)g(as)g(the)g(exit)h -(status)630 1811 y(of)i(the)g(script.)65 b(If)38 b Fq(n)g -Ft(is)h(supplied,)h(the)f(return)e(v)-5 b(alue)39 b(is)g(its)g(least)h -(signi\014can)m(t)g(8)f(bits.)630 1921 y(An)m(y)g(command)f(asso)s -(ciated)j(with)d(the)h Fs(RETURN)e Ft(trap)i(is)g(executed)g(b)s(efore) -g(execution)630 2030 y(resumes)29 b(after)h(the)g(function)g(or)g -(script.)40 b(The)29 b(return)g(status)h(is)g(non-zero)g(if)g -Fs(return)e Ft(is)630 2140 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m -(t)g(or)f(is)h(used)f(outside)h(a)g(function)f(and)g(not)h(during)630 -2250 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Fs(.)g -Ft(or)g Fs(source)p Ft(.)150 2403 y Fs(shift)870 2534 -y(shift)46 b([)p Fi(n)11 b Fs(])630 2666 y Ft(Shift)41 -b(the)g(p)s(ositional)h(parameters)g(to)g(the)f(left)h(b)m(y)g -Fq(n)p Ft(.)73 b(The)40 b(p)s(ositional)j(parameters)630 -2776 y(from)34 b Fq(n)p Fs(+)p Ft(1)39 b(.)22 b(.)h(.)45 -b Fs($#)34 b Ft(are)g(renamed)g(to)h Fs($1)k Ft(.)22 -b(.)g(.)46 b Fs($#)p Ft(-)p Fq(n)p Ft(.)51 b(P)m(arameters)36 -b(represen)m(ted)e(b)m(y)g(the)630 2885 y(n)m(um)m(b)s(ers)25 -b Fs($#)i Ft(to)g Fs($#)p Ft(-)p Fq(n)p Fs(+)p Ft(1)g(are)g(unset.)39 -b Fq(n)26 b Ft(m)m(ust)h(b)s(e)f(a)i(non-negativ)m(e)h(n)m(um)m(b)s(er) -c(less)i(than)g(or)630 2995 y(equal)33 b(to)h Fs($#)p -Ft(.)47 b(If)33 b Fq(n)f Ft(is)h(zero)g(or)g(greater)h(than)f -Fs($#)p Ft(,)g(the)g(p)s(ositional)g(parameters)g(are)h(not)630 -3104 y(c)m(hanged.)48 b(If)32 b Fq(n)g Ft(is)h(not)f(supplied,)h(it)g -(is)f(assumed)g(to)h(b)s(e)f(1.)48 b(The)32 b(return)g(status)h(is)f -(zero)630 3214 y(unless)e Fq(n)f Ft(is)i(greater)g(than)g -Fs($#)e Ft(or)i(less)f(than)h(zero,)g(non-zero)g(otherwise.)150 -3367 y Fs(test)150 3477 y([)870 3608 y(test)47 b Fi(expr)630 -3740 y Ft(Ev)-5 b(aluate)40 b(a)f(conditional)h(express)f(ion)g -Fq(expr)45 b Ft(and)38 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f -(1)630 3850 y(\(false\).)j(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand) -g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630 -3959 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 -4069 y(Expressions],)39 b(page)g(84.)64 b Fs(test)37 -b Ft(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h -(accept)630 4178 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f(`)p -Fs(--)p Ft(')h(as)f(signifying)h(the)f(end)g(of)h(options.)630 -4310 y(When)f(the)h Fs([)f Ft(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 Fs(])p -Ft(.)630 4441 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 -4551 y(order)30 b(of)h(precedence.)43 b(The)30 b(ev)-5 -b(aluation)33 b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h -(argumen)m(ts;)g(see)630 4661 y(b)s(elo)m(w.)41 b(Op)s(erator)30 -b(precedence)h(is)f(used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h -(argumen)m(ts.)630 4814 y Fs(!)f Fi(expr)210 b Ft(T)-8 -b(rue)30 b(if)g Fq(expr)37 b Ft(is)30 b(false.)630 4967 -y Fs(\()g Fi(expr)40 b Fs(\))122 b Ft(Returns)23 b(the)h(v)-5 -b(alue)24 b(of)g Fq(expr)7 b Ft(.)37 b(This)23 b(ma)m(y)i(b)s(e)e(used) -g(to)h(o)m(v)m(erride)h(the)f(normal)1110 5077 y(precedence)31 -b(of)f(op)s(erators.)630 5230 y Fi(expr1)39 b Fs(-a)30 -b Fi(expr2)1110 5340 y Ft(T)-8 b(rue)30 b(if)g(b)s(oth)g -Fq(expr1)37 b Ft(and)30 b Fq(expr2)38 b Ft(are)30 b(true.)p -eop end -%%Page: 45 51 -TeXDict begin 45 50 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(45)630 299 y Fi(expr1)39 -b Fs(-o)30 b Fi(expr2)1110 408 y Ft(T)-8 b(rue)30 b(if)g(either)h -Fq(expr1)38 b Ft(or)30 b Fq(expr2)37 b Ft(is)31 b(true.)630 -568 y(The)37 b Fs(test)f Ft(and)g Fs([)h Ft(builtins)g(ev)-5 -b(aluate)39 b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules) -630 677 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.) -630 837 y(0)h(argumen)m(ts)1110 946 y(The)f(expression)g(is)g(false.) -630 1106 y(1)h(argumen)m(t)1110 1215 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 -1375 y(2)g(argumen)m(ts)1110 1484 y(If)f(the)h(\014rst)f(argumen)m(t)h -(is)g(`)p Fs(!)p Ft(',)g(the)g(expression)g(is)g(true)f(if)h(and)f -(only)h(if)g(the)1110 1594 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 1704 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f -([Bash)g(Conditional)g(Expres-)1110 1813 y(sions],)34 -b(page)f(84\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e -(test)j(is)f(true.)47 b(If)1110 1923 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 2032 y(false.)630 2192 y(3)e(argumen)m(ts)1110 -2301 y(The)44 b(follo)m(wing)i(conditions)f(are)g(applied)f(in)g(the)g -(order)g(listed.)84 b(If)44 b(the)1110 2411 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 -2521 y(Section)h(6.4)g([Bash)g(Conditional)g(Expressions],)i(page)e -(84\),)k(the)43 b(result)1110 2630 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 -2740 y(and)31 b(third)g(argumen)m(ts)i(as)f(op)s(erands.)44 -b(The)31 b(`)p Fs(-a)p Ft(')h(and)g(`)p Fs(-o)p Ft(')f(op)s(erators)i -(are)1110 2849 y(considered)25 b(binary)g(op)s(erators)g(when)f(there)i -(are)f(three)h(argumen)m(ts.)39 b(If)25 b(the)1110 2959 -y(\014rst)j(argumen)m(t)h(is)g(`)p Fs(!)p Ft(',)h(the)f(v)-5 -b(alue)29 b(is)g(the)g(negation)i(of)e(the)g(t)m(w)m(o-argumen)m(t)1110 -3068 y(test)38 b(using)f(the)g(second)g(and)g(third)f(argumen)m(ts.)61 -b(If)37 b(the)g(\014rst)f(argumen)m(t)1110 3178 y(is)j(exactly)i(`)p -Fs(\()p Ft(')f(and)f(the)g(third)g(argumen)m(t)h(is)f(exactly)i(`)p -Fs(\))p Ft(',)h(the)e(result)f(is)1110 3288 y(the)46 -b(one-argumen)m(t)g(test)h(of)f(the)f(second)h(argumen)m(t.)86 -b(Otherwise,)50 b(the)1110 3397 y(expression)30 b(is)h(false.)630 -3557 y(4)g(argumen)m(ts)1110 3666 y(If)h(the)i(\014rst)e(argumen)m(t)h -(is)g(`)p Fs(!)p Ft(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the) -g(three-)1110 3776 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the) -h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 3885 y(erwise,)34 -b(the)f(expression)g(is)g(parsed)g(and)f(ev)-5 b(aluated)34 -b(according)h(to)e(prece-)1110 3995 y(dence)e(using)e(the)i(rules)f -(listed)h(ab)s(o)m(v)m(e.)630 4154 y(5)g(or)f(more)h(argumen)m(ts)1110 -4264 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5 -b(aluated)45 b(according)f(to)f(precedence)1110 4374 -y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630 -4533 y(When)40 b(used)f(with)g Fs(test)g Ft(or)h(`)p -Fs([)p Ft(',)j(the)d(`)p Fs(<)p Ft(')g(and)f(`)p Fs(>)p -Ft(')h(op)s(erators)g(sort)g(lexicographically)630 4643 -y(using)30 b(ASCI)s(I)f(ordering.)150 4802 y Fs(times)870 -4936 y(times)630 5071 y Ft(Prin)m(t)37 b(out)h(the)g(user)e(and)h -(system)g(times)h(used)f(b)m(y)g(the)h(shell)f(and)g(its)h(c)m -(hildren.)61 b(The)630 5181 y(return)29 b(status)i(is)f(zero.)150 -5340 y Fs(trap)p eop end -%%Page: 46 52 -TeXDict begin 46 51 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(46)870 299 y Fs(trap)47 -b([-lp])f([)p Fi(arg)11 b Fs(])46 b([)p Fi(sigspec)56 -b Fs(...)o(])630 457 y Ft(The)43 b(commands)f(in)h Fq(arg)51 -b Ft(are)44 b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g -(receiv)m(es)630 567 y(signal)36 b Fq(sigsp)s(ec)6 b -Ft(.)55 b(If)35 b Fq(arg)44 b Ft(is)35 b(absen)m(t)h(\(and)f(there)g -(is)g(a)h(single)g Fq(sigsp)s(ec)6 b Ft(\))35 b(or)h(equal)f(to)i(`)p -Fs(-)p Ft(',)630 676 y(eac)m(h)28 b(sp)s(eci\014ed)e(signal's)h(disp)s -(osition)f(is)h(reset)g(to)g(the)g(v)-5 b(alue)27 b(it)g(had)f(when)f -(the)i(shell)g(w)m(as)630 786 y(started.)63 b(If)37 b -Fq(arg)46 b Ft(is)37 b(the)h(n)m(ull)g(string,)h(then)e(the)h(signal)h -(sp)s(eci\014ed)d(b)m(y)i(eac)m(h)h Fq(sigsp)s(ec)k Ft(is)630 -896 y(ignored)36 b(b)m(y)g(the)g(shell)g(and)g(commands)f(it)i(in)m(v)m -(ok)m(es.)59 b(If)35 b Fq(arg)45 b Ft(is)36 b(not)g(presen)m(t)g(and)f -(`)p Fs(-p)p Ft(')630 1005 y(has)e(b)s(een)g(supplied,)f(the)i(shell)f -(displa)m(ys)h(the)f(trap)g(commands)g(asso)s(ciated)i(with)e(eac)m(h) -630 1115 y Fq(sigsp)s(ec)6 b Ft(.)40 b(If)28 b(no)g(argumen)m(ts)h(are) -g(supplied,)f(or)g(only)h(`)p Fs(-p)p Ft(')f(is)g(giv)m(en,)i -Fs(trap)e Ft(prin)m(ts)g(the)g(list)630 1224 y(of)g(commands)f(asso)s -(ciated)i(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f -(that)h(ma)m(y)h(b)s(e)e(reused)630 1334 y(as)34 b(shell)g(input.)51 -b(The)33 b(`)p Fs(-l)p Ft(')h(option)g(causes)h(the)f(shell)g(to)h -(prin)m(t)e(a)i(list)f(of)g(signal)h(names)630 1443 y(and)j(their)h -(corresp)s(onding)f(n)m(um)m(b)s(ers.)65 b(Eac)m(h)39 -b Fq(sigsp)s(ec)45 b Ft(is)39 b(either)g(a)g(signal)h(name)f(or)g(a)630 -1553 y(signal)27 b(n)m(um)m(b)s(er.)39 b(Signal)27 b(names)f(are)h -(case)h(insensitiv)m(e)g(and)e(the)g Fs(SIG)g Ft(pre\014x)g(is)h -(optional.)630 1711 y(If)35 b(a)g Fq(sigsp)s(ec)41 b -Ft(is)35 b Fs(0)g Ft(or)g Fs(EXIT)p Ft(,)g Fq(arg)43 -b Ft(is)35 b(executed)h(when)e(the)h(shell)h(exits.)55 -b(If)35 b(a)g Fq(sigsp)s(ec)41 b Ft(is)630 1821 y Fs(DEBUG)p -Ft(,)32 b(the)g(command)g Fq(arg)40 b Ft(is)33 b(executed)g(b)s(efore)f -(ev)m(ery)h(simple)f(command,)h Fs(for)e Ft(com-)630 -1931 y(mand,)d Fs(case)g Ft(command,)h Fs(select)e Ft(command,)i(ev)m -(ery)h(arithmetic)g Fs(for)d Ft(command,)j(and)630 2040 -y(b)s(efore)22 b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h -(function.)37 b(Refer)22 b(to)h(the)g(description)f(of)630 -2150 y(the)i Fs(extdebug)d Ft(option)j(to)h(the)f Fs(shopt)e -Ft(builtin)h(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 -2259 y(page)33 b(61\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the) -g Fs(DEBUG)f Ft(trap.)46 b(If)31 b(a)i Fq(sigsp)s(ec)38 -b Ft(is)32 b Fs(RETURN)p Ft(,)f(the)630 2369 y(command)h -Fq(arg)41 b Ft(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g -(function)g(or)f(a)h(script)g(executed)g(with)630 2478 -y(the)e Fs(.)f Ft(or)g Fs(source)f Ft(builtins)g(\014nishes)h -(executing.)630 2637 y(If)20 b(a)i Fq(sigsp)s(ec)27 b -Ft(is)21 b Fs(ERR)p Ft(,)h(the)f(command)g Fq(arg)29 -b Ft(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h -(ma)m(y)630 2746 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h -(a)e(list,)j(or)d(a)h(comp)s(ound)e(command)h(returns)630 -2856 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41 -b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b -Fs(ERR)f Ft(trap)i(is)630 2966 y(not)c(executed)h(if)f(the)h(failed)f -(command)g(is)g(part)g(of)h(the)f(command)g(list)h(immediately)630 -3075 y(follo)m(wing)30 b(an)e Fs(until)f Ft(or)i Fs(while)e -Ft(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f -Fs(if)f Ft(or)g Fs(elif)630 3185 y Ft(reserv)m(ed)45 -b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g -Fs(&&)f Ft(or)h Fs(||)f Ft(list)h(except)h(the)630 3294 -y(command)28 b(follo)m(wing)j(the)d(\014nal)h Fs(&&)f -Ft(or)g Fs(||)p Ft(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g -(the)h(last,)630 3404 y(or)d(if)g(the)f(command's)h(return)f(status)h -(is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Fs(!)p Ft(.)39 -b(These)25 b(are)i(the)f(same)630 3513 y(conditions)31 -b(ob)s(ey)m(ed)f(b)m(y)h(the)f Fs(errexit)f Ft(\(`)p -Fs(-e)p Ft('\))i(option.)630 3672 y(Signals)37 b(ignored)f(up)s(on)f -(en)m(try)i(to)g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h -(reset.)59 b(T)-8 b(rapp)s(ed)630 3781 y(signals)28 b(that)f(are)h(not) -f(b)s(eing)g(ignored)g(are)g(reset)h(to)g(their)f(original)h(v)-5 -b(alues)28 b(in)e(a)i(subshell)630 3891 y(or)i(subshell)g(en)m -(vironmen)m(t)h(when)e(one)i(is)f(created.)630 4049 y(The)g(return)f -(status)i(is)f(zero)h(unless)f(a)h Fq(sigsp)s(ec)36 b -Ft(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31 -b(signal.)150 4256 y Fs(umask)870 4415 y(umask)46 b([-p])h([-S])g([)p -Fi(mode)11 b Fs(])630 4573 y Ft(Set)29 b(the)h(shell)f(pro)s(cess's)g -(\014le)g(creation)h(mask)f(to)h Fq(mo)s(de)5 b Ft(.)40 -b(If)28 b Fq(mo)s(de)34 b Ft(b)s(egins)29 b(with)f(a)i(digit,)630 -4682 y(it)e(is)f(in)m(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s -(er;)e(if)g(not,)h(it)g(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f -(mo)s(de)630 4792 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f -(the)g Fs(chmod)e Ft(command.)40 b(If)28 b Fq(mo)s(de)34 -b Ft(is)28 b(omitted,)j(the)630 4902 y(curren)m(t)36 -b(v)-5 b(alue)36 b(of)g(the)h(mask)f(is)g(prin)m(ted.)57 -b(If)35 b(the)h(`)p Fs(-S)p Ft(')g(option)h(is)f(supplied)f(without)h -(a)630 5011 y Fq(mo)s(de)k Ft(argumen)m(t,)d(the)e(mask)g(is)g(prin)m -(ted)g(in)g(a)h(sym)m(b)s(olic)f(format.)55 b(If)35 b(the)g(`)p -Fs(-p)p Ft(')g(option)630 5121 y(is)f(supplied,)f(and)g -Fq(mo)s(de)38 b Ft(is)33 b(omitted,)j(the)e(output)f(is)g(in)h(a)g -(form)f(that)h(ma)m(y)g(b)s(e)f(reused)630 5230 y(as)e(input.)41 -b(The)31 b(return)f(status)h(is)g(zero)h(if)e(the)h(mo)s(de)g(is)g -(successfully)g(c)m(hanged)g(or)g(if)g(no)630 5340 y -Fq(mo)s(de)k Ft(argumen)m(t)c(is)f(supplied,)g(and)f(non-zero)i -(otherwise.)p eop end -%%Page: 47 53 -TeXDict begin 47 52 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(Note)38 -b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f(an)g(o)s -(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630 -408 y(the)f(umask)g(is)h(subtracted)f(from)f Fs(7)p Ft(.)53 -b(Th)m(us,)34 b(a)h(umask)e(of)i Fs(022)e Ft(results)h(in)g(p)s -(ermissions)630 518 y(of)d Fs(755)p Ft(.)150 678 y Fs(unset)870 -812 y(unset)46 b([-fnv])g([)p Fi(name)11 b Fs(])630 947 -y Ft(Remo)m(v)m(e)32 b(eac)m(h)g(v)-5 b(ariable)32 b(or)e(function)h -Fq(name)5 b Ft(.)42 b(If)30 b(the)h(`)p Fs(-v)p Ft(')f(option)h(is)g -(giv)m(en,)h(eac)m(h)g Fq(name)630 1056 y Ft(refers)20 -b(to)i(a)f(shell)g(v)-5 b(ariable)21 b(and)g(that)g(v)-5 -b(ariable)22 b(is)e(rem)m(v)m(o)m(v)m(ed.)40 b(If)20 -b(the)h(`)p Fs(-f)p Ft(')g(option)g(is)g(giv)m(en,)630 -1166 y(the)37 b Fq(name)5 b Ft(s)37 b(refer)f(to)i(shell)f(functions,)h -(and)e(the)h(function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 -b(If)630 1276 y(the)30 b(`)p Fs(-n)p Ft(')f(option)h(is)g(supplied,)e -(and)h Fq(name)35 b Ft(is)30 b(a)g(v)-5 b(ariable)30 -b(with)f(the)h Fq(nameref)47 b Ft(attribute,)630 1385 -y Fq(name)39 b Ft(will)33 b(b)s(e)g(unset)g(rather)h(than)f(the)g(v)-5 -b(ariable)35 b(it)f(references.)50 b(`)p Fs(-n)p Ft(')33 -b(has)h(no)f(e\013ect)i(if)630 1495 y(the)h(`)p Fs(-f)p -Ft(')g(option)h(is)f(supplied.)56 b(If)36 b(no)g(options)g(are)g -(supplied,)h(eac)m(h)g Fq(name)k Ft(refers)36 b(to)h(a)630 -1604 y(v)-5 b(ariable;)37 b(if)d(there)g(is)g(no)g(v)-5 -b(ariable)34 b(b)m(y)g(that)h(name,)g(an)m(y)f(function)g(with)f(that)i -(name)f(is)630 1714 y(unset.)46 b(Readonly)33 b(v)-5 -b(ariables)33 b(and)e(functions)h(ma)m(y)h(not)g(b)s(e)e(unset.)47 -b(The)31 b(return)h(status)630 1824 y(is)e(zero)i(unless)d(a)i -Fq(name)36 b Ft(is)30 b(readonly)-8 b(.)150 2056 y Fr(4.2)68 -b(Bash)45 b(Builtin)g(Commands)150 2216 y Ft(This)c(section)h(describ)s -(es)f(builtin)f(commands)h(whic)m(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m -(e)h(b)s(een)f(extended)g(in)150 2325 y(Bash.)g(Some)30 -b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g(in)g(the)h -Fl(posix)e Ft(standard.)150 2485 y Fs(alias)870 2619 -y(alias)46 b([-p])h([)p Fi(name)11 b Fs([=)p Fi(value)g -Fs(])43 b(...)o(])630 2754 y Ft(Without)h(argumen)m(ts)f(or)g(with)g -(the)h(`)p Fs(-p)p Ft(')f(option,)k Fs(alias)41 b Ft(prin)m(ts)i(the)g -(list)h(of)f(aliases)630 2864 y(on)36 b(the)g(standard)f(output)h(in)f -(a)i(form)e(that)i(allo)m(ws)g(them)f(to)g(b)s(e)g(reused)f(as)h -(input.)56 b(If)630 2973 y(argumen)m(ts)29 b(are)g(supplied,)f(an)h -(alias)h(is)f(de\014ned)e(for)i(eac)m(h)h Fq(name)k Ft(whose)28 -b Fq(v)-5 b(alue)35 b Ft(is)29 b(giv)m(en.)630 3083 y(If)39 -b(no)h Fq(v)-5 b(alue)45 b Ft(is)40 b(giv)m(en,)j(the)d(name)f(and)g(v) --5 b(alue)40 b(of)g(the)g(alias)h(is)f(prin)m(ted.)68 -b(Aliases)41 b(are)630 3192 y(describ)s(ed)29 b(in)h(Section)i(6.6)f -([Aliases],)h(page)f(87.)150 3352 y Fs(bind)870 3487 -y(bind)47 b([-m)g Fi(keymap)11 b Fs(])45 b([-lpsvPSVX])870 -3596 y(bind)i([-m)g Fi(keymap)11 b Fs(])45 b([-q)i Fi(function)11 -b Fs(])45 b([-u)h Fi(function)11 b Fs(])45 b([-r)i Fi(keyseq)11 -b Fs(])870 3706 y(bind)47 b([-m)g Fi(keymap)11 b Fs(])45 -b(-f)i Fi(filename)870 3815 y Fs(bind)g([-m)g Fi(keymap)11 -b Fs(])45 b(-x)i Fi(keyseq:shell-command)870 3925 y Fs(bind)g([-m)g -Fi(keymap)11 b Fs(])45 b Fi(keyseq:function-name)870 -4035 y Fs(bind)i Fi(readline-command)630 4169 y Ft(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(101\))g(k)m(ey)630 4279 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 4388 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 4498 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 4607 y(File],)c(page)d(104\),)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 4717 y(argumen)m(t;)31 b(e.g.,)h(`)p Fs -("\\C-x\\C-r":re-read-init-f)o(ile)p Ft('.)630 4852 y(Options,)e(if)h -(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 -5011 y Fs(-m)e Fi(keymap)1110 5121 y Ft(Use)54 b Fq(k)m(eymap)j -Ft(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b)m(y)f(the)g -(subsequen)m(t)1110 5230 y(bindings.)46 b(Acceptable)34 -b Fq(k)m(eymap)i Ft(names)c(are)h Fs(emacs)p Ft(,)f Fs(emacs-standard)p -Ft(,)1110 5340 y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p -Ft(,)f Fs(vi)p Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p -Ft(,)f(and)p eop end -%%Page: 48 54 -TeXDict begin 48 53 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(48)1110 299 y -Fs(vi-insert)p Ft(.)64 b Fs(vi)38 b Ft(is)h(equiv)-5 -b(alen)m(t)41 b(to)e Fs(vi-command)p Ft(;)i Fs(emacs)c -Ft(is)i(equiv)-5 b(alen)m(t)1110 408 y(to)31 b Fs(emacs-standard)p -Ft(.)630 563 y Fs(-l)384 b Ft(List)31 b(the)f(names)g(of)h(all)g -(Readline)g(functions.)630 718 y Fs(-p)384 b Ft(Displa)m(y)34 -b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m -(a)m(y)f(that)1110 827 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g -(in)g(a)h(Readline)g(initialization)i(\014le.)630 982 -y Fs(-P)384 b Ft(List)31 b(curren)m(t)f(Readline)h(function)f(names)g -(and)g(bindings.)630 1137 y Fs(-v)384 b Ft(Displa)m(y)25 -b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24 -b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 1247 -y(can)31 b(b)s(e)e(used)h(as)h(input)e(or)h(in)g(a)h(Readline)g -(initialization)j(\014le.)630 1401 y Fs(-V)384 b Ft(List)31 -b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5 -b(alues.)630 1556 y Fs(-s)384 b Ft(Displa)m(y)39 b(Readline)f(k)m(ey)g -(sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110 -1666 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g -(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 1775 -y(Readline)d(initialization)i(\014le.)630 1930 y Fs(-S)384 -b Ft(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i -(macros)g(and)f(the)g(strings)1110 2039 y(they)31 b(output.)630 -2194 y Fs(-f)f Fi(filename)1110 2304 y Ft(Read)h(k)m(ey)g(bindings)e -(from)h Fq(\014lename)5 b Ft(.)630 2458 y Fs(-q)30 b -Fi(function)1110 2568 y Ft(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m -(v)m(ok)m(e)h(the)f(named)f Fq(function)p Ft(.)630 2723 -y Fs(-u)g Fi(function)1110 2832 y Ft(Un)m(bind)f(all)i(k)m(eys)g(b)s -(ound)e(to)i(the)f(named)g Fq(function)p Ft(.)630 2987 -y Fs(-r)g Fi(keyseq)1110 3097 y Ft(Remo)m(v)m(e)i(an)m(y)f(curren)m(t)f -(binding)f(for)h Fq(k)m(eyseq)r Ft(.)630 3251 y Fs(-x)g -Fi(keyseq:shell-command)1110 3361 y Ft(Cause)35 b Fq(shell-command)k -Ft(to)d(b)s(e)f(executed)h(whenev)m(er)f Fq(k)m(eyseq)j -Ft(is)d(en)m(tered.)1110 3471 y(When)46 b Fq(shell-command)k -Ft(is)c(executed,)51 b(the)46 b(shell)g(sets)g(the)g -Fs(READLINE_)1110 3580 y(LINE)37 b Ft(v)-5 b(ariable)38 -b(to)g(the)g(con)m(ten)m(ts)i(of)e(the)g(Readline)g(line)g(bu\013er)f -(and)g(the)1110 3690 y Fs(READLINE_POINT)e Ft(v)-5 b(ariable)39 -b(to)h(the)e(curren)m(t)h(lo)s(cation)h(of)f(the)g(insertion)1110 -3799 y(p)s(oin)m(t.)59 b(If)37 b(the)f(executed)i(command)e(c)m(hanges) -i(the)f(v)-5 b(alue)37 b(of)f Fs(READLINE_)1110 3909 -y(LINE)29 b Ft(or)h Fs(READLINE_POINT)p Ft(,)c(those)31 -b(new)e(v)-5 b(alues)31 b(will)f(b)s(e)f(re\015ected)i(in)f(the)1110 -4018 y(editing)h(state.)630 4173 y Fs(-X)384 b Ft(List)27 -b(all)i(k)m(ey)f(sequences)f(b)s(ound)e(to)j(shell)g(commands)e(and)h -(the)g(asso)s(ciated)1110 4283 y(commands)j(in)g(a)h(format)g(that)f -(can)h(b)s(e)f(reused)f(as)i(input.)630 4437 y(The)26 -b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5 -b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s(ccurs.)150 -4592 y Fs(builtin)870 4724 y(builtin)46 b([)p Fi(shell-builtin)54 -b Fs([)p Fi(args)11 b Fs(]])630 4856 y Ft(Run)35 b(a)h(shell)h -(builtin,)g(passing)f(it)g Fq(args)t Ft(,)i(and)e(return)f(its)h(exit)h -(status.)58 b(This)36 b(is)g(useful)630 4966 y(when)29 -b(de\014ning)h(a)g(shell)h(function)f(with)g(the)g(same)h(name)f(as)h -(a)g(shell)f(builtin,)g(retaining)630 5076 y(the)k(functionalit)m(y)h -(of)f(the)f(builtin)g(within)g(the)h(function.)50 b(The)33 -b(return)g(status)h(is)f(non-)630 5185 y(zero)e(if)g -Fq(shell-builtin)f Ft(is)g(not)h(a)g(shell)f(builtin)g(command.)150 -5340 y Fs(caller)p eop end -%%Page: 49 55 -TeXDict begin 49 54 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(49)870 299 y Fs(caller)46 -b([)p Fi(expr)11 b Fs(])630 429 y Ft(Returns)34 b(the)g(con)m(text)j -(of)e(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f -(or)h(a)g(script)630 539 y(executed)c(with)f(the)h Fs(.)f -Ft(or)g Fs(source)f Ft(builtins\).)630 669 y(Without)45 -b Fq(expr)7 b Ft(,)46 b Fs(caller)d Ft(displa)m(ys)h(the)g(line)g(n)m -(um)m(b)s(er)f(and)g(source)h(\014lename)h(of)f(the)630 -778 y(curren)m(t)35 b(subroutine)f(call.)56 b(If)35 b(a)h(non-negativ)m -(e)h(in)m(teger)g(is)e(supplied)f(as)h Fq(expr)7 b Ft(,)36 -b Fs(caller)630 888 y Ft(displa)m(ys)41 b(the)f(line)h(n)m(um)m(b)s -(er,)h(subroutine)d(name,)44 b(and)c(source)g(\014le)h(corresp)s -(onding)e(to)630 998 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f -(execution)i(call)g(stac)m(k.)54 b(This)34 b(extra)h(information)g(ma)m -(y)630 1107 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h -(stac)m(k)h(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)g(frame)h(0.) -630 1237 y(The)e(return)f(v)-5 b(alue)29 b(is)h(0)f(unless)g(the)g -(shell)g(is)h(not)f(executing)h(a)g(subroutine)e(call)i(or)g -Fq(expr)630 1347 y Ft(do)s(es)g(not)h(corresp)s(ond)e(to)i(a)g(v)-5 -b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150 -1498 y Fs(command)870 1628 y(command)46 b([-pVv])g Fi(command)56 -b Fs([)p Fi(arguments)g Fs(...)o(])630 1758 y Ft(Runs)31 -b Fq(command)36 b Ft(with)d Fq(argumen)m(ts)j Ft(ignoring)d(an)m(y)g -(shell)g(function)f(named)g Fq(command)t Ft(.)630 1867 -y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y) -h(searc)m(hing)h(the)f Fs(PATH)f Ft(are)630 1977 y(executed.)g(If)23 -b(there)h(is)f(a)h(shell)f(function)g(named)g Fs(ls)p -Ft(,)i(running)c(`)p Fs(command)29 b(ls)p Ft(')23 b(within)g(the)630 -2087 y(function)33 b(will)g(execute)i(the)f(external)g(command)f -Fs(ls)f Ft(instead)i(of)f(calling)i(the)e(function)630 -2196 y(recursiv)m(ely)-8 b(.)84 b(The)44 b(`)p Fs(-p)p -Ft(')h(option)g(means)f(to)h(use)g(a)f(default)h(v)-5 -b(alue)45 b(for)f Fs(PATH)g Ft(that)h(is)630 2306 y(guaran)m(teed)35 -b(to)f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52 -b(The)33 b(return)g(status)h(in)f(this)h(case)630 2415 -y(is)29 b(127)g(if)g Fq(command)j Ft(cannot)d(b)s(e)e(found)h(or)g(an)g -(error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630 -2525 y Fq(command)34 b Ft(otherwise.)630 2655 y(If)25 -b(either)g(the)h(`)p Fs(-V)p Ft(')f(or)g(`)p Fs(-v)p -Ft(')g(option)g(is)g(supplied,)h(a)f(description)g(of)h -Fq(command)i Ft(is)d(prin)m(ted.)630 2765 y(The)i(`)p -Fs(-v)p Ft(')h(option)h(causes)f(a)h(single)f(w)m(ord)g(indicating)h -(the)f(command)g(or)g(\014le)g(name)g(used)630 2874 y(to)36 -b(in)m(v)m(ok)m(e)g Fq(command)j Ft(to)c(b)s(e)g(displa)m(y)m(ed;)j -(the)d(`)p Fs(-V)p Ft(')g(option)g(pro)s(duces)e(a)j(more)f(v)m(erb)s -(ose)630 2984 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e -(status)h(is)g(zero)h(if)f Fq(command)k Ft(is)c(found,)h(and)630 -3093 y(non-zero)31 b(if)f(not.)150 3244 y Fs(declare)870 -3374 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fi(name)11 -b Fs([=)p Fi(value)g Fs(])43 b(...)o(])630 3504 y Ft(Declare)29 -b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40 -b(If)27 b(no)g Fq(name)5 b Ft(s)27 b(are)h(giv)m(en,)h(then)e(displa)m -(y)630 3614 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31 -b(instead.)630 3744 y(The)c(`)p Fs(-p)p Ft(')h(option)g(will)g(displa)m -(y)g(the)g(attributes)g(and)g(v)-5 b(alues)28 b(of)g(eac)m(h)h -Fq(name)5 b Ft(.)40 b(When)27 b(`)p Fs(-p)p Ft(')630 -3854 y(is)j(used)g(with)g Fq(name)36 b Ft(argumen)m(ts,)31 -b(additional)g(options)f(are)h(ignored.)630 3984 y(When)36 -b(`)p Fs(-p)p Ft(')f(is)h(supplied)f(without)h Fq(name)41 -b Ft(argumen)m(ts,)d Fs(declare)c Ft(will)i(displa)m(y)g(the)g(at-)630 -4093 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5 -b(ariables)31 b(ha)m(ving)h(the)f(attributes)g(sp)s(eci\014ed)f(b)m(y)h -(the)g(addi-)630 4203 y(tional)h(options.)41 b(If)30 -b(no)g(other)h(options)g(are)g(supplied)e(with)h(`)p -Fs(-p)p Ft(',)g Fs(declare)f Ft(will)i(displa)m(y)630 -4313 y(the)f(attributes)g(and)e(v)-5 b(alues)30 b(of)g(all)g(shell)g(v) --5 b(ariables.)41 b(The)29 b(`)p Fs(-f)p Ft(')g(option)h(will)g -(restrict)g(the)630 4422 y(displa)m(y)h(to)g(shell)f(functions.)630 -4552 y(The)36 b(`)p Fs(-F)p Ft(')h(option)g(inhibits)f(the)h(displa)m -(y)g(of)g(function)g(de\014nitions;)i(only)e(the)g(function)630 -4662 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40 -b(If)30 b(the)g Fs(extdebug)e Ft(shell)i(option)g(is)g(enabled)g(using) -630 4771 y Fs(shopt)24 b Ft(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f -(Builtin],)k(page)e(61\),)i(the)d(source)h(\014le)f(name)h(and)630 -4881 y(line)38 b(n)m(um)m(b)s(er)e(where)i(the)g(function)f(is)h -(de\014ned)e(are)i(displa)m(y)m(ed)h(as)e(w)m(ell.)64 -b(`)p Fs(-F)p Ft(')38 b(implies)630 4991 y(`)p Fs(-f)p -Ft('.)630 5121 y(The)32 b(`)p Fs(-g)p Ft(')h(option)g(forces)g(v)-5 -b(ariables)33 b(to)h(b)s(e)e(created)h(or)g(mo)s(di\014ed)e(at)j(the)f -(global)h(scop)s(e,)630 5230 y(ev)m(en)k(when)e Fs(declare)f -Ft(is)j(executed)g(in)f(a)g(shell)h(function.)61 b(It)37 -b(is)g(ignored)h(in)f(all)h(other)630 5340 y(cases.)p -eop end -%%Page: 50 56 -TeXDict begin 50 55 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(The)27 -b(follo)m(wing)h(options)g(can)f(b)s(e)g(used)f(to)i(restrict)g(output) -e(to)i(v)-5 b(ariables)28 b(with)f(the)g(sp)s(ec-)630 -408 y(i\014ed)j(attributes)h(or)f(to)h(giv)m(e)h(v)-5 -b(ariables)31 b(attributes:)630 571 y Fs(-a)384 b Ft(Eac)m(h)36 -b Fq(name)k Ft(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 -680 y(page)31 b(88\).)630 842 y Fs(-A)384 b Ft(Eac)m(h)24 -b Fq(name)k Ft(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 -952 y(page)31 b(88\).)630 1114 y Fs(-f)384 b Ft(Use)31 -b(function)f(names)g(only)-8 b(.)630 1276 y Fs(-i)384 -b Ft(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 -1386 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(86\))h -(is)f(p)s(erformed)e(when)h(the)1110 1496 y(v)-5 b(ariable)31 -b(is)g(assigned)f(a)h(v)-5 b(alue.)630 1658 y Fs(-l)384 -b Ft(When)26 b(the)g(v)-5 b(ariable)27 b(is)f(assigned)g(a)g(v)-5 -b(alue,)28 b(all)f(upp)s(er-case)e(c)m(haracters)j(are)1110 -1767 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)43 b(The)30 -b(upp)s(er-case)g(attribute)h(is)g(disabled.)630 1930 -y Fs(-n)384 b Ft(Giv)m(e)28 b(eac)m(h)g Fq(name)k Ft(the)27 -b Fq(nameref)44 b Ft(attribute,)28 b(making)f(it)h(a)f(name)f -(reference)1110 2039 y(to)32 b(another)g(v)-5 b(ariable.)46 -b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g -(v)-5 b(alue)32 b(of)1110 2149 y Fq(name)5 b Ft(.)39 -b(All)25 b(references)f(and)g(assignmen)m(ts)h(to)g Fq(name)5 -b Ft(,)26 b(except)f(for)f(c)m(hanging)1110 2258 y(the)38 -b(`)p Fs(-n)p Ft(')f(attribute)h(itself,)i(are)e(p)s(erformed)e(on)h -(the)h(v)-5 b(ariable)38 b(referenced)1110 2368 y(b)m(y)j -Fq(name)5 b Ft('s)41 b(v)-5 b(alue.)74 b(The)41 b(`)p -Fs(-n)p Ft(')g(attribute)g(cannot)h(b)s(e)f(applied)g(to)g(arra)m(y) -1110 2478 y(v)-5 b(ariables.)630 2640 y Fs(-r)384 b Ft(Mak)m(e)25 -b Fq(name)5 b Ft(s)23 b(readonly)-8 b(.)39 b(These)24 -b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5 b(alues)1110 -2749 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h(statemen)m(ts)h(or)f -(unset.)630 2911 y Fs(-t)384 b Ft(Giv)m(e)33 b(eac)m(h)h -Fq(name)j Ft(the)32 b Fs(trace)f Ft(attribute.)46 b(T)-8 -b(raced)32 b(functions)g(inherit)g(the)1110 3021 y Fs(DEBUG)26 -b Ft(and)h Fs(RETURN)f Ft(traps)h(from)g(the)h(calling)h(shell.)40 -b(The)27 b(trace)i(attribute)1110 3131 y(has)h(no)g(sp)s(ecial)h -(meaning)g(for)f(v)-5 b(ariables.)630 3293 y Fs(-u)384 -b Ft(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f(v)-5 -b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110 -3402 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30 -b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630 3565 -y Fs(-x)384 b Ft(Mark)30 b(eac)m(h)h Fq(name)k Ft(for)29 -b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110 -3674 y(ronmen)m(t.)630 3836 y(Using)e(`)p Fs(+)p Ft(')h(instead)f(of)g -(`)p Fs(-)p Ft(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f -(the)g(exceptions)h(that)630 3946 y(`)p Fs(+a)p Ft(')h(ma)m(y)h(not)f -(b)s(e)f(used)g(to)i(destro)m(y)g(an)f(arra)m(y)g(v)-5 -b(ariable)31 b(and)f(`)p Fs(+r)p Ft(')g(will)g(not)g(remo)m(v)m(e)i -(the)630 4056 y(readonly)e(attribute.)41 b(When)30 b(used)f(in)g(a)h -(function,)g Fs(declare)e Ft(mak)m(es)j(eac)m(h)f Fq(name)35 -b Ft(lo)s(cal,)630 4165 y(as)30 b(with)g(the)h Fs(local)e -Ft(command,)h(unless)f(the)i(`)p Fs(-g)p Ft(')f(option)g(is)h(used.)40 -b(If)29 b(a)i(v)-5 b(ariable)31 b(name)630 4275 y(is)f(follo)m(w)m(ed)i -(b)m(y)f(=)p Fq(v)-5 b(alue)5 b Ft(,)31 b(the)f(v)-5 -b(alue)31 b(of)g(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g -Fq(v)-5 b(alue)5 b Ft(.)630 4411 y(The)35 b(return)f(status)i(is)g -(zero)g(unless)f(an)g(in)m(v)-5 b(alid)36 b(option)g(is)g(encoun)m -(tered,)h(an)f(attempt)630 4520 y(is)c(made)g(to)g(de\014ne)f(a)h -(function)g(using)f(`)p Fs(-f)f(foo=bar)p Ft(',)h(an)h(attempt)g(is)g -(made)g(to)h(assign)630 4630 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 4739 -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 -4849 y([Arra)m(ys],)47 b(page)c(88\),)48 b(one)43 b(of)g(the)g -Fq(names)k Ft(is)c(not)g(a)g(v)-5 b(alid)43 b(shell)g(v)-5 -b(ariable)44 b(name,)i(an)630 4959 y(attempt)28 b(is)f(made)h(to)f -(turn)f(o\013)i(readonly)f(status)g(for)g(a)h(readonly)f(v)-5 -b(ariable,)29 b(an)e(attempt)630 5068 y(is)h(made)h(to)g(turn)e(o\013)i -(arra)m(y)f(status)h(for)f(an)g(arra)m(y)h(v)-5 b(ariable,)30 -b(or)e(an)g(attempt)i(is)e(made)g(to)630 5178 y(displa)m(y)j(a)f -(non-existen)m(t)i(function)e(with)g(`)p Fs(-f)p Ft('.)150 -5340 y Fs(echo)p eop end -%%Page: 51 57 -TeXDict begin 51 56 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(51)870 299 y Fs(echo)47 -b([-neE])f([)p Fi(arg)57 b Fs(...)o(])630 430 y Ft(Output)31 -b(the)i Fq(arg)8 b Ft(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated) -g(with)f(a)h(newline.)47 b(The)32 b(return)630 540 y(status)27 -b(is)g(0)h(unless)e(a)i(write)f(error)f(o)s(ccurs.)40 -b(If)26 b(`)p Fs(-n)p Ft(')h(is)g(sp)s(eci\014ed,)h(the)f(trailing)h -(newline)f(is)630 650 y(suppressed.)37 b(If)24 b(the)g(`)p -Fs(-e)p Ft(')h(option)g(is)f(giv)m(en,)j(in)m(terpretation)f(of)e(the)h -(follo)m(wing)h(bac)m(kslash-)630 759 y(escap)s(ed)38 -b(c)m(haracters)i(is)f(enabled.)65 b(The)38 b(`)p Fs(-E)p -Ft(')g(option)h(disables)f(the)h(in)m(terpretation)h(of)630 -869 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g(systems)f -(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630 -978 y(The)32 b Fs(xpg_echo)f Ft(shell)i(option)g(ma)m(y)h(b)s(e)e(used) -g(to)h(dynamically)h(determine)f(whether)f(or)630 1088 -y(not)h Fs(echo)f Ft(expands)g(these)h(escap)s(e)h(c)m(haracters)g(b)m -(y)f(default.)48 b Fs(echo)32 b Ft(do)s(es)g(not)i(in)m(terpret)630 -1198 y(`)p Fs(--)p Ft(')c(to)h(mean)g(the)f(end)g(of)h(options.)630 -1329 y Fs(echo)e Ft(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f -(sequences:)630 1482 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 -1636 y Fs(\\b)384 b Ft(bac)m(kspace)630 1789 y Fs(\\c)g -Ft(suppress)28 b(further)h(output)630 1943 y Fs(\\e)630 -2052 y(\\E)384 b Ft(escap)s(e)630 2206 y Fs(\\f)g Ft(form)30 -b(feed)630 2359 y Fs(\\n)384 b Ft(new)30 b(line)630 2513 -y Fs(\\r)384 b Ft(carriage)32 b(return)630 2666 y Fs(\\t)384 -b Ft(horizon)m(tal)32 b(tab)630 2819 y Fs(\\v)384 b Ft(v)m(ertical)32 -b(tab)630 2973 y Fs(\\\\)384 b Ft(bac)m(kslash)630 3126 -y Fs(\\0)p Fi(nnn)240 b Ft(the)32 b(eigh)m(t-bit)i(c)m(haracter)g -(whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5 -b(alue)32 b Fq(nnn)f Ft(\(zero)i(to)1110 3236 y(three)e(o)s(ctal)g -(digits\))630 3389 y Fs(\\x)p Fi(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c) -m(haracter)g(whose)e(v)-5 b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 -b(alue)40 b Fq(HH)1110 3499 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e -(digits\))630 3652 y Fs(\\u)p Fi(HHHH)192 b Ft(the)41 -b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 -b(alue)41 b(is)g(the)g(hex-)1110 3762 y(adecimal)32 b(v)-5 -b(alue)31 b Fq(HHHH)41 b Ft(\(one)31 b(to)g(four)e(hex)h(digits\))630 -3915 y Fs(\\U)p Fi(HHHHHHHH)1110 4025 y Ft(the)41 b(Unico)s(de)g -(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 -b(is)g(the)g(hex-)1110 4134 y(adecimal)32 b(v)-5 b(alue)31 -b Fq(HHHHHHHH)41 b Ft(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150 -4288 y Fs(enable)870 4419 y(enable)46 b([-a])h([-dnps])f([-f)g -Fi(filename)11 b Fs(])45 b([)p Fi(name)57 b Fs(...)o(])630 -4551 y Ft(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 -4661 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h -(builtin)e(to)i(b)s(e)f(executed)h(without)630 4770 y(sp)s(ecifying)27 -b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g -(searc)m(hes)h(for)f(builtins)630 4880 y(b)s(efore)32 -b(disk)f(commands.)46 b(If)31 b(`)p Fs(-n)p Ft(')h(is)g(used,)g(the)g -Fq(name)5 b Ft(s)32 b(b)s(ecome)h(disabled.)45 b(Otherwise)630 -4989 y Fq(name)5 b Ft(s)44 b(are)h(enabled.)82 b(F)-8 -b(or)45 b(example,)k(to)c(use)f(the)g Fs(test)f Ft(binary)h(found)f -(via)h Fs($PATH)630 5099 y Ft(instead)31 b(of)f(the)h(shell)f(builtin)g -(v)m(ersion,)h(t)m(yp)s(e)g(`)p Fs(enable)e(-n)h(test)p -Ft('.)630 5230 y(If)42 b(the)h(`)p Fs(-p)p Ft(')f(option)h(is)f -(supplied,)j(or)d(no)h Fq(name)k Ft(argumen)m(ts)c(app)s(ear,)i(a)e -(list)g(of)g(shell)630 5340 y(builtins)37 b(is)h(prin)m(ted.)63 -b(With)38 b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g -(all)h(enabled)p eop end -%%Page: 52 58 -TeXDict begin 52 57 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(52)630 299 y(shell)33 -b(builtins.)46 b(The)32 b(`)p Fs(-a)p Ft(')h(option)g(means)f(to)i -(list)f(eac)m(h)h(builtin)e(with)g(an)g(indication)i(of)630 -408 y(whether)c(or)g(not)h(it)g(is)f(enabled.)630 543 -y(The)40 b(`)p Fs(-f)p Ft(')g(option)g(means)g(to)h(load)g(the)f(new)f -(builtin)h(command)g Fq(name)45 b Ft(from)40 b(shared)630 -652 y(ob)5 b(ject)26 b Fq(\014lename)5 b Ft(,)28 b(on)d(systems)h(that) -g(supp)s(ort)e(dynamic)h(loading.)40 b(The)25 b(`)p Fs(-d)p -Ft(')h(option)g(will)630 762 y(delete)32 b(a)e(builtin)g(loaded)h(with) -f(`)p Fs(-f)p Ft('.)630 896 y(If)h(there)g(are)g(no)g(options,)h(a)f -(list)h(of)f(the)g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)43 -b(The)31 b(`)p Fs(-s)p Ft(')f(option)630 1006 y(restricts)f -Fs(enable)e Ft(to)i(the)f Fl(posix)g Ft(sp)s(ecial)h(builtins.)40 -b(If)27 b(`)p Fs(-s)p Ft(')i(is)f(used)g(with)g(`)p Fs(-f)p -Ft(',)h(the)f(new)630 1115 y(builtin)i(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 -(67\).)630 1250 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i -Fq(name)k Ft(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g -(error)630 1359 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g -(ob)5 b(ject.)150 1518 y Fs(help)870 1653 y(help)47 b([-dms])f([)p -Fi(pattern)11 b Fs(])630 1787 y Ft(Displa)m(y)40 b(helpful)e -(information)h(ab)s(out)g(builtin)f(commands.)66 b(If)38 -b Fq(pattern)h Ft(is)g(sp)s(eci\014ed,)630 1897 y Fs(help)28 -b Ft(giv)m(es)i(detailed)g(help)e(on)h(all)h(commands)e(matc)m(hing)i -Fq(pattern)p Ft(,)g(otherwise)f(a)g(list)h(of)630 2006 -y(the)h(builtins)e(is)i(prin)m(ted.)630 2141 y(Options,)f(if)h -(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 -2300 y Fs(-d)384 b Ft(Displa)m(y)32 b(a)e(short)g(description)h(of)f -(eac)m(h)i Fq(pattern)630 2459 y Fs(-m)384 b Ft(Displa)m(y)32 -b(the)e(description)g(of)h(eac)m(h)h Fq(pattern)e Ft(in)g(a)h -(manpage-lik)m(e)h(format)630 2618 y Fs(-s)384 b Ft(Displa)m(y)32 -b(only)e(a)h(short)f(usage)h(synopsis)e(for)i(eac)m(h)g -Fq(pattern)630 2777 y Ft(The)f(return)f(status)i(is)f(zero)h(unless)f -(no)g(command)h(matc)m(hes)g Fq(pattern)p Ft(.)150 2936 -y Fs(let)870 3070 y(let)47 b Fi(expression)55 b Fs([)p -Fi(expression)h Fs(...)o(])630 3205 y Ft(The)41 b Fs(let)g -Ft(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s(e)d(p)s(erformed)g(on)i -(shell)g(v)-5 b(ariables.)74 b(Eac)m(h)630 3314 y Fq(expression)31 -b Ft(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 3424 -y(Arithmetic],)51 b(page)46 b(86.)87 b(If)45 b(the)g(last)h -Fq(expression)g Ft(ev)-5 b(aluates)47 b(to)f(0,)k Fs(let)44 -b Ft(returns)g(1;)630 3534 y(otherwise)31 b(0)g(is)f(returned.)150 -3693 y Fs(local)870 3827 y(local)46 b([)p Fi(option)11 -b Fs(])45 b Fi(name)11 b Fs([=)p Fi(value)g Fs(])44 b(...)630 -3961 y Ft(F)-8 b(or)26 b(eac)m(h)h(argumen)m(t,)g(a)e(lo)s(cal)i(v)-5 -b(ariable)26 b(named)f Fq(name)31 b Ft(is)25 b(created,)j(and)d -(assigned)g Fq(v)-5 b(alue)5 b Ft(.)630 4071 y(The)37 -b Fq(option)h Ft(can)f(b)s(e)g(an)m(y)h(of)f(the)h(options)g(accepted)g -(b)m(y)g Fs(declare)p Ft(.)59 b Fs(local)36 b Ft(can)i(only)630 -4180 y(b)s(e)j(used)h(within)f(a)i(function;)48 b(it)42 -b(mak)m(es)h(the)f(v)-5 b(ariable)43 b Fq(name)48 b Ft(ha)m(v)m(e)43 -b(a)f(visible)h(scop)s(e)630 4290 y(restricted)c(to)g(that)g(function)f -(and)f(its)i(c)m(hildren.)64 b(The)38 b(return)f(status)h(is)h(zero)g -(unless)630 4400 y Fs(local)g Ft(is)h(used)g(outside)g(a)h(function,)h -(an)e(in)m(v)-5 b(alid)41 b Fq(name)46 b Ft(is)40 b(supplied,)i(or)e -Fq(name)45 b Ft(is)c(a)630 4509 y(readonly)30 b(v)-5 -b(ariable.)150 4668 y Fs(logout)870 4803 y(logout)46 -b([)p Fi(n)11 b Fs(])630 4937 y Ft(Exit)31 b(a)g(login)g(shell,)g -(returning)e(a)i(status)g(of)f Fq(n)g Ft(to)h(the)g(shell's)f(paren)m -(t.)150 5096 y Fs(mapfile)870 5230 y(mapfile)46 b([-n)h -Fi(count)11 b Fs(])45 b([-O)i Fi(origin)11 b Fs(])46 -b([-s)g Fi(count)11 b Fs(])46 b([-t])h([-u)g Fi(fd)11 -b Fs(])1061 5340 y([-C)47 b Fi(callback)11 b Fs(])45 -b([-c)i Fi(quantum)11 b Fs(])45 b([)p Fi(array)11 b Fs(])p -eop end -%%Page: 53 59 -TeXDict begin 53 58 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(Read)37 -b(lines)g(from)f(the)h(standard)f(input)g(in)m(to)h(the)g(indexed)f -(arra)m(y)i(v)-5 b(ariable)37 b Fq(arra)m(y)8 b Ft(,)39 -b(or)630 408 y(from)c(\014le)h(descriptor)g Fq(fd)j Ft(if)d(the)g(`)p -Fs(-u)p Ft(')g(option)g(is)g(supplied.)56 b(The)35 b(v)-5 -b(ariable)37 b Fs(MAPFILE)d Ft(is)630 518 y(the)d(default)f -Fq(arra)m(y)8 b Ft(.)41 b(Options,)30 b(if)h(supplied,)e(ha)m(v)m(e)j -(the)e(follo)m(wing)i(meanings:)630 681 y Fs(-n)384 b -Ft(Cop)m(y)30 b(at)h(most)g Fq(coun)m(t)i Ft(lines.)41 -b(If)30 b Fq(coun)m(t)j Ft(is)d(0,)h(all)h(lines)e(are)h(copied.)630 -843 y Fs(-O)384 b Ft(Begin)31 b(assigning)g(to)g Fq(arra)m(y)39 -b Ft(at)31 b(index)f Fq(origin)p Ft(.)41 b(The)30 b(default)h(index)f -(is)g(0.)630 1006 y Fs(-s)384 b Ft(Discard)31 b(the)f(\014rst)g -Fq(coun)m(t)j Ft(lines)e(read.)630 1168 y Fs(-t)384 b -Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(newline)g(from)f(eac)m(h)h(line)g -(read.)630 1331 y Fs(-u)384 b Ft(Read)31 b(lines)f(from)g(\014le)h -(descriptor)f Fq(fd)j Ft(instead)e(of)f(the)h(standard)e(input.)630 -1493 y Fs(-C)384 b Ft(Ev)-5 b(aluate)43 b Fq(callbac)m(k)49 -b Ft(eac)m(h)42 b(time)g Fq(quan)m(tum)p Ft(P)f(lines)h(are)f(read.)74 -b(The)41 b(`)p Fs(-c)p Ft(')1110 1603 y(option)31 b(sp)s(eci\014es)f -Fq(quan)m(tum)p Ft(.)630 1765 y Fs(-c)384 b Ft(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 Fq(callbac)m(k)6 b Ft(.)630 1928 y(If)36 -b(`)p Fs(-C)p Ft(')g(is)h(sp)s(eci\014ed)f(without)g(`)p -Fs(-c)p Ft(',)i(the)f(default)f(quan)m(tum)g(is)h(5000.)61 -b(When)36 b Fq(callbac)m(k)630 2037 y Ft(is)e(ev)-5 b(aluated,)36 -b(it)f(is)f(supplied)f(the)h(index)f(of)h(the)h(next)f(arra)m(y)g -(elemen)m(t)i(to)e(b)s(e)g(assigned)630 2147 y(and)f(the)g(line)h(to)f -(b)s(e)g(assigned)g(to)h(that)g(elemen)m(t)h(as)e(additional)h(argumen) -m(ts.)50 b Fq(callbac)m(k)630 2256 y Ft(is)30 b(ev)-5 -b(aluated)32 b(after)f(the)f(line)h(is)g(read)f(but)g(b)s(efore)f(the)i -(arra)m(y)g(elemen)m(t)h(is)e(assigned.)630 2392 y(If)25 -b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g Fs(mapfile)c -Ft(will)j(clear)g Fq(arra)m(y)34 b Ft(b)s(efore)24 b(assigning)630 -2502 y(to)31 b(it.)630 2638 y Fs(mapfile)41 b Ft(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 2748 y(supplied,)29 b -Fq(arra)m(y)39 b Ft(is)30 b(in)m(v)-5 b(alid)31 b(or)g(unassignable,)f -(or)h Fq(arra)m(y)38 b Ft(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 -b(.)150 2910 y Fs(printf)870 3046 y(printf)46 b([-v)h -Fi(var)11 b Fs(])46 b Fi(format)57 b Fs([)p Fi(arguments)11 -b Fs(])630 3182 y Ft(W)-8 b(rite)27 b(the)g(formatted)f -Fq(argumen)m(ts)k Ft(to)d(the)f(standard)f(output)h(under)e(the)i(con)m -(trol)i(of)e(the)630 3292 y Fq(format)r Ft(.)57 b(The)35 -b(`)p Fs(-v)p Ft(')h(option)g(causes)g(the)g(output)g(to)g(b)s(e)f -(assigned)h(to)h(the)e(v)-5 b(ariable)37 b Fq(v)-5 b(ar)630 -3401 y Ft(rather)30 b(than)g(b)s(eing)g(prin)m(ted)g(to)h(the)g -(standard)e(output.)630 3537 y(The)36 b Fq(format)i Ft(is)f(a)f(c)m -(haracter)i(string)e(whic)m(h)g(con)m(tains)i(three)e(t)m(yp)s(es)g(of) -h(ob)5 b(jects:)53 b(plain)630 3647 y(c)m(haracters,)41 -b(whic)m(h)c(are)h(simply)e(copied)i(to)g(standard)f(output,)i(c)m -(haracter)g(escap)s(e)e(se-)630 3757 y(quences,)g(whic)m(h)f(are)g(con) -m(v)m(erted)h(and)f(copied)g(to)g(the)g(standard)f(output,)i(and)f -(format)630 3866 y(sp)s(eci\014cations,)i(eac)m(h)g(of)e(whic)m(h)g -(causes)g(prin)m(ting)g(of)g(the)h(next)f(successiv)m(e)h -Fq(argumen)m(t)r Ft(.)630 3976 y(In)24 b(addition)h(to)g(the)g -(standard)f Fs(printf\(1\))e Ft(formats,)27 b Fs(printf)c -Ft(in)m(terprets)i(the)f(follo)m(wing)630 4085 y(extensions:)630 -4248 y Fs(\045b)384 b Ft(Causes)30 b Fs(printf)e Ft(to)j(expand)f(bac)m -(kslash)h(escap)s(e)f(sequences)h(in)f(the)g(corre-)1110 -4357 y(sp)s(onding)19 b Fq(argumen)m(t)r Ft(,)k(except)f(that)f(`)p -Fs(\\c)p Ft(')g(terminates)h(output,)g(bac)m(kslashes)1110 -4467 y(in)27 b(`)p Fs(\\')p Ft(',)h(`)p Fs(\\")p Ft(',)g(and)f(`)p -Fs(\\?)p Ft(')g(are)h(not)f(remo)m(v)m(ed,)j(and)c(o)s(ctal)j(escap)s -(es)f(b)s(eginning)1110 4577 y(with)i(`)p Fs(\\0)p Ft(')g(ma)m(y)h(con) -m(tain)h(up)d(to)i(four)f(digits.)630 4739 y Fs(\045q)384 -b Ft(Causes)32 b Fs(printf)e Ft(to)i(output)g(the)g(corresp)s(onding)f -Fq(argumen)m(t)j Ft(in)d(a)i(format)1110 4849 y(that)e(can)g(b)s(e)e -(reused)h(as)h(shell)f(input.)630 5011 y Fs(\045\()p -Fi(datefmt)11 b Fs(\)T)1110 5121 y Ft(Causes)29 b Fs(printf)e -Ft(to)j(output)f(the)g(date-time)i(string)e(resulting)h(from)e(using) -1110 5230 y Fq(datefm)m(t)45 b Ft(as)d(a)g(format)g(string)g(for)g -Fs(strftime)p Ft(\(3\).)74 b(The)41 b(corresp)s(onding)1110 -5340 y Fq(argumen)m(t)h Ft(is)e(an)g(in)m(teger)i(represen)m(ting)e -(the)g(n)m(um)m(b)s(er)f(of)h(seconds)g(since)p eop end -%%Page: 54 60 -TeXDict begin 54 59 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(54)1110 299 y(the)24 -b(ep)s(o)s(c)m(h.)38 b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 -b(alues)24 b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110 -408 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g -(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110 -518 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m -(ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110 -628 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g -Fs(printf)f Ft(b)s(eha)m(vior.)630 798 y(Argumen)m(ts)f(to)h -(non-string)e(format)i(sp)s(eci\014ers)e(are)h(treated)h(as)g(C)e -(language)j(constan)m(ts,)630 908 y(except)22 b(that)g(a)g(leading)g -(plus)e(or)h(min)m(us)f(sign)i(is)f(allo)m(w)m(ed,)k(and)c(if)g(the)g -(leading)h(c)m(haracter)h(is)630 1017 y(a)i(single)g(or)f(double)h -(quote,)h(the)f(v)-5 b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 -b(alue)25 b(of)f(the)h(follo)m(wing)h(c)m(haracter.)630 -1157 y(The)31 b Fq(format)i Ft(is)e(reused)f(as)i(necessary)f(to)h -(consume)f(all)h(of)f(the)g Fq(argumen)m(ts)t Ft(.)43 -b(If)31 b(the)g Fq(for-)630 1267 y(mat)d Ft(requires)e(more)g -Fq(argumen)m(ts)k Ft(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f -(sp)s(eci\014cations)630 1377 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g -(v)-5 b(alue)29 b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b) -s(een)g(supplied.)38 b(The)630 1486 y(return)29 b(v)-5 -b(alue)31 b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150 -1657 y Fs(read)870 1797 y(read)47 b([-ers])f([-a)h Fi(aname)11 -b Fs(])45 b([-d)i Fi(delim)11 b Fs(])46 b([-i)h Fi(text)11 -b Fs(])46 b([-n)g Fi(nchars)11 b Fs(])1061 1906 y([-N)47 -b Fi(nchars)11 b Fs(])45 b([-p)i Fi(prompt)11 b Fs(])45 -b([-t)i Fi(timeout)11 b Fs(])45 b([-u)i Fi(fd)11 b Fs(])47 -b([)p Fi(name)57 b Fs(...)o(])630 2046 y Ft(One)26 b(line)h(is)g(read)f -(from)h(the)f(standard)g(input,)h(or)g(from)f(the)h(\014le)f -(descriptor)h Fq(fd)i Ft(supplied)630 2156 y(as)37 b(an)g(argumen)m(t)h -(to)f(the)h(`)p Fs(-u)p Ft(')e(option,)k(and)c(the)i(\014rst)e(w)m(ord) -g(is)h(assigned)h(to)f(the)h(\014rst)630 2265 y Fq(name)5 -b Ft(,)28 b(the)g(second)g(w)m(ord)f(to)h(the)f(second)h -Fq(name)5 b Ft(,)28 b(and)f(so)h(on,)g(with)f(lefto)m(v)m(er)j(w)m -(ords)d(and)630 2375 y(their)h(in)m(terv)m(ening)g(separators)g -(assigned)g(to)h(the)e(last)i Fq(name)5 b Ft(.)40 b(If)27 -b(there)h(are)g(few)m(er)f(w)m(ords)630 2485 y(read)44 -b(from)f(the)g(input)g(stream)h(than)g(names,)j(the)c(remaining)h -(names)g(are)g(assigned)630 2594 y(empt)m(y)31 b(v)-5 -b(alues.)41 b(The)30 b(c)m(haracters)i(in)e(the)h(v)-5 -b(alue)31 b(of)g(the)f Fs(IFS)g Ft(v)-5 b(ariable)31 -b(are)g(used)f(to)h(split)630 2704 y(the)37 b(line)h(in)m(to)g(w)m -(ords.)61 b(The)36 b(bac)m(kslash)i(c)m(haracter)h(`)p -Fs(\\)p Ft(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630 -2813 y(sp)s(ecial)h(meaning)g(for)f(the)g(next)h(c)m(haracter)h(read)e -(and)g(for)g(line)h(con)m(tin)m(uation.)69 b(If)39 b(no)630 -2923 y(names)28 b(are)h(supplied,)f(the)g(line)h(read)g(is)f(assigned)h -(to)g(the)f(v)-5 b(ariable)29 b Fs(REPLY)p Ft(.)39 b(The)28 -b(return)630 3033 y(co)s(de)e(is)g(zero,)h(unless)e(end-of-\014le)h(is) -g(encoun)m(tered,)h Fs(read)e Ft(times)h(out)g(\(in)g(whic)m(h)f(case)i -(the)630 3142 y(return)g(co)s(de)h(is)g(greater)i(than)e(128\),)i(a)e -(v)-5 b(ariable)29 b(assignmen)m(t)g(error)f(\(suc)m(h)g(as)g -(assigning)630 3252 y(to)38 b(a)f(readonly)g(v)-5 b(ariable\))38 -b(o)s(ccurs,)h(or)e(an)g(in)m(v)-5 b(alid)38 b(\014le)f(descriptor)g -(is)g(supplied)e(as)j(the)630 3361 y(argumen)m(t)31 b(to)g(`)p -Fs(-u)p Ft('.)630 3501 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g -(follo)m(wing)h(meanings:)630 3672 y Fs(-a)e Fi(aname)114 -b Ft(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 3781 y Fq(aname)5 -b Ft(,)29 b(starting)g(at)f(0.)40 b(All)29 b(elemen)m(ts)g(are)f(remo)m -(v)m(ed)h(from)e Fq(aname)33 b Ft(b)s(efore)1110 3891 -y(the)e(assignmen)m(t.)41 b(Other)30 b Fq(name)36 b Ft(argumen)m(ts)30 -b(are)h(ignored.)630 4061 y Fs(-d)f Fi(delim)114 b Ft(The)41 -b(\014rst)h(c)m(haracter)h(of)f Fq(delim)g Ft(is)g(used)g(to)g -(terminate)h(the)f(input)f(line,)1110 4171 y(rather)30 -b(than)g(newline.)630 4341 y Fs(-e)384 b Ft(Readline)46 -b(\(see)g(Chapter)e(8)h([Command)f(Line)h(Editing],)50 -b(page)45 b(101\))i(is)1110 4451 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 -4561 y(line)31 b(editing)g(w)m(as)f(not)h(previously)f(activ)m(e\))j -(editing)e(settings.)630 4731 y Fs(-i)f Fi(text)162 b -Ft(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g(the)g(line,)j -Fq(text)f Ft(is)e(placed)h(in)m(to)g(the)1110 4841 y(editing)31 -b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630 5011 -y Fs(-n)f Fi(nchars)1110 5121 y Fs(read)38 b Ft(returns)f(after)j -(reading)f Fq(nc)m(hars)j Ft(c)m(haracters)e(rather)f(than)g(w)m -(aiting)1110 5230 y(for)g(a)h(complete)h(line)f(of)f(input,)i(but)e -(honor)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 5340 -y Fq(nc)m(hars)34 b Ft(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g -(delimiter.)p eop end -%%Page: 55 61 -TeXDict begin 55 60 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Fs(-N)30 -b Fi(nchars)1110 408 y Fs(read)39 b Ft(returns)f(after)j(reading)e -(exactly)j Fq(nc)m(hars)h Ft(c)m(haracters)f(rather)d(than)1110 -518 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 628 y Fs(read)f -Ft(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g -(in)f(the)g(input)g(are)1110 737 y(not)g(treated)h(sp)s(ecially)g(and)f -(do)f(not)i(cause)f Fs(read)f Ft(to)i(return)e(un)m(til)h -Fq(nc)m(hars)1110 847 y Ft(c)m(haracters)h(are)f(read.)630 -1016 y Fs(-p)f Fi(prompt)1110 1126 y Ft(Displa)m(y)38 -b Fq(prompt)r Ft(,)f(without)g(a)f(trailing)i(newline,)g(b)s(efore)e -(attempting)i(to)1110 1235 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 1345 y(from)30 b(a)h(terminal.)630 1514 -y Fs(-r)384 b Ft(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 -1624 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 1733 -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 1903 y Fs(-s)384 b Ft(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 2012 y(ec)m(ho)s(ed.)630 -2182 y Fs(-t)i Fi(timeout)1110 2291 y Ft(Cause)42 b Fs(read)g -Ft(to)h(time)h(out)f(and)f(return)f(failure)i(if)g(a)g(complete)h(line) -f(of)1110 2401 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 -Fq(time-)1110 2511 y(out)37 b Ft(seconds.)53 b Fq(timeout)38 -b Ft(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 2620 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 2730 y Fs(read)j Ft(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 2839 -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 Fs(read)g Ft(times)h(out,)1110 -2949 y Fs(read)d Ft(sa)m(v)m(es)i(an)m(y)g(partial)g(input)e(read)h(in) -m(to)h(the)f(sp)s(eci\014ed)g(v)-5 b(ariable)30 b Fq(name)5 -b Ft(.)1110 3059 y(If)35 b Fq(timeout)j Ft(is)e(0,)h -Fs(read)e Ft(returns)f(immediately)-8 b(,)39 b(without)c(trying)h(to)g -(read)1110 3168 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 3278 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46 -b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 3387 -y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 3557 -y Fs(-u)g Fi(fd)258 b Ft(Read)31 b(input)e(from)h(\014le)g(descriptor)h -Fq(fd)t Ft(.)150 3726 y Fs(readarray)870 3836 y(readarray)45 -b([-n)i Fi(count)11 b Fs(])46 b([-O)h Fi(origin)11 b -Fs(])45 b([-s)i Fi(count)11 b Fs(])46 b([-t])g([-u)h -Fi(fd)11 b Fs(])1061 3945 y([-C)47 b Fi(callback)11 b -Fs(])45 b([-c)i Fi(quantum)11 b Fs(])45 b([)p Fi(array)11 -b Fs(])630 4085 y Ft(Read)37 b(lines)g(from)f(the)h(standard)f(input)g -(in)m(to)h(the)g(indexed)f(arra)m(y)i(v)-5 b(ariable)37 -b Fq(arra)m(y)8 b Ft(,)39 b(or)630 4194 y(from)30 b(\014le)g -(descriptor)h Fq(fd)i Ft(if)d(the)h(`)p Fs(-u)p Ft(')f(option)h(is)f -(supplied.)630 4334 y(A)g(synon)m(ym)g(for)g Fs(mapfile)p -Ft(.)150 4503 y Fs(source)870 4643 y(source)46 b Fi(filename)630 -4782 y Ft(A)30 b(synon)m(ym)g(for)g Fs(.)g Ft(\(see)i(Section)f(4.1)g -([Bourne)g(Shell)f(Builtins],)h(page)g(40\).)150 4951 -y Fs(type)870 5091 y(type)47 b([-afptP])e([)p Fi(name)57 -b Fs(...)o(])630 5230 y Ft(F)-8 b(or)41 b(eac)m(h)h Fq(name)5 -b Ft(,)44 b(indicate)e(ho)m(w)f(it)g(w)m(ould)f(b)s(e)g(in)m(terpreted) -h(if)g(used)f(as)h(a)g(command)630 5340 y(name.)p eop -end -%%Page: 56 62 -TeXDict begin 56 61 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(If)38 -b(the)g(`)p Fs(-t)p Ft(')g(option)g(is)g(used,)i Fs(type)d -Ft(prin)m(ts)g(a)i(single)f(w)m(ord)g(whic)m(h)g(is)g(one)g(of)h(`)p -Fs(alias)p Ft(',)630 408 y(`)p Fs(function)p Ft(',)32 -b(`)p Fs(builtin)p Ft(',)g(`)p Fs(file)p Ft(')g(or)h(`)p -Fs(keyword)p Ft(',)f(if)h Fq(name)38 b Ft(is)33 b(an)f(alias,)j(shell)e -(function,)630 518 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 Fq(name)40 b Ft(is)35 b(not)630 628 y(found,)29 -b(then)h(nothing)h(is)f(prin)m(ted,)g(and)g Fs(type)f -Ft(returns)g(a)i(failure)g(status.)630 765 y(If)39 b(the)g(`)p -Fs(-p)p Ft(')g(option)h(is)f(used,)i Fs(type)d Ft(either)h(returns)f -(the)i(name)f(of)g(the)g(disk)g(\014le)g(that)630 874 -y(w)m(ould)30 b(b)s(e)g(executed,)h(or)g(nothing)f(if)g(`)p -Fs(-t)p Ft(')h(w)m(ould)f(not)g(return)g(`)p Fs(file)p -Ft('.)630 1011 y(The)23 b(`)p Fs(-P)p Ft(')g(option)h(forces)g(a)g -(path)f(searc)m(h)h(for)f(eac)m(h)h Fq(name)5 b Ft(,)26 -b(ev)m(en)e(if)f(`)p Fs(-t)p Ft(')g(w)m(ould)g(not)h(return)630 -1121 y(`)p Fs(file)p Ft('.)630 1258 y(If)41 b(a)h(command)f(is)h -(hashed,)i(`)p Fs(-p)p Ft(')d(and)g(`)p Fs(-P)p Ft(')g(prin)m(t)g(the)h -(hashed)f(v)-5 b(alue,)45 b(whic)m(h)c(is)h(not)630 1367 -y(necessarily)31 b(the)g(\014le)f(that)h(app)s(ears)f(\014rst)g(in)g -Fs($PATH)p Ft(.)630 1504 y(If)36 b(the)h(`)p Fs(-a)p -Ft(')g(option)g(is)g(used,)g Fs(type)f Ft(returns)f(all)j(of)f(the)g -(places)g(that)g(con)m(tain)h(an)f(exe-)630 1614 y(cutable)d(named)f -Fq(\014le)5 b Ft(.)49 b(This)32 b(includes)h(aliases)i(and)d -(functions,)i(if)f(and)f(only)i(if)f(the)g(`)p Fs(-p)p -Ft(')630 1724 y(option)e(is)f(not)h(also)g(used.)630 -1861 y(If)26 b(the)h(`)p Fs(-f)p Ft(')g(option)g(is)g(used,)g -Fs(type)e Ft(do)s(es)i(not)g(attempt)g(to)h(\014nd)d(shell)i -(functions,)g(as)g(with)630 1970 y(the)k Fs(command)d -Ft(builtin.)630 2107 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h -(of)f(the)h Fq(names)i Ft(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h -(not)630 2217 y(found.)150 2381 y Fs(typeset)870 2518 -y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fi(name)11 -b Fs([=)p Fi(value)g Fs(])43 b(...)o(])630 2655 y Ft(The)31 -b Fs(typeset)e Ft(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 2765 -y(a)g(synon)m(ym)f(for)g(the)g Fs(declare)f Ft(builtin)h(command.)150 -2929 y Fs(ulimit)870 3066 y(ulimit)46 b([-abcdefilmnpqrstuvxHST])41 -b([)p Fi(limit)11 b Fs(])630 3203 y(ulimit)25 b Ft(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 3313 -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 -3422 y(as)i(follo)m(ws:)630 3587 y Fs(-S)384 b Ft(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 3751 y Fs(-H)384 b Ft(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 -3915 y Fs(-a)384 b Ft(All)31 b(curren)m(t)f(limits)h(are)g(rep)s -(orted.)630 4080 y Fs(-b)384 b Ft(The)30 b(maxim)m(um)g(so)s(c)m(k)m -(et)i(bu\013er)e(size.)630 4244 y Fs(-c)384 b Ft(The)30 -b(maxim)m(um)g(size)h(of)g(core)g(\014les)f(created.)630 -4408 y Fs(-d)384 b Ft(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s -(cess's)f(data)h(segmen)m(t.)630 4573 y Fs(-e)384 b Ft(The)30 -b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)f(\()p Fs(")p -Ft(nice)p Fs(")p Ft(\).)630 4737 y Fs(-f)384 b Ft(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 4902 y Fs(-i)384 b Ft(The)30 -b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e(signals.)630 -5066 y Fs(-l)384 b Ft(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 5230 -y Fs(-m)384 b Ft(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 5340 -y(limit\).)p eop end -%%Page: 57 63 -TeXDict begin 57 62 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Fs(-n)384 -b Ft(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 408 y(not)31 -b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)630 -560 y Fs(-p)384 b Ft(The)30 b(pip)s(e)f(bu\013er)h(size.)630 -712 y Fs(-q)384 b Ft(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 864 y Fs(-r)384 -b Ft(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8 -b(.)630 1016 y Fs(-s)384 b Ft(The)30 b(maxim)m(um)g(stac)m(k)i(size.) -630 1168 y Fs(-t)384 b Ft(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g -(time)h(in)f(seconds.)630 1320 y Fs(-u)384 b Ft(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 1472 y Fs(-v)384 -b Ft(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 1581 y(and,)30 -b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630 -1733 y Fs(-x)384 b Ft(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 1885 y Fs(-T)384 b Ft(The)30 -b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(threads.)630 2037 -y(If)i Fq(limit)k Ft(is)d(giv)m(en,)h(and)f(the)f(`)p -Fs(-a)p Ft(')h(option)g(is)g(not)g(used,)g Fq(limit)j -Ft(is)c(the)h(new)g(v)-5 b(alue)34 b(of)g(the)630 2146 -y(sp)s(eci\014ed)f(resource.)51 b(The)34 b(sp)s(ecial)g -Fq(limit)j Ft(v)-5 b(alues)34 b Fs(hard)p Ft(,)g Fs(soft)p -Ft(,)g(and)f Fs(unlimited)e Ft(stand)630 2256 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 2366 y(hard)24 -b(limit)i(cannot)g(b)s(e)e(increased)h(b)m(y)g(a)h(non-ro)s(ot)f(user)f -(once)i(it)g(is)f(set;)j(a)d(soft)g(limit)h(ma)m(y)630 -2475 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5 b(alue)38 -b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39 b(the)f(curren)m(t)f(v)-5 -b(alue)630 2585 y(of)36 b(the)f(soft)h(limit)h(for)e(the)g(sp)s -(eci\014ed)g(resource)h(is)f(prin)m(ted,)i(unless)e(the)h(`)p -Fs(-H)p Ft(')f(option)h(is)630 2694 y(supplied.)j(When)28 -b(setting)h(new)f(limits,)h(if)f(neither)h(`)p Fs(-H)p -Ft(')f(nor)f(`)p Fs(-S)p Ft(')h(is)h(supplied,)e(b)s(oth)h(the)630 -2804 y(hard)g(and)h(soft)h(limits)g(are)g(set.)41 b(If)29 -b(no)g(option)h(is)f(giv)m(en,)i(then)e(`)p Fs(-f)p Ft(')h(is)f -(assumed.)40 b(V)-8 b(alues)630 2914 y(are)38 b(in)f(1024-b)m(yte)k -(incremen)m(ts,)f(except)e(for)g(`)p Fs(-t)p Ft(',)h(whic)m(h)e(is)h -(in)f(seconds;)42 b(`)p Fs(-p)p Ft(',)d(whic)m(h)630 -3023 y(is)33 b(in)f(units)g(of)h(512-b)m(yte)i(blo)s(c)m(ks;)g(and)d(`) -p Fs(-T)p Ft(',)i(`)p Fs(-b)p Ft(',)f(`)p Fs(-n)p Ft(')g(and)f(`)p -Fs(-u)p Ft(',)h(whic)m(h)g(are)g(unscaled)630 3133 y(v)-5 -b(alues.)630 3263 y(The)34 b(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 3373 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f -(limit.)150 3525 y Fs(unalias)870 3656 y(unalias)46 b([-a])g([)p -Fi(name)57 b Fs(...)47 b(])630 3786 y Ft(Remo)m(v)m(e)39 -b(eac)m(h)f Fq(name)k Ft(from)36 b(the)h(list)h(of)f(aliases.)61 -b(If)36 b(`)p Fs(-a)p Ft(')h(is)g(supplied,)h(all)f(aliases)i(are)630 -3896 y(remo)m(v)m(ed.)j(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section) -i(6.6)f([Aliases],)h(page)f(87.)150 4121 y Fr(4.3)68 -b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 4341 y Fj(4.3.1)63 -b(The)41 b(Set)g(Builtin)150 4488 y Ft(This)35 b(builtin)h(is)g(so)g -(complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59 -b Fs(set)35 b Ft(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150 -4598 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f -(p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h -(and)150 4707 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150 -4859 y Fs(set)870 4990 y(set)47 b([--abefhkmnptuvxBCEHPT])41 -b([-o)47 b Fi(option-name)11 b Fs(])44 b([)p Fi(argument)56 -b Fs(...)o(])870 5100 y(set)47 b([+abefhkmnptuvxBCEHPT])42 -b([+o)47 b Fi(option-name)11 b Fs(])43 b([)p Fi(argument)56 -b Fs(...)o(])630 5230 y Ft(If)22 b(no)h(options)g(or)g(argumen)m(ts)g -(are)g(supplied,)g Fs(set)f Ft(displa)m(ys)g(the)h(names)g(and)f(v)-5 -b(alues)23 b(of)g(all)630 5340 y(shell)j(v)-5 b(ariables)27 -b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s -(cale,)k(in)c(a)i(format)p eop end -%%Page: 58 64 -TeXDict begin 58 63 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y(that)29 -b(ma)m(y)h(b)s(e)e(reused)g(as)h(input)f(for)h(setting)h(or)e -(resetting)i(the)f(curren)m(tly-set)h(v)-5 b(ariables.)630 -408 y(Read-only)37 b(v)-5 b(ariables)37 b(cannot)h(b)s(e)e(reset.)59 -b(In)36 b Fl(posix)g Ft(mo)s(de,)i(only)f(shell)f(v)-5 -b(ariables)38 b(are)630 518 y(listed.)630 647 y(When)29 -b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f(shell)h -(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630 757 -y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 -905 y Fs(-a)384 b Ft(Mark)32 b(v)-5 b(ariables)33 b(and)e(function)h -(whic)m(h)g(are)g(mo)s(di\014ed)f(or)h(created)h(for)f(ex-)1110 -1014 y(p)s(ort)e(to)h(the)f(en)m(vironmen)m(t)h(of)g(subsequen)m(t)f -(commands.)630 1163 y Fs(-b)384 b Ft(Cause)44 b(the)h(status)g(of)f -(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110 -1272 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting) -g(the)g(next)g(primary)g(prompt.)630 1421 y Fs(-e)384 -b Ft(Exit)65 b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g -(3.2.2)h([Pip)s(elines],)1110 1530 y(page)56 b(8\),)62 -b(whic)m(h)55 b(ma)m(y)h(consist)f(of)h(a)f(single)h(simple)f(command)g -(\(see)1110 1640 y(Section)30 b(3.2.1)i([Simple)d(Commands],)g(page)h -(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.3)1110 1749 -y([Lists],)66 b(page)59 b(9\),)67 b(or)58 b(a)h(comp)s(ound)e(command)h -(\(see)h(Section)g(3.2.4)1110 1859 y([Comp)s(ound)67 -b(Commands],)77 b(page)69 b(9\))g(returns)e(a)i(non-zero)g(status.)1110 -1969 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f -(that)h(fails)f(is)g(part)g(of)h(the)1110 2078 y(command)g(list)h -(immediately)g(follo)m(wing)g(a)g Fs(while)e Ft(or)h -Fs(until)e Ft(k)m(eyw)m(ord,)1110 2188 y(part)61 b(of)g(the)g(test)h -(in)e(an)h Fs(if)f Ft(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g -(command)1110 2297 y(executed)50 b(in)e(a)h Fs(&&)f Ft(or)h -Fs(||)f Ft(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110 -2407 y(\014nal)37 b Fs(&&)g Ft(or)g Fs(||)p Ft(,)h(an)m(y)g(command)f -(in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110 -2516 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h -(with)e Fs(!)p Ft(.)48 b(If)33 b(a)g(comp)s(ound)1110 -2626 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h -(status)f(b)s(ecause)1110 2736 y(a)g(command)f(failed)h(while)f(`)p -Fs(-e)p Ft(')h(w)m(as)f(b)s(eing)g(ignored,)h(the)g(shell)g(do)s(es)f -(not)1110 2845 y(exit.)42 b(A)30 b(trap)g(on)h Fs(ERR)p -Ft(,)e(if)i(set,)g(is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.) -1110 2974 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 3084 y(vironmen)m(t)j -(separately)i(\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110 -3193 y(vironmen)m(t],)i(page)f(36\),)i(and)d(ma)m(y)h(cause)f -(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 3303 y(cuting)d(all)g -(the)g(commands)f(in)g(the)g(subshell.)1110 3432 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 3541 y(where)26 b(`)p Fs(-e)p Ft(')g(is)g(b)s -(eing)g(ignored,)i(none)e(of)g(the)g(commands)g(executed)h(within)1110 -3651 y(the)35 b(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g -(will)h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3761 y(`)p -Fs(-e)p Ft(')41 b(setting,)k(ev)m(en)d(if)g(`)p Fs(-e)p -Ft(')f(is)g(set)h(and)e(a)i(command)f(returns)f(a)i(failure)1110 -3870 y(status.)60 b(If)37 b(a)g(comp)s(ound)e(command)i(or)g(shell)g -(function)f(sets)h(`)p Fs(-e)p Ft(')g(while)1110 3980 -y(executing)f(in)f(a)g(con)m(text)i(where)d(`)p Fs(-e)p -Ft(')h(is)g(ignored,)h(that)f(setting)h(will)g(not)1110 -4089 y(ha)m(v)m(e)26 b(an)m(y)f(e\013ect)h(un)m(til)f(the)g(comp)s -(ound)e(command)h(or)h(the)g(command)f(con-)1110 4199 -y(taining)31 b(the)g(function)f(call)h(completes.)630 -4347 y Fs(-f)384 b Ft(Disable)31 b(\014lename)g(expansion)f -(\(globbing\).)630 4495 y Fs(-h)384 b Ft(Lo)s(cate)33 -b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s -(ok)m(ed)h(up)e(for)1110 4605 y(execution.)42 b(This)29 -b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4753 y -Fs(-k)384 b Ft(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g -(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110 -4863 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 4973 y(command)30 -b(name.)630 5121 y Fs(-m)384 b Ft(Job)32 b(con)m(trol)h(is)f(enabled)g -(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)e(97\).)47 -b(All)1110 5230 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 -5340 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m -(taining)i(its)f(exit)g(status.)p eop end -%%Page: 59 65 -TeXDict begin 59 64 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y Fs(-n)384 -b Ft(Read)21 b(commands)f(but)g(do)h(not)g(execute)h(them;)i(this)d(ma) -m(y)g(b)s(e)f(used)g(to)h(c)m(hec)m(k)1110 408 y(a)42 -b(script)g(for)g(syn)m(tax)g(errors.)75 b(This)41 b(option)h(is)g -(ignored)g(b)m(y)g(in)m(teractiv)m(e)1110 518 y(shells.)630 -667 y Fs(-o)30 b Fi(option-name)1110 777 y Ft(Set)h(the)f(option)h -(corresp)s(onding)e(to)i Fq(option-name)5 b Ft(:)1110 -927 y Fs(allexport)1590 1036 y Ft(Same)30 b(as)h Fs(-a)p -Ft(.)1110 1186 y Fs(braceexpand)1590 1295 y Ft(Same)f(as)h -Fs(-B)p Ft(.)1110 1445 y Fs(emacs)240 b Ft(Use)25 b(an)f -Fs(emacs)p Ft(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g -(Chapter)e(8)1590 1554 y([Command)33 b(Line)g(Editing],)h(page)h -(101\).)51 b(This)32 b(also)i(a\013ects)1590 1664 y(the)d(editing)g(in) -m(terface)h(used)d(for)h Fs(read)f(-e)p Ft(.)1110 1813 -y Fs(errexit)144 b Ft(Same)30 b(as)h Fs(-e)p Ft(.)1110 -1963 y Fs(errtrace)96 b Ft(Same)30 b(as)h Fs(-E)p Ft(.)1110 -2112 y Fs(functrace)1590 2222 y Ft(Same)f(as)h Fs(-T)p -Ft(.)1110 2371 y Fs(hashall)144 b Ft(Same)30 b(as)h Fs(-h)p -Ft(.)1110 2521 y Fs(histexpand)1590 2630 y Ft(Same)f(as)h -Fs(-H)p Ft(.)1110 2780 y Fs(history)144 b Ft(Enable)39 -b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1) -1590 2889 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(133.)60 -b(This)36 b(option)h(is)f(on)1590 2999 y(b)m(y)30 b(default)h(in)f(in)m -(teractiv)m(e)j(shells.)1110 3148 y Fs(ignoreeof)1590 -3258 y Ft(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on) -e(reading)i(EOF.)1110 3407 y Fs(keyword)144 b Ft(Same)30 -b(as)h Fs(-k)p Ft(.)1110 3557 y Fs(monitor)144 b Ft(Same)30 -b(as)h Fs(-m)p Ft(.)1110 3706 y Fs(noclobber)1590 3816 -y Ft(Same)f(as)h Fs(-C)p Ft(.)1110 3965 y Fs(noexec)192 -b Ft(Same)30 b(as)h Fs(-n)p Ft(.)1110 4115 y Fs(noglob)192 -b Ft(Same)30 b(as)h Fs(-f)p Ft(.)1110 4264 y Fs(nolog)240 -b Ft(Curren)m(tly)30 b(ignored.)1110 4413 y Fs(notify)192 -b Ft(Same)30 b(as)h Fs(-b)p Ft(.)1110 4563 y Fs(nounset)144 -b Ft(Same)30 b(as)h Fs(-u)p Ft(.)1110 4712 y Fs(onecmd)192 -b Ft(Same)30 b(as)h Fs(-t)p Ft(.)1110 4862 y Fs(physical)96 -b Ft(Same)30 b(as)h Fs(-P)p Ft(.)1110 5011 y Fs(pipefail)96 -b Ft(If)44 b(set,)k(the)d(return)e(v)-5 b(alue)45 b(of)f(a)h(pip)s -(eline)e(is)i(the)f(v)-5 b(alue)45 b(of)1590 5121 y(the)33 -b(last)h(\(righ)m(tmost\))h(command)e(to)h(exit)g(with)f(a)g(non-zero) -1590 5230 y(status,)28 b(or)f(zero)g(if)f(all)i(commands)e(in)g(the)h -(pip)s(eline)f(exit)i(suc-)1590 5340 y(cessfully)-8 b(.)41 -b(This)30 b(option)h(is)f(disabled)g(b)m(y)h(default.)p -eop end -%%Page: 60 66 -TeXDict begin 60 65 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(60)1110 299 y -Fs(posix)240 b Ft(Change)30 b(the)g(b)s(eha)m(vior)h(of)f(Bash)g(where) -g(the)g(default)h(op)s(era-)1590 408 y(tion)25 b(di\013ers)f(from)g -(the)h Fl(posix)f Ft(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 -518 y(dard)32 b(\(see)i(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s(de],)j -(page)e(93\).)1590 628 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 737 y(p)s(erset)30 -b(of)h(that)f(standard.)1110 911 y Fs(privileged)1590 -1020 y Ft(Same)g(as)h Fs(-p)p Ft(.)1110 1194 y Fs(verbose)144 -b Ft(Same)30 b(as)h Fs(-v)p Ft(.)1110 1367 y Fs(vi)384 -b Ft(Use)36 b(a)g Fs(vi)p Ft(-st)m(yle)g(line)g(editing)g(in)m -(terface.)58 b(This)35 b(also)h(a\013ects)1590 1477 y(the)31 -b(editing)g(in)m(terface)h(used)d(for)h Fs(read)f(-e)p -Ft(.)1110 1650 y Fs(xtrace)192 b Ft(Same)30 b(as)h Fs(-x)p -Ft(.)630 1824 y Fs(-p)384 b Ft(T)-8 b(urn)33 b(on)h(privileged)h(mo)s -(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f Fs($BASH_ENV)e -Ft(and)h Fs($ENV)1110 1934 y Ft(\014les)23 b(are)h(not)f(pro)s(cessed,) -h(shell)g(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110 -2043 y(vironmen)m(t,)h(and)e(the)g Fs(SHELLOPTS)p Ft(,)f -Fs(BASHOPTS)p Ft(,)h Fs(CDPATH)e Ft(and)i Fs(GLOBIGNORE)1110 -2153 y Ft(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m -(vironmen)m(t,)i(are)e(ignored.)38 b(If)20 b(the)h(shell)1110 -2262 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d -(\(group\))g(id)g(not)g(equal)h(to)g(the)f(real)1110 -2372 y(user)d(\(group\))g(id,)i(and)e(the)g(`)p Fs(-p)p -Ft(')g(option)h(is)g(not)f(supplied,)h(these)g(actions)1110 -2482 y(are)d(tak)m(en)i(and)d(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g -(set)h(to)f(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 -2591 y(`)p Fs(-p)p Ft(')e(option)i(is)e(supplied)g(at)h(startup,)f(the) -h(e\013ectiv)m(e)i(user)d(id)h(is)f(not)h(reset.)1110 -2701 y(T)-8 b(urning)35 b(this)i(option)g(o\013)g(causes)g(the)g -(e\013ectiv)m(e)i(user)d(and)g(group)g(ids)g(to)1110 -2810 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f(and)g(group)g(ids.)630 -2984 y Fs(-t)384 b Ft(Exit)31 b(after)g(reading)f(and)g(executing)h -(one)g(command.)630 3157 y Fs(-u)384 b Ft(T)-8 b(reat)25 -b(unset)e(v)-5 b(ariables)25 b(and)e(parameters)h(other)h(than)e(the)h -(sp)s(ecial)h(param-)1110 3267 y(eters)35 b(`)p Fs(@)p -Ft(')f(or)g(`)p Fs(*)p Ft(')h(as)f(an)g(error)g(when)f(p)s(erforming)g -(parameter)i(expansion.)1110 3377 y(An)28 b(error)h(message)g(will)g(b) -s(e)f(written)h(to)h(the)e(standard)g(error,)h(and)f(a)h(non-)1110 -3486 y(in)m(teractiv)m(e)k(shell)e(will)g(exit.)630 3660 -y Fs(-v)384 b Ft(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they)f(are) -h(read.)630 3833 y Fs(-x)384 b Ft(Prin)m(t)21 b(a)h(trace)h(of)f -(simple)f(commands,)i Fs(for)e Ft(commands,)i Fs(case)d -Ft(commands,)1110 3943 y Fs(select)29 b Ft(commands,)j(and)e -(arithmetic)j Fs(for)d Ft(commands)h(and)f(their)i(argu-)1110 -4052 y(men)m(ts)h(or)f(asso)s(ciated)i(w)m(ord)e(lists)h(after)g(they)f -(are)h(expanded)f(and)f(b)s(efore)1110 4162 y(they)i(are)g(executed.)49 -b(The)32 b(v)-5 b(alue)33 b(of)g(the)g Fs(PS4)f Ft(v)-5 -b(ariable)34 b(is)f(expanded)f(and)1110 4271 y(the)24 -b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h -(command)g(and)f(its)i(expanded)1110 4381 y(argumen)m(ts.)630 -4555 y Fs(-B)384 b Ft(The)41 b(shell)g(will)g(p)s(erform)f(brace)h -(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4664 -y(Expansion],)30 b(page)h(21\).)42 b(This)30 b(option)h(is)f(on)g(b)m -(y)h(default.)630 4838 y Fs(-C)384 b Ft(Prev)m(en)m(t)25 -b(output)e(redirection)h(using)f(`)p Fs(>)p Ft(',)i(`)p -Fs(>&)p Ft(',)g(and)e(`)p Fs(<>)p Ft(')g(from)h(o)m(v)m(erwriting)1110 -4947 y(existing)31 b(\014les.)630 5121 y Fs(-E)384 b -Ft(If)39 b(set,)j(an)m(y)e(trap)f(on)g Fs(ERR)g Ft(is)g(inherited)g(b)m -(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35 -b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.) -1110 5340 y(The)d Fs(ERR)f Ft(trap)i(is)f(normally)h(not)f(inherited)g -(in)g(suc)m(h)g(cases.)p eop end -%%Page: 61 67 -TeXDict begin 61 66 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(61)630 299 y Fs(-H)384 -b Ft(Enable)38 b(`)p Fs(!)p Ft(')h(st)m(yle)h(history)e(substitution)g -(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d -(135\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m -(teractiv)m(e)1110 518 y(shells.)630 670 y Fs(-P)384 -b Ft(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g -(when)f(p)s(erforming)g(commands)1110 780 y(suc)m(h)29 -b(as)h Fs(cd)f Ft(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory) --8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 890 y(tory)j(is)g(used)f -(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i -(c)m(hain)f(of)1110 999 y(directories)j(when)d(p)s(erforming)h -(commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110 -1109 y(directory)-8 b(.)1110 1240 y(F)g(or)31 b(example,)g(if)f(`)p -Fs(/usr/sys)p Ft(')e(is)i(a)g(sym)m(b)s(olic)h(link)f(to)g(`)p -Fs(/usr/local/sys)p Ft(')1110 1349 y(then:)1350 1480 -y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1590 y(/usr/sys)1350 -1700 y($)g(cd)h(..;)f(pwd)1350 1809 y(/usr)1110 1940 -y Ft(If)30 b Fs(set)f(-P)h Ft(is)h(on,)f(then:)1350 2071 -y Fs($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2181 y(/usr/local/sys) -1350 2290 y($)g(cd)h(..;)f(pwd)1350 2400 y(/usr/local)630 -2552 y(-T)384 b Ft(If)34 b(set,)j(an)m(y)e(trap)g(on)g -Fs(DEBUG)e Ft(and)i Fs(RETURN)e Ft(are)i(inherited)g(b)m(y)f(shell)i -(func-)1110 2662 y(tions,)k(command)d(substitutions,)h(and)f(commands)g -(executed)h(in)f(a)h(sub-)1110 2771 y(shell)33 b(en)m(vironmen)m(t.)49 -b(The)32 b Fs(DEBUG)g Ft(and)g Fs(RETURN)f Ft(traps)h(are)i(normally)f -(not)1110 2881 y(inherited)d(in)g(suc)m(h)g(cases.)630 -3033 y Fs(--)384 b Ft(If)31 b(no)h(argumen)m(ts)f(follo)m(w)i(this)f -(option,)g(then)f(the)h(p)s(ositional)h(parameters)1110 -3143 y(are)h(unset.)49 b(Otherwise,)34 b(the)g(p)s(ositional)g -(parameters)g(are)g(set)g(to)g(the)g Fq(ar-)1110 3253 -y(gumen)m(ts)t Ft(,)d(ev)m(en)g(if)f(some)h(of)f(them)h(b)s(egin)f -(with)g(a)g(`)p Fs(-)p Ft('.)630 3405 y Fs(-)432 b Ft(Signal)45 -b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e -Fq(argumen)m(ts)49 b Ft(to)d(b)s(e)1110 3515 y(assigned)38 -b(to)h(the)f(p)s(ositional)h(parameters.)65 b(The)37 -b(`)p Fs(-x)p Ft(')h(and)g(`)p Fs(-v)p Ft(')g(options)1110 -3624 y(are)25 b(turned)e(o\013.)40 b(If)24 b(there)h(are)g(no)f -(argumen)m(ts,)i(the)f(p)s(ositional)h(parameters)1110 -3734 y(remain)k(unc)m(hanged.)630 3886 y(Using)d(`)p -Fs(+)p Ft(')h(rather)f(than)g(`)p Fs(-)p Ft(')g(causes)h(these)f -(options)h(to)g(b)s(e)e(turned)g(o\013.)40 b(The)27 b(options)h(can)630 -3996 y(also)36 b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e -(the)g(shell.)56 b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g -(b)s(e)630 4105 y(found)29 b(in)h Fs($-)p Ft(.)630 4236 -y(The)43 b(remaining)h(N)f Fq(argumen)m(ts)48 b Ft(are)c(p)s(ositional) -g(parameters)g(and)f(are)h(assigned,)j(in)630 4346 y(order,)30 -b(to)h Fs($1)p Ft(,)f Fs($2)p Ft(,)36 b(.)22 b(.)g(.)42 -b Fs($N)p Ft(.)e(The)30 b(sp)s(ecial)h(parameter)g Fs(#)f -Ft(is)g(set)h(to)g(N.)630 4477 y(The)f(return)f(status)i(is)f(alw)m(a)m -(ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f -(supplied.)150 4669 y Fj(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150 -4816 y Ft(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h -(additional)f(shell)f(optional)i(b)s(eha)m(vior.)150 -4968 y Fs(shopt)870 5099 y(shopt)46 b([-pqsu])g([-o])h([)p -Fi(optname)56 b Fs(...)o(])630 5230 y Ft(T)-8 b(oggle)47 -b(the)d(v)-5 b(alues)45 b(of)g(v)-5 b(ariables)45 b(con)m(trolling)i -(optional)f(shell)e(b)s(eha)m(vior.)84 b(With)45 b(no)630 -5340 y(options,)32 b(or)f(with)g(the)g(`)p Fs(-p)p Ft(')g(option,)h(a)g -(list)f(of)h(all)g(settable)g(options)g(is)f(displa)m(y)m(ed,)h(with)p -eop end -%%Page: 62 68 -TeXDict begin 62 67 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y(an)34 -b(indication)i(of)f(whether)f(or)g(not)h(eac)m(h)h(is)e(set.)54 -b(The)34 b(`)p Fs(-p)p Ft(')h(option)g(causes)g(output)f(to)630 -408 y(b)s(e)i(displa)m(y)m(ed)h(in)e(a)i(form)f(that)h(ma)m(y)g(b)s(e)e -(reused)h(as)g(input.)58 b(Other)36 b(options)g(ha)m(v)m(e)i(the)630 -518 y(follo)m(wing)32 b(meanings:)630 663 y Fs(-s)384 -b Ft(Enable)30 b(\(set\))i(eac)m(h)f Fq(optname)5 b Ft(.)630 -807 y Fs(-u)384 b Ft(Disable)31 b(\(unset\))g(eac)m(h)h -Fq(optname)5 b Ft(.)630 952 y Fs(-q)384 b Ft(Suppresses)28 -b(normal)h(output;)h(the)g(return)e(status)i(indicates)h(whether)e(the) -1110 1062 y Fq(optname)37 b Ft(is)31 b(set)h(or)f(unset.)43 -b(If)31 b(m)m(ultiple)h Fq(optname)37 b Ft(argumen)m(ts)31 -b(are)h(giv)m(en)1110 1171 y(with)43 b(`)p Fs(-q)p Ft(',)j(the)d -(return)f(status)h(is)g(zero)h(if)f(all)g Fq(optnames)k -Ft(are)d(enabled;)1110 1281 y(non-zero)31 b(otherwise.)630 -1425 y Fs(-o)384 b Ft(Restricts)28 b(the)g(v)-5 b(alues)28 -b(of)f Fq(optname)33 b Ft(to)c(b)s(e)d(those)i(de\014ned)f(for)g(the)g -(`)p Fs(-o)p Ft(')h(op-)1110 1535 y(tion)23 b(to)h(the)f -Fs(set)f Ft(builtin)h(\(see)g(Section)h(4.3.1)h([The)d(Set)i(Builtin],) -h(page)e(57\).)630 1680 y(If)40 b(either)g(`)p Fs(-s)p -Ft(')g(or)g(`)p Fs(-u)p Ft(')g(is)g(used)g(with)g(no)g -Fq(optname)45 b Ft(argumen)m(ts,)e Fs(shopt)c Ft(sho)m(ws)h(only)630 -1789 y(those)31 b(options)g(whic)m(h)f(are)g(set)h(or)g(unset,)f(resp)s -(ectiv)m(ely)-8 b(.)630 1916 y(Unless)30 b(otherwise)h(noted,)g(the)g -Fs(shopt)d Ft(options)j(are)g(disabled)f(\(o\013)7 b(\))32 -b(b)m(y)e(default.)630 2044 y(The)d(return)f(status)i(when)f(listing)h -(options)g(is)f(zero)i(if)e(all)i Fq(optnames)i Ft(are)d(enabled,)g -(non-)630 2153 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 -2263 y(unless)30 b(an)g Fq(optname)36 b Ft(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)630 2390 y(The)f(list)h(of)f -Fs(shopt)f Ft(options)i(is:)630 2534 y Fs(autocd)192 -b Ft(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 2644 y(as)j(if)f(it)h(w)m(ere)f -(the)h(argumen)m(t)g(to)g(the)f Fs(cd)g Ft(command.)40 -b(This)29 b(option)g(is)h(only)1110 2754 y(used)g(b)m(y)g(in)m -(teractiv)m(e)j(shells.)630 2898 y Fs(cdable_vars)1110 -3008 y Ft(If)h(this)h(is)g(set,)i(an)e(argumen)m(t)g(to)h(the)f -Fs(cd)f Ft(builtin)h(command)f(that)i(is)f(not)1110 3118 -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 3227 -y(the)g(directory)f(to)i(c)m(hange)f(to.)630 3372 y Fs(cdspell)144 -b Ft(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 Fs(cd)1110 3481 -y Ft(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 -3591 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 3701 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 3810 -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 3955 y Fs(checkhash)1110 -4064 y Ft(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 4174 -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 4284 -y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 -4428 y Fs(checkjobs)1110 4538 y Ft(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 4647 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 -4757 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 4867 y(in)m(terv)m(ening)j -(command)e(\(see)h(Chapter)f(7)h([Job)f(Con)m(trol],)i(page)f(97\).)42 -b(The)1110 4976 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 5121 y Fs(checkwinsize)1110 -5230 y Ft(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 5340 y(necessary)-8 -b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Fs(LINES)e -Ft(and)g Fs(COLUMNS)p Ft(.)p eop end -%%Page: 63 69 -TeXDict begin 63 68 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y Fs(cmdhist)144 -b Ft(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 408 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 518 y(commands.)630 -690 y Fs(compat31)96 b Ft(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s -(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect) -1110 800 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h -(command's)f(`)p Fs(=~)p Ft(')g(op)s(erator)1110 909 -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 1019 y(the)31 b Fs([[)e -Ft(conditional)j(command's)e(`)p Fs(<)p Ft(')h(and)f(`)p -Fs(>)p Ft(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110 -1129 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 1238 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 -1410 y Fs(compat32)96 b Ft(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s -(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect) -1110 1520 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g -(when)f(using)h(the)g Fs([[)g Ft(conditional)1110 1630 -y(command's)d(`)p Fs(<)p Ft(')h(and)f(`)p Fs(>)p Ft(')g(op)s(erators)h -(\(see)g(previous)f(item\).)630 1802 y Fs(compat40)96 -b Ft(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i -(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110 -1911 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f -(using)h(the)g Fs([[)g Ft(conditional)1110 2021 y(command's)28 -b(`)p Fs(<)p Ft(')h(and)f(`)p Fs(>)p Ft(')h(op)s(erators)f(\(see)i -(description)e(of)h Fs(compat31)p Ft(\))e(and)1110 2131 -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 2240 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 2350 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 -2522 y Fs(compat41)96 b Ft(If)27 b(set,)i(Bash,)g(when)e(in)g(p)s(osix) -g(mo)s(de,)h(treats)h(a)f(single)g(quote)h(in)e(a)h(double-)1110 -2632 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 2741 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 2851 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 2960 y Fl(posix)f -Ft(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 b(The)39 -b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 3070 y(mains)30 -b(as)h(in)f(previous)g(v)m(ersions.)630 3242 y Fs(compat42)96 -b Ft(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 3352 -y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 -b(al.)630 3524 y Fs(complete_fullquote)1110 3634 y Ft(If)31 -b(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e -(\014lenames)g(and)g(direc-)1110 3743 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 3853 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 3962 -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 4072 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 4181 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 -4291 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 4401 -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 -4510 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 4620 -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 4729 y(through)30 -b(4.2.)630 4902 y Fs(direxpand)1110 5011 y Ft(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 5121 y(pansion)k(when)g(p)s(erforming)f(\014lename)i -(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 5230 -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 5340 -y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)p eop -end -%%Page: 64 70 -TeXDict begin 64 69 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Fs(dirspell)96 -b Ft(If)26 b(set,)i(Bash)f(attempts)g(sp)s(elling)g(correction)g(on)g -(directory)g(names)f(during)1110 408 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 -518 y(exist.)630 677 y Fs(dotglob)144 b Ft(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 787 y(\014lename)j(expansion.)630 -946 y Fs(execfail)96 b Ft(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 1056 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) -h(the)f Fs(exec)f Ft(builtin)h(command.)39 b(An)1110 -1166 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e -Fs(exec)f Ft(fails.)630 1325 y Fs(expand_aliases)1110 -1435 y Ft(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 1544 y(tion)38 -b(6.6)h([Aliases],)j(page)d(87.)64 b(This)37 b(option)h(is)g(enabled)g -(b)m(y)g(default)g(for)1110 1654 y(in)m(teractiv)m(e)33 -b(shells.)630 1813 y Fs(extdebug)96 b Ft(If)30 b(set,)h(b)s(eha)m(vior) -g(in)m(tended)f(for)g(use)g(b)m(y)g(debuggers)g(is)h(enabled:)1159 -1948 y(1.)61 b(The)32 b(`)p Fs(-F)p Ft(')g(option)h(to)g(the)g -Fs(declare)d Ft(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -2057 y(Builtins],)29 b(page)g(47\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2167 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 2276 y(men)m(t.)1159 2411 y(2.)61 b(If)20 b(the)h(command)g(run)e -(b)m(y)i(the)f Fs(DEBUG)g Ft(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 2521 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)1159 2655 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m -(y)i(the)f Fs(DEBUG)f Ft(trap)h(returns)f(a)i(v)-5 b(alue)38 -b(of)f(2,)1290 2765 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 2874 y(a)h(shell)h -(script)f(executed)h(b)m(y)f(the)g Fs(.)g Ft(or)g Fs(source)e -Ft(builtins\),)j(a)g(call)g(to)1290 2984 y Fs(return)29 -b Ft(is)h(sim)m(ulated.)1159 3118 y(4.)61 b Fs(BASH_ARGC)34 -b Ft(and)i Fs(BASH_ARGV)e Ft(are)j(up)s(dated)e(as)h(describ)s(ed)g(in) -g(their)1290 3228 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g -(V)-8 b(ariables],)32 b(page)f(68\).)1159 3362 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 3472 y(functions,)30 -b(and)f(subshells)g(in)m(v)m(ok)m(ed)j(with)d Fs(\()h -Fi(command)39 b Fs(\))30 b Ft(inherit)g(the)1290 3582 -y Fs(DEBUG)f Ft(and)h Fs(RETURN)e Ft(traps.)1159 3716 -y(6.)61 b(Error)41 b(tracing)i(is)f(enabled:)63 b(command)42 -b(substitution,)i(shell)f(func-)1290 3826 y(tions,)30 -b(and)f(subshells)g(in)m(v)m(ok)m(ed)i(with)e Fs(\()h -Fi(command)39 b Fs(\))29 b Ft(inherit)g(the)h Fs(ERR)1290 -3935 y Ft(trap.)630 4095 y Fs(extglob)144 b Ft(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 4204 y(Section)j(3.5.8.1)i([P)m -(attern)f(Matc)m(hing],)g(page)f(29\))h(are)f(enabled.)630 -4364 y Fs(extquote)96 b Ft(If)49 b(set,)54 b Fs($')p -Fi(string)11 b Fs(')46 b Ft(and)j Fs($")p Fi(string)11 -b Fs(")46 b Ft(quoting)k(is)f(p)s(erformed)e(within)1110 -4473 y Fs(${)p Fi(parameter)11 b Fs(})30 b Ft(expansions)j(enclosed)h -(in)g(double)f(quotes.)51 b(This)32 b(option)1110 4583 -y(is)e(enabled)h(b)m(y)f(default.)630 4742 y Fs(failglob)96 -b Ft(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 4852 y(pansion)30 -b(result)g(in)g(an)g(expansion)h(error.)630 5011 y Fs(force_fignore) -1110 5121 y Ft(If)43 b(set,)k(the)d(su\016xes)f(sp)s(eci\014ed)f(b)m(y) -i(the)f Fs(FIGNORE)f Ft(shell)h(v)-5 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 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: 65 71 -TeXDict begin 65 70 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 y([Bash)24 -b(V)-8 b(ariables],)27 b(page)e(68,)h(for)d(a)h(description)g(of)g -Fs(FIGNORE)p Ft(.)37 b(This)22 b(option)1110 408 y(is)30 -b(enabled)h(b)m(y)f(default.)630 562 y Fs(globasciiranges)1110 -671 y Ft(If)87 b(set,)104 b(range)88 b(expressions)f(used)g(in)h -(pattern)g(matc)m(hing)h(\(see)1110 781 y(Section)43 -b(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)j(page)c(29\))h(b)s(eha)m(v)m -(e)f(as)f(if)h(in)f(the)1110 891 y(traditional)h(C)e(lo)s(cale)i(when)e -(p)s(erforming)f(comparisons.)75 b(That)41 b(is,)k(the)1110 -1000 y(curren)m(t)31 b(lo)s(cale's)i(collating)g(sequence)e(is)g(not)h -(tak)m(en)g(in)m(to)g(accoun)m(t,)h(so)e(`)p Fs(b)p Ft(')1110 -1110 y(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p -Fs(A)p Ft(')g(and)f(`)p Fs(B)p Ft(',)h(and)f(upp)s(er-case)g(and)g(lo)m -(w)m(er-case)1110 1219 y(ASCI)s(I)f(c)m(haracters)j(will)e(collate)j -(together.)630 1373 y Fs(globstar)96 b Ft(If)38 b(set,)j(the)e(pattern) -f(`)p Fs(**)p Ft(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m -(text)j(will)1110 1482 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 -1592 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p -Fs(/)p Ft(',)f(only)g(directories)h(and)f(sub)s(directories)1110 -1702 y(matc)m(h.)630 1855 y Fs(gnu_errfmt)1110 1965 y -Ft(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fl(gnu)g Ft(error)1110 2074 y(message)c(format.)630 -2228 y Fs(histappend)1110 2337 y Ft(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 2447 y(the)d Fs(HISTFILE)d Ft(v)-5 -b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 2556 y(the)31 b(\014le.)630 2710 y Fs(histreedit)1110 -2819 y Ft(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 -2929 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -3082 y Fs(histverify)1110 3192 y Ft(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 -3302 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 3411 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 3521 y(further)29 b(mo)s(di\014cation.)630 3674 -y Fs(hostcomplete)1110 3784 y Ft(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 -3893 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Fs(@)p Ft(')g(is)g(b)s(eing)f(com-)1110 4003 y(pleted)g(\(see)h -(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(120\).)1110 4113 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 4266 y Fs(huponexit)1110 4376 y Ft(If)i(set,)i(Bash)f(will)h(send)d -Fs(SIGHUP)h Ft(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 4485 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(38\).)630 4639 y Fs(interactive_comments)1110 -4748 y Ft(Allo)m(w)c(a)g(w)m(ord)e(b)s(eginning)g(with)h(`)p -Fs(#)p Ft(')g(to)h(cause)f(that)h(w)m(ord)f(and)f(all)i(remain-)1110 -4858 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 -4967 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 -5121 y Fs(lastpipe)96 b Ft(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 -5230 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 5340 y(en)m(vironmen)m -(t.)p eop end -%%Page: 66 72 -TeXDict begin 66 71 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Fs(lithist)144 -b Ft(If)22 b(enabled,)i(and)d(the)h Fs(cmdhist)e Ft(option)j(is)f -(enabled,)i(m)m(ulti-line)f(commands)1110 408 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 518 y(semicolon)32 b(separators)f(where)e -(p)s(ossible.)630 667 y Fs(login_shell)1110 777 y Ft(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 887 y(tion)29 b(6.1)g([In)m(v)m -(oking)h(Bash],)f(page)g(79\).)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 1036 y Fs(mailwarn)96 -b Ft(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 1146 -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 Fs("The)k(mail)h(in)f Fi(mail-)1110 1255 -y(file)40 b Fs(has)29 b(been)g(read")g Ft(is)i(displa)m(y)m(ed.)630 -1405 y Fs(no_empty_cmd_completion)1110 1514 y Ft(If)f(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 1624 y(the)25 b Fs(PATH)f Ft(for)h(p)s(ossible)f -(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 -1733 y(an)k(empt)m(y)h(line.)630 1883 y Fs(nocaseglob)1110 -1993 y Ft(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 2102 y(p)s(erforming)29 -b(\014lename)i(expansion.)630 2252 y Fs(nocasematch)1110 -2361 y Ft(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 2471 y(p)s(erforming)31 -b(matc)m(hing)i(while)f(executing)i Fs(case)d Ft(or)h -Fs([[)g Ft(conditional)h(com-)1110 2580 y(mands.)630 -2730 y Fs(nullglob)96 b Ft(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 2839 y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g -(themselv)m(es.)630 2989 y Fs(progcomp)96 b Ft(If)25 -b(set,)i(the)f(programmable)g(completion)g(facilities)i(\(see)f -(Section)f(8.6)h([Pro-)1110 3098 y(grammable)45 b(Completion],)k(page)c -(124\))h(are)f(enabled.)82 b(This)44 b(option)h(is)1110 -3208 y(enabled)30 b(b)m(y)h(default.)630 3357 y Fs(promptvars)1110 -3467 y Ft(If)50 b(set,)56 b(prompt)49 b(strings)h(undergo)g(parameter)h -(expansion,)k(command)1110 3577 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 -3686 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 3796 y(Prompt],)30 -b(page)h(91\).)42 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.) -630 3945 y Fs(restricted_shell)1110 4055 y Ft(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 4164 y(Section)c(6.10)g([The)f -(Restricted)g(Shell],)i(page)e(92\).)56 b(The)34 b(v)-5 -b(alue)35 b(ma)m(y)h(not)1110 4274 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 4384 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 -4493 y(stricted.)630 4643 y Fs(shift_verbose)1110 4752 -y Ft(If)g(this)g(is)g(set,)j(the)d Fs(shift)f Ft(builtin)h(prin)m(ts)f -(an)h(error)g(message)i(when)d(the)1110 4862 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 5011 y Fs(sourcepath)1110 5121 y Ft(If)22 -b(set,)j(the)e Fs(source)e Ft(builtin)h(uses)g(the)h(v)-5 -b(alue)23 b(of)g Fs(PATH)e Ft(to)j(\014nd)d(the)h(directory)1110 -5230 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 5340 y(b)m(y)j(default.)p -eop end -%%Page: 67 73 -TeXDict begin 67 72 bop 150 -116 a Ft(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Fs(xpg_echo)96 -b Ft(If)31 b(set,)h(the)g Fs(echo)e Ft(builtin)h(expands)f(bac)m -(kslash-escap)s(e)j(sequences)f(b)m(y)f(de-)1110 408 -y(fault.)630 568 y(The)c(return)f(status)i(when)f(listing)h(options)g -(is)f(zero)i(if)e(all)i Fq(optnames)i Ft(are)d(enabled,)g(non-)630 -677 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 787 -y(unless)30 b(an)g Fq(optname)36 b Ft(is)30 b(not)h(a)g(v)-5 -b(alid)30 b(shell)h(option.)150 1020 y Fr(4.4)68 b(Sp)t(ecial)45 -b(Builtins)150 1179 y Ft(F)-8 b(or)35 b(historical)h(reasons,)g(the)e -Fl(posix)g Ft(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e -(commands)g(as)h Fk(sp)-5 b(e-)150 1289 y(cial)p Ft(.)47 -b(When)33 b(Bash)f(is)h(executing)g(in)f Fl(posix)g Ft(mo)s(de,)h(the)g -(sp)s(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 -1398 y(commands)e(in)g(three)h(resp)s(ects:)199 1533 -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 1667 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 1802 -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 -1911 y(after)i(the)f(command)h(completes.)275 2071 y(When)36 -b(Bash)g(is)h(not)f(executing)i(in)e Fl(posix)f Ft(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 -2180 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 -b(The)30 b(Bash)g Fl(posix)g Ft(mo)s(de)g(is)g(describ)s(ed)f(in)h -(Section)h(6.11)150 2290 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(93.)275 -2424 y(These)f(are)g(the)h Fl(posix)f Ft(sp)s(ecial)h(builtins:)390 -2559 y Fs(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f -(readonly)f(return)h(set)390 2668 y(shift)g(trap)h(unset)p -eop end -%%Page: 68 74 -TeXDict begin 68 73 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(68)150 299 y Fo(5)80 -b(Shell)53 b(V)-13 b(ariables)150 541 y Ft(This)21 b(c)m(hapter)i -(describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) -37 b(Bash)23 b(automatically)h(assigns)f(default)150 -651 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 -b(ariables.)150 888 y Fr(5.1)68 b(Bourne)45 b(Shell)g(V)-11 -b(ariables)150 1047 y Ft(Bash)30 b(uses)g(certain)h(shell)g(v)-5 -b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g -(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1157 y(assigns)f(a)f -(default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 -1320 y Fs(CDPATH)192 b Ft(A)39 b(colon-separated)i(list)e(of)g -(directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g -Fs(cd)f Ft(builtin)630 1430 y(command.)150 1592 y Fs(HOME)288 -b Ft(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g -(for)f(the)h Fs(cd)f Ft(builtin)g(command.)38 b(The)630 -1702 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 -b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f -(3.5.2)h([Tilde)630 1811 y(Expansion],)30 b(page)h(21\).)150 -1973 y Fs(IFS)336 b Ft(A)25 b(list)i(of)e(c)m(haracters)i(that)f -(separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e -(as)i(part)630 2083 y(of)31 b(expansion.)150 2245 y Fs(MAIL)288 -b Ft(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f -(directory)h(name)g(and)f(the)g Fs(MAILPATH)630 2355 -y Ft(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) -f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) -630 2464 y(\014le)f(or)h(Maildir-format)g(directory)-8 -b(.)150 2627 y Fs(MAILPATH)96 b Ft(A)33 b(colon-separated)i(list)f(of)f -(\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m -(ks)g(for)f(new)630 2736 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g -(can)g(sp)s(ecify)f(the)h(message)h(that)f(is)g(prin)m(ted)f(when)f -(new)h(mail)630 2846 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 Fs(?)p Ft('.)630 2955 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g -(message,)i Fs($_)e Ft(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m -(t)630 3065 y(mail)f(\014le.)150 3227 y Fs(OPTARG)192 -b Ft(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g -(pro)s(cessed)f(b)m(y)g(the)g Fs(getopts)f Ft(builtin.)150 -3389 y Fs(OPTIND)192 b Ft(The)30 b(index)g(of)g(the)h(last)g(option)g -(argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Fs(getopts)f -Ft(builtin.)150 3552 y Fs(PATH)288 b Ft(A)32 b(colon-separated)i(list)f -(of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f -(commands.)45 b(A)630 3661 y(zero-length)e(\(n)m(ull\))g(directory)f -(name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Fs(PATH)f Ft(indicates)i(the)f -(curren)m(t)630 3771 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f -(directory)i(name)e(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g -(colons,)g(or)f(as)g(an)630 3880 y(initial)f(or)e(trailing)h(colon.)150 -4042 y Fs(PS1)336 b Ft(The)35 b(primary)f(prompt)h(string.)55 -b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Fs(\\s-\\v\\$)28 -b Ft('.)56 b(See)36 b(Section)g(6.9)630 4152 y([Con)m(trolling)42 -b(the)e(Prompt],)j(page)e(91,)j(for)c(the)g(complete)i(list)f(of)f -(escap)s(e)h(sequences)630 4262 y(that)31 b(are)g(expanded)e(b)s(efore) -h Fs(PS1)g Ft(is)g(displa)m(y)m(ed.)150 4424 y Fs(PS2)336 -b Ft(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 -b(default)i(v)-5 b(alue)31 b(is)f(`)p Fs(>)g Ft('.)150 -4661 y Fr(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4820 -y Ft(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h -(Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g -(them)150 4929 y(sp)s(ecially)-8 b(.)275 5067 y(A)24 -b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f -(in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 -b(for)f(con)m(trolling)150 5176 y(the)31 b(job)f(con)m(trol)h -(facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 -b(ariables],)32 b(page)g(100\).)150 5340 y Fs(BASH)288 -b Ft(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) -g(instance)h(of)g(Bash.)p eop end -%%Page: 69 75 -TeXDict begin 69 74 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(69)150 299 y Fs(BASHOPTS)96 -b Ft(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)33 b(for)g(the)f(`)p Fs(-s)p -Ft(')h(option)g(to)g(the)g Fs(shopt)e Ft(builtin)i(command)f(\(see)i -(Section)f(4.3.2)630 518 y([The)j(Shopt)g(Builtin],)i(page)f(61\).)60 -b(The)36 b(options)h(app)s(earing)f(in)g Fs(BASHOPTS)e -Ft(are)i(those)630 628 y(rep)s(orted)e(as)h(`)p Fs(on)p -Ft(')f(b)m(y)h(`)p Fs(shopt)p Ft('.)53 b(If)34 b(this)g(v)-5 -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 1003 y Fs(BASHPID)144 b Ft(Expands)35 b(to)i(the)f(pro)s(cess)f -(ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 -b(di\013ers)h(from)g Fs($$)630 1113 y Ft(under)31 b(certain)j -(circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) -g(Bash)g(to)h(b)s(e)630 1223 y(re-initialized.)150 1379 -y Fs(BASH_ALIASES)630 1489 y Ft(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d -(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(list)630 1598 y(of)c(aliases)h(as)f(main)m(tained)g(b)m -(y)g(the)g Fs(alias)e Ft(builtin.)59 b(\(see)37 b(Section)h(4.1)f -([Bourne)g(Shell)630 1708 y(Builtins],)f(page)e(40\).)53 -b(Elemen)m(ts)35 b(added)e(to)i(this)e(arra)m(y)i(app)s(ear)e(in)h(the) -g(alias)h(list;)i(un-)630 1817 y(setting)31 b(arra)m(y)g(elemen)m(ts)h -(cause)f(aliases)h(to)f(b)s(e)f(remo)m(v)m(ed)h(from)f(the)h(alias)g -(list.)150 1974 y Fs(BASH_ARGC)630 2084 y Ft(An)f(arra)m(y)h(v)-5 -b(ariable)31 b(whose)f(v)-5 b(alues)31 b(are)g(the)f(n)m(um)m(b)s(er)g -(of)g(parameters)h(in)f(eac)m(h)h(frame)g(of)630 2193 -y(the)26 b(curren)m(t)f(bash)g(execution)i(call)g(stac)m(k.)41 -b(The)25 b(n)m(um)m(b)s(er)g(of)h(parameters)g(to)g(the)g(curren)m(t) -630 2303 y(subroutine)i(\(shell)i(function)g(or)f(script)g(executed)i -(with)e Fs(.)g Ft(or)h Fs(source)p Ft(\))e(is)h(at)h(the)g(top)g(of)630 -2412 y(the)37 b(stac)m(k.)63 b(When)37 b(a)h(subroutine)e(is)h -(executed,)j(the)e(n)m(um)m(b)s(er)d(of)j(parameters)f(passed)630 -2522 y(is)g(pushed)f(on)m(to)i Fs(BASH_ARGC)p Ft(.)59 -b(The)37 b(shell)g(sets)h Fs(BASH_ARGC)c Ft(only)k(when)e(in)h -(extended)630 2632 y(debugging)23 b(mo)s(de)f(\(see)h(Section)g(4.3.2)i -([The)d(Shopt)g(Builtin],)j(page)e(61)h(for)e(a)h(description)630 -2741 y(of)31 b(the)f Fs(extdebug)e Ft(option)j(to)g(the)g -Fs(shopt)e Ft(builtin\).)150 2898 y Fs(BASH_ARGV)630 -3007 y Ft(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 -3117 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 -3226 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 -3336 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f -(on)m(to)i Fs(BASH_ARGV)p Ft(.)66 b(The)40 b(shell)630 -3446 y(sets)28 b Fs(BASH_ARGV)e Ft(only)i(when)f(in)h(extended)g -(debugging)g(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 -3555 y(Shopt)i(Builtin],)h(page)g(61)g(for)f(a)h(description)f(of)h -(the)f Fs(extdebug)e Ft(option)j(to)g(the)f Fs(shopt)630 -3665 y Ft(builtin\).)150 3821 y Fs(BASH_CMDS)630 3931 -y Ft(An)i(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 4041 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g -(the)f Fs(hash)f Ft(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630 -4150 y(Shell)23 b(Builtins],)j(page)e(40\).)40 b(Elemen)m(ts)24 -b(added)e(to)j(this)e(arra)m(y)h(app)s(ear)e(in)i(the)f(hash)g(table;) -630 4260 y(unsetting)30 b(arra)m(y)h(elemen)m(ts)h(cause)f(commands)f -(to)h(b)s(e)f(remo)m(v)m(ed)h(from)f(the)h(hash)e(table.)150 -4416 y Fs(BASH_COMMAND)630 4526 y Ft(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 4635 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 4745 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.) -150 4902 y Fs(BASH_COMPAT)630 5011 y Ft(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 5121 y(Shopt)40 -b(Builtin],)45 b(page)c(61,)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 5230 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 5340 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 Fs(BASH_COMPAT)d -Ft(is)p eop end -%%Page: 70 76 -TeXDict begin 70 75 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(70)630 299 y(unset)37 -b(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 408 y(for)i(the)h(curren) -m(t)f(v)m(ersion.)72 b(If)40 b Fs(BASH_COMPAT)e Ft(is)i(set)h(to)h(a)e -(v)-5 b(alue)41 b(that)h(is)e(not)h(one)g(of)630 518 -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 -628 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 737 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 -Fs(shopt)e Ft(builtin)630 847 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i -(\(for)g(example,)h Fq(compat42)31 b Ft(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 956 -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 1121 y Fs(BASH_ENV)96 b -Ft(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 1230 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 -1340 y(script.)41 b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],) -j(page)f(81.)150 1504 y Fs(BASH_EXECUTION_STRING)630 -1614 y Ft(The)f(command)g(argumen)m(t)h(to)g(the)g(`)p -Fs(-c)p Ft(')f(in)m(v)m(o)s(cation)i(option.)150 1778 -y Fs(BASH_LINENO)630 1888 y Ft(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 1998 y(where)46 b(eac)m(h)i(corresp)s -(onding)e(mem)m(b)s(er)f(of)i Fq(FUNCNAME)53 b Ft(w)m(as)47 -b(in)m(v)m(ok)m(ed.)91 b Fs(${BASH_)630 2107 y(LINENO[$i]})39 -b Ft(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g -(\()p Fs(${BASH_SOURCE[$i+1]})p Ft(\))630 2217 y(where)d -Fs(${FUNCNAME[$i]})c Ft(w)m(as)k(called)i(\(or)e Fs -(${BASH_LINENO[$i-1]})34 b Ft(if)39 b(referenced)630 -2326 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 -b Fs(LINENO)d Ft(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s -(er.)150 2491 y Fs(BASH_REMATCH)630 2600 y Ft(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 Fs(=~)p Ft(')g(binary)f(op)s(erator)630 2710 y(to)37 -b(the)f Fs([[)g Ft(conditional)i(command)e(\(see)h(Section)g(3.2.4.2)i -([Conditional)e(Constructs],)630 2819 y(page)e(10\).)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 2929 y(en)m(tire)29 -b(regular)f(expression.)40 b(The)27 b(elemen)m(t)j(with)d(index)h -Fq(n)f Ft(is)h(the)g(p)s(ortion)g(of)g(the)g(string)630 -3039 y(matc)m(hing)j(the)g Fq(n)p Ft(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 3203 y Fs(BASH_SOURCE)630 3313 y Ft(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 3422 y(sp)s(onding)27 -b(shell)i(function)f(names)g(in)g(the)h Fs(FUNCNAME)d -Ft(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 -b(The)630 3532 y(shell)26 b(function)g Fs(${FUNCNAME[$i]})c -Ft(is)k(de\014ned)f(in)g(the)h(\014le)h Fs(${BASH_SOURCE[$i]})21 -b Ft(and)630 3641 y(called)32 b(from)d Fs(${BASH_SOURCE[$i+1]})150 -3806 y(BASH_SUBSHELL)630 3915 y Ft(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 4025 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 4189 y Fs(BASH_VERSINFO)630 -4299 y Ft(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(88\))h(whose)f(mem)m(b) -s(ers)630 4408 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 4518 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g -(follo)m(ws:)630 4682 y Fs(BASH_VERSINFO[0])1110 4792 -y Ft(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fq(release)5 b Ft(\).)630 4956 y Fs(BASH_VERSINFO[1])1110 -5066 y Ft(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fq(v)m(ersion)p Ft(\).)630 5230 y Fs(BASH_VERSINFO[2])1110 -5340 y Ft(The)f(patc)m(h)h(lev)m(el.)p eop end -%%Page: 71 77 -TeXDict begin 71 76 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(71)630 299 y Fs(BASH_VERSINFO[3]) -1110 408 y Ft(The)30 b(build)f(v)m(ersion.)630 591 y -Fs(BASH_VERSINFO[4])1110 701 y Ft(The)h(release)i(status)e(\(e.g.,)j -Fq(b)s(eta1)7 b Ft(\).)630 883 y Fs(BASH_VERSINFO[5])1110 -993 y Ft(The)30 b(v)-5 b(alue)31 b(of)f Fs(MACHTYPE)p -Ft(.)150 1176 y Fs(BASH_VERSION)630 1285 y Ft(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 -1468 y Fs(BASH_XTRACEFD)630 1577 y Ft(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 1687 y(trace)37 b(output)f(generated)h -(when)f(`)p Fs(set)29 b(-x)p Ft(')36 b(is)g(enabled)h(to)g(that)f -(\014le)h(descriptor.)58 b(This)630 1797 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 1906 y(\014le)31 b(descriptor)f(is)h -(closed)g(when)f Fs(BASH_XTRACEFD)d Ft(is)k(unset)f(or)g(assigned)h(a)g -(new)f(v)-5 b(alue.)630 2016 y(Unsetting)45 b Fs(BASH_XTRACEFD)40 -b Ft(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f -(trace)630 2125 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 Fs(BASH_XTRACEFD)c -Ft(to)630 2235 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 2345 y(standard)30 b(error)g(b)s(eing)f(closed.)150 -2527 y Fs(CHILD_MAX)630 2637 y Ft(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 2746 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 -Fl(posix)p Ft(-mandated)f(minim)m(um,)630 2856 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 -2966 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) -150 3148 y Fs(COLUMNS)144 b Ft(Used)32 b(b)m(y)f(the)h -Fs(select)e Ft(command)h(to)i(determine)f(the)f(terminal)i(width)d -(when)h(prin)m(ting)630 3258 y(selection)39 b(lists.)63 -b(Automatically)41 b(set)d(if)f(the)h Fs(checkwinsize)d -Ft(option)j(is)f(enabled)h(\(see)630 3367 y(Section)44 -b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(61\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 3477 -y(receipt)31 b(of)g(a)g Fs(SIGWINCH)p Ft(.)150 3660 y -Fs(COMP_CWORD)630 3769 y Ft(An)38 b(index)g(in)m(to)h -Fs(${COMP_WORDS})c Ft(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e -(curren)m(t)g(cursor)g(p)s(o-)630 3879 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 -3988 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g -([Programmable)g(Completion],)630 4098 y(page)31 b(124\).)150 -4281 y Fs(COMP_LINE)630 4390 y Ft(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 4500 -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 4609 -y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(124\).)150 -4792 y Fs(COMP_POINT)630 4902 y Ft(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 5011 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 5121 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 Fs(${#COMP_LINE})p Ft(.)37 -b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 -5230 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 5340 -y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g -(Completion],)h(page)f(124\).)p eop end -%%Page: 72 78 -TeXDict begin 72 77 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(72)150 299 y Fs(COMP_TYPE)630 -408 y Ft(Set)27 b(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 518 y(caused)e(a)g(completion)i(function)d(to)i -(b)s(e)e(called:)40 b Fq(T)-8 b(AB)5 b Ft(,)27 b(for)f(normal)g -(completion,)i(`)p Fs(?)p Ft(',)f(for)630 628 y(listing)35 -b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Fs(!)p -Ft(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 -737 y(w)m(ord)22 b(completion,)k(`)p Fs(@)p Ft(',)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 Fs(\045)p Ft(',)h(for)630 847 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 -956 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 -1066 y([Programmable)e(Completion],)h(page)f(124\).)150 -1241 y Fs(COMP_KEY)96 b Ft(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 1351 y(function.)150 1526 -y Fs(COMP_WORDBREAKS)630 1636 y Ft(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 1745 y(p)s(erforming)i(w)m(ord)h(completion.)51 -b(If)33 b Fs(COMP_WORDBREAKS)c Ft(is)34 b(unset,)g(it)f(loses)i(its)e -(sp)s(ecial)630 1855 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 2030 y Fs(COMP_WORDS)630 -2140 y Ft(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 -2250 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 Fs(COMP_)630 -2359 y(WORDBREAKS)34 b Ft(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 2469 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 2578 y(grammable)e(Completion],)g(page)g(124\).)150 -2754 y Fs(COMPREPLY)630 2863 y Ft(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 2973 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 3082 y(tion)g(8.6)g([Programmable)g(Completion],) -h(page)f(124\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) -630 3192 y(one)c(p)s(ossible)f(completion.)150 3367 y -Fs(COPROC)192 b Ft(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 3477 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 -3652 y Fs(DIRSTACK)96 b Ft(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 3762 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 Fs(dirs)e Ft(builtin.)630 -3871 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 -3981 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h -Fs(pushd)e Ft(and)h Fs(popd)f Ft(builtins)h(m)m(ust)h(b)s(e)e(used)h -(to)i(add)630 4091 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 4200 y(ren)m(t)c(directory)-8 -b(.)47 b(If)32 b Fs(DIRSTACK)e Ft(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 -4310 y(subsequen)m(tly)d(reset.)150 4485 y Fs(EMACS)240 -b Ft(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 -b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 4595 y(`)p Fs(t)p Ft(',)36 b(it)f(assumes)f(that)h -(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) -h(disables)630 4704 y(line)d(editing.)150 4880 y Fs(ENV)336 -b Ft(Similar)35 b(to)g Fs(BASH_ENV)p Ft(;)h(used)e(when)g(the)h(shell)g -(is)g(in)m(v)m(ok)m(ed)h(in)e Fl(posix)h Ft(Mo)s(de)g(\(see)g(Sec-)630 -4989 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(93\).)150 -5165 y Fs(EUID)288 b Ft(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 5340 y Fs(FCEDIT)192 -b Ft(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f(`)p -Fs(-e)p Ft(')g(option)h(to)g(the)g Fs(fc)f Ft(builtin)g(command.)p -eop end -%%Page: 73 79 -TeXDict begin 73 78 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(73)150 299 y Fs(FIGNORE)144 -b Ft(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 408 -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 Fs(FIGNORE)d Ft(is)j(excluded)630 -518 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 Fs(.o:~)p -Ft(')150 671 y Fs(FUNCNAME)96 b Ft(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 781 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 891 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 1000 y(index\))e(is)h Fs("main")p Ft(.)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 1110 y(Assignmen)m(ts)23 -b(to)h Fs(FUNCNAME)c Ft(ha)m(v)m(e)k(no)f(e\013ect)h(and)e(return)g(an) -g(error)g(status.)39 b(If)22 b Fs(FUNCNAME)630 1219 y -Ft(is)30 b(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,)f -(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)630 -1351 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)g(with)g -Fs(BASH_LINENO)d Ft(and)j Fs(BASH_SOURCE)p Ft(.)40 b(Eac)m(h)32 -b(elemen)m(t)630 1461 y(of)g Fs(FUNCNAME)d Ft(has)j(corresp)s(onding)e -(elemen)m(ts)j(in)f Fs(BASH_LINENO)c Ft(and)k Fs(BASH_SOURCE)c -Ft(to)630 1570 y(describ)s(e)39 b(the)h(call)h(stac)m(k.)70 -b(F)-8 b(or)41 b(instance,)i Fs(${FUNCNAME[$i]})35 b -Ft(w)m(as)41 b(called)f(from)g(the)630 1680 y(\014le)27 -b Fs(${BASH_SOURCE[$i+1]})21 b Ft(at)27 b(line)h(n)m(um)m(b)s(er)d -Fs(${BASH_LINENO[$i]})p Ft(.)34 b(The)27 b Fs(caller)630 -1789 y Ft(builtin)j(displa)m(ys)g(the)h(curren)m(t)f(call)i(stac)m(k)g -(using)d(this)i(information.)150 1943 y Fs(FUNCNEST)96 -b Ft(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 2052 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 2162 y(command)i(to)h(ab)s(ort.) -150 2315 y Fs(GLOBIGNORE)630 2425 y Ft(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 2534 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 2644 y(also)i(matc)m(hes)g(one)f(of)g(the)g -(patterns)g(in)f Fs(GLOBIGNORE)p Ft(,)f(it)i(is)g(remo)m(v)m(ed)h(from) -e(the)h(list)h(of)630 2754 y(matc)m(hes.)150 2907 y Fs(GROUPS)192 -b Ft(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 -3017 y(mem)m(b)s(er.)47 b(Assignmen)m(ts)33 b(to)g Fs(GROUPS)e -Ft(ha)m(v)m(e)j(no)f(e\013ect)h(and)e(return)g(an)g(error)g(status.)48 -b(If)630 3126 y Fs(GROUPS)29 b Ft(is)h(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)g(subsequen)m(tly)f -(reset.)150 3280 y Fs(histchars)630 3389 y Ft(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 3499 y(tok)m(enization)k(\(see)f(Section)f -(9.3)h([History)f(In)m(teraction],)i(page)f(135\).)41 -b(The)29 b(\014rst)e(c)m(harac-)630 3608 y(ter)j(is)f(the)g -Fq(history)g(expansion)g Ft(c)m(haracter,)j(that)e(is,)f(the)h(c)m -(haracter)h(whic)m(h)d(signi\014es)i(the)630 3718 y(start)25 -b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Fs(!)p -Ft('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 -3828 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 -3937 y(normally)27 b(`)p Fs(^)p Ft('.)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 4047 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 -4156 y(w)m(ord,)i(usually)f(`)p Fs(#)p Ft('.)55 b(The)34 -b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g -(substitution)630 4266 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 4376 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 -4529 y Fs(HISTCMD)144 b Ft(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 4639 y Fs(HISTCMD)28 b Ft(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 4792 y Fs(HISTCONTROL)630 4902 y Ft(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 5011 -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 Fs(ignorespace)p Ft(',)f(lines)i(whic)m(h)g -(b)s(egin)f(with)630 5121 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 Fs(ignoredups)p Ft(')630 5230 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 -5340 y(of)32 b(`)p Fs(ignoreboth)p Ft(')d(is)j(shorthand)e(for)i(`)p -Fs(ignorespace)p Ft(')d(and)i(`)p Fs(ignoredups)p Ft('.)42 -b(A)32 b(v)-5 b(alue)32 b(of)p eop end -%%Page: 74 80 -TeXDict begin 74 79 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y(`)p -Fs(erasedups)p Ft(')31 b(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 -408 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 518 y(list)35 b(is)g(ignored.)53 b(If)34 -b Fs(HISTCONTROL)e Ft(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 628 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 737 y(of)42 b Fs(HISTIGNORE)p Ft(.)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 847 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 -956 y(of)31 b Fs(HISTCONTROL)p Ft(.)150 1117 y Fs(HISTFILE)96 -b Ft(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 1226 y(is)30 b(`)p Fs(~/.bash_history)p Ft('.)150 -1386 y Fs(HISTFILESIZE)630 1496 y Ft(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 1606 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 -1715 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 1825 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 1934 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 2044 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 2153 y(v)-5 b(alue)31 b(of)f -Fs(HISTSIZE)f Ft(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 -2314 y Fs(HISTIGNORE)630 2423 y Ft(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 2533 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 2642 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 Fs(*)p Ft(')f(is)g(app)s -(ended\).)75 b(Eac)m(h)630 2752 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 -Fs(HISTCONTROL)630 2862 y Ft(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 Fs(&)p Ft(')630 2971 y(matc)m(hes)d(the)f(previous)g -(history)g(line.)57 b(`)p Fs(&)p Ft(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) -h(using)g(a)g(bac)m(kslash;)k(the)630 3081 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 3190 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 3300 y(history)d(regardless)h(of)g(the)f(v)-5 -b(alue)31 b(of)g Fs(HISTIGNORE)p Ft(.)630 3435 y Fs(HISTIGNORE)20 -b Ft(subsumes)g(the)j(function)f(of)h Fs(HISTCONTROL)p -Ft(.)35 b(A)23 b(pattern)f(of)h(`)p Fs(&)p Ft(')g(is)f(iden)m(tical)630 -3544 y(to)k Fs(ignoredups)p Ft(,)e(and)h(a)h(pattern)g(of)f(`)p -Fs([)31 b(]*)p Ft(')25 b(is)h(iden)m(tical)h(to)f Fs(ignorespace)p -Ft(.)36 b(Com)m(bining)630 3654 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 3764 y Fs(ignoreboth)p Ft(.)150 -3924 y Fs(HISTSIZE)96 b Ft(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 4033 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 4143 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 4253 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 4413 y Fs(HISTTIMEFORMAT)630 -4522 y Ft(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 4632 y Fq(strftime)c Ft(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 4741 y(b)m(y)g(the)f Fs(history)f Ft(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 4851 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 4961 y(commen)m(t)31 -b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g -(history)h(lines.)150 5121 y Fs(HOSTFILE)96 b Ft(Con)m(tains)39 -b(the)f(name)g(of)h(a)g(\014le)f(in)g(the)g(same)h(format)g(as)f(`)p -Fs(/etc/hosts)p Ft(')e(that)j(should)630 5230 y(b)s(e)i(read)h(when)f -(the)i(shell)f(needs)f(to)i(complete)h(a)e(hostname.)76 -b(The)42 b(list)g(of)g(p)s(ossible)630 5340 y(hostname)26 -b(completions)g(ma)m(y)h(b)s(e)d(c)m(hanged)j(while)e(the)h(shell)g(is) -f(running;)h(the)g(next)f(time)p eop end -%%Page: 75 81 -TeXDict begin 75 80 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)630 299 y(hostname)37 -b(completion)i(is)e(attempted)h(after)g(the)f(v)-5 b(alue)37 -b(is)h(c)m(hanged,)h(Bash)e(adds)g(the)630 408 y(con)m(ten)m(ts)43 -b(of)f(the)f(new)g(\014le)h(to)g(the)f(existing)i(list.)74 -b(If)41 b Fs(HOSTFILE)e Ft(is)i(set,)k(but)c(has)g(no)630 -518 y(v)-5 b(alue,)29 b(or)e(do)s(es)h(not)g(name)f(a)h(readable)g -(\014le,)h(Bash)f(attempts)g(to)g(read)g(`)p Fs(/etc/hosts)p -Ft(')d(to)630 628 y(obtain)j(the)g(list)h(of)f(p)s(ossible)f(hostname)h -(completions.)41 b(When)28 b Fs(HOSTFILE)e Ft(is)i(unset,)g(the)630 -737 y(hostname)j(list)g(is)f(cleared.)150 906 y Fs(HOSTNAME)96 -b Ft(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 -1074 y Fs(HOSTTYPE)96 b Ft(A)30 b(string)h(describing)f(the)g(mac)m -(hine)h(Bash)g(is)f(running)f(on.)150 1243 y Fs(IGNOREEOF)630 -1353 y Ft(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) -h(of)f(an)g Fs(EOF)f Ft(c)m(haracter)i(as)g(the)f(sole)h(input.)630 -1462 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 Fs(EOF)d Ft(c)m(haracters)i(that)f(can)h(b) -s(e)630 1572 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 1681 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 1791 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 Fs(EOF)g Ft(signi\014es)h(the)g(end)f(of)h(input)630 -1901 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 2069 y Fs(INPUTRC)144 -b Ft(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 2179 y(`)p -Fs(~/.inputrc)p Ft('.)150 2347 y Fs(LANG)288 b Ft(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 2457 -y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Fs(LC_)p -Ft(.)150 2626 y Fs(LC_ALL)192 b Ft(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 Fs(LANG)f -Ft(and)g(an)m(y)h(other)g Fs(LC_)f Ft(v)-5 b(ariable)29 -b(sp)s(ecifying)630 2735 y(a)i(lo)s(cale)h(category)-8 -b(.)150 2904 y Fs(LC_COLLATE)630 3013 y Ft(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 3123 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 3232 y(alence)e(classes,)h(and)e(collating)i(sequences)e -(within)f(\014lename)h(expansion)g(and)f(pattern)630 -3342 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) -e(page)h(29\).)150 3511 y Fs(LC_CTYPE)96 b Ft(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 3620 -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 3730 y(tion)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)h(29\).)150 -3898 y Fs(LC_MESSAGES)630 4008 y Ft(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 4118 y(ceded)31 b(b)m(y)f(a)h(`)p -Fs($)p Ft(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 -b(ranslation],)32 b(page)f(7\).)150 4286 y Fs(LC_NUMERIC)630 -4396 y Ft(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 -4564 y Fs(LINENO)192 b Ft(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 -4733 y Fs(LINES)240 b Ft(Used)43 b(b)m(y)g(the)g Fs(select)e -Ft(command)i(to)g(determine)g(the)g(column)g(length)g(for)g(prin)m -(ting)630 4843 y(selection)c(lists.)63 b(Automatically)41 -b(set)d(if)f(the)h Fs(checkwinsize)d Ft(option)j(is)f(enabled)h(\(see) -630 4952 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d -(61\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 -5062 y(receipt)31 b(of)g(a)g Fs(SIGWINCH)p Ft(.)150 5230 -y Fs(MACHTYPE)96 b Ft(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 5340 y(standard)k Fl(gnu)g Fq(cpu-compan)m(y-system)h -Ft(format.)p eop end -%%Page: 76 82 -TeXDict begin 76 81 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Fs(MAILCHECK)630 -408 y Ft(Ho)m(w)28 b(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 518 y(in)i(the)h Fs(MAILPATH)e Ft(or)i -Fs(MAIL)e Ft(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 628 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 -737 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 847 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f -(mail)h(c)m(hec)m(king.)150 996 y Fs(MAPFILE)144 b Ft(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 Fs(mapfile)d Ft(builtin)i(when)630 -1105 y(no)30 b(v)-5 b(ariable)31 b(name)g(is)f(supplied.)150 -1254 y Fs(OLDPWD)192 b Ft(The)30 b(previous)g(w)m(orking)g(directory)h -(as)g(set)g(b)m(y)f(the)h Fs(cd)e Ft(builtin.)150 1403 -y Fs(OPTERR)192 b Ft(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 Fs(getopts)630 1512 y Ft(builtin)30 b(command.)150 -1661 y Fs(OSTYPE)192 b Ft(A)30 b(string)h(describing)f(the)g(op)s -(erating)h(system)g(Bash)f(is)h(running)d(on.)150 1810 -y Fs(PIPESTATUS)630 1919 y Ft(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(88\))h -(con)m(taining)g(a)f(list)g(of)g(exit)g(sta-)630 2029 -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 -2138 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 2287 y Fs(POSIXLY_CORRECT)630 2397 y -Ft(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 Fl(posix)630 -2506 y Ft(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s -(de],)k(page)e(93\))g(b)s(efore)f(reading)g(the)g(startup)630 -2616 y(\014les,)32 b(as)f(if)h(the)f(`)p Fs(--posix)p -Ft(')f(in)m(v)m(o)s(cation)j(option)f(had)f(b)s(een)g(supplied.)42 -b(If)31 b(it)h(is)f(set)h(while)630 2725 y(the)f(shell)f(is)h(running,) -d(Bash)j(enables)g Fl(posix)e Ft(mo)s(de,)h(as)h(if)f(the)h(command)870 -2855 y Fs(set)47 b(-o)g(posix)630 2984 y Ft(had)30 b(b)s(een)f -(executed.)150 3133 y Fs(PPID)288 b Ft(The)30 b(pro)s(cess)g -Fl(id)g Ft(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 -3281 y Fs(PROMPT_COMMAND)630 3391 y Ft(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 3500 y(eac)m(h)g(primary)d(prompt)g -(\()p Fs($PS1)p Ft(\).)150 3649 y Fs(PROMPT_DIRTRIM)630 -3759 y Ft(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 3868 y(directory)35 b(comp)s(onen)m(ts)g(to)h(retain)f -(when)f(expanding)g(the)h Fs(\\w)f Ft(and)g Fs(\\W)g -Ft(prompt)g(string)630 3978 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h -([Con)m(trolling)g(the)f(Prompt],)h(page)f(91\).)39 b(Characters)21 -b(remo)m(v)m(ed)630 4088 y(are)31 b(replaced)g(with)f(an)g(ellipsis.) -150 4236 y Fs(PS3)336 b Ft(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 -Fs(select)f Ft(command.)52 b(If)630 4346 y(this)30 b(v)-5 -b(ariable)31 b(is)g(not)f(set,)i(the)e Fs(select)f Ft(command)h -(prompts)f(with)h(`)p Fs(#?)g Ft(')150 4495 y Fs(PS4)336 -b Ft(The)20 b(v)-5 b(alue)22 b(is)e(the)h(prompt)f(prin)m(ted)h(b)s -(efore)f(the)h(command)g(line)g(is)g(ec)m(ho)s(ed)g(when)f(the)h(`)p -Fs(-x)p Ft(')630 4604 y(option)32 b(is)f(set)h(\(see)g(Section)h(4.3.1) -g([The)e(Set)g(Builtin],)i(page)f(57\).)45 b(The)31 b(\014rst)f(c)m -(haracter)630 4714 y(of)k Fs(PS4)g Ft(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 4823 y(indirection.)41 b(The)30 b(default)h(is)f(`)p -Fs(+)g Ft('.)150 4972 y Fs(PWD)336 b Ft(The)30 b(curren)m(t)g(w)m -(orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Fs(cd)f -Ft(builtin.)150 5121 y Fs(RANDOM)192 b Ft(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 5230 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 -5340 y(erator.)p eop end -%%Page: 77 83 -TeXDict begin 77 82 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(77)150 299 y Fs(READLINE_LINE)630 -408 y Ft(The)27 b(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g -(bu\013er,)f(for)h(use)f(with)g(`)p Fs(bind)j(-x)p Ft(')d(\(see)h -(Section)h(4.2)630 518 y([Bash)i(Builtins],)g(page)g(47\).)150 -667 y Fs(READLINE_POINT)630 776 y Ft(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 Fs(bind)630 886 y(-x)p Ft(')30 -b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(47\).)150 -1035 y Fs(REPLY)240 b Ft(The)30 b(default)g(v)-5 b(ariable)32 -b(for)e(the)g Fs(read)g Ft(builtin.)150 1183 y Fs(SECONDS)144 -b Ft(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 -1293 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 1403 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 1512 y(the)31 -b(assignmen)m(t.)150 1661 y Fs(SHELL)240 b Ft(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 -1771 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 -1880 y(user's)30 b(login)h(shell.)150 2029 y Fs(SHELLOPTS)630 -2138 y Ft(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 2248 y(argumen)m(t)24 b(for)f(the)h(`)p Fs(-o)p -Ft(')f(option)h(to)g(the)g Fs(set)f Ft(builtin)g(command)g(\(see)i -(Section)f(4.3.1)h([The)630 2358 y(Set)k(Builtin],)h(page)f(57\).)42 -b(The)28 b(options)h(app)s(earing)f(in)g Fs(SHELLOPTS)e -Ft(are)j(those)h(rep)s(orted)630 2467 y(as)g(`)p Fs(on)p -Ft(')f(b)m(y)h(`)p Fs(set)g(-o)p Ft('.)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 2577 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 2686 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 -b(.)150 2835 y Fs(SHLVL)240 b Ft(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 2945 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 -3093 y Fs(TIMEFORMAT)630 3203 y Ft(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 3313 y(ing)37 b(information)f(for)h -(pip)s(elines)f(pre\014xed)f(with)h(the)h Fs(time)e Ft(reserv)m(ed)i(w) -m(ord)f(should)g(b)s(e)630 3422 y(displa)m(y)m(ed.)k(The)27 -b(`)p Fs(\045)p Ft(')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 3532 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 -3641 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h -(p)s(ortions.)630 3790 y Fs(\045\045)384 b Ft(A)30 b(literal)i(`)p -Fs(\045)p Ft('.)630 3939 y Fs(\045[)p Fi(p)11 b Fs(][l]R)85 -b Ft(The)30 b(elapsed)h(time)g(in)f(seconds.)630 4088 -y Fs(\045[)p Fi(p)11 b Fs(][l]U)85 b Ft(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 -4236 y Fs(\045[)p Fi(p)11 b Fs(][l]S)85 b Ft(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 -4385 y Fs(\045P)384 b Ft(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e -(as)h(\(\045U)f Fs(+)g Ft(\045S\))g(/)h(\045R.)630 4534 -y(The)23 b(optional)j Fq(p)g Ft(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 -4643 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 4753 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 4862 y(of)31 -b Fq(p)h Ft(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 -b(If)29 b Fq(p)k Ft(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 -b(alue)30 b(3)h(is)g(used.)630 4992 y(The)54 b(optional)h -Fs(l)f Ft(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 5101 y Fq(MM)10 -b Ft(m)p Fq(SS)5 b Ft(.)p Fq(FF)i Ft(s.)102 b(The)50 -b(v)-5 b(alue)51 b(of)g Fq(p)i Ft(determines)e(whether)f(or)h(not)f -(the)h(fraction)h(is)630 5211 y(included.)630 5340 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)p eop end -%%Page: 78 84 -TeXDict begin 78 83 bop 150 -116 a Ft(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(78)870 299 y Fs -($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -433 y Ft(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 543 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 702 y Fs(TMOUT)240 b Ft(If)22 b(set)h(to)g(a)g(v)-5 -b(alue)23 b(greater)h(than)e(zero,)j Fs(TMOUT)d Ft(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 812 y Fs(read)31 -b Ft(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(47\).)47 b(The)32 b Fs(select)e Ft(command)630 922 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 1031 y(not)k(arriv)m(e)g(after)g -Fs(TMOUT)e Ft(seconds)h(when)f(input)h(is)g(coming)h(from)f(a)h -(terminal.)630 1166 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 1275 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 1385 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 1544 y Fs(TMPDIR)192 b Ft(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 1654 -y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150 -1813 y Fs(UID)336 b Ft(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: 79 85 -TeXDict begin 79 84 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(79)150 299 y Fo(6)80 -b(Bash)54 b(F)-13 b(eatures)150 524 y Ft(This)30 b(c)m(hapter)h -(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 752 -y Fr(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 912 y Fs(bash)h([long-opt])e -([-ir])h([-abefhkmnptuvxdBCDHP])c([-o)47 b Fi(option)11 -b Fs(])45 b([-O)i Fi(shopt_option)11 b Fs(])44 b([)p -Fi(ar-)390 1021 y(gument)57 b Fs(...)o(])390 1131 y(bash)47 -b([long-opt])e([-abefhkmnptuvxdBCDHP])c([-o)47 b Fi(option)11 -b Fs(])46 b([-O)g Fi(shopt_option)11 b Fs(])44 b(-c)j -Fi(string)57 b Fs([)p Fi(ar-)390 1240 y(gument)g Fs(...)o(])390 -1350 y(bash)47 b([long-opt])e(-s)i([-abefhkmnptuvxdBCDHP])42 -b([-o)k Fi(option)11 b Fs(])46 b([-O)h Fi(shopt_option)11 -b Fs(])43 b([)p Fi(ar-)390 1460 y(gument)57 b Fs(...)o(])275 -1592 y Ft(All)31 b(of)g(the)f(single-c)m(haracter)k(options)d(used)f -(with)g(the)h Fs(set)f Ft(builtin)g(\(see)h(Section)h(4.3.1)g([The)f -(Set)150 1702 y(Builtin],)45 b(page)c(57\))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 1811 y(are)38 b(sev)m(eral)h(m)m -(ulti-c)m(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 -b(These)38 b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 -1921 y(command)30 b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j -(options)e(to)g(b)s(e)f(recognized.)150 2076 y Fs(--debugger)630 -2186 y Ft(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 2296 y(on)37 b(extended)g(debugging)g(mo)s(de)g(\(see)h -(Section)g(4.3.2)g([The)f(Shopt)g(Builtin],)i(page)f(61)630 -2405 y(for)30 b(a)h(description)f(of)h(the)f Fs(extdebug)f -Ft(option)h(to)h(the)g Fs(shopt)e Ft(builtin\).)150 2561 -y Fs(--dump-po-strings)630 2670 y Ft(A)37 b(list)g(of)f(all)i -(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Fs($)p -Ft(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2780 -y(output)24 b(in)h(the)g Fl(gnu)f Fs(gettext)f Ft(PO)i(\(p)s(ortable)g -(ob)5 b(ject\))26 b(\014le)f(format.)39 b(Equiv)-5 b(alen)m(t)26 -b(to)f(`)p Fs(-D)p Ft(')630 2890 y(except)31 b(for)f(the)h(output)f -(format.)150 3045 y Fs(--dump-strings)630 3155 y Ft(Equiv)-5 -b(alen)m(t)31 b(to)g(`)p Fs(-D)p Ft('.)150 3310 y Fs(--help)192 -b Ft(Displa)m(y)32 b(a)e(usage)h(message)h(on)e(standard)g(output)g -(and)f(exit)j(successfully)-8 b(.)150 3466 y Fs(--init-file)27 -b Fi(filename)150 3576 y Fs(--rcfile)h Fi(filename)630 -3685 y Ft(Execute)42 b(commands)f(from)f Fq(\014lename)47 -b Ft(\(instead)42 b(of)f(`)p Fs(~/.bashrc)p Ft('\))e(in)i(an)g(in)m -(teractiv)m(e)630 3795 y(shell.)150 3950 y Fs(--login)144 -b Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-l)p Ft('.)150 -4106 y Fs(--noediting)630 4216 y Ft(Do)h(not)e(use)h(the)g -Fl(gnu)f Ft(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command)f(Line) -g(Editing],)630 4325 y(page)h(101\))h(to)f(read)g(command)f(lines)g -(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 4481 -y Fs(--noprofile)630 4590 y Ft(Don't)i(load)f(the)g(system-wide)g -(startup)f(\014le)g(`)p Fs(/etc/profile)p Ft(')e(or)j(an)m(y)g(of)g -(the)f(p)s(ersonal)630 4700 y(initialization)g(\014les)d(`)p -Fs(~/.bash_profile)p Ft(',)e(`)p Fs(~/.bash_login)p Ft(',)g(or)i(`)p -Fs(~/.profile)p Ft(')e(when)630 4810 y(Bash)31 b(is)f(in)m(v)m(ok)m(ed) -i(as)e(a)h(login)g(shell.)150 4965 y Fs(--norc)192 b -Ft(Don't)31 b(read)g(the)f(`)p Fs(~/.bashrc)p Ft(')f(initialization)k -(\014le)d(in)g(an)h(in)m(teractiv)m(e)i(shell.)41 b(This)30 -b(is)g(on)630 5075 y(b)m(y)g(default)h(if)f(the)h(shell)f(is)h(in)m(v)m -(ok)m(ed)h(as)e Fs(sh)p Ft(.)150 5230 y Fs(--posix)144 -b Ft(Change)24 b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i -(default)f(op)s(eration)h(di\013ers)f(from)f(the)i Fl(posix)630 -5340 y Ft(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)p eop end -%%Page: 80 86 -TeXDict begin 80 85 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(80)630 299 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(93,)630 408 y(for)k(a)h -(description)f(of)h(the)f(Bash)h Fl(posix)f Ft(mo)s(de.)150 -572 y Fs(--restricted)630 682 y Ft(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 792 y(page)31 b(92\).)150 956 y Fs(--verbose)630 -1065 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g(`)p Fs(-v)p Ft('.)41 -b(Prin)m(t)30 b(shell)h(input)e(lines)i(as)g(they're)f(read.)150 -1229 y Fs(--version)630 1339 y Ft(Sho)m(w)e(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 1448 y(exit)j(successfully)-8 b(.)275 1615 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 -1724 y(not)i(a)m(v)-5 b(ailable)32 b(with)e(the)h Fs(set)e -Ft(builtin.)150 1891 y Fs(-c)384 b Ft(Read)44 b(and)e(execute)j -(commands)e(from)g(the)g(\014rst)g(non-option)h Fq(argumen)m(t)h -Ft(after)f(pro-)630 2000 y(cessing)37 b(the)g(options,)i(then)d(exit.) -61 b(An)m(y)37 b(remaining)f(argumen)m(ts)h(are)g(assigned)g(to)h(the) -630 2110 y(p)s(ositional)31 b(parameters,)g(starting)g(with)f -Fs($0)p Ft(.)150 2274 y Fs(-i)384 b Ft(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 2383 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(82.)150 -2547 y Fs(-l)384 b Ft(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 2657 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 Fs(exec)30 b(-l)g(bash)p Ft('.)630 -2767 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 -2876 y(`)p Fs(exec)e(bash)h(-l)p Ft(')43 b(or)h(`)p Fs(exec)29 -b(bash)g(--login)p Ft(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell) -h(with)g(a)630 2986 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(81,)i(for)d(a)h -(description)630 3095 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of) -f(a)h(login)g(shell.)150 3259 y Fs(-r)384 b Ft(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 3369 y(page)31 b(92\).)150 -3533 y Fs(-s)384 b Ft(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 3642 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 -3752 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 3916 y Fs(-D)384 b Ft(A)37 -b(list)g(of)f(all)i(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p -Fs($)p Ft(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 -4026 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 4135 -y(the)e(curren)m(t)g(lo)s(cale)h(is)f(not)g Fs(C)g Ft(or)f -Fs(POSIX)g Ft(\(see)h(Section)h(3.1.2.5)h([Lo)s(cale)g(T)-8 -b(ranslation],)630 4245 y(page)31 b(7\).)42 b(This)29 -b(implies)i(the)f(`)p Fs(-n)p Ft(')h(option;)g(no)f(commands)g(will)h -(b)s(e)e(executed.)150 4409 y Fs([-+]O)g([)p Fi(shopt_option)11 -b Fs(])630 4518 y Fq(shopt)p 854 4518 28 4 v 40 w(option)44 -b Ft(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h -Fs(shopt)d Ft(builtin)i(\(see)630 4628 y(Section)28 b(4.3.2)g([The)f -(Shopt)f(Builtin],)i(page)f(61\).)41 b(If)26 b Fq(shopt)p -2690 4628 V 40 w(option)h Ft(is)g(presen)m(t,)h(`)p Fs(-O)p -Ft(')f(sets)630 4738 y(the)40 b(v)-5 b(alue)40 b(of)f(that)h(option;)45 -b(`)p Fs(+O)p Ft(')40 b(unsets)e(it.)69 b(If)39 b Fq(shopt)p -2631 4738 V 40 w(option)h Ft(is)f(not)h(supplied,)h(the)630 -4847 y(names)e(and)g(v)-5 b(alues)40 b(of)g(the)g(shell)f(options)h -(accepted)h(b)m(y)e Fs(shopt)f Ft(are)i(prin)m(ted)f(on)h(the)630 -4957 y(standard)33 b(output.)50 b(If)33 b(the)h(in)m(v)m(o)s(cation)i -(option)e(is)g(`)p Fs(+O)p Ft(',)g(the)g(output)f(is)h(displa)m(y)m(ed) -g(in)g(a)630 5066 y(format)d(that)g(ma)m(y)g(b)s(e)e(reused)h(as)h -(input.)150 5230 y Fs(--)384 b Ft(A)38 b Fs(--)g Ft(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 -Fs(--)g Ft(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p -eop end -%%Page: 81 87 -TeXDict begin 81 86 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(81)275 299 y(A)27 b -Fk(lo)-5 b(gin)35 b Ft(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 Fs(-)p -Ft(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 -408 y(`)p Fs(--login)p Ft(')i(option.)275 546 y(An)24 -b Fk(inter)-5 b(active)33 b Ft(shell)25 b(is)g(one)g(started)g(without) -g(non-option)h(argumen)m(ts,)g(unless)f(`)p Fs(-s)p Ft(')f(is)h(sp)s -(eci\014ed,)150 656 y(without)43 b(sp)s(ecifying)f(the)i(`)p -Fs(-c)p Ft(')e(option,)47 b(and)42 b(whose)h(input)f(and)g(output)g -(are)h(b)s(oth)g(connected)g(to)150 766 y(terminals)22 -b(\(as)h(determined)f(b)m(y)g Fs(isatty\(3\))p Ft(\),)f(or)i(one)f -(started)g(with)g(the)g(`)p Fs(-i)p Ft(')g(option.)39 -b(See)22 b(Section)h(6.3)150 875 y([In)m(teractiv)m(e)33 -b(Shells],)e(page)g(82,)g(for)f(more)h(information.)275 -1013 y(If)38 b(argumen)m(ts)h(remain)g(after)g(option)h(pro)s(cessing,) -h(and)d(neither)h(the)g(`)p Fs(-c)p Ft(')f(nor)h(the)g(`)p -Fs(-s)p Ft(')f(option)150 1123 y(has)33 b(b)s(een)g(supplied,)h(the)g -(\014rst)e(argumen)m(t)j(is)e(assumed)g(to)h(b)s(e)f(the)h(name)g(of)g -(a)g(\014le)g(con)m(taining)h(shell)150 1232 y(commands)30 -b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page)h(38\).)41 -b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h(fashion,)150 -1342 y Fs($0)37 b Ft(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 1451 y(argumen)m(ts.)h(Bash)26 b(reads)f(and)g(executes) -h(commands)f(from)g(this)g(\014le,)i(then)e(exits.)40 -b(Bash's)25 b(exit)i(status)150 1561 y(is)f(the)h(exit)h(status)e(of)h -(the)g(last)g(command)f(executed)h(in)g(the)f(script.)40 -b(If)26 b(no)g(commands)g(are)h(executed,)150 1671 y(the)k(exit)g -(status)g(is)f(0.)150 1908 y Fr(6.2)68 b(Bash)45 b(Startup)g(Files)150 -2068 y Ft(This)23 b(section)j(describ)s(es)d(ho)m(w)i(Bash)f(executes)h -(its)g(startup)f(\014les.)38 b(If)24 b(an)m(y)h(of)f(the)h(\014les)f -(exist)h(but)e(cannot)150 2177 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 2287 y(Tilde)f(Expansion)g -(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(21\).)275 -2425 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(82.)150 -2627 y Fj(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(`)p Fh(--login)p Fj(')150 2774 -y Ft(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(a)g(non-in)m(teractiv)m(e)i(shell)e(with)g -(the)150 2884 y(`)p Fs(--login)p Ft(')j(option,)k(it)e(\014rst)e(reads) -h(and)g(executes)h(commands)f(from)f(the)i(\014le)f(`)p -Fs(/etc/profile)p Ft(',)g(if)150 2993 y(that)35 b(\014le)g(exists.)55 -b(After)35 b(reading)g(that)g(\014le,)h(it)g(lo)s(oks)f(for)f(`)p -Fs(~/.bash_profile)p Ft(',)f(`)p Fs(~/.bash_login)p Ft(',)150 -3103 y(and)28 b(`)p Fs(~/.profile)p Ft(',)f(in)i(that)g(order,)g(and)f -(reads)g(and)h(executes)h(commands)e(from)g(the)h(\014rst)f(one)h(that) -150 3213 y(exists)i(and)e(is)h(readable.)41 b(The)30 -b(`)p Fs(--noprofile)p Ft(')d(option)k(ma)m(y)f(b)s(e)g(used)f(when)g -(the)h(shell)h(is)f(started)g(to)150 3322 y(inhibit)g(this)g(b)s(eha)m -(vior.)275 3460 y(When)72 b(a)i(login)g(shell)f(exits,)85 -b(Bash)73 b(reads)g(and)g(executes)h(commands)f(from)g(the)g(\014le)150 -3570 y(`)p Fs(~/.bash_logout)p Ft(',)27 b(if)k(it)f(exists.)150 -3772 y Fj(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f -(non-login)k(shell)150 3919 y Ft(When)g(an)h(in)m(teractiv)m(e)i(shell) -e(that)g(is)f(not)h(a)g(login)g(shell)g(is)f(started,)48 -b(Bash)c(reads)f(and)g(executes)150 4029 y(commands)24 -b(from)f(`)p Fs(~/.bashrc)p Ft(',)h(if)g(that)g(\014le)g(exists.)40 -b(This)23 b(ma)m(y)i(b)s(e)e(inhibited)g(b)m(y)h(using)g(the)g(`)p -Fs(--norc)p Ft(')150 4138 y(option.)52 b(The)33 b(`)p -Fs(--rcfile)28 b Fi(file)11 b Ft(')33 b(option)h(will)g(force)h(Bash)f -(to)h(read)e(and)h(execute)h(commands)e(from)150 4248 -y Fq(\014le)j Ft(instead)30 b(of)h(`)p Fs(~/.bashrc)p -Ft('.)275 4386 y(So,)f(t)m(ypically)-8 b(,)33 b(y)m(our)d(`)p -Fs(~/.bash_profile)p Ft(')d(con)m(tains)32 b(the)e(line)390 -4524 y Fs(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g(~/.bashrc;)e(fi) -150 4662 y Ft(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h(login-sp)s -(eci\014c)g(initializations.)150 4864 y Fj(In)m(v)m(ok)m(ed)40 -b(non-in)m(teractiv)m(ely)150 5011 y Ft(When)33 b(Bash)g(is)g(started)h -(non-in)m(teractiv)m(ely)-8 b(,)37 b(to)d(run)e(a)h(shell)h(script,)g -(for)f(example,)i(it)e(lo)s(oks)h(for)f(the)150 5121 -y(v)-5 b(ariable)35 b Fs(BASH_ENV)d Ft(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)150 5230 y(expanded)c(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 -5340 y(command)g(w)m(ere)h(executed:)p eop end -%%Page: 82 88 -TeXDict begin 82 87 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(82)390 299 y Fs(if)47 -b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c(fi)150 -461 y Ft(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f Fs(PATH)f -Ft(v)-5 b(ariable)32 b(is)e(not)h(used)e(to)i(searc)m(h)g(for)f(the)h -(\014lename.)275 622 y(As)38 b(noted)h(ab)s(o)m(v)m(e,)j(if)c(a)h -(non-in)m(teractiv)m(e)i(shell)e(is)g(in)m(v)m(ok)m(ed)h(with)e(the)g -(`)p Fs(--login)p Ft(')g(option,)j(Bash)150 732 y(attempts)31 -b(to)g(read)g(and)e(execute)j(commands)e(from)g(the)h(login)g(shell)g -(startup)e(\014les.)150 958 y Fj(In)m(v)m(ok)m(ed)40 -b(with)g(name)h Fh(sh)150 1105 y Ft(If)c(Bash)g(is)g(in)m(v)m(ok)m(ed)i -(with)e(the)g(name)g Fs(sh)p Ft(,)i(it)f(tries)f(to)h(mimic)g(the)f -(startup)g(b)s(eha)m(vior)g(of)h(historical)150 1215 -y(v)m(ersions)31 b(of)f Fs(sh)g Ft(as)h(closely)h(as)e(p)s(ossible,)g -(while)h(conforming)f(to)h(the)g Fl(posix)e Ft(standard)h(as)h(w)m -(ell.)275 1376 y(When)50 b(in)m(v)m(ok)m(ed)j(as)f(an)f(in)m(teractiv)m -(e)j(login)e(shell,)57 b(or)51 b(as)g(a)h(non-in)m(teractiv)m(e)h -(shell)f(with)f(the)150 1486 y(`)p Fs(--login)p Ft(')39 -b(option,)k(it)e(\014rst)e(attempts)i(to)g(read)f(and)g(execute)h -(commands)f(from)g(`)p Fs(/etc/profile)p Ft(')150 1596 -y(and)d(`)p Fs(~/.profile)p Ft(',)g(in)g(that)h(order.)62 -b(The)37 b(`)p Fs(--noprofile)p Ft(')e(option)j(ma)m(y)g(b)s(e)f(used)g -(to)h(inhibit)f(this)150 1705 y(b)s(eha)m(vior.)82 b(When)44 -b(in)m(v)m(ok)m(ed)h(as)g(an)f(in)m(teractiv)m(e)j(shell)d(with)g(the)g -(name)g Fs(sh)p Ft(,)j(Bash)d(lo)s(oks)h(for)f(the)150 -1815 y(v)-5 b(ariable)37 b Fs(ENV)p Ft(,)g(expands)e(its)i(v)-5 -b(alue)36 b(if)g(it)h(is)f(de\014ned,)h(and)e(uses)h(the)g(expanded)g -(v)-5 b(alue)36 b(as)h(the)f(name)150 1924 y(of)i(a)h(\014le)g(to)g -(read)f(and)g(execute.)66 b(Since)38 b(a)h(shell)f(in)m(v)m(ok)m(ed)i -(as)f Fs(sh)e Ft(do)s(es)h(not)h(attempt)g(to)g(read)g(and)150 -2034 y(execute)i(commands)e(from)g(an)m(y)h(other)g(startup)f(\014les,) -j(the)e(`)p Fs(--rcfile)p Ft(')d(option)j(has)g(no)f(e\013ect.)70 -b(A)150 2143 y(non-in)m(teractiv)m(e)32 b(shell)d(in)m(v)m(ok)m(ed)h -(with)f(the)g(name)g Fs(sh)f Ft(do)s(es)g(not)i(attempt)g(to)f(read)g -(an)m(y)g(other)g(startup)150 2253 y(\014les.)275 2415 -y(When)h(in)m(v)m(ok)m(ed)h(as)g Fs(sh)p Ft(,)f(Bash)h(en)m(ters)g -Fl(posix)e Ft(mo)s(de)h(after)h(the)g(startup)f(\014les)g(are)h(read.) -150 2641 y Fj(In)m(v)m(ok)m(ed)40 b(in)h Fg(posix)g Fj(mo)s(de)150 -2788 y Ft(When)25 b(Bash)g(is)h(started)f(in)g Fl(posix)g -Ft(mo)s(de,)h(as)f(with)g(the)h(`)p Fs(--posix)p Ft(')d(command)i(line) -h(option,)h(it)f(follo)m(ws)150 2898 y(the)e Fl(posix)f -Ft(standard)h(for)f(startup)h(\014les.)38 b(In)24 b(this)g(mo)s(de,)h -(in)m(teractiv)m(e)i(shells)d(expand)f(the)h Fs(ENV)f -Ft(v)-5 b(ariable)150 3007 y(and)30 b(commands)g(are)g(read)h(and)e -(executed)j(from)d(the)i(\014le)f(whose)g(name)h(is)f(the)h(expanded)e -(v)-5 b(alue.)41 b(No)150 3117 y(other)31 b(startup)f(\014les)g(are)h -(read.)150 3343 y Fj(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h -(daemon)150 3490 y Ft(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i -(is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g -(a)150 3600 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m -(y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Fs(rshd)p -Ft(,)h(or)g(the)150 3709 y(secure)c(shell)f(daemon)h -Fs(sshd)p Ft(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g -(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3819 -y(executes)42 b(commands)e(from)g(`)p Fs(~/.bashrc)p -Ft(',)h(if)g(that)g(\014le)f(exists)i(and)e(is)g(readable.)72 -b(It)40 b(will)h(not)g(do)150 3929 y(this)35 b(if)g(in)m(v)m(ok)m(ed)i -(as)f Fs(sh)p Ft(.)55 b(The)34 b(`)p Fs(--norc)p Ft(')g(option)i(ma)m -(y)g(b)s(e)f(used)f(to)i(inhibit)f(this)g(b)s(eha)m(vior,)i(and)e(the) -150 4038 y(`)p Fs(--rcfile)p Ft(')25 b(option)i(ma)m(y)g(b)s(e)f(used)g -(to)i(force)f(another)g(\014le)g(to)g(b)s(e)f(read,)i(but)e -Fs(rshd)f Ft(do)s(es)i(not)g(generally)150 4148 y(in)m(v)m(ok)m(e)32 -b(the)f(shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b) -s(e)e(sp)s(eci\014ed.)150 4374 y Fj(In)m(v)m(ok)m(ed)40 -b(with)g(unequal)h(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p -Fj(s)150 4521 y Ft(If)24 b(Bash)h(is)f(started)h(with)f(the)h -(e\013ectiv)m(e)i(user)d(\(group\))h(id)f(not)g(equal)h(to)h(the)e -(real)h(user)f(\(group\))h(id,)h(and)150 4631 y(the)35 -b(`)p Fs(-p)p Ft(')g(option)h(is)f(not)g(supplied,)h(no)f(startup)f -(\014les)h(are)h(read,)g(shell)g(functions)e(are)i(not)f(inherited)150 -4740 y(from)41 b(the)g(en)m(vironmen)m(t,)j(the)d Fs(SHELLOPTS)p -Ft(,)h Fs(BASHOPTS)p Ft(,)g Fs(CDPATH)p Ft(,)g(and)e -Fs(GLOBIGNORE)e Ft(v)-5 b(ariables,)45 b(if)150 4850 -y(they)28 b(app)s(ear)f(in)h(the)g(en)m(vironmen)m(t,)i(are)e(ignored,) -h(and)e(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)g(to)h(the)f(real)h -(user)150 4959 y(id.)54 b(If)35 b(the)g(`)p Fs(-p)p Ft(')g(option)g(is) -g(supplied)f(at)h(in)m(v)m(o)s(cation,)k(the)c(startup)g(b)s(eha)m -(vior)g(is)g(the)g(same,)h(but)f(the)150 5069 y(e\013ectiv)m(e)e(user)d -(id)g(is)g(not)h(reset.)150 5342 y Fr(6.3)68 b(In)l(teractiv)l(e)47 -b(Shells)p eop end -%%Page: 83 89 -TeXDict begin 83 88 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(83)150 299 y Fj(6.3.1)63 -b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150 -446 y Ft(An)c(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without) -f(non-option)h(argumen)m(ts,)i(unless)d(`)p Fs(-s)p Ft(')h(is)f(sp)s -(eci\014ed,)150 555 y(without)f(sp)s(ecifying)h(the)f(`)p -Fs(-c)p Ft(')g(option,)j(and)c(whose)h(input)g(and)g(error)g(output)g -(are)g(b)s(oth)g(connected)150 665 y(to)d(terminals)g(\(as)g -(determined)f(b)m(y)g Fs(isatty\(3\))p Ft(\),)f(or)h(one)h(started)f -(with)g(the)h(`)p Fs(-i)p Ft(')f(option.)275 797 y(An)g(in)m(teractiv)m -(e)j(shell)d(generally)i(reads)e(from)g(and)g(writes)g(to)h(a)g(user's) -f(terminal.)275 929 y(The)e(`)p Fs(-s)p Ft(')i(in)m(v)m(o)s(cation)h -(option)f(ma)m(y)g(b)s(e)f(used)f(to)i(set)g(the)g(p)s(ositional)g -(parameters)f(when)g(an)g(in)m(ter-)150 1038 y(activ)m(e)k(shell)d(is)h -(started.)150 1232 y Fj(6.3.2)63 b(Is)41 b(this)g(Shell)g(In)m -(teractiv)m(e?)150 1379 y Ft(T)-8 b(o)30 b(determine)g(within)f(a)h -(startup)g(script)f(whether)g(or)h(not)g(Bash)g(is)g(running)e(in)m -(teractiv)m(ely)-8 b(,)33 b(test)e(the)150 1489 y(v)-5 -b(alue)30 b(of)g(the)f(`)p Fs(-)p Ft(')h(sp)s(ecial)g(parameter.)41 -b(It)29 b(con)m(tains)i Fs(i)e Ft(when)g(the)g(shell)h(is)f(in)m -(teractiv)m(e.)44 b(F)-8 b(or)30 b(example:)390 1621 -y Fs(case)47 b("$-")f(in)390 1730 y(*i*\))h(echo)f(This)h(shell)f(is)h -(interactive)e(;;)390 1840 y(*\))i(echo)g(This)f(shell)h(is)g(not)g -(interactive)e(;;)390 1949 y(esac)275 2081 y Ft(Alternativ)m(ely)-8 -b(,)28 b(startup)23 b(scripts)h(ma)m(y)g(examine)g(the)g(v)-5 -b(ariable)25 b Fs(PS1)p Ft(;)g(it)g(is)e(unset)h(in)f(non-in)m -(teractiv)m(e)150 2191 y(shells,)31 b(and)e(set)i(in)f(in)m(teractiv)m -(e)k(shells.)40 b(Th)m(us:)390 2323 y Fs(if)47 b([)h(-z)f("$PS1")f(];)h -(then)772 2432 y(echo)f(This)h(shell)f(is)i(not)f(interactive)390 -2542 y(else)772 2651 y(echo)f(This)h(shell)f(is)i(interactive)390 -2761 y(fi)150 2955 y Fj(6.3.3)63 b(In)m(teractiv)m(e)38 -b(Shell)k(Beha)m(vior)150 3102 y Ft(When)30 b(the)h(shell)f(is)h -(running)d(in)m(teractiv)m(ely)-8 b(,)34 b(it)d(c)m(hanges)h(its)f(b)s -(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(81.)199 3475 y(2.)61 b(Job)35 b(Con)m(trol)g(\(see)h -(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(97\))g(is)f(enabled)g(b)m -(y)g(default.)55 b(When)34 b(job)330 3585 y(con)m(trol)h(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 Fs(SIGTTIN)p Ft(,)330 3694 y -Fs(SIGTTOU)p Ft(,)29 b(and)g Fs(SIGTSTP)p Ft(.)199 3826 -y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Fs(PS1)f -Ft(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 -Fs(PS2)e Ft(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.)199 -4177 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 -b(of)f(the)h Fs(PROMPT_COMMAND)22 b Ft(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 Fs($PS1)f Ft(\(see)i(Section)g(5.2)h -([Bash)f(V)-8 b(ariables],)32 b(page)f(68\).)199 4419 -y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h([Command)g(Line)g -(Editing],)h(page)g(101\))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(of)f(the)g -Fs(ignoreeof)e Ft(option)j(to)g Fs(set)29 b(-o)36 b Ft(instead)h(of)f -(exiting)i(imme-)330 4770 y(diately)f(when)e(it)i(receiv)m(es)h(an)e -Fs(EOF)f Ft(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 -(57\).)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(133\))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(135\))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 Fs($HISTFILE)d Ft(when)h(a)i(shell)g -(with)330 5340 y(history)i(enabled)h(exits.)p eop end -%%Page: 84 90 -TeXDict begin 84 89 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(84)199 299 y(8.)61 -b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e -(87\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 431 -y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g -(ignores)f Fs(SIGTERM)f Ft(\(see)i(Section)g(3.7.6)h([Signals],)g(page) -f(38\).)154 563 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g -(traps,)g Fs(SIGINT)e Ft(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k -(Section)e(3.7.6)i([Signals],)330 672 y(page)i(38\).)42 -b Fs(SIGINT)29 b Ft(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 -804 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i -Fs(SIGHUP)d Ft(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f -Fs(huponexit)e Ft(shell)330 914 y(option)31 b(has)f(b)s(een)g(enabled)g -(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(38\).)154 -1046 y(12.)61 b(The)26 b(`)p Fs(-n)p Ft(')f(in)m(v)m(o)s(cation)k -(option)d(is)g(ignored,)h(and)f(`)p Fs(set)k(-n)p Ft(')25 -b(has)h(no)g(e\013ect)i(\(see)e(Section)h(4.3.1)h([The)330 -1155 y(Set)j(Builtin],)g(page)g(57\).)154 1287 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 -Fs(MAIL)p Ft(,)e Fs(MAILPATH)p Ft(,)330 1397 y(and)f -Fs(MAILCHECK)e Ft(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(68\).)154 1528 -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 Fs(set)29 -b(-u)p Ft(')k(has)g(b)s(een)330 1638 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(57\).)154 1770 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 Fq(v)-5 b(ar)54 b Ft(b)s(eing)48 b(unset)g(or)h(n)m(ull)f(in)330 -1879 y Fs(${)p Fi(var)11 b Fs(:?)p Fi(word)g Fs(})26 -b Ft(expansions)k(\(see)h(Section)h(3.5.3)g([Shell)e(P)m(arameter)i -(Expansion],)e(page)h(22\).)154 2011 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 2143 y(17.)61 b(When)26 -b(running)f(in)i Fl(posix)e Ft(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 -2253 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(93\).)154 2385 y(18.)61 b(A)34 -b(failed)g Fs(exec)f Ft(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 -2494 y(page)e(40\).)154 2626 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 2758 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 Fs(cd)g Ft(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 2868 y(\(see)35 b(the)g(description)f -(of)h(the)f Fs(cdspell)f Ft(option)h(to)i(the)e Fs(shopt)f -Ft(builtin)h(in)g(Section)h(4.3.2)h([The)330 2977 y(Shopt)30 -b(Builtin],)h(page)g(61\).)154 3109 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 -Fs(TMOUT)e Ft(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 3219 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 Fs($PS1)f -Ft(\(see)i(Section)g(5.2)h([Bash)330 3328 y(V)-8 b(ariables],)32 -b(page)f(68\).)150 3555 y Fr(6.4)68 b(Bash)45 b(Conditional)h -(Expressions)150 3715 y Ft(Conditional)26 b(expressions)g(are)g(used)f -(b)m(y)g(the)h Fs([[)f Ft(comp)s(ound)g(command)g(and)g(the)h -Fs(test)f Ft(and)g Fs([)g Ft(builtin)150 3824 y(commands.)275 -3956 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 4066 y(status)26 b(of)g(a)h(\014le.)39 b(There)26 -b(are)g(string)g(op)s(erators)g(and)g(n)m(umeric)f(comparison)i(op)s -(erators)f(as)g(w)m(ell.)40 b(If)26 b(the)150 4175 y -Fq(\014le)38 b Ft(argumen)m(t)c(to)f(one)h(of)f(the)g(primaries)g(is)g -(of)g(the)g(form)g(`)p Fs(/dev/fd/)p Fi(N)11 b Ft(',)31 -b(then)i(\014le)g(descriptor)g Fq(N)43 b Ft(is)150 4285 -y(c)m(hec)m(k)m(ed.)e(If)26 b(the)g Fq(\014le)31 b Ft(argumen)m(t)26 -b(to)h(one)f(of)g(the)h(primaries)e(is)h(one)g(of)g(`)p -Fs(/dev/stdin)p Ft(',)f(`)p Fs(/dev/stdout)p Ft(',)150 -4395 y(or)30 b(`)p Fs(/dev/stderr)p Ft(',)e(\014le)j(descriptor)f(0,)h -(1,)g(or)g(2,)g(resp)s(ectiv)m(ely)-8 b(,)32 b(is)e(c)m(hec)m(k)m(ed.) -275 4526 y(When)37 b(used)g(with)g Fs([[)p Ft(,)i(the)f(`)p -Fs(<)p Ft(')g(and)f(`)p Fs(>)p Ft(')h(op)s(erators)g(sort)g -(lexicographically)i(using)d(the)h(curren)m(t)150 4636 -y(lo)s(cale.)k(The)30 b Fs(test)f Ft(command)i(uses)f(ASCI)s(I)e -(ordering.)275 4768 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 4878 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 -5032 y Fs(-a)f Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(exists.)150 5186 y Fs(-b)30 b Fi(file)162 -b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31 -b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 -5340 y Fs(-c)f Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial) -f(\014le.)p eop end -%%Page: 85 91 -TeXDict begin 85 90 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(85)150 299 y Fs(-d)30 -b Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 -b Ft(exists)31 b(and)f(is)g(a)h(directory)-8 b(.)150 -463 y Fs(-e)30 b Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(exists.)150 628 y Fs(-f)30 b Fi(file)162 -b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31 -b(and)f(is)g(a)h(regular)f(\014le.)150 792 y Fs(-g)g -Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b -Ft(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f(set.)150 -956 y Fs(-h)g Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 -b Ft(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 -1121 y Fs(-k)f Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(exists)31 b(and)f(its)g Fs(")p Ft(stic)m(ky)p -Fs(")h Ft(bit)g(is)f(set.)150 1285 y Fs(-p)g Fi(file)162 -b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31 -b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150 1450 -y Fs(-r)h Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 -b Ft(exists)31 b(and)f(is)g(readable.)150 1614 y Fs(-s)g -Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b -Ft(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f(zero.)150 -1778 y Fs(-t)g Fi(fd)258 b Ft(T)-8 b(rue)30 b(if)g(\014le)h(descriptor) -f Fq(fd)j Ft(is)e(op)s(en)e(and)h(refers)g(to)h(a)g(terminal.)150 -1943 y Fs(-u)f Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(exists)31 b(and)f(its)g(set-user-id)h(bit)f(is)h -(set.)150 2107 y Fs(-w)f Fi(file)162 b Ft(T)-8 b(rue)30 -b(if)g Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(writable.)150 -2271 y Fs(-x)g Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(exists)31 b(and)f(is)g(executable.)150 -2436 y Fs(-G)g Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g -Fq(\014le)36 b Ft(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 2600 y Fs(-L)g Fi(file)162 -b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b Ft(exists)31 -b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150 2765 y Fs(-N)f -Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b -Ft(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 2929 y Fs(-O)f Fi(file)162 b Ft(T)-8 -b(rue)30 b(if)g Fq(\014le)36 b Ft(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 3093 y Fs(-S)g -Fi(file)162 b Ft(T)-8 b(rue)30 b(if)g Fq(\014le)36 b -Ft(exists)31 b(and)f(is)g(a)h(so)s(c)m(k)m(et.)150 3258 -y Fi(file1)39 b Fs(-ef)30 b Fi(file2)630 3367 y Ft(T)-8 -b(rue)30 b(if)g Fq(\014le1)38 b Ft(and)30 b Fq(\014le2)38 -b Ft(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 3532 y Fi(file1)39 b Fs(-nt)30 b Fi(file2)630 -3641 y Ft(T)-8 b(rue)23 b(if)g Fq(\014le1)31 b Ft(is)24 -b(new)m(er)f(\(according)i(to)f(mo)s(di\014cation)g(date\))g(than)g -Fq(\014le2)7 b Ft(,)25 b(or)f(if)f Fq(\014le1)31 b Ft(exists)630 -3751 y(and)f Fq(\014le2)38 b Ft(do)s(es)30 b(not.)150 -3915 y Fi(file1)39 b Fs(-ot)30 b Fi(file2)630 4025 y -Ft(T)-8 b(rue)30 b(if)g Fq(\014le1)38 b Ft(is)31 b(older)f(than)g -Fq(\014le2)7 b Ft(,)32 b(or)e(if)h Fq(\014le2)38 b Ft(exists)31 -b(and)e Fq(\014le1)39 b Ft(do)s(es)30 b(not.)150 4189 -y Fs(-o)g Fi(optname)630 4299 y Ft(T)-8 b(rue)41 b(if)g(the)g(shell)h -(option)f Fq(optname)47 b Ft(is)41 b(enabled.)73 b(The)41 -b(list)h(of)f(options)h(app)s(ears)e(in)630 4408 y(the)30 -b(description)f(of)h(the)g(`)p Fs(-o)p Ft(')f(option)h(to)h(the)e -Fs(set)g Ft(builtin)g(\(see)i(Section)f(4.3.1)h([The)f(Set)630 -4518 y(Builtin],)h(page)g(57\).)150 4682 y Fs(-v)f Fi(varname)630 -4792 y Ft(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 -b Fq(v)-5 b(arname)35 b Ft(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i -(a)g(v)-5 b(alue\).)150 4956 y Fs(-R)30 b Fi(varname)630 -5066 y Ft(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32 -b Fq(v)-5 b(arname)35 b Ft(is)30 b(set)h(and)f(is)h(a)f(name)h -(reference.)150 5230 y Fs(-z)f Fi(string)630 5340 y Ft(T)-8 -b(rue)30 b(if)g(the)h(length)g(of)f Fq(string)38 b Ft(is)31 -b(zero.)p eop end -%%Page: 86 92 -TeXDict begin 86 91 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(86)150 299 y Fs(-n)30 -b Fi(string)150 408 y(string)192 b Ft(T)-8 b(rue)30 b(if)g(the)h -(length)g(of)f Fq(string)38 b Ft(is)31 b(non-zero.)150 -569 y Fi(string1)39 b Fs(==)30 b Fi(string2)150 678 y(string1)39 -b Fs(=)30 b Fi(string2)630 788 y Ft(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 Fs([[)g -Ft(command,)j(this)d(p)s(er-)630 898 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 1007 y(Constructs],)30 b(page)h(10\).)630 -1142 y(`)p Fs(=)p Ft(')g(should)e(b)s(e)h(used)f(with)h(the)h -Fs(test)e Ft(command)h(for)g Fl(posix)g Ft(conformance.)150 -1302 y Fi(string1)39 b Fs(!=)30 b Fi(string2)630 1412 -y Ft(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 -1572 y Fi(string1)39 b Fs(<)30 b Fi(string2)630 1682 -y Ft(T)-8 b(rue)30 b(if)g Fq(string1)38 b Ft(sorts)31 -b(b)s(efore)f Fq(string2)38 b Ft(lexicographically)-8 -b(.)150 1842 y Fi(string1)39 b Fs(>)30 b Fi(string2)630 -1952 y Ft(T)-8 b(rue)30 b(if)g Fq(string1)38 b Ft(sorts)31 -b(after)g Fq(string2)38 b Ft(lexicographically)-8 b(.)150 -2112 y Fi(arg1)40 b Fs(OP)29 b Fi(arg2)630 2222 y Fs(OP)k -Ft(is)h(one)g(of)h(`)p Fs(-eq)p Ft(',)f(`)p Fs(-ne)p -Ft(',)h(`)p Fs(-lt)p Ft(',)g(`)p Fs(-le)p Ft(',)f(`)p -Fs(-gt)p Ft(',)h(or)f(`)p Fs(-ge)p Ft('.)51 b(These)34 -b(arithmetic)h(binary)630 2331 y(op)s(erators)h(return)e(true)i(if)f -Fq(arg1)44 b Ft(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,) -h(less)f(than)f(or)630 2441 y(equal)28 b(to,)h(greater)g(than,)f(or)f -(greater)i(than)e(or)h(equal)g(to)g Fq(arg2)7 b Ft(,)30 -b(resp)s(ectiv)m(ely)-8 b(.)41 b Fq(Arg1)36 b Ft(and)630 -2550 y Fq(arg2)j Ft(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 2784 y Fr(6.5)68 b(Shell)45 b(Arithmetic)150 -2944 y Ft(The)35 b(shell)g(allo)m(ws)i(arithmetic)f(expressions)f(to)h -(b)s(e)f(ev)-5 b(aluated,)38 b(as)d(one)h(of)f(the)h(shell)f -(expansions)g(or)150 3053 y(b)m(y)30 b(the)h Fs(let)e -Ft(and)h(the)h(`)p Fs(-i)p Ft(')f(option)h(to)g(the)f -Fs(declare)f Ft(builtins.)275 3189 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 -3298 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 3408 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 3517 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 -3678 y Fi(id)11 b Fs(++)29 b Fi(id)11 b Fs(--)630 3788 -y Ft(v)-5 b(ariable)31 b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen) -m(t)150 3948 y Fs(++)p Fi(id)40 b Fs(--)p Fi(id)630 4058 -y Ft(v)-5 b(ariable)31 b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 -4218 y Fs(-)g(+)354 b Ft(unary)29 b(min)m(us)h(and)g(plus)150 -4378 y Fs(!)g(~)354 b Ft(logical)33 b(and)d(bit)m(wise)h(negation)150 -4538 y Fs(**)384 b Ft(exp)s(onen)m(tiation)150 4699 y -Fs(*)30 b(/)g(\045)276 b Ft(m)m(ultiplication,)33 b(division,)d -(remainder)150 4859 y Fs(+)g(-)354 b Ft(addition,)31 -b(subtraction)150 5019 y Fs(<<)f(>>)258 b Ft(left)31 -b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150 5180 y Fs(<=)f(>=)g(<)g(>) -102 b Ft(comparison)150 5340 y Fs(==)30 b(!=)258 b Ft(equalit)m(y)32 -b(and)e(inequalit)m(y)p eop end -%%Page: 87 93 -TeXDict begin 87 92 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(87)150 299 y Fs(&)432 -b Ft(bit)m(wise)31 b(AND)150 459 y Fs(^)432 b Ft(bit)m(wise)31 -b(exclusiv)m(e)h(OR)150 619 y Fs(|)432 b Ft(bit)m(wise)31 -b(OR)150 780 y Fs(&&)384 b Ft(logical)33 b(AND)150 940 -y Fs(||)384 b Ft(logical)33 b(OR)150 1100 y Fs(expr)c(?)h(expr)f(:)h -(expr)630 1210 y Ft(conditional)i(op)s(erator)150 1370 -y Fs(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 -1480 y Ft(assignmen)m(t)150 1640 y Fs(expr1)g(,)h(expr2)630 -1750 y Ft(comma)275 1910 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 2020 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 -2130 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 2239 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 2349 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 2458 -y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m -(en)j(the)e Fq(in)m(teger)40 b Ft(attribute)33 b(using)f(`)p -Fs(declare)d(-i)p Ft(')i(is)i(assigned)150 2568 y(a)j(v)-5 -b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 -b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 -b(need)e(not)h(ha)m(v)m(e)h(its)f Fq(in)m(teger)44 b -Ft(attribute)150 2678 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g -(expression.)275 2813 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are) -g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 -b(A)41 b(leading)h(`)p Fs(0x)p Ft(')f(or)g(`)p Fs(0X)p -Ft(')150 2923 y(denotes)31 b(hexadecimal.)42 b(Otherwise,)30 -b(n)m(um)m(b)s(ers)f(tak)m(e)j(the)f(form)f([)p Fq(base)5 -b Fs(#)p Ft(])p Fq(n)p Ft(,)31 b(where)f(the)g(optional)i -Fq(base)150 3032 y Ft(is)d(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m -(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and) -g Fq(n)g Ft(is)g(a)g(n)m(um)m(b)s(er)150 3142 y(in)e(that)h(base.)40 -b(If)26 b Fq(base)5 b Fs(#)27 b Ft(is)h(omitted,)h(then)e(base)g(10)h -(is)f(used.)39 b(When)27 b(sp)s(ecifying)g Fq(n)p Ft(,)h(he)f(digits)h -(greater)150 3251 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 -Fs(@)p Ft(',)e(and)f(`)p Fs(_)p Ft(',)i(in)e(that)150 -3361 y(order.)69 b(If)39 b Fq(base)45 b Ft(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 3471 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 3606 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 3715 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 3949 y Fr(6.6)68 b(Aliases)150 4109 -y Fq(Aliases)41 b Ft(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 4218 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 4328 y Fs(alias)d -Ft(and)h Fs(unalias)e Ft(builtin)i(commands.)275 4463 -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 -(y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p -Fs(/)p Ft(',)h(`)p Fs($)p Ft(',)f(`)p Fs(`)p Ft(',)g(`)p -Fs(=)p Ft(')f(and)f(an)m(y)h(of)150 4682 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) --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 -(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 Fs(ls)e Ft(to)150 5121 y Fs("ls)f(-F")p -Ft(,)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)g(of)f(the)g(alias)h(v)-5 -b(alue)31 b(is)g(a)g Fq(blank)6 b Ft(,)30 b(then)h(the)g(next)g -(command)f(w)m(ord)h(follo)m(wing)h(the)150 5340 y(alias)g(is)e(also)h -(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)p eop end -%%Page: 88 94 -TeXDict begin 88 93 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(88)275 299 y(Aliases)29 -b(are)f(created)i(and)d(listed)i(with)f(the)g Fs(alias)f -Ft(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g Fs(unalias)150 -408 y Ft(command.)275 556 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 -Fs(csh)p Ft(.)83 b(If)150 666 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 776 y(page)31 b(16\).)275 -923 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 Fs(expand_aliases)150 -1033 y Ft(shell)e(option)f(is)h(set)g(using)f Fs(shopt)f -Ft(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(61\).) -275 1181 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 1290 y(alw)m(a)m(ys)42 b(reads)f(at)h(least)g(one)f -(complete)i(line)e(of)g(input)f(b)s(efore)h(executing)h(an)m(y)f(of)g -(the)g(commands)150 1400 y(on)h(that)h(line.)77 b(Aliases)44 -b(are)e(expanded)g(when)f(a)i(command)f(is)g(read,)k(not)c(when)g(it)g -(is)h(executed.)150 1510 y(Therefore,)f(an)e(alias)h(de\014nition)e -(app)s(earing)h(on)f(the)h(same)h(line)f(as)g(another)g(command)f(do)s -(es)h(not)150 1619 y(tak)m(e)31 b(e\013ect)f(un)m(til)g(the)f(next)g -(line)h(of)f(input)f(is)h(read.)41 b(The)28 b(commands)h(follo)m(wing)i -(the)e(alias)h(de\014nition)150 1729 y(on)d(that)h(line)f(are)h(not)f -(a\013ected)i(b)m(y)e(the)g(new)g(alias.)41 b(This)26 -b(b)s(eha)m(vior)h(is)g(also)h(an)f(issue)g(when)f(functions)150 -1838 y(are)d(executed.)39 b(Aliases)24 b(are)f(expanded)f(when)f(a)i -(function)g(de\014nition)f(is)h(read,)h(not)f(when)e(the)i(function)150 -1948 y(is)i(executed,)j(b)s(ecause)d(a)h(function)f(de\014nition)f(is)i -(itself)g(a)f(comp)s(ound)f(command.)39 b(As)25 b(a)h(consequence,)150 -2058 y(aliases)36 b(de\014ned)d(in)h(a)g(function)g(are)h(not)f(a)m(v) --5 b(ailable)37 b(un)m(til)d(after)h(that)g(function)f(is)g(executed.) -53 b(T)-8 b(o)35 b(b)s(e)150 2167 y(safe,)41 b(alw)m(a)m(ys)f(put)d -(alias)j(de\014nitions)e(on)g(a)h(separate)g(line,)i(and)d(do)g(not)g -(use)g Fs(alias)f Ft(in)h(comp)s(ound)150 2277 y(commands.)275 -2425 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 -2677 y Fr(6.7)68 b(Arra)l(ys)150 2837 y Ft(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 -2946 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e -Fs(declare)e Ft(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) --8 b(.)46 b(There)32 b(is)150 3056 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 3165 -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 3275 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) -e(Arithmetic],)k(page)d(86\)\))h(and)d(are)i(zero-based;)k(asso)s -(ciativ)m(e)150 3385 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 3494 y(negativ)m(e)d(in)m(tegers.)275 -3642 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 3790 y Fi(name)11 b Fs([)p Fi(subscript)g Fs(]=)p -Fi(value)150 3938 y Ft(The)34 b Fq(subscript)h Ft(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 -4047 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 -b(use)390 4195 y Fs(declare)46 b(-a)h Fi(name)150 4343 -y Ft(The)30 b(syn)m(tax)390 4491 y Fs(declare)46 b(-a)h -Fi(name)11 b Fs([)p Fi(subscript)g Fs(])150 4639 y Ft(is)30 -b(also)i(accepted;)g(the)e Fq(subscript)h Ft(is)g(ignored.)150 -4787 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 -4935 y Fs(declare)46 b(-A)h Fi(name)11 b Fs(.)275 5083 -y Ft(A)m(ttributes)46 b(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g -(arra)m(y)g(v)-5 b(ariable)47 b(using)e(the)h Fs(declare)e -Ft(and)h Fs(readonly)150 5192 y Ft(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 5340 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)p eop end -%%Page: 89 95 -TeXDict begin 89 94 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(89)390 299 y Fi(name)11 -b Fs(=\()p Fi(value1)54 b(value2)j Fs(...)47 b(\))150 -477 y Ft(where)37 b(eac)m(h)i Fq(v)-5 b(alue)42 b Ft(is)c(of)g(the)f -(form)g Fs([)p Fi(subscript)11 b Fs(]=)p Fq(string)d -Ft(.)58 b(Indexed)36 b(arra)m(y)i(assignmen)m(ts)g(do)g(not)150 -587 y(require)30 b(an)m(ything)h(but)f Fq(string)8 b -Ft(.)41 b(When)30 b(assigning)h(to)g(indexed)f(arra)m(ys,)h(if)f(the)h -(optional)h(subscript)d(is)150 696 y(supplied,)j(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 806 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 984 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 -1162 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f(the)f -Fs(declare)f Ft(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen)m(ts)h -(ma)m(y)g(b)s(e)150 1271 y(assigned)e(to)g(using)f(the)g -Fi(name)11 b Fs([)p Fi(subscript)g Fs(]=)p Fi(value)34 -b Ft(syn)m(tax)d(in)m(tro)s(duced)f(ab)s(o)m(v)m(e.)275 -1450 y(When)g(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8 -b(,)32 b(if)f Fq(name)36 b Ft(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 1559 y(n)m(um)m(b)s(er)43 -b(is)h(in)m(terpreted)g(as)g(relativ)m(e)i(to)f(one)f(greater)h(than)f -(the)g(maxim)m(um)f(index)h(of)g Fq(name)5 b Ft(,)48 -b(so)150 1669 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 1778 y(elemen)m(t.)275 -1956 y(An)m(y)f(elemen)m(t)i(of)e(an)g(arra)m(y)h(ma)m(y)g(b)s(e)f -(referenced)g(using)g Fs(${)p Fi(name)11 b Fs([)p Fi(subscript)g -Fs(]})p Ft(.)33 b(The)26 b(braces)h(are)150 2066 y(required)h(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 Fq(subscript)g Ft(is)150 -2176 y(`)p Fs(@)p Ft(')f(or)g(`)p Fs(*)p Ft(',)g(the)g(w)m(ord)g -(expands)f(to)i(all)f(mem)m(b)s(ers)f(of)h(the)g(arra)m(y)h -Fq(name)5 b Ft(.)40 b(These)29 b(subscripts)e(di\013er)i(only)150 -2285 y(when)35 b(the)h(w)m(ord)f(app)s(ears)g(within)g(double)h -(quotes.)57 b(If)36 b(the)g(w)m(ord)f(is)h(double-quoted,)h -Fs(${)p Fi(name)11 b Fs([*]})150 2395 y Ft(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 2504 y(ter)j(of)f(the)h Fs(IFS)e -Ft(v)-5 b(ariable,)29 b(and)e Fs(${)p Fi(name)11 b Fs([@]})24 -b Ft(expands)i(eac)m(h)i(elemen)m(t)h(of)f Fq(name)k -Ft(to)c(a)g(separate)g(w)m(ord.)150 2614 y(When)j(there)h(are)g(no)f -(arra)m(y)h(mem)m(b)s(ers,)g Fs(${)p Fi(name)11 b Fs([@]})28 -b Ft(expands)j(to)h(nothing.)44 b(If)31 b(the)h(double-quoted)150 -2724 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 2833 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 2943 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 3052 y(eters)35 b(`)p Fs(@)p Ft(')g(and)e(`)p -Fs(*)p Ft('.)54 b Fs(${#)p Fi(name)11 b Fs([)p Fi(subscript)g -Fs(]})28 b Ft(expands)33 b(to)j(the)e(length)h(of)g Fs(${)p -Fi(name)11 b Fs([)p Fi(subscript)g Fs(]})p Ft(.)150 3162 -y(If)30 b Fq(subscript)i Ft(is)f(`)p Fs(@)p Ft(')f(or)h(`)p -Fs(*)p Ft(',)g(the)g(expansion)g(is)g(the)g(n)m(um)m(b)s(er)e(of)i -(elemen)m(ts)h(in)f(the)g(arra)m(y)-8 b(.)42 b(Referencing)150 -3271 y(an)33 b(arra)m(y)g(v)-5 b(ariable)34 b(without)f(a)h(subscript)e -(is)h(equiv)-5 b(alen)m(t)34 b(to)g(referencing)f(with)g(a)g(subscript) -f(of)h(0.)49 b(If)150 3381 y(the)33 b Fq(subscript)h -Ft(used)e(to)h(reference)h(an)f(elemen)m(t)h(of)f(an)g(indexed)f(arra)m -(y)i(ev)-5 b(aluates)34 b(to)g(a)f(n)m(um)m(b)s(er)f(less)150 -3491 y(than)d(zero,)h(it)f(is)g(in)m(terpreted)g(as)g(relativ)m(e)i(to) -f(one)f(greater)h(than)f(the)g(maxim)m(um)f(index)h(of)g(the)g(arra)m -(y)-8 b(,)150 3600 y(so)34 b(negativ)m(e)j(indices)d(coun)m(t)h(bac)m -(k)g(from)f(the)g(end)f(of)i(the)f(arra)m(y)-8 b(,)36 -b(and)e(an)g(index)g(of)g(-1)h(refers)f(to)h(the)150 -3710 y(last)c(elemen)m(t.)275 3888 y(An)k(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 -3998 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 -4176 y(The)44 b Fs(unset)f Ft(builtin)h(is)h(used)f(to)h(destro)m(y)g -(arra)m(ys.)84 b Fs(unset)29 b Fi(name)11 b Fs([)p Fi(subscript)g -Fs(])40 b Ft(destro)m(ys)45 b(the)150 4285 y(arra)m(y)32 -b(elemen)m(t)h(at)g(index)e Fq(subscript)r Ft(.)44 b(Negativ)m(e)34 -b(subscripts)d(to)h(indexed)f(arra)m(ys)i(are)f(in)m(terpreted)g(as)150 -4395 y(describ)s(ed)37 b(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 4504 -y(expansion.)49 b Fs(unset)29 b Fi(name)11 b Ft(,)32 -b(where)g Fq(name)39 b Ft(is)33 b(an)g(arra)m(y)-8 b(,)35 -b(remo)m(v)m(es)f(the)f(en)m(tire)h(arra)m(y)-8 b(.)50 -b(A)33 b(subscript)f(of)150 4614 y(`)p Fs(*)p Ft(')f(or)f(`)p -Fs(@)p Ft(')g(also)i(remo)m(v)m(es)f(the)g(en)m(tire)g(arra)m(y)-8 -b(.)275 4792 y(The)41 b Fs(declare)p Ft(,)i Fs(local)p -Ft(,)h(and)d Fs(readonly)f Ft(builtins)h(eac)m(h)j(accept)f(a)f(`)p -Fs(-a)p Ft(')g(option)h(to)f(sp)s(ecify)g(an)150 4902 -y(indexed)25 b(arra)m(y)h(and)e(a)i(`)p Fs(-A)p Ft(')f(option)h(to)g -(sp)s(ecify)f(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8 b(.)40 -b(If)25 b(b)s(oth)g(options)g(are)h(supplied,)150 5011 -y(`)p Fs(-A)p Ft(')k(tak)m(es)i(precedence.)41 b(The)30 -b Fs(read)f Ft(builtin)g(accepts)j(a)e(`)p Fs(-a)p Ft(')g(option)h(to)g -(assign)g(a)f(list)h(of)f(w)m(ords)g(read)150 5121 y(from)40 -b(the)g(standard)f(input)h(to)h(an)f(arra)m(y)-8 b(,)44 -b(and)39 b(can)i(read)f(v)-5 b(alues)40 b(from)g(the)g(standard)g -(input)f(in)m(to)150 5230 y(individual)26 b(arra)m(y)h(elemen)m(ts.)41 -b(The)26 b Fs(set)f Ft(and)h Fs(declare)f Ft(builtins)g(displa)m(y)i -(arra)m(y)g(v)-5 b(alues)27 b(in)f(a)h(w)m(a)m(y)g(that)150 -5340 y(allo)m(ws)32 b(them)e(to)h(b)s(e)f(reused)f(as)i(input.)p -eop end -%%Page: 90 96 -TeXDict begin 90 95 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Fr(6.8)68 -b(The)45 b(Directory)g(Stac)l(k)150 458 y Ft(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 Fs(pushd)g Ft(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 Fs(popd)e Ft(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 Fs(dirs)29 -b Ft(builtin)h(displa)m(ys)h(the)f(con)m(ten)m(ts)i(of)f(the)f -(directory)h(stac)m(k.)275 917 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 Fs(DIRSTACK)e Ft(shell)150 1026 -y(v)-5 b(ariable.)150 1216 y Fj(6.8.1)63 b(Directory)40 -b(Stac)m(k)g(Builtins)150 1383 y Fs(dirs)870 1512 y(dirs)47 -b([-clpv])e([+)p Fi(N)58 b Fs(|)47 b(-)p Fi(N)11 b Fs(])630 -1642 y Ft(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 -1751 y(the)28 b(list)h(with)f(the)g Fs(pushd)f Ft(command;)i(the)f -Fs(popd)f Ft(command)h(remo)m(v)m(es)h(directories)g(from)630 -1861 y(the)i(list.)630 2011 y Fs(-c)384 b Ft(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 2160 y Fs(-l)384 b Ft(Pro)s(duces)31 -b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h -(format)1110 2270 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h -(directory)-8 b(.)630 2419 y Fs(-p)384 b Ft(Causes)30 -b Fs(dirs)f Ft(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 2569 y Fs(-v)384 b Ft(Causes)36 -b Fs(dirs)f Ft(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 2679 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 -2828 y Fs(+)p Fi(N)384 b Ft(Displa)m(ys)23 b(the)f Fq(N)10 -b Ft(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 2938 y(b)m(y)30 b Fs(dirs)f Ft(when)h(in)m(v)m -(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)630 -3087 y Fs(-)p Fi(N)384 b Ft(Displa)m(ys)47 b(the)g Fq(N)10 -b Ft(th)46 b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g -(the)f(list)1110 3197 y(prin)m(ted)25 b(b)m(y)g Fs(dirs)g -Ft(when)f(in)m(v)m(ok)m(ed)j(without)f(options\),)h(starting)g(with)e -(zero.)150 3347 y Fs(popd)870 3476 y(popd)47 b([-n])f([+)p -Fi(N)58 b Fs(|)47 b(-)p Fi(N)11 b Fs(])630 3606 y Ft(Remo)m(v)m(e)26 -b(the)e(top)g(en)m(try)h(from)e(the)h(directory)h(stac)m(k,)i(and)c -Fs(cd)h Ft(to)h(the)f(new)f(top)i(directory)-8 b(.)630 -3715 y(When)32 b(no)g(argumen)m(ts)h(are)g(giv)m(en,)h -Fs(popd)d Ft(remo)m(v)m(es)j(the)f(top)f(directory)h(from)f(the)g(stac) -m(k)630 3825 y(and)f(p)s(erforms)e(a)j Fs(cd)f Ft(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 3934 y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g -(listed)h(with)f Fs(dirs)p Ft(;)g(that)h(is,)g Fs(popd)e -Ft(is)i(equiv)-5 b(alen)m(t)33 b(to)630 4044 y Fs(popd)c(+0)p -Ft(.)630 4194 y Fs(-n)384 b Ft(Suppresses)27 b(the)j(normal)g(c)m -(hange)g(of)g(directory)g(when)e(remo)m(ving)j(directo-)1110 -4303 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 4453 y Fs(+)p Fi(N)384 b Ft(Remo)m(v)m(es)22 -b(the)f Fq(N)10 b Ft(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 4562 y(b)m(y)30 -b Fs(dirs)p Ft(\),)g(starting)h(with)f(zero.)630 4712 -y Fs(-)p Fi(N)384 b Ft(Remo)m(v)m(es)46 b(the)g Fq(N)10 -b Ft(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g -(the)g(list)1110 4822 y(prin)m(ted)30 b(b)m(y)g Fs(dirs)p -Ft(\),)g(starting)h(with)f(zero.)150 4971 y Fs(pushd)870 -5101 y(pushd)46 b([-n])h([+)p Fi(N)57 b Fs(|)48 b Fi(-N)58 -b Fs(|)47 b Fi(dir)11 b Fs(])630 5230 y Ft(Sa)m(v)m(e)29 -b(the)f(curren)m(t)g(directory)g(on)g(the)g(top)g(of)g(the)g(directory) -h(stac)m(k)g(and)e(then)h Fs(cd)f Ft(to)i Fq(dir)7 b -Ft(.)630 5340 y(With)31 b(no)f(argumen)m(ts,)h Fs(pushd)e -Ft(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h(directories.)p -eop end -%%Page: 91 97 -TeXDict begin 91 96 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(91)630 299 y Fs(-n)384 -b Ft(Suppresses)26 b(the)i(normal)h(c)m(hange)g(of)f(directory)h(when)e -(adding)h(directories)1110 408 y(to)j(the)g(stac)m(k,)h(so)e(that)h -(only)g(the)f(stac)m(k)i(is)f(manipulated.)630 571 y -Fs(+)p Fi(N)384 b Ft(Brings)29 b(the)f Fq(N)10 b Ft(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 680 y(b)m(y)34 b Fs(dirs)p Ft(,)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 790 y(stac)m(k.)630 952 y Fs(-)p Fi(N)384 b Ft(Brings)23 -b(the)g Fq(N)10 b Ft(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 1062 y(b)m(y)34 -b Fs(dirs)p Ft(,)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 1171 y(stac)m(k.)630 -1333 y Fi(dir)336 b Ft(Mak)m(es)31 b(the)g(curren)m(t)f(w)m(orking)g -(directory)g(b)s(e)g(the)g(top)g(of)g(the)h(stac)m(k,)h(mak-)1110 -1443 y(ing)39 b(it)g(the)g(new)f(curren)m(t)g(directory)h(as)g(if)g(it) -g(had)f(b)s(een)g(supplied)f(as)i(an)1110 1553 y(argumen)m(t)31 -b(to)g(the)f Fs(cd)g Ft(builtin.)150 1789 y Fr(6.9)68 -b(Con)l(trolling)47 b(the)e(Prompt)150 1949 y Ft(The)24 -b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 b Fs(PROMPT_COMMAND)20 -b Ft(is)25 b(examined)f(just)g(b)s(efore)f(Bash)i(prin)m(ts)e(eac)m(h)j -(primary)150 2058 y(prompt.)39 b(If)28 b Fs(PROMPT_COMMAND)d -Ft(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 -2168 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 2305 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 2415 y(prompt)g(v)-5 b(ariables)32 -b Fs(PS1)d Ft(to)i Fs(PS4)p Ft(:)150 2578 y Fs(\\a)384 -b Ft(A)30 b(b)s(ell)h(c)m(haracter.)150 2740 y Fs(\\d)384 -b Ft(The)30 b(date,)h(in)f Fs(")p Ft(W)-8 b(eekda)m(y)32 -b(Mon)m(th)f(Date)p Fs(")h Ft(format)f(\(e.g.,)h Fs(")p -Ft(T)-8 b(ue)30 b(Ma)m(y)h(26)p Fs(")p Ft(\).)150 2903 -y Fs(\\D{)p Fi(format)11 b Fs(})630 3012 y Ft(The)27 -b Fq(format)i Ft(is)f(passed)e(to)i Fs(strftime)p Ft(\(3\))f(and)f(the) -i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt)630 -3122 y(string;)42 b(an)d(empt)m(y)f Fq(format)j Ft(results)d(in)g(a)h -(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 -b(The)630 3231 y(braces)31 b(are)f(required.)150 3394 -y Fs(\\e)384 b Ft(An)30 b(escap)s(e)h(c)m(haracter.)150 -3556 y Fs(\\h)384 b Ft(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e -(`.'.)150 3718 y Fs(\\H)384 b Ft(The)30 b(hostname.)150 -3880 y Fs(\\j)384 b Ft(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 4042 y Fs(\\l)384 -b Ft(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g -(name.)150 4205 y Fs(\\n)384 b Ft(A)30 b(newline.)150 -4367 y Fs(\\r)384 b Ft(A)30 b(carriage)i(return.)150 -4529 y Fs(\\s)384 b Ft(The)22 b(name)g(of)h(the)f(shell,)i(the)f -(basename)f(of)h Fs($0)f Ft(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f -(\014nal)e(slash\).)150 4691 y Fs(\\t)384 b Ft(The)30 -b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 4853 -y Fs(\\T)384 b Ft(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) -150 5016 y Fs(\\@)384 b Ft(The)30 b(time,)h(in)f(12-hour)h(am/pm)f -(format.)150 5178 y Fs(\\A)384 b Ft(The)30 b(time,)h(in)f(24-hour)h -(HH:MM)g(format.)150 5340 y Fs(\\u)384 b Ft(The)30 b(username)g(of)g -(the)h(curren)m(t)f(user.)p eop end -%%Page: 92 98 -TeXDict begin 92 97 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y Fs(\\v)384 -b Ft(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 -458 y Fs(\\V)384 b Ft(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g -Fs(+)f Ft(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 617 -y Fs(\\w)384 b Ft(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 -b(,)37 b(with)e Fs($HOME)e Ft(abbreviated)j(with)e(a)h(tilde)h(\(uses)f -(the)630 726 y Fs($PROMPT_DIRTRIM)26 b Ft(v)-5 b(ariable\).)150 -885 y Fs(\\W)384 b Ft(The)30 b(basename)h(of)f Fs($PWD)p -Ft(,)g(with)g Fs($HOME)f Ft(abbreviated)h(with)g(a)h(tilde.)150 -1044 y Fs(\\!)384 b Ft(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f -(command.)150 1203 y Fs(\\#)384 b Ft(The)30 b(command)g(n)m(um)m(b)s -(er)f(of)i(this)f(command.)150 1362 y Fs(\\$)384 b Ft(If)30 -b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Fs(#)p Ft(,)g(otherwise)g -Fs($)p Ft(.)150 1521 y Fs(\\)p Fi(nnn)288 b Ft(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 Fq(nnn)p Ft(.)150 1680 y Fs(\\\\)384 b -Ft(A)30 b(bac)m(kslash.)150 1839 y Fs(\\[)384 b Ft(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 -1948 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) -150 2107 y Fs(\\])384 b Ft(End)29 b(a)i(sequence)g(of)f(non-prin)m -(ting)g(c)m(haracters.)275 2266 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 2376 -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 -2485 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(133\),)j(while)d(the)f -(command)150 2595 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 2705 y(session.)275 2839 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 2948 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 Fs(promptvars)150 3058 y Ft(shell)31 -b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(47\).) -150 3290 y Fr(6.10)68 b(The)45 b(Restricted)h(Shell)150 -3449 y Ft(If)27 b(Bash)h(is)g(started)g(with)g(the)g(name)g -Fs(rbash)p Ft(,)f(or)g(the)h(`)p Fs(--restricted)p Ft(')d(or)j(`)p -Fs(-r)p Ft(')g(option)g(is)g(supplied)e(at)150 3559 y(in)m(v)m(o)s -(cation,)k(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 3669 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 Fs(bash)e Ft(with)150 3778 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 3912 y Fp(\017)60 b Ft(Changing)30 b(directories)h(with) -g(the)f Fs(cd)g Ft(builtin.)225 4047 y Fp(\017)60 b Ft(Setting)31 -b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f -Fs(SHELL)p Ft(,)g Fs(PATH)p Ft(,)f Fs(ENV)p Ft(,)h(or)g -Fs(BASH_ENV)e Ft(v)-5 b(ariables.)225 4181 y Fp(\017)60 -b Ft(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225 -4315 y Fp(\017)60 b Ft(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 -Fs(.)h Ft(builtin)e(command.)225 4450 y Fp(\017)60 b -Ft(Sp)s(ecifying)28 b(a)i(\014lename)f(con)m(taining)h(a)g(slash)e(as)h -(an)g(argumen)m(t)h(to)f(the)g(`)p Fs(-p)p Ft(')g(option)g(to)h(the)f -Fs(hash)330 4559 y Ft(builtin)h(command.)225 4693 y Fp(\017)60 -b Ft(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 4828 y Fp(\017)60 -b Ft(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Fs(SHELLOPTS)d -Ft(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 -4962 y Fp(\017)60 b Ft(Redirecting)31 b(output)f(using)g(the)h(`)p -Fs(>)p Ft(',)g(`)p Fs(>|)p Ft(',)f(`)p Fs(<>)p Ft(',)h(`)p -Fs(>&)p Ft(',)f(`)p Fs(&>)p Ft(',)h(and)e(`)p Fs(>>)p -Ft(')i(redirection)g(op)s(erators.)225 5096 y Fp(\017)60 -b Ft(Using)31 b(the)f Fs(exec)f Ft(builtin)h(to)h(replace)h(the)e -(shell)h(with)f(another)h(command.)225 5230 y Fp(\017)60 -b Ft(Adding)40 b(or)h(deleting)h(builtin)e(commands)h(with)f(the)h(`)p -Fs(-f)p Ft(')g(and)f(`)p Fs(-d)p Ft(')h(options)g(to)h(the)f -Fs(enable)330 5340 y Ft(builtin.)p eop end -%%Page: 93 99 -TeXDict begin 93 98 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(93)225 299 y Fp(\017)60 -b Ft(Using)31 b(the)f Fs(enable)f Ft(builtin)h(command)g(to)h(enable)g -(disabled)f(shell)g(builtins.)225 431 y Fp(\017)60 b -Ft(Sp)s(ecifying)30 b(the)g(`)p Fs(-p)p Ft(')h(option)g(to)g(the)f -Fs(command)f Ft(builtin.)225 563 y Fp(\017)60 b Ft(T)-8 -b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p -Fs(set)g(+r)p Ft(')g(or)g(`)p Fs(set)g(+o)g(restricted)p -Ft('.)275 717 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m(y) -g(startup)f(\014les)g(are)h(read.)275 849 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 958 y(Scripts],)25 b(page)e(38\),)j -Fs(rbash)c Ft(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 1185 -y Fr(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 1345 y Ft(Starting)34 -b(Bash)f(with)g(the)g(`)p Fs(--posix)p Ft(')f(command-line)i(option)g -(or)f(executing)h(`)p Fs(set)c(-o)g(posix)p Ft(')i(while)150 -1454 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 Fl(posix)f Ft(standard)g(b)m(y)h(c)m -(hanging)150 1564 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 Fl(posix)g Ft(in)g(areas)h(where)f(the)h -(Bash)f(default)h(di\013ers.)275 1696 y(When)f(in)m(v)m(ok)m(ed)h(as)g -Fs(sh)p Ft(,)f(Bash)h(en)m(ters)g Fl(posix)e Ft(mo)s(de)h(after)h -(reading)g(the)f(startup)g(\014les.)275 1828 y(The)f(follo)m(wing)j -(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fl(posix)h -Ft(mo)s(de')h(is)f(in)g(e\013ect:)199 1960 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 Fs($PATH)d Ft(to)i(\014nd)330 -2069 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 Fs(shopt)f(-s)h(checkhash)p -Ft('.)199 2201 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 2311 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 -2443 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 2552 y(`Stopp)s(ed\()p Fq(signame)5 b Ft(\)',)31 -b(where)f Fq(signame)36 b Ft(is,)31 b(for)f(example,)h -Fs(SIGTSTP)p Ft(.)199 2684 y(4.)61 b(The)27 b Fs(bg)g -Ft(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 2794 -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.)199 -2925 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 3035 y(undergo)30 b(alias)h(expansion.)199 3167 y(6.)61 -b(The)38 b Fl(posix)h Fs(PS1)f Ft(and)g Fs(PS2)g Ft(expansions)g(of)i -(`)p Fs(!)p Ft(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p -Fs(!!)p Ft(')h(to)g(`)p Fs(!)p Ft(')h(are)330 3276 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 Fs(PS1)f Ft(and)h Fs(PS2)f Ft(regardless)330 -3386 y(of)31 b(the)f(setting)i(of)e(the)h Fs(promptvars)c -Ft(option.)199 3518 y(7.)61 b(The)30 b Fl(posix)g Ft(startup)f(\014les) -i(are)g(executed)g(\()p Fs($ENV)p Ft(\))f(rather)g(than)g(the)h(normal) -f(Bash)g(\014les.)199 3650 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 3759 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)199 3891 y(9.)61 b(The)31 b Fs(command)e -Ft(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 4001 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 Fl(posix)f Ft(mo)s(de,)330 4110 -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 4220 -y(ceded)31 b(b)m(y)f Fs(command)p Ft(.)154 4352 y(10.)61 -b(The)30 b(default)g(history)h(\014le)f(is)h(`)p Fs(~/.sh_history)p -Ft(')c(\(this)k(is)f(the)g(default)h(v)-5 b(alue)31 b(of)f -Fs($HISTFILE)p Ft(\).)154 4484 y(11.)61 b(The)23 b(output)f(of)i(`)p -Fs(kill)29 b(-l)p Ft(')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 -4593 y(without)30 b(the)h(`)p Fs(SIG)p Ft(')f(pre\014x.)154 -4725 y(12.)61 b(The)30 b Fs(kill)f Ft(builtin)h(do)s(es)g(not)h(accept) -h(signal)f(names)f(with)g(a)h(`)p Fs(SIG)p Ft(')f(pre\014x.)154 -4857 y(13.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g -Fq(\014lename)k Ft(in)30 b Fs(.)g Fq(\014lename)36 b -Ft(is)31 b(not)f(found.)154 4989 y(14.)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 5099 y(in)m(v)-5 b(alid)31 -b(expression.)154 5230 y(15.)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 Fs(.)g Ft(or)h Fs(source)330 -5340 y Ft(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i -(the)f Fs(eval)f Ft(builtin.)p eop end -%%Page: 94 100 -TeXDict begin 94 99 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(94)154 299 y(16.)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 -408 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 -542 y(17.)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 -676 y(18.)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 Fs(name)p Ft(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 786 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 896 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 1029 y(19.)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 Fl(posix)g Ft(sp)s(ecial)h(builtins.)154 -1163 y(20.)61 b Fl(posix)30 b Ft(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 -1297 y(21.)61 b(The)29 b Fs(time)g Ft(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 1407 -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 Fs(TIMEFORMAT)330 -1517 y Ft(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f -(timing)h(information.)154 1650 y(22.)61 b(When)33 b(parsing)f(and)g -(expanding)g(a)i($)p Fs({)6 b Ft(.)22 b(.)g(.)11 b Fs(})33 -b Ft(expansion)f(that)i(app)s(ears)e(within)g(double)g(quotes,)330 -1760 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 -1870 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 1979 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 -2113 y(23.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h -Fs(time)d Ft(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 2223 y(`)p Fs(-)p Ft('.)154 -2357 y(24.)61 b(If)24 b(a)g Fl(posix)g Ft(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 2466 y(errors)30 b(are)h(those)f -(listed)h(in)f(the)h Fl(posix)e Ft(standard,)h(and)g(include)g(things)g -(lik)m(e)i(passing)e(incorrect)330 2576 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 2685 y(command)30 -b(name,)h(and)f(so)g(on.)154 2819 y(25.)61 b(A)31 b(non-in)m(teractiv)m -(e)j(shell)d(exits)h(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 -b(ariable)32 b(assignmen)m(t)g(error)e(o)s(ccurs)330 -2929 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 -3039 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 3173 y(26.)61 b(A)28 b(non-in)m(teractiv)m(e)j(shell)e -(exists)f(with)g(an)g(error)g(status)h(if)f(a)g(v)-5 -b(ariable)29 b(assignmen)m(t)g(error)f(o)s(ccurs)330 -3282 y(in)i(an)g(assignmen)m(t)i(statemen)m(t)g(preceding)e(a)h(sp)s -(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f(other)h(simple)330 -3392 y(command.)154 3526 y(27.)61 b(A)43 b(non-in)m(teractiv)m(e)i -(shell)e(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration)h(v) --5 b(ariable)44 b(in)f(a)g Fs(for)330 3635 y Ft(statemen)m(t)32 -b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g -Fs(select)f Ft(statemen)m(t)j(is)f(a)f(readonly)h(v)-5 -b(ariable.)154 3769 y(28.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not) -f(a)m(v)-5 b(ailable.)154 3903 y(29.)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 -Fs(#)p Ft(')f(and)f(`)p Fs(?)p Ft(')h(sp)s(ecial)330 -4013 y(parameters.)154 4147 y(30.)61 b(Assignmen)m(t)23 -b(statemen)m(ts)h(preceding)e Fl(posix)f Ft(sp)s(ecial)i(builtins)f(p)s -(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 4256 -y(after)31 b(the)f(builtin)g(completes.)154 4390 y(31.)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 -4500 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h -Fl(posix)e Ft(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g -(executed.)154 4634 y(32.)61 b(The)38 b Fs(export)f Ft(and)g -Fs(readonly)f Ft(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in) -g(the)h(format)g(re-)330 4743 y(quired)30 b(b)m(y)g Fl(posix)p -Ft(.)154 4877 y(33.)61 b(The)30 b Fs(trap)f Ft(builtin)h(displa)m(ys)g -(signal)i(names)e(without)g(the)h(leading)g Fs(SIG)p -Ft(.)154 5011 y(34.)61 b(The)39 b Fs(trap)e Ft(builtin)i(do)s(esn't)g -(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e -(signal)i(sp)s(eci\014cation)330 5121 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 5230 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 -5340 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s -(osition,)f(they)g(should)f(use)h(`)p Fs(-)p Ft(')g(as)g(the)g(\014rst) -f(argumen)m(t.)p eop end -%%Page: 95 101 -TeXDict begin 95 100 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(95)154 299 y(35.)61 -b(The)21 b Fs(.)h Ft(and)f Fs(source)f Ft(builtins)h(do)g(not)h(searc)m -(h)h(the)f(curren)m(t)f(directory)h(for)g(the)g(\014lename)f(argumen)m -(t)330 408 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g -Fs(PATH)p Ft(.)154 547 y(36.)61 b(Subshells)20 b(spa)m(wned)h(to)h -(execute)g(command)g(substitutions)f(inherit)g(the)g(v)-5 -b(alue)22 b(of)g(the)f(`)p Fs(-e)p Ft(')g(option)330 -656 y(from)34 b(the)h(paren)m(t)g(shell.)55 b(When)34 -b(not)i(in)e Fl(posix)g Ft(mo)s(de,)i(Bash)f(clears)h(the)f(`)p -Fs(-e)p Ft(')f(option)i(in)e(suc)m(h)330 766 y(subshells.)154 -904 y(37.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i(enabled,)e -(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)154 1042 -y(38.)61 b(When)43 b(the)g Fs(alias)f Ft(builtin)g(displa)m(ys)i(alias) -g(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a) -330 1151 y(leading)31 b(`)p Fs(alias)e Ft(')i(unless)f(the)g(`)p -Fs(-p)p Ft(')g(option)h(is)g(supplied.)154 1289 y(39.)61 -b(When)40 b(the)g Fs(set)f Ft(builtin)h(is)g(in)m(v)m(ok)m(ed)h -(without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g -(function)330 1399 y(names)30 b(and)g(de\014nitions.)154 -1537 y(40.)61 b(When)36 b(the)g Fs(set)g Ft(builtin)g(is)g(in)m(v)m(ok) -m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 -b(v)-5 b(alues)37 b(without)330 1647 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 1756 y(c)m(haracters.)154 -1894 y(41.)61 b(When)35 b(the)g Fs(cd)f Ft(builtin)h(is)g(in)m(v)m(ok)m -(ed)i(in)d Fq(logical)41 b Ft(mo)s(de,)36 b(and)f(the)g(pathname)g -(constructed)g(from)330 2004 y Fs($PWD)i Ft(and)h(the)h(directory)f -(name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g -(an)f(existing)330 2114 y(directory)-8 b(,)32 b Fs(cd)d -Ft(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f -Fq(ph)m(ysical)j Ft(mo)s(de.)154 2252 y(42.)61 b(The)36 -b Fs(pwd)f Ft(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 -b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f -(directory)-8 b(,)330 2361 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m -(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h(`)p -Fs(-P)p Ft(')f(option.)154 2499 y(43.)61 b(When)35 b(listing)g(the)g -(history)-8 b(,)36 b(the)f Fs(fc)g Ft(builtin)f(do)s(es)g(not)h -(include)g(an)f(indication)i(of)f(whether)f(or)330 2609 -y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 -2747 y(44.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g -Fs(fc)g Ft(is)g Fs(ed)p Ft(.)154 2885 y(45.)61 b(The)37 -b Fs(type)g Ft(and)g Fs(command)f Ft(builtins)i(will)g(not)g(rep)s(ort) -f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -2994 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 3104 y(found)i(in)h Fs($PATH)p Ft(.)154 -3242 y(46.)61 b(The)33 b Fs(vi)f Ft(editing)i(mo)s(de)f(will)g(in)m(v)m -(ok)m(e)i(the)e Fs(vi)g Ft(editor)h(directly)f(when)f(the)i(`)p -Fs(v)p Ft(')f(command)g(is)g(run,)330 3352 y(instead)e(of)f(c)m(hec)m -(king)i Fs($VISUAL)d Ft(and)g Fs($EDITOR)p Ft(.)154 3490 -y(47.)61 b(When)41 b(the)g Fs(xpg_echo)e Ft(option)i(is)g(enabled,)j -(Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -3599 y(gumen)m(ts)35 b(to)g Fs(echo)e Ft(as)i(options.)54 -b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 3709 y(con)m(v)m(erted.)154 -3847 y(48.)61 b(The)30 b Fs(ulimit)f Ft(builtin)g(uses)h(a)h(blo)s(c)m -(k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h(`)p Fs(-c)p -Ft(')f(and)g(`)p Fs(-f)p Ft(')g(options.)154 3985 y(49.)61 -b(The)39 b(arriv)-5 b(al)41 b(of)f Fs(SIGCHLD)e Ft(when)h(a)h(trap)g -(is)g(set)h(on)f Fs(SIGCHLD)e Ft(do)s(es)h(not)h(in)m(terrupt)g(the)g -Fs(wait)330 4095 y Ft(builtin)c(and)h(cause)g(it)h(to)f(return)f -(immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 4204 y(c)m(hild)31 b(that)g(exits.)154 -4342 y(50.)61 b(The)27 b Fs(read)f Ft(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 4452 y(receiv)m(es)41 -b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Fs(read)p -Ft(,)h(the)e(trap)h(handler)e(executes)i(and)f Fs(read)330 -4561 y Ft(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)275 -4732 y(There)k(is)g(other)h Fl(posix)f Ft(b)s(eha)m(vior)h(that)g(Bash) -g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i(when)d(in) -150 4841 y Fl(posix)d Ft(mo)s(de.)40 b(Sp)s(eci\014cally:)199 -4983 y(1.)61 b(The)30 b Fs(fc)f Ft(builtin)h(c)m(hec)m(ks)i -Fs($EDITOR)c Ft(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h -(if)f Fs(FCEDIT)f Ft(is)h(unset,)330 5092 y(rather)g(than)g(defaulting) -h(directly)g(to)g Fs(ed)p Ft(.)40 b Fs(fc)30 b Ft(uses)g -Fs(ed)g Ft(if)g Fs(EDITOR)f Ft(is)h(unset.)199 5230 y(2.)61 -b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g -Fs(xpg_echo)e Ft(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g -Fs(echo)f Ft(builtin)330 5340 y(to)j(b)s(e)f(fully)g(conforman)m(t.)p -eop end -%%Page: 96 102 -TeXDict begin 96 101 bop 150 -116 a Ft(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(96)275 299 y(Bash)66 -b(can)h(b)s(e)f(con\014gured)g(to)i(b)s(e)e Fl(posix)p -Ft(-conforman)m(t)h(b)m(y)f(default,)77 b(b)m(y)66 b(sp)s(ecifying)h -(the)150 408 y(`)p Fs(--enable-strict-posix-def)o(ault)o -Ft(')i(to)76 b Fs(configure)c Ft(when)i(building)g(\(see)i(Section)f -(10.8)150 518 y([Optional)31 b(F)-8 b(eatures],)32 b(page)f(140\).)p -eop end -%%Page: 97 103 -TeXDict begin 97 102 bop 150 -116 a Ft(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(97)150 299 y Fo(7)80 b(Job)54 -b(Con)l(trol)150 521 y Ft(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)150 631 y(its)k(facilities.) -150 858 y Fr(7.1)68 b(Job)45 b(Con)l(trol)h(Basics)150 -1018 y Ft(Job)27 b(con)m(trol)i(refers)e(to)h(the)g(abilit)m(y)h(to)f -(selectiv)m(ely)j(stop)c(\(susp)s(end\))f(the)i(execution)h(of)e(pro)s -(cesses)h(and)150 1127 y(con)m(tin)m(ue)38 b(\(resume\))g(their)f -(execution)h(at)g(a)g(later)g(p)s(oin)m(t.)61 b(A)37 -b(user)g(t)m(ypically)i(emplo)m(ys)f(this)f(facilit)m(y)150 -1237 y(via)27 b(an)e(in)m(teractiv)m(e)k(in)m(terface)f(supplied)d -(join)m(tly)h(b)m(y)g(the)h(op)s(erating)f(system)g(k)m(ernel's)h -(terminal)f(driv)m(er)150 1347 y(and)k(Bash.)275 1479 -y(The)23 b(shell)i(asso)s(ciates)h(a)f Fq(job)h Ft(with)e(eac)m(h)i -(pip)s(eline.)38 b(It)25 b(k)m(eeps)f(a)h(table)h(of)e(curren)m(tly)h -(executing)g(jobs,)150 1588 y(whic)m(h)33 b(ma)m(y)i(b)s(e)e(listed)h -(with)f(the)h Fs(jobs)f Ft(command.)50 b(When)33 b(Bash)h(starts)g(a)g -(job)g(async)m(hronously)-8 b(,)34 b(it)150 1698 y(prin)m(ts)c(a)h -(line)f(that)h(lo)s(oks)g(lik)m(e:)390 1830 y Fs([1])47 -b(25647)150 1962 y Ft(indicating)34 b(that)g(this)f(job)g(is)g(job)g(n) -m(um)m(b)s(er)f(1)i(and)f(that)g(the)h(pro)s(cess)f Fl(id)g -Ft(of)g(the)h(last)g(pro)s(cess)f(in)g(the)150 2072 y(pip)s(eline)42 -b(asso)s(ciated)i(with)e(this)g(job)g(is)h(25647.)78 -b(All)43 b(of)g(the)g(pro)s(cesses)f(in)g(a)h(single)g(pip)s(eline)f -(are)150 2181 y(mem)m(b)s(ers)30 b(of)g(the)h(same)f(job.)41 -b(Bash)30 b(uses)g(the)h Fq(job)h Ft(abstraction)f(as)g(the)g(basis)f -(for)g(job)g(con)m(trol.)275 2313 y(T)-8 b(o)23 b(facilitate)j(the)d -(implemen)m(tation)i(of)f(the)f(user)f(in)m(terface)j(to)f(job)f(con)m -(trol,)j(the)d(op)s(erating)h(system)150 2423 y(main)m(tains)j(the)f -(notion)h(of)f(a)g(curren)m(t)g(terminal)g(pro)s(cess)g(group)g -Fl(id)p Ft(.)39 b(Mem)m(b)s(ers)26 b(of)g(this)g(pro)s(cess)f(group)150 -2533 y(\(pro)s(cesses)h(whose)g(pro)s(cess)g(group)g -Fl(id)g Ft(is)h(equal)g(to)g(the)f(curren)m(t)g(terminal)h(pro)s(cess)f -(group)f Fl(id)p Ft(\))i(receiv)m(e)150 2642 y(k)m(eyb)s -(oard-generated)22 b(signals)g(suc)m(h)e(as)h Fs(SIGINT)p -Ft(.)36 b(These)21 b(pro)s(cesses)g(are)g(said)g(to)g(b)s(e)g(in)f(the) -h(foreground.)150 2752 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those) -g(whose)f(pro)s(cess)g(group)g Fl(id)h Ft(di\013ers)f(from)g(the)g -(terminal's;)42 b(suc)m(h)150 2861 y(pro)s(cesses)24 -b(are)g(imm)m(une)g(to)g(k)m(eyb)s(oard-generated)h(signals.)40 -b(Only)23 b(foreground)g(pro)s(cesses)h(are)g(allo)m(w)m(ed)150 -2971 y(to)g(read)e(from)h(or,)h(if)f(the)g(user)f(so)i(sp)s(eci\014es)e -(with)h Fs(stty)29 b(tostop)p Ft(,)23 b(write)g(to)g(the)h(terminal.)38 -b(Bac)m(kground)150 3081 y(pro)s(cesses)27 b(whic)m(h)g(attempt)h(to)f -(read)g(from)g(\(write)g(to)h(when)e Fs(stty)j(tostop)d -Ft(is)h(in)f(e\013ect\))j(the)e(terminal)150 3190 y(are)32 -b(sen)m(t)g(a)g Fs(SIGTTIN)e Ft(\()p Fs(SIGTTOU)p Ft(\))g(signal)i(b)m -(y)g(the)g(k)m(ernel's)g(terminal)g(driv)m(er,)g(whic)m(h,)g(unless)f -(caugh)m(t,)150 3300 y(susp)s(ends)d(the)i(pro)s(cess.)275 -3432 y(If)k(the)i(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)g(is)h -(running)d(supp)s(orts)h(job)h(con)m(trol,)j(Bash)e(con)m(tains)150 -3541 y(facilities)30 b(to)f(use)f(it.)40 b(T)m(yping)28 -b(the)g Fq(susp)s(end)h Ft(c)m(haracter)h(\(t)m(ypically)g(`)p -Fs(^Z)p Ft(',)f(Con)m(trol-Z\))g(while)f(a)g(pro)s(cess)150 -3651 y(is)42 b(running)f(causes)i(that)g(pro)s(cess)f(to)h(b)s(e)f -(stopp)s(ed)f(and)h(returns)f(con)m(trol)j(to)f(Bash.)77 -b(T)m(yping)42 b(the)150 3761 y Fq(dela)m(y)m(ed)k(susp)s(end)f -Ft(c)m(haracter)h(\(t)m(ypically)g(`)p Fs(^Y)p Ft(',)i(Con)m(trol-Y\))e -(causes)e(the)h(pro)s(cess)e(to)i(b)s(e)f(stopp)s(ed)150 -3870 y(when)26 b(it)i(attempts)h(to)f(read)f(input)g(from)f(the)i -(terminal,)h(and)e(con)m(trol)h(to)g(b)s(e)f(returned)f(to)j(Bash.)39 -b(The)150 3980 y(user)e(then)g(manipulates)h(the)g(state)h(of)f(this)f -(job,)j(using)d(the)h Fs(bg)f Ft(command)g(to)h(con)m(tin)m(ue)h(it)f -(in)g(the)150 4089 y(bac)m(kground,)g(the)f Fs(fg)g Ft(command)f(to)i -(con)m(tin)m(ue)g(it)f(in)f(the)h(foreground,)h(or)f(the)g -Fs(kill)f Ft(command)g(to)150 4199 y(kill)27 b(it.)40 -b(A)27 b(`)p Fs(^Z)p Ft(')g(tak)m(es)h(e\013ect)g(immediately)-8 -b(,)29 b(and)d(has)h(the)f(additional)i(side)e(e\013ect)j(of)d(causing) -h(p)s(ending)150 4309 y(output)j(and)g(t)m(yp)s(eahead)h(to)g(b)s(e)e -(discarded.)275 4441 y(There)j(are)g(a)h(n)m(um)m(b)s(er)e(of)i(w)m(a)m -(ys)g(to)h(refer)e(to)h(a)g(job)f(in)g(the)h(shell.)47 -b(The)32 b(c)m(haracter)i(`)p Fs(\045)p Ft(')f(in)m(tro)s(duces)150 -4550 y(a)e(job)f(sp)s(eci\014cation)h(\()p Fq(jobsp)s(ec)6 -b Ft(\).)275 4682 y(Job)31 b(n)m(um)m(b)s(er)f Fs(n)h -Ft(ma)m(y)h(b)s(e)f(referred)g(to)h(as)g(`)p Fs(\045n)p -Ft('.)44 b(The)31 b(sym)m(b)s(ols)g(`)p Fs(\045\045)p -Ft(')h(and)f(`)p Fs(\045+)p Ft(')g(refer)h(to)g(the)g(shell's)150 -4792 y(notion)k(of)f(the)g(curren)m(t)g(job,)h(whic)m(h)f(is)g(the)g -(last)h(job)f(stopp)s(ed)f(while)h(it)h(w)m(as)g(in)e(the)i(foreground) -e(or)150 4902 y(started)27 b(in)g(the)g(bac)m(kground.)40 -b(A)27 b(single)g(`)p Fs(\045)p Ft(')g(\(with)g(no)g(accompan)m(ying)i -(job)d(sp)s(eci\014cation\))i(also)g(refers)150 5011 -y(to)k(the)e(curren)m(t)h(job.)42 b(The)30 b(previous)g(job)h(ma)m(y)g -(b)s(e)f(referenced)h(using)f(`)p Fs(\045-)p Ft('.)42 -b(If)30 b(there)h(is)g(only)g(a)g(single)150 5121 y(job,)g(`)p -Fs(\045+)p Ft(')g(and)f(`)p Fs(\045-)p Ft(')h(can)h(b)s(oth)e(b)s(e)g -(used)h(to)g(refer)g(to)h(that)g(job.)42 b(In)30 b(output)h(p)s -(ertaining)g(to)g(jobs)g(\(e.g.,)150 5230 y(the)39 b(output)f(of)g(the) -h Fs(jobs)e Ft(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 Fs(+)p Ft(',)i(and)d(the)150 -5340 y(previous)30 b(job)g(with)g(a)h(`)p Fs(-)p Ft('.)p -eop end -%%Page: 98 104 -TeXDict begin 98 103 bop 150 -116 a Ft(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(98)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 -b(or)31 b(example,)g(`)p Fs(\045ce)p Ft(')f(refers)g(to)h(a)g(stopp)s -(ed)e Fs(ce)h Ft(job.)150 518 y(Using)d(`)p Fs(\045?ce)p -Ft(',)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 Fs(ce)p Ft(')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 -762 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 Fs(\0451)p Ft(')31 -b(is)g(a)h(synon)m(ym)e(for)150 871 y(`)p Fs(fg)g(\0451)p -Ft(',)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 Fs(\0451)e(&)p -Ft(')i(resumes)150 981 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 -b(alen)m(t)32 b(to)f(`)p Fs(bg)f(\0451)p Ft(')275 1115 -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 1224 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 1334 y(an)m(y)g(other)g(output.)39 -b(If)24 b(the)i(`)p Fs(-b)p Ft(')e(option)i(to)f(the)g -Fs(set)f Ft(builtin)h(is)g(enabled,)h(Bash)f(rep)s(orts)f(suc)m(h)h(c)m -(hanges)150 1443 y(immediately)g(\(see)g(Section)g(4.3.1)g([The)f(Set)g -(Builtin],)i(page)f(57\).)40 b(An)m(y)24 b(trap)f(on)h -Fs(SIGCHLD)e Ft(is)i(executed)150 1553 y(for)30 b(eac)m(h)i(c)m(hild)e -(pro)s(cess)g(that)h(exits.)275 1687 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 Fs(checkjobs)150 1796 y Ft(option)e(is)f -(enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) -e(61\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 -1906 y(message,)k(and)c(if)i(the)f Fs(checkjobs)e Ft(option)j(is)f -(enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 -b(The)25 b Fs(jobs)150 2016 y Ft(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 2125 -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 -2235 y(jobs)c(are)h(terminated.)150 2466 y Fr(7.2)68 -b(Job)45 b(Con)l(trol)h(Builtins)150 2650 y Fs(bg)870 -2784 y(bg)h([)p Fi(jobspec)56 b Fs(...)o(])630 2918 y -Ft(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i Fq(jobsp)s(ec)29 -b Ft(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g -(started)630 3027 y(with)32 b(`)p Fs(&)p Ft('.)45 b(If)31 -b Fq(jobsp)s(ec)37 b Ft(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 3137 -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 3246 -y(con)m(trol)h(enabled,)g(an)m(y)f Fq(jobsp)s(ec)37 b -Ft(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 3356 y(without)e(job)g(con)m(trol.)150 -3514 y Fs(fg)870 3648 y(fg)47 b([)p Fi(jobspec)11 b Fs(])630 -3782 y Ft(Resume)43 b(the)g(job)g Fq(jobsp)s(ec)48 b -Ft(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 3891 y Fq(jobsp)s(ec)41 b Ft(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 4001 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 -4111 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h -(enabled,)h Fq(jobsp)s(ec)j Ft(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 -4220 y(v)-5 b(alid)31 b(job)f(or)g Fq(jobsp)s(ec)35 b -Ft(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 4378 y Fs(jobs)870 4512 y(jobs)47 -b([-lnprs])e([)p Fi(jobspec)11 b Fs(])870 4622 y(jobs)47 -b(-x)g Fi(command)56 b Fs([)p Fi(arguments)11 b Fs(])630 -4756 y Ft(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 -4914 y Fs(-l)384 b Ft(List)31 b(pro)s(cess)f Fl(id)p -Ft(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630 -5072 y Fs(-n)384 b Ft(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 -5182 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f -(status.)630 5340 y Fs(-p)384 b Ft(List)31 b(only)f(the)h(pro)s(cess)f -Fl(id)g Ft(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)p -eop end -%%Page: 99 105 -TeXDict begin 99 104 bop 150 -116 a Ft(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2571 b(99)630 299 y Fs(-r)384 b -Ft(Displa)m(y)32 b(only)e(running)f(jobs.)630 461 y Fs(-s)384 -b Ft(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630 622 -y(If)23 b Fq(jobsp)s(ec)28 b Ft(is)c(giv)m(en,)i(output)d(is)h -(restricted)g(to)g(information)g(ab)s(out)f(that)h(job.)39 -b(If)23 b Fq(jobsp)s(ec)630 732 y Ft(is)30 b(not)h(supplied,)e(the)i -(status)g(of)f(all)h(jobs)f(is)h(listed.)630 868 y(If)g(the)g(`)p -Fs(-x)p Ft(')g(option)h(is)f(supplied,)g Fs(jobs)f Ft(replaces)i(an)m -(y)f Fq(jobsp)s(ec)37 b Ft(found)29 b(in)i Fq(command)k -Ft(or)630 977 y Fq(argumen)m(ts)41 b Ft(with)36 b(the)i(corresp)s -(onding)d(pro)s(cess)i(group)f Fl(id)p Ft(,)j(and)d(executes)i -Fq(command)t Ft(,)630 1087 y(passing)30 b(it)h Fq(argumen)m(t)r -Ft(s,)g(returning)f(its)g(exit)i(status.)150 1249 y Fs(kill)870 -1384 y(kill)47 b([-s)g Fi(sigspec)11 b Fs(])45 b([-n)i -Fi(signum)11 b Fs(])45 b([-)p Fi(sigspec)11 b Fs(])44 -b Fi(jobspec)57 b Fs(or)47 b Fi(pid)870 1494 y Fs(kill)g(-l)g([)p -Fi(exit_status)11 b Fs(])630 1630 y Ft(Send)22 b(a)i(signal)g(sp)s -(eci\014ed)f(b)m(y)g Fq(sigsp)s(ec)29 b Ft(or)24 b Fq(sign)m(um)f -Ft(to)h(the)g(pro)s(cess)f(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 -1739 y(cation)j Fq(jobsp)s(ec)k Ft(or)25 b(pro)s(cess)g -Fl(id)g Fq(pid)t Ft(.)38 b Fq(sigsp)s(ec)31 b Ft(is)25 -b(either)g(a)h(case-insensitiv)m(e)h(signal)f(name)630 -1849 y(suc)m(h)k(as)h Fs(SIGINT)d Ft(\(with)j(or)f(without)h(the)f -Fs(SIG)g Ft(pre\014x\))f(or)i(a)f(signal)h(n)m(um)m(b)s(er;)f -Fq(sign)m(um)g Ft(is)630 1958 y(a)i(signal)g(n)m(um)m(b)s(er.)43 -b(If)31 b Fq(sigsp)s(ec)37 b Ft(and)31 b Fq(sign)m(um)g -Ft(are)h(not)f(presen)m(t,)h Fs(SIGTERM)e Ft(is)h(used.)43 -b(The)630 2068 y(`)p Fs(-l)p Ft(')34 b(option)g(lists)h(the)f(signal)h -(names.)51 b(If)33 b(an)m(y)i(argumen)m(ts)f(are)g(supplied)f(when)g(`) -p Fs(-l)p Ft(')h(is)630 2178 y(giv)m(en,)e(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 Fq(exit)p 1796 2287 28 4 v 41 w(status)32 b Ft(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 y(the)35 b(exit)h(status)f(of)g(a)g(pro)s(cess)g(terminated)g(b)m -(y)g(a)g(signal.)55 b(The)34 b(return)g(status)h(is)g(zero)630 -2506 y(if)c(at)h(least)g(one)g(signal)f(w)m(as)h(successfully)f(sen)m -(t,)h(or)f(non-zero)h(if)f(an)g(error)f(o)s(ccurs)h(or)g(an)630 -2616 y(in)m(v)-5 b(alid)31 b(option)g(is)f(encoun)m(tered.)150 -2778 y Fs(wait)870 2913 y(wait)47 b([)p Fi(jobspec)56 -b Fs(or)47 b Fi(pid)57 b Fs(...)o(])630 3049 y Ft(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 Fl(id)h Fq(pid)i Ft(or)d(job)g(sp)s -(eci\014cation)630 3159 y Fq(jobsp)s(ec)j Ft(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(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(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)k(the)h(`)p Fs(-n)p Ft(')f(option)h(is)g(supplied,)f -Fs(wait)f Ft(w)m(aits)i(for)g(an)m(y)f(job)h(to)g(terminate)g(and)f -(returns)630 3597 y(its)27 b(exit)h(status.)40 b(If)26 -b(neither)h Fq(jobsp)s(ec)k Ft(nor)c Fq(pid)i Ft(sp)s(eci\014es)e(an)f -(activ)m(e)j(c)m(hild)e(pro)s(cess)g(of)g(the)630 3707 -y(shell,)k(the)f(return)g(status)g(is)h(127.)150 3868 -y Fs(disown)870 4004 y(disown)46 b([-ar])g([-h])h([)p -Fi(jobspec)56 b Fs(...)o(])630 4140 y Ft(Without)30 b(options,)f(remo)m -(v)m(e)i(eac)m(h)f Fq(jobsp)s(ec)k Ft(from)28 b(the)h(table)h(of)f -(activ)m(e)i(jobs.)40 b(If)28 b(the)h(`)p Fs(-h)p Ft(')630 -4249 y(option)36 b(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 Fs(SIGHUP)e Ft(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 Fs(SIGHUP)p Ft(.)54 b(If)34 -b Fq(jobsp)s(ec)40 b Ft(is)c(not)630 4468 y(presen)m(t,)27 -b(and)f(neither)g(the)g(`)p Fs(-a)p Ft(')g(nor)g(`)p -Fs(-r)p Ft(')g(option)h(is)f(supplied,)g(the)g(curren)m(t)g(job)g(is)g -(used.)630 4578 y(If)i(no)g Fq(jobsp)s(ec)33 b Ft(is)28 -b(supplied,)f(the)i(`)p Fs(-a)p Ft(')f(option)g(means)h(to)f(remo)m(v)m -(e)i(or)e(mark)g(all)h(jobs;)g(the)630 4688 y(`)p Fs(-r)p -Ft(')h(option)h(without)f(a)h Fq(jobsp)s(ec)k Ft(argumen)m(t)c -(restricts)g(op)s(eration)g(to)g(running)e(jobs.)150 -4849 y Fs(suspend)870 4985 y(suspend)46 b([-f])630 5121 -y Ft(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 Fs(SIGCONT)f Ft(signal.)50 b(A)33 -b(login)630 5230 y(shell)24 b(cannot)h(b)s(e)e(susp)s(ended;)h(the)g(`) -p Fs(-f)p Ft(')g(option)g(can)h(b)s(e)e(used)g(to)i(o)m(v)m(erride)g -(this)f(and)f(force)630 5340 y(the)31 b(susp)s(ension.)p -eop end -%%Page: 100 106 -TeXDict begin 100 105 bop 150 -116 a Ft(Chapter)30 b(7:)41 -b(Job)30 b(Con)m(trol)2526 b(100)275 299 y(When)30 b(job)f(con)m(trol)j -(is)e(not)h(activ)m(e,)i(the)d Fs(kill)f Ft(and)h Fs(wait)f -Ft(builtins)g(do)h(not)h(accept)h Fq(jobsp)s(ec)j Ft(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 Fl(id)p Ft(s.)150 641 y Fr(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 -b(ariables)150 825 y Fs(auto_resume)630 935 y Ft(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 1044 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 -1154 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 -1264 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 -1373 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 -1483 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 1592 y(`)p Fs(exact)p Ft(',)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 1702 y(set)29 b(to)h(`)p Fs(substring)p -Ft(',)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 1812 y(of)38 b(a)f(stopp)s(ed)g(job.) -62 b(The)37 b(`)p Fs(substring)p Ft(')e(v)-5 b(alue)38 -b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 -1921 y(the)f(`)p Fs(\045?)p Ft(')f(job)h Fl(id)f Ft(\(see)i(Section)f -(7.1)h([Job)f(Con)m(trol)g(Basics],)j(page)d(97\).)64 -b(If)37 b(set)h(to)h(an)m(y)630 2031 y(other)32 b(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 2140 -y(pro)m(vides)e(functionalit)m(y)i(analogous)g(to)f(the)g(`)p -Fs(\045)p Ft(')f(job)g Fl(id)p Ft(.)p eop end -%%Page: 101 107 -TeXDict begin 101 106 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(101)150 299 y Fo(8)80 -b(Command)54 b(Line)f(Editing)150 640 y Ft(This)28 b(c)m(hapter)i -(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g Fl(gnu)f -Ft(command)h(line)g(editing)h(in)m(terface.)42 b(Com-)150 -749 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g(the)g -(Readline)h(library)-8 b(,)41 b(whic)m(h)e(is)g(used)f(b)m(y)h(sev)m -(eral)h(di\013eren)m(t)150 859 y(programs,)34 b(including)e(Bash.)49 -b(Command)32 b(line)i(editing)f(is)g(enabled)g(b)m(y)g(default)g(when)f -(using)h(an)g(in-)150 969 y(teractiv)m(e)c(shell,)f(unless)e(the)h(`)p -Fs(--noediting)p Ft(')d(option)k(is)e(supplied)g(at)h(shell)g(in)m(v)m -(o)s(cation.)42 b(Line)26 b(editing)150 1078 y(is)i(also)h(used)e(when) -h(using)f(the)h(`)p Fs(-e)p Ft(')g(option)h(to)g(the)f -Fs(read)f Ft(builtin)h(command)f(\(see)i(Section)g(4.2)h([Bash)150 -1188 y(Builtins],)36 b(page)f(47\).)52 b(By)35 b(default,)g(the)f(line) -h(editing)f(commands)g(are)h(similar)f(to)h(those)f(of)g(Emacs.)150 -1297 y(A)h(vi-st)m(yle)h(line)f(editing)g(in)m(terface)h(is)e(also)i(a) -m(v)-5 b(ailable.)55 b(Line)34 b(editing)h(can)g(b)s(e)f(enabled)g(at)h -(an)m(y)g(time)150 1407 y(using)28 b(the)i(`)p Fs(-o)g(emacs)p -Ft(')d(or)i(`)p Fs(-o)h(vi)p Ft(')f(options)g(to)h(the)f -Fs(set)f Ft(builtin)h(command)g(\(see)h(Section)f(4.3.1)i([The)150 -1517 y(Set)g(Builtin],)g(page)g(57\),)h(or)e(disabled)g(using)g(the)h -(`)p Fs(+o)f(emacs)p Ft(')f(or)h(`)p Fs(+o)g(vi)p Ft(')g(options)h(to)g -Fs(set)p Ft(.)150 1802 y Fr(8.1)68 b(In)l(tro)t(duction)45 -b(to)g(Line)h(Editing)150 1962 y Ft(The)30 b(follo)m(wing)i(paragraphs) -d(describ)s(e)h(the)h(notation)g(used)f(to)h(represen)m(t)f(k)m -(eystrok)m(es.)275 2132 y(The)35 b(text)i Fi(C-k)f Ft(is)g(read)g(as)h -(`Con)m(trol-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s -(duced)d(when)g(the)h Fs(k)150 2242 y Ft(k)m(ey)31 b(is)g(pressed)e -(while)h(the)h(Con)m(trol)g(k)m(ey)g(is)g(depressed.)275 -2412 y(The)g(text)i Fi(M-k)e Ft(is)h(read)f(as)i(`Meta-K')g(and)f -(describ)s(es)f(the)h(c)m(haracter)h(pro)s(duced)e(when)f(the)i(Meta) -150 2521 y(k)m(ey)i(\(if)f(y)m(ou)h(ha)m(v)m(e)g(one\))g(is)f -(depressed,)g(and)f(the)h Fs(k)g Ft(k)m(ey)h(is)f(pressed.)48 -b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s(eled)f Fs(ALT)150 -2631 y Ft(on)c(man)m(y)h(k)m(eyb)s(oards.)40 b(On)29 -b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g -Fs(ALT)e Ft(\(usually)i(to)g(either)g(side)g(of)g(the)150 -2740 y(space)h(bar\),)f(the)g Fs(ALT)f Ft(on)h(the)g(left)h(side)f(is)g -(generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8 -b(.)42 b(The)29 b Fs(ALT)g Ft(k)m(ey)i(on)150 2850 y(the)c(righ)m(t)h -(ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i -(k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150 -2960 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f -(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 3130 y(If)23 -b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fs(ALT)e -Ft(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g -(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 3239 -y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g -Fs(ESC)e Fk(\014rst)p Ft(,)j(and)e(then)g(t)m(yping)h -Fs(k)p Ft(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150 -3349 y(as)j Fq(metafying)39 b Ft(the)30 b Fs(k)g Ft(k)m(ey)-8 -b(.)275 3519 y(The)39 b(text)j Fi(M-C-k)d Ft(is)h(read)g(as)h -(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i -(pro)s(duced)d(b)m(y)150 3629 y Fq(metafying)g Fi(C-k)p -Ft(.)275 3799 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g -(their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38 -b Fs(DEL)p Ft(,)f Fs(ESC)p Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p -Ft(,)g Fs(RET)p Ft(,)150 3908 y(and)d Fs(TAB)f Ft(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 4018 y([Readline)f(Init)g(File],)i -(page)e(104\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g -Fs(LFD)f Ft(k)m(ey)-8 b(,)36 b(t)m(yping)e Fs(C-j)e Ft(will)i(pro)s -(duce)150 4128 y(the)d(desired)e(c)m(haracter.)43 b(The)30 -b Fs(RET)f Ft(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h -Fs(Return)d Ft(or)j Fs(Enter)d Ft(on)j(some)g(k)m(eyb)s(oards.)150 -4413 y Fr(8.2)68 b(Readline)47 b(In)l(teraction)150 4573 -y Ft(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t) -m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g -(that)f(the)150 4682 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g -(missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g -(a)g(set)g(of)f(commands)g(for)150 4792 y(manipulating)e(the)g(text)h -(as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h -(just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150 -4902 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29 -b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m -(ou)h(mo)m(v)m(e)g(the)g(cursor)150 5011 y(to)35 b(the)f(place)i(that)e -(needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g -(the)f(corrections.)54 b(Then,)150 5121 y(when)24 b(y)m(ou)h(are)g -(satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g -Fs(RET)p Ft(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e -(at)h(the)h(end)150 5230 y(of)33 b(the)h(line)g(to)g(press)e -Fs(RET)p Ft(;)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: 102 108 -TeXDict begin 102 107 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(102)150 299 y Fj(8.2.1)63 -b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Ft(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 -(app)s(ears)150 555 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g -(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 -b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 665 y(c)m(haracter,)f(y)m(ou)f -(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f -(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 806 -y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g -(and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t) -m(yp)s(ed)150 916 y(sev)m(eral)e(other)f(c)m(haracters.)42 -b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h -Fi(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150 -1026 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31 -b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g -(with)f Fi(C-f)p Ft(.)275 1167 y(When)i(y)m(ou)h(add)f(text)h(in)f(the) -h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m -(haracters)h(to)g(the)e(righ)m(t)150 1277 y(of)d(the)g(cursor)f(are)h -(`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h -(that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150 -1386 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m -(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled) -150 1496 y(bac)m(k')24 b(to)f(\014ll)g(in)f(the)h(blank)f(space)i -(created)f(b)m(y)g(the)g(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 -b(A)23 b(list)g(of)g(the)g(bare)f(essen)m(tials)150 1605 -y(for)30 b(editing)h(the)g(text)g(of)g(an)f(input)f(line)i(follo)m(ws.) -150 1775 y Fi(C-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m -(haracter.)150 1941 y Fi(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one) -h(c)m(haracter.)150 2108 y Fs(DEL)e Ft(or)i Fs(Backspace)630 -2217 y Ft(Delete)i(the)d(c)m(haracter)i(to)f(the)g(left)g(of)f(the)h -(cursor.)150 2384 y Fi(C-d)336 b Ft(Delete)33 b(the)d(c)m(haracter)i -(underneath)d(the)i(cursor.)150 2550 y(Prin)m(ting)g(c)m(haracters)630 -2660 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g -(cursor.)150 2826 y Fi(C-_)e Ft(or)i Fi(C-x)e(C-u)630 -2936 y Ft(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8 -b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g -(empt)m(y)630 3045 y(line.)150 3215 y(\(Dep)s(ending)29 -b(on)h(y)m(our)f(con\014guration,)i(the)e Fs(Backspace)e -Ft(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the) -150 3324 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g -Fs(DEL)g Ft(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i -(underneath)d(the)h(cursor,)i(lik)m(e)150 3434 y Fi(C-d)p -Ft(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g -(the)f(cursor.\))150 3640 y Fj(8.2.2)63 b(Readline)40 -b(Mo)m(v)m(emen)m(t)h(Commands)150 3787 y Ft(The)27 b(ab)s(o)m(v)m(e)i -(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f -(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150 -3897 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m -(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g -(in)h(addition)150 4006 y(to)j Fi(C-b)p Ft(,)f Fi(C-f)p -Ft(,)g Fi(C-d)p Ft(,)h(and)e Fs(DEL)p Ft(.)54 b(Here)35 -b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h -(the)150 4116 y(line.)150 4286 y Fi(C-a)336 b Ft(Mo)m(v)m(e)32 -b(to)g(the)e(start)h(of)g(the)f(line.)150 4452 y Fi(C-e)336 -b Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -4618 y Fi(M-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f -(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.) -150 4785 y Fi(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m -(ord.)150 4951 y Fi(C-l)336 b Ft(Clear)31 b(the)f(screen,)h(reprin)m -(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 -5121 y(Notice)c(ho)m(w)f Fi(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m -(haracter,)j(while)d Fi(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m -(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32 -b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m -(haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150 -5340 y(w)m(ords.)p eop end -%%Page: 103 109 -TeXDict begin 103 108 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(103)150 299 y Fj(8.2.3)63 -b(Readline)40 b(Killing)i(Commands)150 446 y Fq(Killing)35 -b Ft(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 -(usually)150 555 y(b)m(y)g Fq(y)m(anking)35 b Ft(\(re-inserting\))28 -b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27 -b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150 -665 y(`kill')32 b(and)d(`y)m(ank'.\))275 801 y(If)g(the)i(description)f -(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m -(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 911 y(can)g(get)g(the)g -(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h -(place)h(later.)275 1047 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g -(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i(in)e(a)g -Fq(kill-ring)p Ft(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h(consecutiv) -m(e)150 1157 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g(killed)h(text)g -(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f(bac)m(k,)h(y)m -(ou)g(get)g(it)f(all.)43 b(The)150 1267 y(kill)33 b(ring)f(is)g(not)h -(line)g(sp)s(eci\014c;)g(the)g(text)g(that)g(y)m(ou)g(killed)f(on)h(a)f -(previously)g(t)m(yp)s(ed)h(line)f(is)h(a)m(v)-5 b(ailable)150 -1376 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m(k)g(later,)h(when)d(y)m(ou) -i(are)g(t)m(yping)f(another)h(line.)275 1513 y(Here)f(is)h(the)f(list)h -(of)g(commands)f(for)g(killing)h(text.)150 1675 y Fi(C-k)336 -b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g(cursor)g(p)s -(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 1836 -y Fi(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h -(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,) -g(to)g(the)630 1946 y(end)j(of)g(the)h(next)f(w)m(ord.)41 -b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used) -f(b)m(y)g Fi(M-f)p Ft(.)150 2107 y Fi(M-DEL)240 b Ft(Kill)31 -b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,) -h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630 -2217 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8 -b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m -(y)630 2326 y Fi(M-b)p Ft(.)150 2487 y Fi(C-w)336 b Ft(Kill)35 -b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55 -b(This)34 b(is)h(di\013eren)m(t)h(than)e Fi(M-DEL)630 -2597 y Ft(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275 -2759 y(Here)42 b(is)f(ho)m(w)h(to)g Fq(y)m(ank)47 b Ft(the)42 -b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43 -b(means)e(to)h(cop)m(y)h(the)e(most-)150 2869 y(recen)m(tly-killed)33 -b(text)e(from)f(the)g(kill)i(bu\013er.)150 3031 y Fi(C-y)336 -b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m -(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150 -3192 y Fi(M-y)336 b Ft(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 3302 y(command)30 b(is)h Fi(C-y)e Ft(or)h -Fi(M-y)p Ft(.)150 3503 y Fj(8.2.4)63 b(Readline)40 b(Argumen)m(ts)150 -3650 y Ft(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f -(Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150 -3760 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g -Fk(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m -(t.)71 b(If)40 b(y)m(ou)150 3869 y(pass)33 b(a)h(negativ)m(e)i(argumen) -m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m -(ard)f(direction,)i(that)150 3979 y(command)g(will)h(act)g(in)f(a)h -(bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g -(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 4088 y(the)31 -b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fs(M--)f(C-k)p -Ft('.)275 4225 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g -(argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i -(digits)e(b)s(efore)150 4334 y(the)j(command.)42 b(If)30 -b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h -(\(`)p Fs(-)p Ft('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150 -4444 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m -(e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h -(started,)i(y)m(ou)150 4554 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f -(of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40 -b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fi(C-d)150 -4663 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f -(t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h -(delete)h(the)e(next)h(ten)150 4773 y(c)m(haracters)32 -b(on)e(the)h(input)e(line.)150 4974 y Fj(8.2.5)63 b(Searc)m(hing)40 -b(for)i(Commands)g(in)f(the)g(History)150 5121 y Ft(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(133\))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 Fq(incremen)m(tal)35 -b Ft(and)30 b Fq(non-incremen)m(tal)p Ft(.)p eop end -%%Page: 104 110 -TeXDict begin 104 109 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(104)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 -(ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i -(history)150 518 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g -(far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g -(man)m(y)g(c)m(haracters)i(as)150 628 y(needed)i(to)i(\014nd)d(the)i -(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29 -b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i -(particular)150 737 y(string,)g(t)m(yp)s(e)f Fi(C-r)p -Ft(.)40 b(T)m(yping)29 b Fi(C-s)g Ft(searc)m(hes)h(forw)m(ard)f -(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m -(t)150 847 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g -Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i -(terminate)g(an)f(incremen)m(tal)150 956 y(searc)m(h.)71 -b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i -(a)f(v)-5 b(alue,)44 b(the)c Fs(ESC)g Ft(and)f Fi(C-J)h -Ft(c)m(haracters)i(will)150 1066 y(terminate)h(an)g(incremen)m(tal)g -(searc)m(h.)78 b Fi(C-g)41 b Ft(will)i(ab)s(ort)f(an)g(incremen)m(tal)i -(searc)m(h)f(and)f(restore)h(the)150 1176 y(original)30 -b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f -(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 -1285 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 1428 -y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h -(history)g(list,)h(t)m(yp)s(e)g Fi(C-r)e Ft(or)h Fi(C-s)f -Ft(as)h(appropriate.)43 b(This)150 1537 y(will)26 b(searc)m(h)h(bac)m -(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g -(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)150 -1647 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i -(sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h -(the)150 1757 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39 -b(F)-8 b(or)26 b(instance,)h(a)f Fs(RET)f Ft(will)g(terminate)i(the)f -(searc)m(h)g(and)e(accept)150 1866 y(the)30 b(line,)g(thereb)m(y)f -(executing)i(the)e(command)g(from)g(the)h(history)f(list.)41 -b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 1976 -y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e -(the)i(curren)m(t)f(line,)h(and)f(b)s(egin)g(editing.)275 -2119 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g -(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j Fi(C-r)p -Ft(s)c(are)i(t)m(yp)s(ed)g(without)150 2228 y(an)m(y)i(in)m(terv)m -(ening)g(c)m(haracters)h(de\014ning)e(a)h(new)f(searc)m(h)h(string,)h -(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i(string)g(is)150 -2338 y(used.)275 2480 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e -(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s(efore)f(starting)h(to)h -(searc)m(h)f(for)150 2590 y(matc)m(hing)d(history)e(lines.)78 -b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f(t)m(yp)s(ed)g(b)m(y)g -(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 2700 y(con)m(ten)m(ts)32 -b(of)f(the)f(curren)m(t)g(line.)150 2944 y Fr(8.3)68 -b(Readline)47 b(Init)e(File)150 3104 y Ft(Although)f(the)g(Readline)g -(library)f(comes)i(with)e(a)h(set)h(of)f(Emacs-lik)m(e)h(k)m -(eybindings)f(installed)g(b)m(y)150 3213 y(default,)26 -b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)m(t)f(set)g(of)g(k) -m(eybindings.)38 b(An)m(y)25 b(user)f(can)h(customize)h(programs)150 -3323 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an) -g Fq(inputrc)49 b Ft(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g -(home)150 3433 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g -(\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37 -b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Fs(INPUTRC)p -Ft(.)56 b(If)150 3542 y(that)33 b(v)-5 b(ariable)33 b(is)g(unset,)f -(the)h(default)f(is)h(`)p Fs(~/.inputrc)p Ft('.)44 b(If)32 -b(that)h(\014le)f(do)s(es)g(not)h(exist)g(or)g(cannot)g(b)s(e)150 -3652 y(read,)e(the)f(ultimate)i(default)e(is)h(`)p Fs(/etc/inputrc)p -Ft('.)275 3794 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline) -g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f -(the)150 3904 y(k)m(ey)i(bindings)e(are)i(set.)275 4047 -y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g -(this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m -(hanges)150 4156 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g -(it.)150 4364 y Fj(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 -4511 y Ft(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) -m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41 -b(lines)h(are)150 4620 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h -(a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41 -b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)150 -4730 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g -([Conditional)g(Init)e(Constructs],)j(page)e(111\).)64 -b(Other)150 4839 y(lines)31 b(denote)g(v)-5 b(ariable)31 -b(settings)g(and)f(k)m(ey)h(bindings.)150 5011 y(V)-8 -b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e -(the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h -(the)g(v)-5 b(alues)41 b(of)630 5230 y(v)-5 b(ariables)34 -b(in)f(Readline)i(using)e(the)g Fs(set)g Ft(command)g(within)g(the)h -(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5340 y(is)d(simple:)p -eop end -%%Page: 105 111 -TeXDict begin 105 110 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(105)870 299 y Fs(set)47 -b Fi(variable)56 b(value)630 436 y Ft(Here,)29 b(for)e(example,)h(is)g -(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default)h(Emacs-lik)m(e)h(k)m -(ey)f(binding)e(to)630 545 y(use)k Fs(vi)g Ft(line)h(editing)g -(commands:)870 682 y Fs(set)47 b(editing-mode)d(vi)630 -819 y Ft(V)-8 b(ariable)36 b(names)f(and)g(v)-5 b(alues,)36 -b(where)f(appropriate,)h(are)g(recognized)g(without)f(regard)630 -929 y(to)c(case.)42 b(Unrecognized)31 b(v)-5 b(ariable)31 -b(names)g(are)f(ignored.)630 1066 y(Bo)s(olean)c(v)-5 -b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g -(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5 -b(alue)26 b(is)630 1176 y(n)m(ull)e(or)g(empt)m(y)-8 -b(,)27 b Fq(on)d Ft(\(case-insensitiv)m(e\),)29 b(or)24 -b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v) --5 b(ariable)630 1285 y(b)s(eing)30 b(set)h(to)g(o\013.)630 -1422 y(The)37 b Fs(bind)30 b(-V)37 b Ft(command)g(lists)i(the)f(curren) -m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5 -b(alues.)630 1532 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page) -g(47.)630 1669 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g -(is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 -b(ariables.)630 1833 y Fs(bell-style)1110 1943 y Ft(Con)m(trols)44 -b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h -(termi-)1110 2052 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p -Fs(none)p Ft(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61 -b(If)36 b(set)i(to)1110 2162 y(`)p Fs(visible)p Ft(',)32 -b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5 -b(ailable.)51 b(If)33 b(set)g(to)1110 2271 y(`)p Fs(audible)p -Ft(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g -(terminal's)1110 2381 y(b)s(ell.)630 2545 y Fs(bind-tty-special-chars) -1110 2655 y Ft(If)45 b(set)h(to)f(`)p Fs(on)p Ft(',)50 -b(Readline)45 b(attempts)i(to)f(bind)d(the)j(con)m(trol)g(c)m -(haracters)1110 2765 y(treated)36 b(sp)s(ecially)h(b)m(y)e(the)h(k)m -(ernel's)g(terminal)g(driv)m(er)f(to)h(their)f(Readline)1110 -2874 y(equiv)-5 b(alen)m(ts.)630 3039 y Fs(colored-stats)1110 -3148 y Ft(If)26 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m -(ys)g(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110 -3258 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67 -b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110 -3367 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d -Ft(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110 -3477 y(is)30 b(`)p Fs(off)p Ft('.)630 3641 y Fs(comment-begin)1110 -3751 y Ft(The)f(string)g(to)h(insert)f(at)h(the)f(b)s(eginning)g(of)g -(the)h(line)f(when)f(the)i Fs(insert-)1110 3861 y(comment)e -Ft(command)j(is)f(executed.)42 b(The)29 b(default)i(v)-5 -b(alue)31 b(is)f Fs("#")p Ft(.)630 4025 y Fs(completion-display-width) -1110 4134 y Ft(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used) -g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 4244 -y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5 -b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110 -4354 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39 -b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110 -4463 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e -(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630 -4628 y Fs(completion-ignore-case)1110 4737 y Ft(If)d(set)h(to)g(`)p -Fs(on)p Ft(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i -(and)e(completion)1110 4847 y(in)j(a)h(case-insensitiv)m(e)i(fashion.) -40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Fs(off)p -Ft('.)630 5011 y Fs(completion-map-case)1110 5121 y Ft(If)22 -b(set)g(to)h(`)p Fs(on)p Ft(',)h(and)e Fq(completion-ignore-case)31 -b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 5230 y(h)m(yphens)29 -b(\(`)p Fs(-)p Ft('\))j(and)e(underscores)g(\(`)p Fs(_)p -Ft('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110 -5340 y(case-insensitiv)m(e)j(\014lename)d(matc)m(hing)i(and)e -(completion.)p eop end -%%Page: 106 112 -TeXDict begin 106 111 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(106)630 299 y Fs -(completion-prefix-displa)o(y-le)o(ngth)1110 408 y Ft(The)31 -b(length)g(in)g(c)m(haracters)i(of)f(the)f(common)h(pre\014x)e(of)h(a)h -(list)g(of)f(p)s(ossible)1110 518 y(completions)g(that)f(is)g(displa)m -(y)m(ed)g(without)g(mo)s(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 -628 y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e -(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 737 -y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible) -f(completions.)630 902 y Fs(completion-query-items)1110 -1011 y Ft(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h -(that)g(determines)f(when)f(the)i(user)1110 1121 y(is)i(ask)m(ed)h -(whether)f(the)h(list)g(of)f(p)s(ossibilities)h(should)e(b)s(e)h -(displa)m(y)m(ed.)41 b(If)29 b(the)1110 1230 y(n)m(um)m(b)s(er)d(of)h -(p)s(ossible)f(completions)i(is)f(greater)h(than)e(this)h(v)-5 -b(alue,)28 b(Readline)1110 1340 y(will)f(ask)g(the)f(user)g(whether)g -(or)g(not)h(he)f(wishes)g(to)i(view)e(them;)i(otherwise,)1110 -1450 y(they)d(are)f(simply)g(listed.)40 b(This)23 b(v)-5 -b(ariable)25 b(m)m(ust)g(b)s(e)e(set)i(to)g(an)g(in)m(teger)g(v)-5 -b(alue)1110 1559 y(greater)26 b(than)f(or)f(equal)i(to)f(0.)40 -b(A)24 b(negativ)m(e)j(v)-5 b(alue)26 b(means)e(Readline)i(should)1110 -1669 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g -Fs(100)p Ft(.)630 1833 y Fs(convert-meta)1110 1943 y -Ft(If)22 b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(will)f(con)m(v)m -(ert)i(c)m(haracters)f(with)f(the)g(eigh)m(th)h(bit)f(set)1110 -2052 y(to)33 b(an)e Fl(asci)r(i)h Ft(k)m(ey)h(sequence)f(b)m(y)g -(stripping)f(the)h(eigh)m(th)h(bit)f(and)f(pre\014xing)1110 -2162 y(an)24 b Fs(ESC)g Ft(c)m(haracter,)j(con)m(v)m(erting)f(them)f -(to)g(a)g(meta-pre\014xed)f(k)m(ey)h(sequence.)1110 2271 -y(The)30 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(on)p -Ft('.)630 2436 y Fs(disable-completion)1110 2545 y Ft(If)36 -b(set)h(to)h(`)p Fs(On)p Ft(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h -(completion.)60 b(Completion)1110 2655 y(c)m(haracters)28 -b(will)e(b)s(e)f(inserted)h(in)m(to)h(the)g(line)f(as)g(if)g(they)h -(had)e(b)s(een)g(mapp)s(ed)1110 2765 y(to)31 b Fs(self-insert)p -Ft(.)38 b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 -2929 y Fs(editing-mode)1110 3039 y Ft(The)d Fs(editing-mode)e -Ft(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k) -m(ey)i(bind-)1110 3148 y(ings)25 b(is)g(used.)38 b(By)26 -b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,) -1110 3258 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 -3367 y(b)s(e)g(set)h(to)g(either)g(`)p Fs(emacs)p Ft(')e(or)h(`)p -Fs(vi)p Ft('.)630 3532 y Fs(echo-control-characters)1110 -3641 y Ft(When)g(set)h(to)g(`)p Fs(on)p Ft(',)f(on)g(op)s(erating)h -(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 3751 -y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d -(to)j(a)f(signal)g(generated)1110 3861 y(from)e(the)g(k)m(eyb)s(oard.) -41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 4025 -y Fs(enable-keypad)1110 4134 y Ft(When)23 b(set)h(to)g(`)p -Fs(on)p Ft(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f -(application)i(k)m(eypad)1110 4244 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 4354 y(The)j(default)g(is)h(`)p Fs(off)p Ft('.)630 -4518 y Fs(enable-meta-key)1110 4628 y Ft(When)40 b(set)g(to)g(`)p -Fs(on)p Ft(',)j(Readline)d(will)g(try)g(to)g(enable)g(an)m(y)g(meta)h -(mo)s(di\014er)1110 4737 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 -4847 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 4956 y(default)31 -b(is)f(`)p Fs(on)p Ft('.)630 5121 y Fs(expand-tilde)1110 -5230 y Ft(If)d(set)h(to)h(`)p Fs(on)p Ft(',)f(tilde)g(expansion)g(is)f -(p)s(erformed)f(when)h(Readline)h(attempts)1110 5340 -y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)p eop end -%%Page: 107 113 -TeXDict begin 107 112 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(107)630 299 y Fs -(history-preserve-point)1110 408 y Ft(If)41 b(set)h(to)h(`)p -Fs(on)p Ft(',)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 518 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 -628 y(retriev)m(ed)h(with)f Fs(previous-history)c Ft(or)37 -b Fs(next-history)p Ft(.)55 b(The)36 b(default)1110 737 -y(is)30 b(`)p Fs(off)p Ft('.)630 883 y Fs(history-size)1110 -993 y Ft(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 1103 -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 1212 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 -1322 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 -1431 y(en)m(tries)g(is)g(not)f(limited.)630 1577 y Fs -(horizontal-scroll-mode)1110 1687 y Ft(This)35 b(v)-5 -b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p -Fs(on)p Ft(')g(or)g(`)p Fs(off)p Ft('.)57 b(Setting)36 -b(it)g(to)h(`)p Fs(on)p Ft(')1110 1797 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 1906 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 2016 -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 2125 y(v)-5 -b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630 -2271 y Fs(input-meta)1110 2381 y Ft(If)f(set)g(to)h(`)p -Fs(on)p Ft(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it) -i(will)f(not)h(clear)1110 2491 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h -(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110 -2600 y(terminal)g(claims)h(it)g(can)f(supp)s(ort.)68 -b(The)39 b(default)h(v)-5 b(alue)40 b(is)g(`)p Fs(off)p -Ft('.)69 b(The)1110 2710 y(name)30 b Fs(meta-flag)e Ft(is)j(a)f(synon)m -(ym)g(for)g(this)h(v)-5 b(ariable.)630 2856 y Fs(isearch-terminators) -1110 2966 y Ft(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e -(terminate)j(an)f(incremen)m(tal)1110 3075 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 3185 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h -(page)e(103\).)62 b(If)37 b(this)g(v)-5 b(ariable)38 -b(has)f(not)1110 3294 y(b)s(een)e(giv)m(en)h(a)g(v)-5 -b(alue,)37 b(the)f(c)m(haracters)h Fs(ESC)d Ft(and)h -Fi(C-J)g Ft(will)h(terminate)g(an)1110 3404 y(incremen)m(tal)c(searc)m -(h.)630 3550 y Fs(keymap)192 b Ft(Sets)39 b(Readline's)g(idea)h(of)f -(the)g(curren)m(t)f(k)m(eymap)h(for)g(k)m(ey)g(binding)f(com-)1110 -3660 y(mands.)81 b(Acceptable)47 b Fs(keymap)42 b Ft(names)i(are)h -Fs(emacs)p Ft(,)i Fs(emacs-standard)p Ft(,)1110 3769 -y Fs(emacs-meta)p Ft(,)99 b Fs(emacs-ctlx)p Ft(,)f Fs(vi)p -Ft(,)j Fs(vi-move)p Ft(,)f Fs(vi-command)p Ft(,)f(and)1110 -3879 y Fs(vi-insert)p Ft(.)64 b Fs(vi)38 b Ft(is)h(equiv)-5 -b(alen)m(t)41 b(to)e Fs(vi-command)p Ft(;)i Fs(emacs)c -Ft(is)i(equiv)-5 b(alen)m(t)1110 3988 y(to)33 b Fs(emacs-standard)p -Ft(.)41 b(The)31 b(default)h(v)-5 b(alue)32 b(is)g Fs(emacs)p -Ft(.)44 b(The)31 b(v)-5 b(alue)33 b(of)f(the)1110 4098 -y Fs(editing-mode)27 b Ft(v)-5 b(ariable)31 b(also)h(a\013ects)f(the)g -(default)f(k)m(eymap.)630 4244 y Fs(keyseq-timeout)1110 -4354 y Ft(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m -(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 4463 -y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f -(form)g(a)g(complete)h(k)m(ey)1110 4573 y(sequence)24 -b(using)f(the)h(input)f(read)g(so)h(far,)h(or)f(can)g(tak)m(e)h -(additional)g(input)d(to)1110 4682 y(complete)31 b(a)e(longer)h(k)m(ey) -g(sequence\).)41 b(If)28 b(no)h(input)g(is)g(receiv)m(ed)h(within)f -(the)1110 4792 y(timeout,)34 b(Readline)g(will)f(use)f(the)h(shorter)f -(but)g(complete)i(k)m(ey)f(sequence.)1110 4902 y(The)25 -b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h(milliseconds,)j(so)d(a)h -(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)1110 5011 -y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g(additional)i(input.) -37 b(If)22 b(this)g(v)-5 b(ariable)23 b(is)1110 5121 -y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f(equal)i(to)f -(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5 b(alue,)1110 -5230 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h(k)m(ey)g(is) -f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110 5340 -y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)g Fs(500)p Ft(.)p eop end -%%Page: 108 114 -TeXDict begin 108 113 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(108)630 299 y Fs(mark-directories) -1110 408 y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e -(directory)f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 -518 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 676 -y Fs(mark-modified-lines)1110 786 y Ft(This)k(v)-5 b(ariable,)38 -b(when)d(set)h(to)h(`)p Fs(on)p Ft(',)g(causes)g(Readline)f(to)h -(displa)m(y)f(an)f(as-)1110 896 y(terisk)f(\(`)p Fs(*)p -Ft('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f(ha)m(v)m -(e)i(b)s(een)e(mo)s(di\014ed.)1110 1005 y(This)d(v)-5 -b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g(default.)630 -1163 y Fs(mark-symlinked-directori)o(es)1110 1273 y Ft(If)44 -b(set)h(to)h(`)p Fs(on)p Ft(',)i(completed)e(names)f(whic)m(h)f(are)h -(sym)m(b)s(olic)g(links)g(to)g(di-)1110 1383 y(rectories)j(ha)m(v)m(e)f -(a)g(slash)f(app)s(ended)e(\(sub)5 b(ject)47 b(to)g(the)f(v)-5 -b(alue)47 b(of)f Fs(mark-)1110 1492 y(directories)p Ft(\).)38 -b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1650 -y Fs(match-hidden-files)1110 1760 y Ft(This)21 b(v)-5 -b(ariable,)25 b(when)d(set)g(to)h(`)p Fs(on)p Ft(',)h(causes)f -(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 1870 -y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fs(.)p Ft(')g(\(hidden)f -(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 1979 -y(completion.)75 b(If)41 b(set)g(to)h(`)p Fs(off)p Ft(',)i(the)e -(leading)g(`)p Fs(.)p Ft(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110 -2089 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 Fs(on)p Ft(')g(b)m(y)1110 -2198 y(default.)630 2357 y Fs(menu-complete-display-pr)o(efix)1110 -2466 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i -(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110 -2576 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b) -s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 2685 y(through)30 -b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fs(off)p -Ft('.)630 2844 y Fs(output-meta)1110 2953 y Ft(If)35 -b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m -(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 3063 y(set)h(directly)g -(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59 -b(The)1110 3173 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 -3331 y Fs(page-completions)1110 3440 y Ft(If)j(set)i(to)f(`)p -Fs(on)p Ft(',)h(Readline)g(uses)e(an)h(in)m(ternal)h -Fs(more)p Ft(-lik)m(e)f(pager)g(to)h(displa)m(y)1110 -3550 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.) -47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Fs(on)p Ft(')1110 -3660 y(b)m(y)e(default.)630 3818 y Fs(print-completions-horizo)o(ntal)o -(ly)1110 3927 y Ft(If)23 b(set)i(to)g(`)p Fs(on)p Ft(',)g(Readline)g -(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110 -4037 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c -(than)g(do)m(wn)g(the)h(screen.)1110 4147 y(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)630 4305 y Fs(revert-all-at-newline)1110 -4415 y Ft(If)e(set)h(to)g(`)p Fs(on)p Ft(',)g(Readline)g(will)g(undo)f -(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 -4524 y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41 -b(By)29 b(default,)g(history)g(lines)1110 4634 y(ma)m(y)42 -b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h -(across)g(calls)h(to)1110 4743 y Fs(readline)p Ft(.)38 -b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 4902 -y Fs(show-all-if-ambiguous)1110 5011 y Ft(This)f(alters)i(the)f -(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40 -b(If)29 b(set)1110 5121 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h) -g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause) -1110 5230 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i -(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 5340 y(The)30 -b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p Ft('.)p -eop end -%%Page: 109 115 -TeXDict begin 109 114 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(109)630 299 y Fs -(show-all-if-unmodified)1110 408 y Ft(This)38 b(alters)h(the)g(default) -g(b)s(eha)m(vior)g(of)f(the)h(completion)h(functions)e(in)h(a)1110 -518 y(fashion)25 b(similar)g(to)h Fq(sho)m(w-all-if-am)m(biguous)t -Ft(.)41 b(If)24 b(set)i(to)f(`)p Fs(on)p Ft(',)i(w)m(ords)d(whic)m(h) -1110 628 y(ha)m(v)m(e)32 b(more)f(than)f(one)i(p)s(ossible)e -(completion)i(without)f(an)m(y)g(p)s(ossible)f(par-)1110 -737 y(tial)43 b(completion)h(\(the)f(p)s(ossible)f(completions)h(don't) -f(share)g(a)h(common)1110 847 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 -956 y(ing)g(the)f(b)s(ell.)41 b(The)30 b(default)g(v)-5 -b(alue)31 b(is)f(`)p Fs(off)p Ft('.)630 1113 y Fs(show-mode-in-prompt) -1110 1223 y Ft(If)35 b(set)i(to)f(`)p Fs(on)p Ft(',)h(add)e(a)h(c)m -(haracter)i(to)e(the)g(b)s(eginning)f(of)h(the)g(prompt)f(in-)1110 -1332 y(dicating)43 b(the)f(editing)h(mo)s(de:)63 b(emacs)43 -b(\(`)p Fs(@)p Ft('\),)i(vi)d(command)g(\(`)p Fs(:)p -Ft('\),)k(or)c(vi)1110 1442 y(insertion)30 b(\(`)p Fs(+)p -Ft('\).)42 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p -Fs(off)p Ft('.)630 1598 y Fs(skip-completed-text)1110 -1708 y Ft(If)h(set)i(to)f(`)p Fs(on)p Ft(',)h(this)f(alters)g(the)g -(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110 -1817 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 -1927 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 2037 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 2146 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 -2256 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 -2365 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g -(after)h(the)g(`)p Fs(e)p Ft(')f(in)1110 2475 y(`)p Fs(Makefile)p -Ft(')c(will)i(result)f(in)g(`)p Fs(Makefile)p Ft(')f(rather)h(than)h(`) -p Fs(Makefilefile)p Ft(',)1110 2585 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 2694 y(is)30 b(`)p Fs(off)p Ft('.)630 2851 -y Fs(visible-stats)1110 2960 y Ft(If)h(set)i(to)f(`)p -Fs(on)p Ft(',)h(a)f(c)m(haracter)i(denoting)e(a)g(\014le's)g(t)m(yp)s -(e)g(is)g(app)s(ended)e(to)j(the)1110 3070 y(\014lename)e(when)e -(listing)i(p)s(ossible)f(completions.)42 b(The)30 b(default)g(is)h(`)p -Fs(off)p Ft('.)150 3226 y(Key)f(Bindings)630 3336 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 -3446 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 -3555 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 -3665 y(and)30 b(a)h(short)f(description)g(of)h(what)f(the)g(command)h -(do)s(es.)630 3798 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 -3907 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 -4017 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 4127 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 4236 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 4346 y(comfortable.)630 -4479 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 -4589 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g -(\(a)h Fq(macro)5 b Ft(\).)630 4722 y(The)42 b Fs(bind)30 -b(-p)42 b Ft(command)h(displa)m(ys)g(Readline)g(function)g(names)g(and) -f(bindings)g(in)h(a)630 4831 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 4941 y(Builtins],)31 b(page)g(47.)630 -5097 y Fq(k)m(eyname)5 b Ft(:)42 b Fq(function-name)35 -b Ft(or)c Fq(macro)1110 5207 y(k)m(eyname)k Ft(is)29 -b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s(elled)e(out)h(in)g(English.)39 -b(F)-8 b(or)30 b(example:)1350 5340 y Fs(Control-u:)45 -b(universal-argument)p eop end -%%Page: 110 116 -TeXDict begin 110 115 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(110)1350 299 y Fs(Meta-Rubout:)44 -b(backward-kill-word)1350 408 y(Control-o:)h(">)i(output")1110 -542 y Ft(In)38 b(the)h(ab)s(o)m(v)m(e)h(example,)h Fi(C-u)d -Ft(is)h(b)s(ound)d(to)k(the)e(function)h Fs(universal-)1110 -652 y(argument)p Ft(,)f Fi(M-DEL)e Ft(is)i(b)s(ound)e(to)i(the)g -(function)g Fs(backward-kill-word)p Ft(,)1110 762 y(and)g -Fi(C-o)g Ft(is)h(b)s(ound)e(to)j(run)d(the)j(macro)f(expressed)g(on)f -(the)i(righ)m(t)f(hand)1110 871 y(side)30 b(\(that)i(is,)e(to)h(insert) -g(the)f(text)i(`)p Fs(>)e(output)p Ft(')f(in)m(to)i(the)g(line\).)1110 -1005 y(A)37 b(n)m(um)m(b)s(er)f(of)h(sym)m(b)s(olic)g(c)m(haracter)i -(names)e(are)g(recognized)h(while)f(pro-)1110 1115 y(cessing)22 -b(this)g(k)m(ey)g(binding)e(syn)m(tax:)37 b Fq(DEL)p -Ft(,)22 b Fq(ESC)8 b Ft(,)20 b Fq(ESCAPE)5 b Ft(,)21 -b Fq(LFD)5 b Ft(,)22 b Fq(NEW-)1110 1224 y(LINE)5 b Ft(,)31 -b Fq(RET)7 b Ft(,)29 b Fq(RETURN)10 b Ft(,)30 b Fq(R)m(UBOUT)7 -b Ft(,)31 b Fq(SP)-8 b(A)m(CE)5 b Ft(,)31 b Fq(SPC)8 -b Ft(,)29 b(and)h Fq(T)-8 b(AB)5 b Ft(.)630 1383 y Fs(")p -Fq(k)m(eyseq)r Fs(")p Ft(:)41 b Fq(function-name)36 b -Ft(or)30 b Fq(macro)1110 1492 y(k)m(eyseq)k Ft(di\013ers)d(from)f -Fq(k)m(eyname)37 b Ft(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f -(denoting)g(an)g(en-)1110 1602 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 1711 y(double)29 b(quotes.)41 b(Some)29 b Fl(gnu)h -Ft(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as) -1110 1821 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 1931 y(recognized.)1350 -2064 y Fs("\\C-u":)46 b(universal-argument)1350 2174 -y("\\C-x\\C-r":)f(re-read-init-file)1350 2284 y("\\e[11~":)g("Function) -h(Key)g(1")1110 2418 y Ft(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 -b Fi(C-u)64 b Ft(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110 -2527 y Fs(universal-argument)39 b Ft(\(just)k(as)h(it)g(w)m(as)g(in)g -(the)f(\014rst)g(example\),)49 b(`)p Fi(C-x)1110 2637 -y(C-r)p Ft(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f -Fs(re-read-init-file)p Ft(,)c(and)j(`)p Fs(ESC)h([)g(1)g(1)1110 -2746 y(~)p Ft(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p -Fs(Function)e(Key)g(1)p Ft('.)630 2905 y(The)g(follo)m(wing)i -Fl(gnu)f Ft(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5 -b(ailable)32 b(when)d(sp)s(ecifying)630 3014 y(k)m(ey)i(sequences:)630 -3173 y Fi(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630 -3331 y Fi(\\M-)336 b Ft(meta)31 b(pre\014x)630 3489 y -Fi(\\e)384 b Ft(an)30 b(escap)s(e)h(c)m(haracter)630 -3647 y Fi(\\\\)384 b Ft(bac)m(kslash)630 3806 y Fi(\\)p -Fs(")g(")p Ft(,)30 b(a)h(double)f(quotation)i(mark)630 -3964 y Fi(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)630 4122 y(In)d(addition)h(to)g(the)g Fl(gnu)f -Ft(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g -(bac)m(kslash)630 4232 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 -4390 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 4548 -y Fs(\\b)384 b Ft(bac)m(kspace)630 4707 y Fs(\\d)g Ft(delete)630 -4865 y Fs(\\f)g Ft(form)30 b(feed)630 5023 y Fs(\\n)384 -b Ft(newline)630 5182 y Fs(\\r)g Ft(carriage)32 b(return)630 -5340 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)p eop end -%%Page: 111 117 -TeXDict begin 111 116 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y Fs(\\v)384 -b Ft(v)m(ertical)32 b(tab)630 451 y Fs(\\)p Fi(nnn)288 -b Ft(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 -b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fq(nnn)e -Ft(\(one)i(to)1110 561 y(three)c(digits\))630 713 y Fs(\\x)p -Fi(HH)288 b Ft(the)40 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 -b(alue)39 b(is)h(the)f(hexadecimal)i(v)-5 b(alue)40 b -Fq(HH)1110 823 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 -975 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 -1085 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 1194 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 1304 y(will)j(quote)h(an)m(y)f -(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39 -b(`)p Fs(")p Ft(')h(and)g(`)p Fs(')p Ft('.)69 b(F)-8 -b(or)630 1414 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i -(mak)m(e)h(`)p Fi(C-x)j Fs(\\)p Ft(')c(insert)f(a)h(single)h(`)p -Fs(\\)p Ft(')f(in)m(to)g(the)g(line:)870 1545 y Fs("\\C-x\\\\":)45 -b("\\\\")150 1737 y Fj(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 1884 y Ft(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f -(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150 -1993 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 2103 y(result)f(of)h(tests.)41 -b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150 -2255 y Fs($if)336 b Ft(The)31 b Fs($if)f Ft(construct)i(allo)m(ws)h -(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g -(the)630 2365 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 2474 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 -2627 y Fs(mode)288 b Ft(The)20 b Fs(mode=)g Ft(form)g(of)h(the)g -Fs($if)f Ft(directiv)m(e)j(is)e(used)f(to)h(test)h(whether)e(Readline) -1110 2736 y(is)29 b(in)h Fs(emacs)e Ft(or)h Fs(vi)g Ft(mo)s(de.)40 -b(This)29 b(ma)m(y)h(b)s(e)e(used)h(in)g(conjunction)h(with)f(the)1110 -2846 y(`)p Fs(set)h(keymap)p Ft(')c(command,)i(for)f(instance,)i(to)f -(set)g(bindings)f(in)g(the)h Fs(emacs-)1110 2956 y(standard)23 -b Ft(and)h Fs(emacs-ctlx)f Ft(k)m(eymaps)i(only)g(if)g(Readline)h(is)f -(starting)h(out)1110 3065 y(in)k Fs(emacs)f Ft(mo)s(de.)630 -3218 y Fs(term)288 b Ft(The)26 b Fs(term=)g Ft(form)g(ma)m(y)i(b)s(e)e -(used)g(to)i(include)f(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 -3327 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 3437 y(function)24 -b(k)m(eys.)39 b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g -(the)g(`)p Fs(=)p Ft(')g(is)g(tested)h(against)1110 3546 -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 3656 y(name)k(b)s(efore)f(the)g -(\014rst)g(`)p Fs(-)p Ft('.)50 b(This)33 b(allo)m(ws)i -Fs(sun)e Ft(to)h(matc)m(h)g(b)s(oth)f Fs(sun)g Ft(and)1110 -3766 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)630 3918 y -Fs(application)1110 4028 y Ft(The)21 b Fq(application)j -Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h -(set-)1110 4137 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h -(Readline)g(library)g(sets)g(the)g Fq(application)1110 -4247 y(name)5 b Ft(,)25 b(and)d(y)m(ou)h(can)g(test)h(for)e(a)h -(particular)h(v)-5 b(alue.)38 b(This)22 b(could)h(b)s(e)f(used)g(to) -1110 4356 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 -4466 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 4575 y(the)e(curren)m(t)f(or)g -(previous)g(w)m(ord)g(in)g(Bash:)1350 4706 y Fs($if)47 -b(Bash)1350 4816 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) -1350 4926 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 5035 y($endif)150 -5188 y($endif)192 b Ft(This)29 b(command,)i(as)f(seen)h(in)f(the)g -(previous)g(example,)h(terminates)g(an)g Fs($if)e Ft(command.)150 -5340 y Fs($else)240 b Ft(Commands)29 b(in)h(this)h(branc)m(h)e(of)i -(the)f Fs($if)g Ft(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g -(fails.)p eop end -%%Page: 112 118 -TeXDict begin 112 117 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(112)150 299 y Fs($include)96 -b Ft(This)43 b(directiv)m(e)i(tak)m(es)g(a)e(single)i(\014lename)e(as)h -(an)f(argumen)m(t)h(and)f(reads)g(commands)630 408 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 -518 y(`)p Fs(/etc/inputrc)p Ft(':)870 653 y Fs($include)46 -b(/etc/inputrc)150 852 y Fj(8.3.3)63 b(Sample)41 b(Init)g(File)150 -999 y Ft(Here)27 b(is)f(an)h(example)g(of)f(an)h Fq(inputrc)k -Ft(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5 -b(ariable)27 b(assignmen)m(t,)i(and)150 1108 y(conditional)j(syn)m -(tax.)p eop end -%%Page: 113 119 -TeXDict begin 113 118 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(113)390 408 y Fs(#)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) -g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g -(re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390 -956 y(#)g(Lines)g(beginning)e(with)i('#')g(are)g(comments.)390 -1066 y(#)390 1176 y(#)g(First,)g(include)e(any)i(systemwide)e(bindings) -h(and)h(variable)390 1285 y(#)g(assignments)e(from)i(/etc/Inputrc)390 -1395 y($include)f(/etc/Inputrc)390 1614 y(#)390 1724 -y(#)h(Set)g(various)f(bindings)g(for)h(emacs)f(mode.)390 -1943 y(set)h(editing-mode)d(emacs)390 2162 y($if)j(mode=emacs)390 -2381 y(Meta-Control-h:)91 b(backward-kill-word)43 b(Text)k(after)f(the) -h(function)f(name)g(is)h(ignored)390 2600 y(#)390 2710 -y(#)g(Arrow)g(keys)f(in)i(keypad)e(mode)390 2819 y(#)390 -2929 y(#"\\M-OD":)379 b(backward-char)390 3039 y(#"\\M-OC":)g -(forward-char)390 3148 y(#"\\M-OA":)g(previous-history)390 -3258 y(#"\\M-OB":)g(next-history)390 3367 y(#)390 3477 -y(#)47 b(Arrow)g(keys)f(in)i(ANSI)e(mode)390 3587 y(#)390 -3696 y("\\M-[D":)380 b(backward-char)390 3806 y("\\M-[C":)g -(forward-char)390 3915 y("\\M-[A":)g(previous-history)390 -4025 y("\\M-[B":)g(next-history)390 4134 y(#)390 4244 -y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390 -4354 y(#)390 4463 y(#"\\M-\\C-OD":)331 b(backward-char)390 -4573 y(#"\\M-\\C-OC":)g(forward-char)390 4682 y(#"\\M-\\C-OA":)g -(previous-history)390 4792 y(#"\\M-\\C-OB":)g(next-history)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: 114 120 -TeXDict begin 114 119 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(114)390 299 y Fs(#"\\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) -g(default.)390 1176 y(TAB:)g(complete)390 1395 y(#)g(Macros)g(that)f -(are)h(convenient)e(for)i(shell)f(interaction)390 1504 -y($if)h(Bash)390 1614 y(#)g(edit)g(the)g(path)390 1724 -y("\\C-xp":)f("PATH=${PATH}\\e\\C-e\\C-a)o(\\ef)o(\\C-f)o(")390 -1833 y(#)h(prepare)f(to)h(type)g(a)h(quoted)e(word)g(--)390 -1943 y(#)h(insert)g(open)f(and)h(close)f(double)h(quotes)390 -2052 y(#)g(and)g(move)g(to)g(just)g(after)f(the)h(open)g(quote)390 -2162 y("\\C-x\\"":)e("\\"\\"\\C-b")390 2271 y(#)i(insert)g(a)g -(backslash)e(\(testing)h(backslash)f(escapes)390 2381 -y(#)i(in)h(sequences)d(and)i(macros\))390 2491 y("\\C-x\\\\":)e("\\\\") -390 2600 y(#)i(Quote)g(the)g(current)f(or)h(previous)e(word)390 -2710 y("\\C-xq":)h("\\eb\\"\\ef\\"")390 2819 y(#)h(Add)g(a)h(binding)e -(to)h(refresh)f(the)h(line,)f(which)g(is)h(unbound)390 -2929 y("\\C-xr":)f(redraw-current-line)390 3039 y(#)h(Edit)g(variable)f -(on)h(current)f(line.)390 3148 y("\\M-\\C-v":)f -("\\C-a\\C-k$\\C-y\\M-\\C-e\\C-)o(a\\C-)o(y=")390 3258 -y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h -(available)390 3587 y(set)f(bell-style)e(visible)390 -3806 y(#)i(don't)g(strip)f(characters)f(to)i(7)h(bits)e(when)h(reading) -390 3915 y(set)g(input-meta)e(on)390 4134 y(#)i(allow)g(iso-latin1)e -(characters)g(to)i(be)g(inserted)f(rather)390 4244 y(#)h(than)g -(converted)e(to)j(prefix-meta)c(sequences)390 4354 y(set)j -(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g -(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h -(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390 -5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f -(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: 115 121 -TeXDict begin 115 120 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(115)390 299 y Fs(#)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 1075 y Fr(8.4)68 b(Bindable)45 b(Readline)i(Commands) -150 1235 y Ft(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 1344 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d -(b)m(y)h(executing)i Fs(bind)29 b(-P)39 b Ft(or,)j(for)d(a)h(more)g -(terse)g(format,)i(suitable)e(for)f(an)150 1454 y Fq(inputrc)34 -b Ft(\014le,)29 b Fs(bind)g(-p)p Ft(.)40 b(\(See)30 b(Section)f(4.2)h -([Bash)g(Builtins],)g(page)g(47.\))41 b(Command)28 b(names)h(without) -150 1563 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 1696 y(In)25 b(the)h(follo)m(wing)i -(descriptions,)f Fq(p)s(oin)m(t)h Ft(refers)e(to)h(the)f(curren)m(t)g -(cursor)g(p)s(osition,)h(and)f Fq(mark)31 b Ft(refers)150 -1805 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g -Fs(set-mark)d Ft(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 1915 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f -Fq(region)p Ft(.)150 2110 y Fj(8.4.1)63 b(Commands)42 -b(F)-10 b(or)41 b(Mo)m(ving)150 2280 y Fs(beginning-of-line)26 -b(\(C-a\))630 2390 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f -(curren)m(t)g(line.)150 2545 y Fs(end-of-line)d(\(C-e\))630 -2655 y Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2810 y Fs(forward-char)c(\(C-f\))630 2920 y Ft(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3075 y Fs(backward-char)c(\(C-b\)) -630 3185 y Ft(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3340 y Fs(forward-word)d(\(M-f\))630 3450 y Ft(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 -3559 y(digits.)150 3715 y Fs(backward-word)27 b(\(M-b\))630 -3824 y Ft(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 3934 y(of)d(letters)g(and)f(digits.)150 -4089 y Fs(shell-forward-word)25 b(\(\))630 4199 y Ft(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 -4308 y(shell)j(metac)m(haracters.)150 4464 y Fs(shell-backward-word)25 -b(\(\))630 4573 y Ft(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 4683 y(b)m(y)30 b(non-quoted)h(shell)f -(metac)m(haracters.)150 4838 y Fs(clear-screen)d(\(C-l\))630 -4948 y Ft(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 -5057 y(of)k(the)f(screen.)150 5213 y Fs(redraw-current-line)25 -b(\(\))630 5322 y Ft(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: 116 122 -TeXDict begin 116 121 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(116)150 299 y Fj(8.4.2)63 -b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150 -473 y Fs(accept-line)27 b(\(Newline)h(or)i(Return\))630 -582 y Ft(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 Fs(HISTCONTROL)d Ft(and)j -Fs(HISTIGNORE)630 802 y Ft(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 Fs(previous-history)26 b(\(C-p\))630 1184 -y Ft(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 Fs(next-history)d -(\(C-n\))630 1457 y Ft(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 Fs(beginning-of-history)25 b(\(M-<\))630 1730 -y Ft(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 Fs(end-of-history)26 b(\(M->\))630 2004 -y Ft(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 Fs(reverse-search-history)24 b(\(C-r\))630 2277 -y Ft(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 Fs(forward-search-history)24 -b(\(C-s\))630 2659 y Ft(Searc)m(h)30 b(forw)m(ard)f(starting)h(at)g -(the)g(curren)m(t)f(line)h(and)f(mo)m(ving)h(`do)m(wn')f(through)g(the) -h(the)630 2769 y(history)g(as)h(necessary)-8 b(.)41 b(This)30 -b(is)g(an)h(incremen)m(tal)g(searc)m(h.)150 2932 y Fs -(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24 -b(\(M-p\))630 3042 y Ft(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.)150 3425 y Fs(non-incremental-forward-)o(sear)o(ch-h)o -(ist)o(ory)24 b(\(M-n\))630 3534 y Ft(Searc)m(h)30 b(forw)m(ard)f -(starting)h(at)g(the)g(curren)m(t)f(line)h(and)f(mo)m(ving)h(`do)m(wn') -f(through)g(the)h(the)630 3644 y(history)d(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.)150 3917 y Fs(history-search-forward)d(\(\))630 -4027 y Ft(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 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 Fs(history-search-backward)24 b(\(\))630 4629 -y Ft(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.) -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 Fs(history-substr-search-fo)o(rwar)o(d)24 b(\(\))630 -5230 y Ft(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 -(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: 117 123 -TeXDict begin 117 122 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(117)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 586 y Fs(history-substr-search-ba)o(ckwa) -o(rd)24 b(\(\))630 696 y Ft(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 806 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 915 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 1025 y(is)e(un)m(b)s(ound.)150 -1203 y Fs(yank-nth-arg)d(\(M-C-y\))630 1312 y Ft(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 1422 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 Fq(n)p Ft(,)g(insert)g(the)g Fq(n)p -Ft(th)f(w)m(ord)g(from)630 1531 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 -1641 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f(inserts)g(the)f -Fq(n)p Ft(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f(previous)630 -1750 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h Fq(n)e -Ft(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e(if)630 -1860 y(the)e(`)p Fs(!)p Fi(n)11 b Ft(')29 b(history)i(expansion)f(had)g -(b)s(een)f(sp)s(eci\014ed.)150 2038 y Fs(yank-last-arg)e(\(M-.)i(or)h -(M-_\))630 2148 y Ft(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 -2257 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 Fs(yank-nth-arg)p -Ft(.)630 2367 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c -Ft(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i -(inserting)630 2476 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 2586 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 2695 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 2805 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 2915 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 Fs(!$)p Ft(')f(history)g(expansion) -h(had)f(b)s(een)630 3024 y(sp)s(eci\014ed.)150 3242 y -Fj(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 -b(ext)150 3423 y Fs(delete-char)27 b(\(C-d\))630 3533 -y Ft(Delete)41 b(the)e(c)m(haracter)i(at)e(p)s(oin)m(t.)66 -b(If)39 b(p)s(oin)m(t)f(is)h(at)h(the)f(b)s(eginning)f(of)h(the)g -(line,)j(there)630 3642 y(are)37 b(no)g(c)m(haracters)i(in)d(the)i -(line,)h(and)d(the)h(last)h(c)m(haracter)h(t)m(yp)s(ed)e(w)m(as)g(not)g -(b)s(ound)e(to)630 3752 y Fs(delete-char)p Ft(,)28 b(then)i(return)f -Fl(eof)p Ft(.)150 3930 y Fs(backward-delete-char)c(\(Rubout\))630 -4039 y Ft(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 -4149 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150 -4327 y Fs(forward-backward-delete-)o(char)24 b(\(\))630 -4436 y Ft(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 -4546 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 -4655 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 -4833 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 4943 -y Ft(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 -5053 y(sequences)d(lik)m(e)g Fi(C-q)p Ft(,)f(for)g(example.)150 -5230 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630 -5340 y Ft(Insert)g(y)m(ourself.)p eop end -%%Page: 118 124 -TeXDict begin 118 123 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(118)150 299 y Fs(transpose-chars) -26 b(\(C-t\))630 408 y Ft(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 518 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 628 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 737 y(ha)m(v)m(e)32 -b(no)e(e\013ect.)150 907 y Fs(transpose-words)c(\(M-t\))630 -1016 y Ft(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 1126 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 1236 y(last)j(t)m(w)m(o)h(w)m -(ords)e(on)g(the)h(line.)150 1405 y Fs(upcase-word)c(\(M-u\))630 -1515 y Ft(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 -1624 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 1794 y Fs(downcase-word)d(\(M-l\))630 -1904 y Ft(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 2013 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 2183 y Fs(capitalize-word)26 -b(\(M-c\))630 2292 y Ft(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 2402 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 2571 y Fs(overwrite-mode)26 -b(\(\))630 2681 y Ft(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 2791 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 2900 y(insert)30 b(mo)s(de.)41 -b(This)30 b(command)h(a\013ects)h(only)e Fs(emacs)f Ft(mo)s(de;)i -Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 3010 -y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f -Fs(readline\(\))c Ft(starts)k(in)f(insert)g(mo)s(de.)630 -3149 y(In)e(o)m(v)m(erwrite)j(mo)s(de,)e(c)m(haracters)i(b)s(ound)c(to) -j Fs(self-insert)c Ft(replace)k(the)g(text)g(at)g(p)s(oin)m(t)630 -3259 y(rather)41 b(than)h(pushing)e(the)i(text)g(to)g(the)g(righ)m(t.) -75 b(Characters)42 b(b)s(ound)d(to)j Fs(backward-)630 -3369 y(delete-char)27 b Ft(replace)32 b(the)e(c)m(haracter)i(b)s(efore) -e(p)s(oin)m(t)h(with)f(a)g(space.)630 3508 y(By)h(default,)f(this)h -(command)f(is)g(un)m(b)s(ound.)150 3718 y Fj(8.4.4)63 -b(Killing)42 b(And)e(Y)-10 b(anking)150 3895 y Fs(kill-line)28 -b(\(C-k\))630 4004 y Ft(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 4174 y Fs(backward-kill-line)25 -b(\(C-x)30 b(Rubout\))630 4283 y Ft(Kill)h(bac)m(kw)m(ard)g(to)g(the)f -(b)s(eginning)g(of)g(the)h(line.)150 4453 y Fs(unix-line-discard)26 -b(\(C-u\))630 4562 y Ft(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 -4732 y Fs(kill-whole-line)c(\(\))630 4842 y Ft(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 -4951 y(this)30 b(is)h(un)m(b)s(ound.)150 5121 y Fs(kill-word)d(\(M-d\)) -630 5230 y Ft(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 5340 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 Fs(forward-word)p -Ft(.)p eop end -%%Page: 119 125 -TeXDict begin 119 124 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(119)150 299 y Fs -(backward-kill-word)25 b(\(M-DEL\))630 408 y Ft(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 Fs(backward-word)p Ft(.)150 569 y -Fs(shell-kill-word)d(\(\))630 679 y Ft(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 788 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 -Fs(shell-forward-word)p Ft(.)150 949 y Fs(shell-backward-kill-word)24 -b(\(\))630 1059 y Ft(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 -Fs(shell-backward-)630 1168 y(word)p Ft(.)150 1329 y -Fs(unix-word-rubout)k(\(C-w\))630 1438 y Ft(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 1548 y(text)g(is)g(sa)m(v) -m(ed)g(on)g(the)f(kill-ring.)150 1709 y Fs(unix-filename-rubout)25 -b(\(\))630 1818 y Ft(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 1928 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 -2089 y Fs(delete-horizontal-space)24 b(\(\))630 2198 -y Ft(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 2359 -y Fs(kill-region)d(\(\))630 2469 y Ft(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 2629 y Fs(copy-region-as-kill)25 b(\(\))630 -2739 y Ft(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 2848 y(By)31 b(default,)f(this)h(command)f -(is)g(un)m(b)s(ound.)150 3009 y Fs(copy-backward-word)25 -b(\(\))630 3119 y Ft(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 3228 y(same)31 b(as)f Fs(backward-word)p -Ft(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150 -3389 y Fs(copy-forward-word)26 b(\(\))630 3499 y Ft(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 -3608 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30 -b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150 -3769 y Fs(yank)f(\(C-y\))630 3878 y Ft(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 4039 y Fs(yank-pop)d(\(M-y\))630 4149 -y Ft(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 -4258 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p -Ft(.)150 4459 y Fj(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m -(ts)150 4631 y Fs(digit-argument)26 b(\()p Fi(M-0)p Fs(,)j -Fi(M-1)p Fs(,)h(...)f Fi(M--)p Fs(\))630 4741 y Ft(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 4851 y Fi(M--)j Ft(starts)i(a)g(negativ)m(e)i -(argumen)m(t.)150 5011 y Fs(universal-argument)25 b(\(\))630 -5121 y Ft(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 5230 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 -5340 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 Fs(universal-argument)p eop -end -%%Page: 120 126 -TeXDict begin 120 125 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(120)630 299 y(again)33 -b(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 408 -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 518 -y(or)28 b(min)m(us)f(sign,)i(the)f(argumen)m(t)g(coun)m(t)h(for)e(the)i -(next)f(command)f(is)h(m)m(ultiplied)h(b)m(y)e(four.)630 -628 y(The)37 b(argumen)m(t)h(coun)m(t)f(is)h(initially)h(one,)g(so)f -(executing)g(this)f(function)g(the)h(\014rst)e(time)630 -737 y(mak)m(es)d(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)i(second)e -(time)i(mak)m(es)f(the)g(argumen)m(t)g(coun)m(t)h(six-)630 -847 y(teen,)e(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h -(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150 1052 y Fj(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 1226 y Fs(complete)28 b(\(TAB\))630 -1336 y Ft(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 -1445 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 -1555 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 Fs($)p Ft('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e -(with)630 1665 y(`)p Fs(~)p Ft('\),)31 b(hostname)f(\(if)g(the)g(text)h -(b)s(egins)e(with)h(`)p Fs(@)p Ft('\),)h(or)f(command)f(\(including)h -(aliases)i(and)630 1774 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 1884 y(attempted.)150 2049 y Fs -(possible-completions)25 b(\(M-?\))630 2158 y Ft(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 2268 -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 2378 y Fs(completion-display-width)o Ft(,)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 Fs(COLUMNS)p Ft(,)630 2487 y(or)30 b(the)h(screen)f(width,)g(in)g -(that)h(order.)150 2652 y Fs(insert-completions)25 b(\(M-*\))630 -2762 y Ft(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 -2871 y(b)m(y)g Fs(possible-completions)p Ft(.)150 3036 -y Fs(menu-complete)d(\(\))630 3146 y Ft(Similar)d(to)g -Fs(complete)p Ft(,)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 3255 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 Fs(menu-complete)630 3365 y Ft(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 3475 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 3584 y(of)f Fs(bell-style)p -Ft(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57 -b(An)36 b(argumen)m(t)h(of)f Fq(n)f Ft(mo)m(v)m(es)i -Fq(n)630 3694 y Ft(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 3803 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 3913 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m -(y)i(default.)150 4078 y Fs(menu-complete-backward)24 -b(\(\))630 4188 y Ft(Iden)m(tical)36 b(to)g Fs(menu-complete)p -Ft(,)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 4297 y(completions,)d(as)e(if)h Fs(menu-complete)26 -b Ft(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150 -4462 y Fs(delete-char-or-list)25 b(\(\))630 4572 y Ft(Deletes)k(the)e -(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)g(b)s -(eginning)g(or)f(end)h(of)g(the)g(line)630 4681 y(\(lik)m(e)k -Fs(delete-char)p Ft(\).)37 b(If)29 b(at)h(the)f(end)f(of)i(the)f(line,) -h(b)s(eha)m(v)m(es)g(iden)m(tically)h(to)e Fs(possible-)630 -4791 y(completions)p Ft(.)38 b(This)29 b(command)h(is)h(un)m(b)s(ound)d -(b)m(y)i(default.)150 4956 y Fs(complete-filename)c(\(M-/\))630 -5065 y Ft(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 5230 y Fs(possible-filename-comple)o -(tion)o(s)24 b(\(C-x)30 b(/\))630 5340 y Ft(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.)p eop end -%%Page: 121 127 -TeXDict begin 121 126 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(121)150 299 y Fs -(complete-username)26 b(\(M-~\))630 408 y Ft(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 569 y Fs(possible-username-comple)o(tion)o -(s)24 b(\(C-x)30 b(~\))630 679 y Ft(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 839 y Fs(complete-variable)h(\(M-$\))630 -949 y Ft(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 -1110 y Fs(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 -b($\))630 1219 y Ft(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 1329 y(v)-5 b(ariable.)150 1490 y Fs(complete-hostname)26 -b(\(M-@\))630 1599 y Ft(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 -1760 y Fs(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30 -b(@\))630 1869 y Ft(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 2030 y Fs(complete-command)h(\(M-!\))630 -2140 y Ft(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 -2249 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 2359 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 2469 y(order.)150 -2629 y Fs(possible-command-complet)o(ions)24 b(\(C-x)29 -b(!\))630 2739 y Ft(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 -2848 y(name.)150 3009 y Fs(dynamic-complete-history)e(\(M-TAB\))630 -3119 y Ft(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 -3228 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i -(matc)m(hes.)150 3389 y Fs(dabbrev-expand)26 b(\(\))630 -3499 y Ft(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 -3608 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e -(completion)j(matc)m(hes.)150 3769 y Fs(complete-into-braces)25 -b(\(M-{\))630 3878 y Ft(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 -3988 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 4098 y(pansion],)30 b(page)h(21\).)150 4298 -y Fj(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4471 y Fs(start-kbd-macro) -26 b(\(C-x)j(\(\))630 4580 y Ft(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 4741 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 -4851 y Ft(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 4960 y(de\014nition.)150 5121 y Fs(call-last-kbd-macro)c -(\(C-x)k(e\))630 5230 y Ft(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 5340 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.)p eop end -%%Page: 122 128 -TeXDict begin 122 127 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(122)150 299 y Fs -(print-last-kbd-macro)25 b(\(\))630 408 y Ft(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 Fq(inputrc)k Ft(\014le.)150 604 -y Fj(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150 -774 y Fs(re-read-init-file)26 b(\(C-x)j(C-r\))630 884 -y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g -Fq(inputrc)27 b Ft(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d -(or)i(v)-5 b(ariable)630 994 y(assignmen)m(ts)31 b(found)e(there.)150 -1150 y Fs(abort)g(\(C-g\))630 1259 y Ft(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 1369 y(setting)j(of)g Fs(bell-style)p -Ft(\).)150 1525 y Fs(do-uppercase-version)25 b(\(M-a,)k(M-b,)g(M-)p -Fi(x)11 b Fs(,)29 b(...)o(\))630 1634 y Ft(If)e(the)h(meta\014ed)g(c)m -(haracter)h Fq(x)34 b Ft(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 1744 y(corresp)s(onding) -g(upp)s(ercase)h(c)m(haracter.)150 1900 y Fs(prefix-meta)d(\(ESC\))630 -2010 y Ft(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 2119 y(T)m(yping)30 b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5 -b(alen)m(t)31 b(to)g(t)m(yping)g Fi(M-f)p Ft(.)150 2275 -y Fs(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2385 y Ft(Incremen)m(tal)h -(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150 -2541 y Fs(revert-line)27 b(\(M-r\))630 2650 y Ft(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 Fs(undo)f Ft(command)630 -2760 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.) -150 2916 y Fs(tilde-expand)d(\(M-&\))630 3026 y Ft(P)m(erform)j(tilde)h -(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 3182 -y Fs(set-mark)d(\(C-@\))630 3291 y Ft(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 3401 y(to)f(that)g(p)s(osition.) -150 3557 y Fs(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630 -3666 y Ft(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 3776 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 3932 -y Fs(character-search)26 b(\(C-]\))630 4042 y Ft(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 4151 y(A)30 -b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s -(ccurrences.)150 4307 y Fs(character-search-backwar)o(d)24 -b(\(M-C-]\))630 4417 y Ft(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 4526 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f -(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150 -4682 y Fs(skip-csi-sequence)d(\(\))630 4792 y Ft(Read)i(enough)f(c)m -(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f -(as)g(those)h(de\014ned)630 4902 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g -(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m -(trol)g(Sequence)630 5011 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59 -b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Fs("\\)p -Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 5121 y(ducing)31 -b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e -(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 5230 y(command,)f -(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f -(editing)h(bu\013er.)44 b(This)31 b(is)630 5340 y(un)m(b)s(ound)d(b)m -(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)p -eop end -%%Page: 123 129 -TeXDict begin 123 128 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(123)150 299 y Fs(insert-comment)26 -b(\(M-#\))630 408 y Ft(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 Fs(comment-begin)c -Ft(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s -(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31 -b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628 -y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37 -b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630 -737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f -Fs(comment-begin)p Ft(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g -(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Fs(comment-begin)e -Ft(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71 -b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e -(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 -b(default)630 1066 y(v)-5 b(alue)32 b(of)g Fs(comment-begin)c -Ft(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g -(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f -(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f -(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b) -m(y)f(the)h(shell.)150 1443 y Fs(dump-functions)26 b(\(\))630 -1553 y Ft(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey) -h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630 -1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h -(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 -1772 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fq(inputrc)k -Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k -(default.)150 1931 y Fs(dump-variables)26 b(\(\))630 -2040 y Ft(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5 -b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h -(output)f(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is) -g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a) -m(y)g(that)630 2259 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h -Fq(inputrc)k Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c -(b)m(y)k(default.)150 2418 y Fs(dump-macros)c(\(\))630 -2527 y Ft(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences) -f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630 -2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e -(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630 -2746 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e -Fq(inputrc)35 b Ft(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound) -d(b)m(y)630 2856 y(default.)150 3014 y Fs(glob-complete-word)e(\(M-g\)) -630 3124 y Ft(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h -(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630 -3233 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23 -b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630 -3343 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150 -3501 y Fs(glob-expand-word)c(\(C-x)j(*\))630 3611 y Ft(The)40 -b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g -(for)f(pathname)g(expansion,)k(and)630 3720 y(the)c(list)g(of)f(matc)m -(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67 -b(If)39 b(a)h(n)m(umeric)630 3830 y(argumen)m(t)31 b(is)f(supplied,)g -(a)g(`)p Fs(*)p Ft(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)150 3988 y Fs(glob-list-expansions)25 b(\(C-x)k(g\))630 -4098 y Ft(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 Fs(glob-expand-word)630 -4208 y Ft(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 -Fs(*)p Ft(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g -(expansion.)150 4475 y Fs(display-shell-version)25 b(\(C-x)k(C-v\))630 -4585 y Ft(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h -(curren)m(t)f(instance)h(of)f(Bash.)150 4743 y Fs(shell-expand-line)c -(\(M-C-e\))630 4853 y Ft(Expand)34 b(the)h(line)h(as)g(the)f(shell)h -(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g -(expansion)630 4963 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m -(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 -5072 y(page)e(20\).)150 5230 y Fs(history-expand-line)25 -b(\(M-^\))630 5340 y Ft(P)m(erform)30 b(history)h(expansion)f(on)g(the) -h(curren)m(t)f(line.)p eop end -%%Page: 124 130 -TeXDict begin 124 129 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fs(magic-space)27 -b(\(\))630 408 y Ft(P)m(erform)c(history)g(expansion)g(on)g(the)g -(curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3) -630 518 y([History)31 b(In)m(teraction],)i(page)e(135\).)150 -686 y Fs(alias-expand-line)26 b(\(\))630 796 y Ft(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(87\).)150 964 y Fs(history-and-alias-expand)o -(-lin)o(e)24 b(\(\))630 1074 y Ft(P)m(erform)30 b(history)h(and)e -(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 -1242 y Fs(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 -1352 y Ft(A)g(synon)m(ym)g(for)g Fs(yank-last-arg)p Ft(.)150 -1520 y Fs(operate-and-get-next)25 b(\(C-o\))630 1630 -y Ft(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 -1739 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 1908 y -Fs(edit-and-execute-command)24 b(\(C-xC-e\))630 2017 -y Ft(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 -2127 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h -Fs($VISUAL)p Ft(,)f Fs($EDITOR)p Ft(,)h(and)d Fs(emacs)g -Ft(as)h(the)630 2236 y(editor,)31 b(in)f(that)h(order.)150 -2482 y Fr(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2642 -y Ft(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 Fs(vi)f Ft(editing)h(functions,)f(it)h(do)s(es)g -(con)m(tain)150 2751 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 Fs(vi)g Ft(mo)s(de)f(b)s(eha)m(v) -m(es)i(as)f(sp)s(eci\014ed)f(in)150 2861 y(the)e Fl(posix)e -Ft(standard.)275 3004 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 Fs(emacs)f Ft(and)g Fs(vi)g -Ft(editing)h(mo)s(des,)h(use)f(the)g(`)p Fs(set)30 b(-o)150 -3114 y(emacs)p Ft(')43 b(and)h(`)p Fs(set)30 b(-o)f(vi)p -Ft(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j -(page)e(57\).)83 b(The)150 3223 y(Readline)31 b(default)g(is)f -Fs(emacs)f Ft(mo)s(de.)275 3367 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f -(in)g Fs(vi)f Ft(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 3476 y(had)f(t)m(yp)s -(ed)g(an)g(`)p Fs(i)p Ft('.)41 b(Pressing)29 b Fs(ESC)f -Ft(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 3586 y(text)35 b(of)f(the)g(line)g(with)f -(the)h(standard)f Fs(vi)g Ft(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 3695 y(`)p -Fs(k)p Ft(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p -Fs(j)p Ft(',)g(and)g(so)h(forth.)150 3941 y Fr(8.6)68 -b(Programmable)47 b(Completion)150 4101 y Ft(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 4210 -y(sp)s(eci\014cation)40 b(\(a)h Fq(compsp)s(ec)6 b Ft(\))39 -b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Fs(complete)d -Ft(builtin)j(\(see)g(Section)h(8.7)150 4320 y([Programmable)h -(Completion)f(Builtins],)k(page)d(126\),)j(the)c(programmable)g -(completion)i(facilities)150 4429 y(are)31 b(in)m(v)m(ok)m(ed.)275 -4573 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 4682 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 4792 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 4902 y(line\),)28 b(an)m(y)e(compsp)s(ec)f(de\014ned)g -(with)g(the)h(`)p Fs(-E)p Ft(')f(option)i(to)f Fs(complete)e -Ft(is)h(used.)39 b(If)25 b(the)h(command)f(w)m(ord)150 -5011 y(is)i(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 5121 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 5230 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 5340 y(the)e(`)p Fs(-D)p Ft(')f(option)h(to)g -Fs(complete)d Ft(is)i(used)g(as)g(the)h(default.)p eop -end -%%Page: 125 131 -TeXDict begin 125 130 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(125)275 299 y(Once)34 -b(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 408 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 518 y([Commands)30 b(F)-8 b(or)31 b(Completion],)g(page)g -(120\))h(is)f(p)s(erformed.)275 655 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 -765 y(b)m(y)25 b(the)h(w)m(ord)f(b)s(eing)f(completed)j(are)e -(returned.)38 b(When)25 b(the)h(`)p Fs(-f)p Ft(')f(or)g(`)p -Fs(-d)p Ft(')g(option)h(is)f(used)g(for)g(\014lename)150 -874 y(or)30 b(directory)h(name)f(completion,)i(the)e(shell)h(v)-5 -b(ariable)31 b Fs(FIGNORE)d Ft(is)i(used)f(to)i(\014lter)g(the)f(matc)m -(hes.)42 b(See)150 984 y(Section)31 b(5.2)h([Bash)e(V)-8 -b(ariables],)33 b(page)e(68,)g(for)f(a)h(description)g(of)f -Fs(FIGNORE)p Ft(.)275 1121 y(An)m(y)f(completions)h(sp)s(eci\014ed)f(b) -m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g(`)p -Fs(-G)p Ft(')f(option)h(are)f(gener-)150 1230 y(ated)h(next.)40 -b(The)29 b(w)m(ords)g(generated)h(b)m(y)f(the)h(pattern)f(need)g(not)g -(matc)m(h)i(the)e(w)m(ord)g(b)s(eing)g(completed.)150 -1340 y(The)42 b Fs(GLOBIGNORE)d Ft(shell)k(v)-5 b(ariable)43 -b(is)f(not)h(used)e(to)i(\014lter)f(the)h(matc)m(hes,)j(but)c(the)g -Fs(FIGNORE)f Ft(shell)150 1450 y(v)-5 b(ariable)31 b(is)g(used.)275 -1587 y(Next,)k(the)g(string)e(sp)s(eci\014ed)h(as)g(the)g(argumen)m(t)g -(to)h(the)f(`)p Fs(-W)p Ft(')g(option)g(is)g(considered.)52 -b(The)33 b(string)150 1696 y(is)g(\014rst)e(split)i(using)f(the)h(c)m -(haracters)h(in)e(the)h Fs(IFS)e Ft(sp)s(ecial)j(v)-5 -b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150 -1806 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 -1915 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 2025 y(ab)s(o)m(v)m(e)38 b(\(see)f(Section)h(3.5)g([Shell)e -(Expansions],)i(page)f(20\).)61 b(The)36 b(results)h(are)g(split)f -(using)h(the)f(rules)150 2134 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(28\).) -42 b(The)30 b(results)f(of)h(the)g(expansion)150 2244 -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 -2354 y(p)s(ossible)g(completions.)275 2491 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 2600 y(the)i(`)p -Fs(-F)p Ft(')g(and)f(`)p Fs(-C)p Ft(')h(options)g(is)g(in)m(v)m(ok)m -(ed.)41 b(When)30 b(the)g(command)g(or)f(function)h(is)g(in)m(v)m(ok)m -(ed,)h(the)f Fs(COMP_)150 2710 y(LINE)p Ft(,)42 b Fs(COMP_POINT)p -Ft(,)d Fs(COMP_KEY)p Ft(,)i(and)e Fs(COMP_TYPE)f Ft(v)-5 -b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed) -150 2819 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(68\).)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 2929 y Fs(COMP_WORDS)j -Ft(and)i Fs(COMP_CWORD)d Ft(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 3039 -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 -3148 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 -3258 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 3367 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 3477 y(function)d(or)g(command)h(has)f(complete)i(freedom)e -(in)g(generating)h(the)g(matc)m(hes.)275 3614 y(An)m(y)g(function)h(sp) -s(eci\014ed)f(with)g(`)p Fs(-F)p Ft(')h(is)g(in)m(v)m(ok)m(ed)h -(\014rst.)44 b(The)31 b(function)h(ma)m(y)g(use)g(an)m(y)g(of)g(the)g -(shell)150 3724 y(facilities,)50 b(including)44 b(the)h -Fs(compgen)d Ft(and)i Fs(compopt)e Ft(builtins)i(describ)s(ed)f(b)s -(elo)m(w)h(\(see)i(Section)f(8.7)150 3833 y([Programmable)31 -b(Completion)h(Builtins],)f(page)h(126\),)g(to)g(generate)g(the)f(matc) -m(hes.)42 b(It)31 b(m)m(ust)g(put)f(the)150 3943 y(p)s(ossible)g -(completions)h(in)f(the)h Fs(COMPREPLY)d Ft(arra)m(y)j(v)-5 -b(ariable,)31 b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 -4080 y(Next,)23 b(an)m(y)e(command)f(sp)s(eci\014ed)g(with)g(the)h(`)p -Fs(-C)p Ft(')f(option)h(is)g(in)m(v)m(ok)m(ed)h(in)e(an)g(en)m -(vironmen)m(t)h(equiv)-5 b(alen)m(t)150 4189 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 -4299 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 -4436 y(After)42 b(all)g(of)g(the)g(p)s(ossible)g(completions)h(are)f -(generated,)k(an)m(y)c(\014lter)g(sp)s(eci\014ed)f(with)h(the)g(`)p -Fs(-X)p Ft(')150 4545 y(option)34 b(is)f(applied)g(to)h(the)f(list.)49 -b(The)33 b(\014lter)g(is)g(a)h(pattern)f(as)g(used)g(for)g(pathname)g -(expansion;)h(a)g(`)p Fs(&)p Ft(')150 4655 y(in)39 b(the)g(pattern)g -(is)g(replaced)g(with)g(the)g(text)h(of)f(the)g(w)m(ord)g(b)s(eing)f -(completed.)68 b(A)39 b(literal)h(`)p Fs(&)p Ft(')f(ma)m(y)150 -4765 y(b)s(e)e(escap)s(ed)h(with)g(a)h(bac)m(kslash;)k(the)38 -b(bac)m(kslash)h(is)f(remo)m(v)m(ed)h(b)s(efore)e(attempting)j(a)e -(matc)m(h.)65 b(An)m(y)150 4874 y(completion)35 b(that)g(matc)m(hes)g -(the)f(pattern)g(will)g(b)s(e)g(remo)m(v)m(ed)h(from)e(the)h(list.)53 -b(A)34 b(leading)g(`)p Fs(!)p Ft(')h(negates)150 4984 -y(the)c(pattern;)f(in)g(this)h(case)g(an)m(y)g(completion)g(not)g(matc) -m(hing)h(the)e(pattern)h(will)f(b)s(e)g(remo)m(v)m(ed.)275 -5121 y(Finally)-8 b(,)33 b(an)m(y)f(pre\014x)f(and)g(su\016x)g(sp)s -(eci\014ed)g(with)h(the)g(`)p Fs(-P)p Ft(')f(and)g(`)p -Fs(-S)p Ft(')h(options)g(are)g(added)f(to)i(eac)m(h)150 -5230 y(mem)m(b)s(er)e(of)g(the)h(completion)h(list,)f(and)f(the)h -(result)f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de) -150 5340 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)p -eop end -%%Page: 126 132 -TeXDict begin 126 131 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(126)275 299 y(If)22 -b(the)i(previously-applied)f(actions)i(do)e(not)h(generate)h(an)m(y)f -(matc)m(hes,)i(and)d(the)g(`)p Fs(-o)30 b(dirnames)p -Ft(')22 b(op-)150 408 y(tion)29 b(w)m(as)f(supplied)f(to)i -Fs(complete)d Ft(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g -(directory)g(name)h(completion)150 518 y(is)h(attempted.)275 -654 y(If)g(the)i(`)p Fs(-o)e(plusdirs)p Ft(')f(option)j(w)m(as)f -(supplied)f(to)i Fs(complete)e Ft(when)g(the)h(compsp)s(ec)g(w)m(as)h -(de\014ned,)150 764 y(directory)k(name)f(completion)i(is)e(attempted)h -(and)f(an)m(y)h(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h -(the)150 873 y(other)31 b(actions.)275 1010 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 1119 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 -1229 y(and)k(the)h(Readline)g(default)g(of)g(\014lename)g(completion)h -(is)f(disabled.)38 b(If)26 b(the)g(`)p Fs(-o)k(bashdefault)p -Ft(')22 b(option)150 1338 y(w)m(as)i(supplied)e(to)j -Fs(complete)c Ft(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 1448 y(attempted)f(if)f(the)g -(compsp)s(ec)g(generates)i(no)e(matc)m(hes.)39 b(If)23 -b(the)g(`)p Fs(-o)30 b(default)p Ft(')21 b(option)j(w)m(as)f(supplied)f -(to)150 1557 y Fs(complete)j Ft(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 1667 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 1803 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 -1913 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 -2022 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 Fq(mark-directories) -45 b Ft(Readline)c(v)-5 b(ariable,)150 2132 y(regardless)31 -b(of)f(the)h(setting)g(of)g(the)f Fq(mark-symlink)m(ed-directories)36 -b Ft(Readline)31 b(v)-5 b(ariable.)275 2268 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 -2378 y(used)37 b(in)h(com)m(bination)h(with)e(a)i(default)f(completion) -h(sp)s(eci\014ed)e(with)h(`)p Fs(-D)p Ft('.)63 b(It's)38 -b(p)s(ossible)f(for)h(shell)150 2487 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 2597 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 2707 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 2816 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 -2926 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 3035 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 3145 y(all)g(at)g(once.)275 3281 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 -3391 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 -3500 y(load)31 b(completions)g(dynamically:)390 3636 -y Fs(_completion_loader\(\))390 3746 y({)581 3856 y(.)47 -b("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g -(return)f(124)390 3965 y(})390 4075 y(complete)g(-D)h(-F)g -(_completion_loader)150 4310 y Fr(8.7)68 b(Programmable)47 -b(Completion)f(Builtins)150 4469 y Ft(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 4579 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 4688 y(to)e(mo)s(dify)f(the)g -(completion)i(as)e(it)h(is)g(happ)s(ening.)150 4850 y -Fs(compgen)870 4985 y(compgen)46 b([)p Fi(option)11 b -Fs(])45 b([)p Fi(word)11 b Fs(])630 5121 y Ft(Generate)27 -b(p)s(ossible)e(completion)i(matc)m(hes)g(for)e Fq(w)m(ord)k -Ft(according)e(to)f(the)g Fq(option)p Ft(s,)h(whic)m(h)630 -5230 y(ma)m(y)h(b)s(e)f(an)m(y)h(option)g(accepted)h(b)m(y)e(the)h -Fs(complete)d Ft(builtin)j(with)f(the)h(exception)g(of)g(`)p -Fs(-p)p Ft(')630 5340 y(and)k(`)p Fs(-r)p Ft(',)i(and)e(write)h(the)g -(matc)m(hes)h(to)g(the)f(standard)f(output.)48 b(When)33 -b(using)f(the)h(`)p Fs(-F)p Ft(')p eop end -%%Page: 127 133 -TeXDict begin 127 132 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(127)630 299 y(or)28 -b(`)p Fs(-C)p Ft(')g(options,)h(the)f(v)-5 b(arious)29 -b(shell)f(v)-5 b(ariables)29 b(set)f(b)m(y)g(the)g(programmable)h -(completion)630 408 y(facilities,)k(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 552 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 -662 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 771 y(the)e(same)h -(\015ags.)40 b(If)29 b Fq(w)m(ord)j Ft(is)d(sp)s(eci\014ed,)g(only)g -(those)h(completions)g(matc)m(hing)g Fq(w)m(ord)j Ft(will)630 -881 y(b)s(e)d(displa)m(y)m(ed.)630 1025 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 -1134 y(generated.)150 1313 y Fs(complete)870 1456 y(complete)46 -b([-abcdefgjksuv])d([-o)k Fi(comp-option)11 b Fs(])44 -b([-DE])i([-A)h Fi(action)11 b Fs(])46 b([-)870 1566 -y(G)h Fi(globpat)11 b Fs(])46 b([-W)g Fi(wordlist)11 -b Fs(])870 1676 y([-F)47 b Fi(function)11 b Fs(])45 b([-C)i -Fi(command)11 b Fs(])45 b([-X)i Fi(filterpat)11 b Fs(])870 -1785 y([-P)47 b Fi(prefix)11 b Fs(])45 b([-S)i Fi(suffix)11 -b Fs(])45 b Fi(name)58 b Fs([)p Fi(name)f Fs(...)o(])870 -1895 y(complete)46 b(-pr)g([-DE])h([)p Fi(name)57 b Fs(...)o(])630 -2039 y Ft(Sp)s(ecify)33 b(ho)m(w)h(argumen)m(ts)h(to)f(eac)m(h)i -Fq(name)j Ft(should)33 b(b)s(e)g(completed.)53 b(If)33 -b(the)i(`)p Fs(-p)p Ft(')e(option)630 2148 y(is)d(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 2258 y(prin)m(ted)43 b(in)h(a)g(w)m(a)m(y)h -(that)f(allo)m(ws)h(them)f(to)g(b)s(e)g(reused)f(as)h(input.)80 -b(The)43 b(`)p Fs(-r)p Ft(')g(option)630 2367 y(remo)m(v)m(es)29 -b(a)e(completion)i(sp)s(eci\014cation)e(for)g(eac)m(h)i -Fq(name)5 b Ft(,)28 b(or,)g(if)f(no)g Fq(name)5 b Ft(s)27 -b(are)h(supplied,)630 2477 y(all)46 b(completion)h(sp)s -(eci\014cations.)87 b(The)45 b(`)p Fs(-D)p Ft(')h(option)g(indicates)g -(that)g(the)g(remaining)630 2587 y(options)35 b(and)f(actions)h(should) -f(apply)g(to)h(the)g(\\default")g(command)f(completion;)k(that)630 -2696 y(is,)25 b(completion)g(attempted)g(on)e(a)h(command)f(for)g(whic) -m(h)h(no)f(completion)i(has)e(previously)630 2806 y(b)s(een)28 -b(de\014ned.)39 b(The)27 b(`)p Fs(-E)p Ft(')i(option)g(indicates)g -(that)g(the)g(remaining)f(options)h(and)f(actions)630 -2915 y(should)i(apply)i(to)g(\\empt)m(y")g(command)g(completion;)h -(that)f(is,)g(completion)h(attempted)630 3025 y(on)d(a)h(blank)f(line.) -630 3169 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 3278 -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 3388 -y(page)31 b(124\).)42 b(The)30 b(`)p Fs(-D)p Ft(')h(option)f(tak)m(es)i -(precedence)f(o)m(v)m(er)h(`)p Fs(-E)p Ft('.)630 3532 -y(Other)41 b(options,)46 b(if)41 b(sp)s(eci\014ed,)j(ha)m(v)m(e)f(the)f -(follo)m(wing)i(meanings.)75 b(The)41 b(argumen)m(ts)h(to)630 -3641 y(the)e(`)p Fs(-G)p Ft(',)j(`)p Fs(-W)p Ft(',)g(and)d(`)p -Fs(-X)p Ft(')g(options)g(\(and,)j(if)d(necessary)-8 b(,)44 -b(the)c(`)p Fs(-P)p Ft(')h(and)e(`)p Fs(-S)p Ft(')h(options\))630 -3751 y(should)30 b(b)s(e)h(quoted)g(to)h(protect)g(them)f(from)g -(expansion)g(b)s(efore)g(the)g Fs(complete)e Ft(builtin)630 -3861 y(is)h(in)m(v)m(ok)m(ed.)630 4039 y Fs(-o)g Fi(comp-option)1110 -4148 y Ft(The)c Fq(comp-option)i Ft(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 -4258 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h(generation)h(of)e -(completions.)41 b Fq(comp-option)27 b Ft(ma)m(y)1110 -4367 y(b)s(e)j(one)g(of:)1110 4545 y Fs(bashdefault)1590 -4655 y Ft(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h -(completions)g(if)g(the)1590 4765 y(compsp)s(ec)i(generates)i(no)e -(matc)m(hes.)1110 4943 y Fs(default)144 b Ft(Use)22 b(Readline's)g -(default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590 -5052 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 -5230 y Fs(dirnames)96 b Ft(P)m(erform)46 b(directory)g(name)h -(completion)g(if)f(the)g(compsp)s(ec)1590 5340 y(generates)32 -b(no)e(matc)m(hes.)p eop end -%%Page: 128 134 -TeXDict begin 128 133 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(128)1110 299 y Fs(filenames)1590 -408 y Ft(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f -(generates)j(\014lenames,)1590 518 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 -628 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s -(ecial)g(c)m(har-)1590 737 y(acters,)39 b(or)d(suppressing)f(trailing)i -(spaces\).)59 b(This)35 b(option)i(is)1590 847 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 956 y(`)p Fs(-F)p Ft('.)1110 1115 y Fs(noquote)144 -b Ft(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 1224 y(are)j(\014lenames)f(\(quoting)h -(\014lenames)g(is)f(the)h(default\).)1110 1383 y Fs(nospace)144 -b Ft(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 1492 y(w)m(ords)30 b(completed)h(at)g(the) -g(end)f(of)g(the)h(line.)1110 1650 y Fs(plusdirs)96 b -Ft(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 1760 y(ated,)g(directory)f(name)g(completion)i -(is)d(attempted)i(and)f(an)m(y)1590 1870 y(matc)m(hes)j(are)e(added)g -(to)h(the)g(results)f(of)g(the)h(other)g(actions.)630 -2028 y Fs(-A)f Fi(action)1110 2138 y Ft(The)25 b Fq(action)h -Ft(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 2247 y(completions:)1110 -2405 y Fs(alias)240 b Ft(Alias)31 b(names.)41 b(Ma)m(y)31 -b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i(`)p Fs(-a)p Ft('.)1110 -2564 y Fs(arrayvar)96 b Ft(Arra)m(y)31 b(v)-5 b(ariable)31 -b(names.)1110 2722 y Fs(binding)144 b Ft(Readline)30 -b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590 -2832 y(Readline)h(Commands],)f(page)h(115\).)1110 2990 -y Fs(builtin)144 b Ft(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 3099 -y(as)31 b(`)p Fs(-b)p Ft('.)1110 3258 y Fs(command)144 -b Ft(Command)29 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s -(eci\014ed)f(as)i(`)p Fs(-c)p Ft('.)1110 3416 y Fs(directory)1590 -3526 y Ft(Directory)h(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s -(eci\014ed)g(as)g(`)p Fs(-d)p Ft('.)1110 3684 y Fs(disabled)96 -b Ft(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110 -3842 y Fs(enabled)144 b Ft(Names)31 b(of)g(enabled)f(shell)g(builtins.) -1110 4001 y Fs(export)192 b Ft(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 -4110 y(\014ed)d(as)g(`)p Fs(-e)p Ft('.)1110 4268 y Fs(file)288 -b Ft(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f -(as)i(`)p Fs(-f)p Ft('.)1110 4427 y Fs(function)96 b -Ft(Names)31 b(of)g(shell)f(functions.)1110 4585 y Fs(group)240 -b Ft(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g -(as)g(`)p Fs(-g)p Ft('.)1110 4743 y Fs(helptopic)1590 -4853 y Ft(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h -Fs(help)f Ft(builtin)g(\(see)h(Sec-)1590 4963 y(tion)31 -b(4.2)g([Bash)g(Builtins],)g(page)g(47\).)1110 5121 y -Fs(hostname)96 b Ft(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 5230 y(the)55 b -Fs(HOSTFILE)e Ft(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h -([Bash)1590 5340 y(V)-8 b(ariables],)32 b(page)f(68\).)p -eop end -%%Page: 129 135 -TeXDict begin 129 134 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(129)1110 299 y Fs(job)336 -b Ft(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 408 y(\014ed)f(as)g(`)p -Fs(-j)p Ft('.)1110 577 y Fs(keyword)144 b Ft(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(`)p Fs(-k)p Ft('.)1110 745 y Fs(running)144 -b Ft(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f(con)m(trol)h(is)g -(activ)m(e.)1110 913 y Fs(service)144 b Ft(Service)31 -b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s(eci\014ed)g(as)g(`)p -Fs(-s)p Ft('.)1110 1081 y Fs(setopt)192 b Ft(V)-8 b(alid)34 -b(argumen)m(ts)f(for)f(the)h(`)p Fs(-o)p Ft(')g(option)g(to)h(the)f -Fs(set)e Ft(builtin)1590 1190 y(\(see)g(Section)h(4.3.1)g([The)e(Set)g -(Builtin],)i(page)f(57\).)1110 1358 y Fs(shopt)240 b -Ft(Shell)40 b(option)g(names)g(as)g(accepted)i(b)m(y)e(the)g -Fs(shopt)e Ft(builtin)1590 1468 y(\(see)31 b(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(47\).)1110 1636 y Fs(signal)192 -b Ft(Signal)31 b(names.)1110 1804 y Fs(stopped)144 b -Ft(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 1972 y Fs(user)288 b Ft(User)30 b(names.)41 -b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i(`)p -Fs(-u)p Ft('.)1110 2140 y Fs(variable)96 b Ft(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 2250 y(`)p -Fs(-v)p Ft('.)630 2418 y Fs(-C)30 b Fi(command)1110 2527 -y Fq(command)35 b Ft(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen) -m(t,)i(and)f(its)g(output)g(is)1110 2637 y(used)e(as)g(the)h(p)s -(ossible)f(completions.)630 2805 y Fs(-F)g Fi(function)1110 -2914 y Ft(The)39 b(shell)g(function)g Fq(function)g Ft(is)g(executed)h -(in)f(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 3024 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 3134 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 -3243 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 3353 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 -3462 y(page)30 b(124\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s -(ossible)g(completions)h(are)g(retriev)m(ed)1110 3572 -y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Fs(COMPREPLY)e -Ft(arra)m(y)j(v)-5 b(ariable.)630 3740 y Fs(-G)30 b Fi(globpat)1110 -3850 y Ft(The)39 b(\014lename)h(expansion)g(pattern)g -Fq(globpat)j Ft(is)d(expanded)f(to)h(generate)1110 3959 -y(the)31 b(p)s(ossible)e(completions.)630 4127 y Fs(-P)h -Fi(prefix)1110 4237 y Fq(pre\014x)39 b Ft(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 -4346 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -4514 y Fs(-S)g Fi(suffix)1110 4624 y Fq(su\016x)c Ft(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 4734 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 -4902 y Fs(-W)h Fi(wordlist)1110 5011 y Ft(The)24 b Fq(w)m(ordlist)k -Ft(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i -Fs(IFS)e Ft(sp)s(ecial)h(v)-5 b(ariable)1110 5121 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 5230 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 5340 y(w)m(ord)f(b)s(eing)g(completed.)p -eop end -%%Page: 130 136 -TeXDict begin 130 135 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(130)630 299 y Fs(-X)30 -b Fi(filterpat)1110 408 y Fq(\014lterpat)d Ft(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 518 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 628 y(and)d(argumen)m(ts,)i -(and)e(eac)m(h)i(completion)g(matc)m(hing)g Fq(\014lterpat)h -Ft(is)e(remo)m(v)m(ed)1110 737 y(from)i(the)h(list.)42 -b(A)30 b(leading)i(`)p Fs(!)p Ft(')e(in)g Fq(\014lterpat)j -Ft(negates)f(the)f(pattern;)g(in)f(this)1110 847 y(case,)i(an)m(y)e -(completion)i(not)f(matc)m(hing)g Fq(\014lterpat)i Ft(is)d(remo)m(v)m -(ed.)630 1038 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 1147 y(than)31 b(`)p Fs(-p)p Ft(')g(or)g(`)p -Fs(-r)p Ft(')g(is)g(supplied)f(without)h(a)g Fq(name)37 -b Ft(argumen)m(t,)32 b(an)f(attempt)h(is)f(made)g(to)630 -1257 y(remo)m(v)m(e)h(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)h -Fq(name)k Ft(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)630 -1366 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 1557 y Fs(compopt)870 1707 y(compopt)46 -b([-o)h Fi(option)11 b Fs(])45 b([-DE])h([+o)h Fi(option)11 -b Fs(])46 b([)p Fi(name)11 b Fs(])630 1858 y Ft(Mo)s(dify)33 -b(completion)h(options)g(for)f(eac)m(h)h Fq(name)39 b -Ft(according)34 b(to)g(the)f Fq(option)p Ft(s,)i(or)e(for)g(the)630 -1967 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f -Fq(name)5 b Ft(s)44 b(are)h(supplied.)80 b(If)43 b(no)h -Fq(option)p Ft(s)h(are)630 2077 y(giv)m(en,)30 b(displa)m(y)e(the)g -(completion)h(options)g(for)e(eac)m(h)i Fq(name)34 b -Ft(or)27 b(the)i(curren)m(t)e(completion.)630 2186 y(The)f(p)s(ossible) -g(v)-5 b(alues)27 b(of)f Fq(option)h Ft(are)g(those)g(v)-5 -b(alid)26 b(for)g(the)h Fs(complete)d Ft(builtin)i(describ)s(ed)630 -2296 y(ab)s(o)m(v)m(e.)40 b(The)23 b(`)p Fs(-D)p Ft(')i(option)f -(indicates)h(that)g(the)f(remaining)g(options)h(should)e(apply)h(to)h -(the)630 2406 y(\\default")33 b(command)f(completion;)i(that)f(is,)g -(completion)g(attempted)g(on)f(a)g(command)630 2515 y(for)c(whic)m(h)f -(no)h(completion)h(has)f(previously)g(b)s(een)f(de\014ned.)38 -b(The)28 b(`)p Fs(-E)p Ft(')g(option)g(indicates)630 -2625 y(that)c(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt) -m(y")g(command)e(completion;)k(that)630 2734 y(is,)k(completion)g -(attempted)h(on)e(a)h(blank)f(line.)630 2885 y(The)g(`)p -Fs(-D)p Ft(')g(option)h(tak)m(es)h(precedence)f(o)m(v)m(er)g(`)p -Fs(-E)p Ft('.)630 3035 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 3144 y(to)32 -b(mo)s(dify)f(the)g(options)h(for)f(a)h Fq(name)k Ft(for)31 -b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f(exists,)630 -3254 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 3534 -y Fr(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -3693 y Ft(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 3803 y(actions)29 b Fs(complete)d Ft(and)i -Fs(compgen)e Ft(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 3912 y(command)h(using)g -Fs(complete)e(-F)p Ft(.)275 4078 y(The)j(follo)m(wing)j(function)e(pro) -m(vides)g(completions)i(for)e(the)g Fs(cd)g Ft(builtin.)46 -b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 4188 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 -4297 y(w)m(ord)38 b(passsed)g(as)h Fs($2)g Ft(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 4407 y Fs(COMP_WORDS)28 -b Ft(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 Fs(COMP_CWORD)c Ft(v)-5 b(ariable.)275 -4573 y(The)42 b(function)h(relies)h(on)e(the)i Fs(complete)c -Ft(and)j Fs(compgen)e Ft(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h -(w)m(ork,)150 4682 y(adding)25 b(only)h(the)g(things)g(that)g(the)g -(Bash)g Fs(cd)f Ft(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e -(directory)g(names:)38 b(tilde)150 4792 y(expansion)21 -b(\(see)h(Section)g(3.5.2)h([Tilde)e(Expansion],)i(page)e(21\),)k -(searc)m(hing)d(directories)g(in)f Fq($CDP)-8 b(A)g(TH)10 -b Ft(,)150 4902 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(40\),)j -(and)c(basic)h(supp)s(ort)150 5011 y(for)31 b(the)h Fs(cdable_vars)d -Ft(shell)i(option)h(\(see)h(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],) -i(page)f(61\).)46 b Fs(_comp_)150 5121 y(cd)30 b Ft(mo)s(di\014es)g -(the)h(v)-5 b(alue)31 b(of)g Fq(IFS)36 b Ft(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 -5230 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Fs(compgen)e -Ft(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f -(p)s(er)150 5340 y(line.)p eop end -%%Page: 131 137 -TeXDict begin 131 136 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(131)275 299 y(P)m(ossible)24 -b(completions)h(go)g(in)m(to)g(the)f Fq(COMPREPL)-8 b(Y)36 -b Ft(arra)m(y)24 b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c -(arra)m(y)150 408 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 518 y(the)h(function)f(returns.)390 737 y -Fs(#)47 b(A)h(completion)d(function)g(for)i(the)g(cd)g(builtin)390 -847 y(#)g(based)g(on)g(the)g(cd)g(completion)e(function)h(from)g(the)h -(bash_completion)d(package)390 956 y(_comp_cd\(\))390 -1066 y({)581 1176 y(local)i(IFS=$')g(\\t\\n')190 b(#)47 -b(normalize)f(IFS)581 1285 y(local)g(cur)h(_skipdot)f(_cdpath)581 -1395 y(local)g(i)i(j)f(k)581 1614 y(#)g(Tilde)g(expansion,)e(with)h -(side)h(effect)f(of)h(expanding)f(tilde)g(to)h(full)g(pathname)581 -1724 y(case)g("$2")f(in)581 1833 y(\\~*\))190 b(eval)46 -b(cur="$2")g(;;)581 1943 y(*\))286 b(cur=$2)46 b(;;)581 -2052 y(esac)581 2271 y(#)h(no)h(cdpath)e(or)h(absolute)e(pathname)h(--) -h(straight)f(directory)f(completion)581 2381 y(if)i([[)g(-z)g -("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h(@\(./*|../*|/*\))d(]];)j -(then)772 2491 y(#)g(compgen)f(prints)g(paths)h(one)f(per)h(line;)g -(could)f(also)h(use)g(while)f(loop)772 2600 y(IFS=$'\\n')772 -2710 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -2819 y(IFS=$')g(\\t\\n')581 2929 y(#)h(CDPATH+directories)c(in)k(the)g -(current)f(directory)f(if)j(not)e(in)i(CDPATH)581 3039 -y(else)772 3148 y(IFS=$'\\n')772 3258 y(_skipdot=false)772 -3367 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d(null)i(directory)e -(names)i(to)g(.)772 3477 y(_cdpath=${CDPATH/#:/.:})772 -3587 y(_cdpath=${_cdpath//::/:.)o(:})772 3696 y -(_cdpath=${_cdpath/\045:/:.})772 3806 y(for)g(i)g(in)g -(${_cdpath//:/$'\\n'};)c(do)963 3915 y(if)k([[)g($i)g(-ef)g(.)h(]];)f -(then)f(_skipdot=true;)e(fi)963 4025 y(k="${#COMPREPLY[@]}")963 -4134 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) -1154 4244 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) -963 4354 y(done)772 4463 y(done)772 4573 y($_skipdot)f(||)i -(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -4682 y(IFS=$')g(\\t\\n')581 4792 y(fi)581 5011 y(#)h(variable)f(names)g -(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 -5121 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c -(-eq)k(0)g(]];)g(then)772 5230 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g -("$cur"\))f(\))581 5340 y(fi)p eop end -%%Page: 132 138 -TeXDict begin 132 137 bop 150 -116 a Ft(Chapter)30 b(8:)41 -b(Command)29 b(Line)i(Editing)2062 b(132)581 408 y Fs(return)46 -b(0)390 518 y(})275 653 y Ft(W)-8 b(e)31 b(install)g(the)g(completion)h -(function)e(using)f(the)i(`)p Fs(-F)p Ft(')f(option)h(to)g -Fs(complete)p Ft(:)390 787 y Fs(#)47 b(Tell)g(readline)f(to)h(quote)f -(appropriate)f(and)i(append)f(slashes)g(to)h(directories;)390 -897 y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f -(arguments)390 1006 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h -(bashdefault)e(-F)i(_comp_cd)f(cd)150 1141 y Ft(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 -1250 y(sev)m(eral)40 b(other)f(options)g(to)g(tell)h(Bash)f(and)f -(Readline)h(what)f(to)i(do.)65 b(The)38 b(`)p Fs(-o)30 -b(filenames)p Ft(')36 b(option)150 1360 y(tells)42 b(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 1469 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 1579 -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 Fs(_comp_cd)e -Ft(to)i(app)s(end)f(a)150 1689 y(slash)23 b(if)g(w)m(e're)h(using)f -(directories)i(found)d(via)h Fq(CDP)-8 b(A)g(TH)10 b -Ft(:)25 b(Readline)f(can't)g(tell)g(those)g(completions)h(are)150 -1798 y(directories\).)41 b(The)27 b(`)p Fs(-o)j(nospace)p -Ft(')c(option)i(tells)g(Readline)h(to)f(not)g(app)s(end)d(a)j(space)g -(c)m(haracter)h(to)g(the)150 1908 y(directory)c(name,)h(in)e(case)h(w)m -(e)g(w)m(an)m(t)g(to)g(app)s(end)e(to)i(it.)39 b(The)24 -b(`)p Fs(-o)30 b(bashdefault)p Ft(')21 b(option)k(brings)f(in)g(the)150 -2017 y(rest)29 b(of)f(the)h Fs(")p Ft(Bash)f(default)p -Fs(")h Ft(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f -(adds)g(to)h(the)g(default)150 2127 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 2237 y(for)i(w)m(ords)g(b)s -(eginning)f(with)h(`)p Fs({)p Ft(',)k(completions)e(con)m(taining)f -(pathname)g(expansion)f(patterns)g(\(see)150 2346 y(Section)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)i(29\),)f(and)f(so)h(on.)275 -2481 y(Once)39 b(installed)i(using)e Fs(complete)p Ft(,)h -Fs(_comp_cd)d Ft(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m(e)g -(attempt)h(w)m(ord)150 2590 y(completion)32 b(for)e(a)h -Fs(cd)e Ft(command.)275 2725 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 2834 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 2834 28 4 v 39 w(completion)i(pro)5 b(ject.)150 -2944 y(This)46 b(is)g(installed)i(b)m(y)e(default)h(on)g(man)m(y)f -(GNU/Lin)m(ux)i(distributions.)88 b(Originally)47 b(written)g(b)m(y)150 -3054 y(Ian)29 b(Macdonald,)i(the)f(pro)5 b(ject)31 b(no)m(w)e(liv)m(es) -i(at)g Fs(http://bash-completion.a)o(liot)o(h.d)o(ebia)o(n.or)o(g/)p -Ft(.)150 3163 y(There)f(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 3298 y(An)54 -b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 3298 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 3407 y(`)p Fs(examples/complete)p Ft(')26 -b(sub)s(directory)-8 b(.)p eop end -%%Page: 133 139 -TeXDict begin 133 138 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(133)150 -299 y Fo(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 -543 y Ft(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) -f Fl(gnu)h Ft(History)g(Library)e(in)m(teractiv)m(ely)-8 -b(,)50 b(from)42 b(a)h(user's)150 653 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 Fl(gnu)150 -762 y Ft(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g -Fl(gnu)f Ft(Readline)h(Library)f(Man)m(ual.)150 1000 -y Fr(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 -1159 y Ft(When)40 b(the)h(`)p Fs(-o)30 b(history)p Ft(')38 -b(option)j(to)g(the)g Fs(set)e Ft(builtin)h(is)h(enabled)f(\(see)h -(Section)g(4.3.1)i([The)d(Set)150 1269 y(Builtin],)32 -b(page)g(57\),)h(the)e(shell)h(pro)m(vides)f(access)h(to)g(the)f -Fq(command)g(history)p Ft(,)h(the)f(list)h(of)f(commands)150 -1378 y(previously)h(t)m(yp)s(ed.)47 b(The)33 b(v)-5 b(alue)33 -b(of)f(the)h Fs(HISTSIZE)e Ft(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 -1488 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 Fs($HISTSIZE)d Ft(commands)i -(\(default)g(500\))150 1597 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 1707 -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 1817 y(v)-5 b(ariables)31 b Fs(HISTIGNORE)d -Ft(and)h Fs(HISTCONTROL)p Ft(.)275 1954 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 Fs(HISTFILE)150 2064 y Ft(v)-5 b(ariable)21 -b(\(default)h(`)p Fs(~/.bash_history)p Ft('\).)34 b(The)20 -b(\014le)h(named)f(b)m(y)h(the)g(v)-5 b(alue)21 b(of)g -Fs(HISTFILE)d Ft(is)j(truncated,)150 2174 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 2283 y Fs(HISTFILESIZE)28 b Ft(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 Fs($HISTSIZE)c Ft(lines)150 2393 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 -Fs($HISTFILE)p Ft(.)51 b(If)35 b(the)g Fs(histappend)d -Ft(shell)150 2502 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h -([Bash)f(Builtins],)h(page)g(47\),)h(the)e(lines)g(are)g(app)s(ended)e -(to)i(the)g(history)150 2612 y(\014le,)36 b(otherwise)f(the)g(history)f -(\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Fs(HISTFILE)e -Ft(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 -2721 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 2831 y(to)g(con)m(tain)h(no)f(more)g(than) -f Fs($HISTFILESIZE)d Ft(lines.)48 b(If)33 b Fs(HISTFILESIZE)c -Ft(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2941 -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 3078 y(If)g(the)h Fs(HISTTIMEFORMAT)d -Ft(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) -e(eac)m(h)h(history)150 3188 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 3298 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 -3407 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h -(for)f(the)h(previous)f(history)g(line.)275 3545 y(The)19 -b(builtin)h(command)g Fs(fc)g Ft(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 -3655 y(list.)41 b(The)27 b Fs(history)f Ft(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 3764 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 3874 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 -3983 y(History],)31 b(page)h(116\).)275 4121 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 -4231 y Fs(HISTCONTROL)25 b Ft(and)j Fs(HISTIGNORE)e Ft(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 4340 y(of)e(the)g(commands)f(en)m -(tered.)40 b(The)26 b Fs(cmdhist)f Ft(shell)i(option,)h(if)f(enabled,)g -(causes)h(the)e(shell)h(to)h(attempt)150 4450 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 4560 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h -(correctness.)58 b(The)36 b Fs(lithist)e Ft(shell)i(option)h(causes)g -(the)f(shell)g(to)150 4669 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 Fs(shopt)e Ft(builtin)i(is)h(used)150 4779 -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(47,)h(for)e(a)h(description)f(of)h -Fs(shopt)p Ft(.)150 5016 y Fr(9.2)68 b(Bash)45 b(History)h(Builtins)150 -5176 y Ft(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 5340 y Fs(fc)p eop end -%%Page: 134 140 -TeXDict begin 134 139 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(134)870 -299 y Fs(fc)47 b([-e)g Fi(ename)11 b Fs(])46 b([-lnr])g([)p -Fi(first)11 b Fs(])45 b([)p Fi(last)11 b Fs(])870 408 -y(fc)47 b(-s)g([)p Fi(pat)11 b Fs(=)p Fi(rep)g Fs(])45 -b([)p Fi(command)11 b Fs(])630 557 y Ft(The)22 b(\014rst)g(form)f -(selects)j(a)f(range)g(of)f(commands)g(from)g Fq(\014rst)i -Ft(to)f Fq(last)i Ft(from)d(the)h(history)f(list)630 -667 y(and)i(displa)m(ys)h(or)g(edits)h(and)e(re-executes)j(them.)39 -b(Both)25 b Fq(\014rst)h Ft(and)f Fq(last)j Ft(ma)m(y)d(b)s(e)g(sp)s -(eci\014ed)630 776 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 886 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 996 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 Fq(last)j Ft(is)e(not)f(sp)s -(eci\014ed)g(it)h(is)g(set)g(to)630 1105 y Fq(\014rst)r -Ft(.)47 b(If)32 b Fq(\014rst)i Ft(is)e(not)h(sp)s(eci\014ed)f(it)h(is)g -(set)g(to)h(the)e(previous)g(command)h(for)f(editing)i(and)630 -1215 y Fp(\000)p Ft(16)g(for)g(listing.)51 b(If)34 b(the)f(`)p -Fs(-l)p Ft(')h(\015ag)g(is)g(giv)m(en,)i(the)d(commands)h(are)g(listed) -g(on)g(standard)630 1324 y(output.)40 b(The)29 b(`)p -Fs(-n)p Ft(')h(\015ag)g(suppresses)e(the)i(command)f(n)m(um)m(b)s(ers)g -(when)f(listing.)42 b(The)29 b(`)p Fs(-r)p Ft(')630 1434 -y(\015ag)35 b(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 Fq(ename)40 -b Ft(is)630 1543 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 Fq(ename)38 -b Ft(is)31 b(not)h(giv)m(en,)i(the)d(v)-5 b(alue)630 -1653 y(of)29 b(the)g(follo)m(wing)i(v)-5 b(ariable)29 -b(expansion)g(is)g(used:)39 b Fs(${FCEDIT:-${EDITOR:-vi}})p -Ft(.)34 b(This)630 1763 y(sa)m(ys)g(to)g(use)f(the)h(v)-5 -b(alue)34 b(of)f(the)h Fs(FCEDIT)e Ft(v)-5 b(ariable)34 -b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)g -Fs(EDITOR)630 1872 y Ft(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or) -e Fs(vi)f Ft(if)h(neither)g(is)g(set.)66 b(When)39 b(editing)g(is)g -(complete,)k(the)630 1982 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h -(and)f(executed.)630 2131 y(In)k(the)g(second)g(form,)h -Fq(command)j Ft(is)c(re-executed)i(after)f(eac)m(h)g(instance)g(of)f -Fq(pat)j Ft(in)d(the)630 2240 y(selected)e(command)e(is)h(replaced)g(b) -m(y)f Fq(rep)s Ft(.)40 b Fq(command)34 b Ft(is)c(in)m(tepreted)h(the)g -(same)g(as)g Fq(\014rst)630 2350 y Ft(ab)s(o)m(v)m(e.)630 -2498 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Fs(fc)f -Ft(command)h(is)g Fs(r='fc)e(-s')p Ft(,)h(so)h(that)h(t)m(yping)f(`)p -Fs(r)f(cc)p Ft(')630 2608 y(runs)35 b(the)h(last)h(command)f(b)s -(eginning)g(with)g Fs(cc)f Ft(and)h(t)m(yping)g(`)p Fs(r)p -Ft(')h(re-executes)h(the)e(last)630 2718 y(command)30 -b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(87\).)150 -2906 y Fs(history)870 3054 y(history)46 b([)p Fi(n)11 -b Fs(])870 3164 y(history)46 b(-c)870 3273 y(history)g(-d)h -Fi(offset)870 3383 y Fs(history)f([-anrw])g([)p Fi(filename)11 -b Fs(])870 3493 y(history)46 b(-ps)h Fi(arg)630 3641 -y Ft(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 -3751 y(a)35 b(`)p Fs(*)p Ft(')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 Fq(n)f Ft(lists)i(only)f(the)g(last)g -Fq(n)f Ft(lines.)54 b(If)35 b(the)630 3861 y(shell)30 -b(v)-5 b(ariable)31 b Fs(HISTTIMEFORMAT)26 b Ft(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 -3970 y(for)36 b Fq(strftime)41 b Ft(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 -4080 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 4189 y(the)e(history)f(line.)630 4338 y(Options,)g(if)h(supplied,)e -(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4526 -y Fs(-c)384 b Ft(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 4635 y(to)31 b(replace)g(the)g(history)f(list)h -(completely)-8 b(.)630 4823 y Fs(-d)30 b Fi(offset)1110 -4933 y Ft(Delete)25 b(the)f(history)f(en)m(try)g(at)h(p)s(osition)f -Fq(o\013set)r Ft(.)39 b Fq(o\013set)26 b Ft(should)c(b)s(e)h(sp)s -(eci\014ed)1110 5043 y(as)31 b(it)g(app)s(ears)e(when)h(the)g(history)g -(is)h(displa)m(y)m(ed.)630 5230 y Fs(-a)384 b Ft(App)s(end)35 -b(the)i(new)g(history)g(lines)g(\(history)g(lines)g(en)m(tered)h(since) -f(the)g(b)s(e-)1110 5340 y(ginning)30 b(of)h(the)f(curren)m(t)g(Bash)h -(session\))g(to)g(the)g(history)f(\014le.)p eop end -%%Page: 135 141 -TeXDict begin 135 140 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(135)630 -299 y Fs(-n)384 b Ft(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 -408 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 -518 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h -(session.)630 690 y Fs(-r)384 b Ft(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 863 y Fs(-w)384 b Ft(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 1035 -y Fs(-p)384 b Ft(P)m(erform)31 b(history)f(substitution)h(on)f(the)h -Fq(arg)8 b Ft(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 -1145 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g -(in)g(the)g(history)g(list.)630 1317 y Fs(-s)384 b Ft(The)30 -b Fq(arg)8 b Ft(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f -(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -1489 y(When)24 b(an)m(y)h(of)f(the)h(`)p Fs(-w)p Ft(',)h(`)p -Fs(-r)p Ft(',)f(`)p Fs(-a)p Ft(',)h(or)f(`)p Fs(-n)p -Ft(')f(options)g(is)h(used,)g(if)f Fq(\014lename)30 b -Ft(is)24 b(giv)m(en,)j(then)630 1599 y(it)32 b(is)g(used)f(as)h(the)f -(history)h(\014le.)45 b(If)31 b(not,)h(then)g(the)f(v)-5 -b(alue)32 b(of)g(the)g Fs(HISTFILE)d Ft(v)-5 b(ariable)33 -b(is)630 1709 y(used.)150 1961 y Fr(9.3)68 b(History)46 -b(Expansion)150 2120 y Ft(The)f(History)h(library)e(pro)m(vides)i(a)f -(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f -(history)150 2230 y(expansion)g(pro)m(vided)f(b)m(y)h -Fs(csh)p Ft(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 2339 y(history)30 b(information.)275 -2487 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 -2596 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 -2706 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2853 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 2963 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 -3072 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m(t)f(one.)40 -b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h(called)h(the)f -Fq(ev)m(en)m(t)p Ft(,)j(and)150 3182 y(the)21 b(p)s(ortions)g(of)g -(that)h(line)f(that)h(are)g(acted)g(up)s(on)e(are)h(called)h -Fq(w)m(ords)p Ft(.)38 b(V)-8 b(arious)21 b Fq(mo)s(di\014ers)j -Ft(are)e(a)m(v)-5 b(ailable)150 3292 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 3401 -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 -3511 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 3620 y(`)p Fs(!)p Ft(')d(b)m(y)f(default.)41 -b(Only)29 b(`)p Fs(\\)p Ft(')i(and)f(`)p Fs(')p Ft(')g(ma)m(y)h(b)s(e)f -(used)g(to)h(escap)s(e)g(the)f(history)g(expansion)h(c)m(haracter.)275 -3768 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h -Fs(shopt)e Ft(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -3877 y(page)32 b(47\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s -(eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h -Fs(histverify)d Ft(shell)150 3987 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 4097 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 4206 y(bu\013er)e(for)i(further)e(mo)s -(di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g -(the)g Fs(histreedit)e Ft(shell)i(option)150 4316 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 4425 y(correction.)74 -b(The)41 b(`)p Fs(-p)p Ft(')g(option)g(to)h(the)f Fs(history)f -Ft(builtin)g(command)h(ma)m(y)h(b)s(e)e(used)h(to)g(see)h(what)150 -4535 y(a)c(history)g(expansion)f(will)h(do)f(b)s(efore)h(using)f(it.)63 -b(The)37 b(`)p Fs(-s)p Ft(')g(option)h(to)h(the)f Fs(history)d -Ft(builtin)i(ma)m(y)150 4645 y(b)s(e)c(used)h(to)g(add)g(commands)f(to) -i(the)f(end)g(of)g(the)g(history)g(list)h(without)f(actually)i -(executing)f(them,)150 4754 y(so)j(that)h(they)f(are)g(a)m(v)-5 -b(ailable)40 b(for)e(subsequen)m(t)f(recall.)65 b(This)37 -b(is)h(most)g(useful)g(in)f(conjunction)h(with)150 4864 -y(Readline.)275 5011 y(The)33 b(shell)h(allo)m(ws)h(con)m(trol)h(of)e -(the)g(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history) -g(expansion)g(mec)m(h-)150 5121 y(anism)h(with)g(the)g -Fs(histchars)d Ft(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e) -i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 -5230 y(page)32 b(68\).)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: 136 142 -TeXDict begin 136 141 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(136)150 -299 y Fj(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 -446 y Ft(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h -(a)f(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48 -b(Unless)33 b(the)150 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 Fs(!)432 b Ft(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 Fs(=)p -Ft(')g(or)f(`)p Fs(\()p Ft(')h(\(when)e(the)i Fs(extglob)d -Ft(shell)j(option)f(is)h(enabled)f(using)g(the)g Fs(shopt)630 -931 y Ft(builtin\).)150 1088 y Fs(!)p Fi(n)384 b Ft(Refer)30 -b(to)i(command)e(line)g Fq(n)p Ft(.)150 1245 y Fs(!-)p -Fi(n)336 b Ft(Refer)30 b(to)i(the)e(command)g Fq(n)g -Ft(lines)h(bac)m(k.)150 1401 y Fs(!!)384 b Ft(Refer)30 -b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f -(for)g(`)p Fs(!-1)p Ft('.)150 1558 y Fs(!)p Fi(string)144 -b Ft(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g -(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630 -1668 y(list)31 b(starting)g(with)f Fq(string)8 b Ft(.)150 -1824 y Fs(!?)p Fi(string)j Fs([?])630 1934 y Ft(Refer)25 -b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t) -g(p)s(osition)g(in)g(the)g(history)630 2044 y(list)32 -b(con)m(taining)h Fq(string)8 b Ft(.)43 b(The)31 b(trailing)h(`)p -Fs(?)p Ft(')f(ma)m(y)h(b)s(e)f(omitted)h(if)f(the)h Fq(string)39 -b Ft(is)31 b(follo)m(w)m(ed)630 2153 y(immediately)h(b)m(y)e(a)h -(newline.)150 2310 y Fs(^)p Fi(string1)11 b Fs(^)p Fi(string2)g -Fs(^)630 2420 y Ft(Quic)m(k)31 b(Substitution.)43 b(Rep)s(eat)31 -b(the)g(last)h(command,)g(replacing)f Fq(string1)39 b -Ft(with)31 b Fq(string2)7 b Ft(.)630 2529 y(Equiv)-5 -b(alen)m(t)31 b(to)g Fs(!!:s/)p Fi(string1)11 b Fs(/)p -Fi(string2)g Fs(/)p Ft(.)150 2686 y Fs(!#)384 b Ft(The)30 -b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150 -2882 y Fj(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 -3029 y Ft(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h -(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27 -b(`)p Fs(:)p Ft(')g(separates)h(the)f(ev)m(en)m(t)150 -3139 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 Fs(^)p Ft(',)g(`)p -Fs($)p Ft(',)g(`)p Fs(*)p Ft(',)h(`)p Fs(-)p Ft(',)f(or)g(`)p -Fs(\045)p Ft('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i -(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150 -3358 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).) -41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f -(line)g(separated)h(b)m(y)150 3468 y(single)h(spaces.)275 -3601 y(F)-8 b(or)31 b(example,)150 3758 y Fs(!!)384 b -Ft(designates)37 b(the)f(preceding)g(command.)57 b(When)35 -b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630 -3867 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4024 -y Fs(!!:$)288 b Ft(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the) -h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 -4133 y(to)31 b Fs(!$)p Ft(.)150 4290 y Fs(!fi:2)240 b -Ft(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f -(recen)m(t)i(command)e(starting)h(with)f(the)630 4400 -y(letters)j Fs(fi)p Ft(.)275 4556 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 4713 y Fs(0)g(\(zero\))114 b Ft(The)30 -b Fs(0)p Ft(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h -(this)e(is)g(the)h(command)f(w)m(ord.)150 4870 y Fi(n)432 -b Ft(The)30 b Fq(n)p Ft(th)g(w)m(ord.)150 5027 y Fs(^)432 -b Ft(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -5183 y Fs($)432 b Ft(The)30 b(last)h(argumen)m(t.)150 -5340 y Fs(\045)432 b Ft(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h -(most)g(recen)m(t)g(`)p Fs(?)p Fi(string)11 b Fs(?)p -Ft(')28 b(searc)m(h.)p eop end -%%Page: 137 143 -TeXDict begin 137 142 bop 150 -116 a Ft(Chapter)30 b(9:)41 -b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(137)150 -299 y Fi(x)11 b Fs(-)p Fi(y)325 b Ft(A)30 b(range)h(of)g(w)m(ords;)f(`) -p Fs(-)p Fi(y)11 b Ft(')30 b(abbreviates)h(`)p Fs(0-)p -Fi(y)11 b Ft('.)150 458 y Fs(*)432 b Ft(All)28 b(of)g(the)g(w)m(ords,)g -(except)h(the)e Fs(0)p Ft(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for) -h(`)p Fs(1-$)p Ft('.)39 b(It)28 b(is)g(not)g(an)f(error)630 -568 y(to)j(use)g(`)p Fs(*)p Ft(')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 Fi(x)11 -b Fs(*)373 b Ft(Abbreviates)31 b(`)p Fi(x)11 b Fs(-$)p -Ft(')150 996 y Fi(x)g Fs(-)373 b Ft(Abbreviates)31 b(`)p -Fi(x)11 b Fs(-$)p Ft(')29 b(lik)m(e)j(`)p Fi(x)11 b Fs(*)p -Ft(',)30 b(but)g(omits)h(the)f(last)h(w)m(ord.)275 1156 -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 -Fj(9.3.3)63 b(Mo)s(di\014ers)150 1611 y Ft(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 Fs(:)p Ft('.)150 1880 -y Fs(h)432 b Ft(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 Fs(t)432 b Ft(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 Fs(r)432 -b Ft(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g(the)h(form)f(`)p -Fs(.)p Fi(suffix)11 b Ft(',)28 b(lea)m(ving)33 b(the)d(basename.)150 -2359 y Fs(e)432 b Ft(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g -(su\016x.)150 2518 y Fs(p)432 b Ft(Prin)m(t)30 b(the)h(new)f(command)g -(but)g(do)g(not)g(execute)i(it.)150 2677 y Fs(q)432 b -Ft(Quote)31 b(the)f(substituted)g(w)m(ords,)g(escaping)h(further)e -(substitutions.)150 2837 y Fs(x)432 b Ft(Quote)32 b(the)f(substituted)g -(w)m(ords)f(as)i(with)f(`)p Fs(q)p Ft(',)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 Fs(s/)p Fi(old)11 b Fs(/)p Fi(new)g Fs(/)630 3215 -y Ft(Substitute)32 b Fq(new)40 b Ft(for)32 b(the)h(\014rst)f(o)s -(ccurrence)h(of)f Fq(old)37 b Ft(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 Fs(/)p Ft('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s -(e)e(quoted)h(in)f Fq(old)29 b Ft(and)24 b Fq(new)32 -b Ft(with)25 b(a)630 3435 y(single)j(bac)m(kslash.)40 -b(If)27 b(`)p Fs(&)p Ft(')g(app)s(ears)g(in)g Fq(new)8 -b Ft(,)27 b(it)h(is)f(replaced)h(b)m(y)f Fq(old)t Ft(.)39 -b(A)27 b(single)h(bac)m(kslash)630 3544 y(will)35 b(quote)g(the)g(`)p -Fs(&)p Ft('.)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 Fs(&)432 b Ft(Rep)s(eat)31 -b(the)f(previous)g(substitution.)150 3973 y Fs(g)150 -4082 y(a)432 b Ft(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 Fs(s)p Ft(',)h(as)f(in)h -Fs(gs/)p Fi(old)11 b Fs(/)p Fi(new)g Fs(/)p Ft(,)26 b(or)k(with)h(`)p -Fs(&)p Ft('.)150 4351 y Fs(G)432 b Ft(Apply)30 b(the)g(follo)m(wing)i -(`)p Fs(s)p Ft(')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: 138 144 -TeXDict begin 138 143 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(138)150 299 y Fo(10)80 -b(Installing)52 b(Bash)150 556 y Ft(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 665 y(forms.)40 -b(The)28 b(distribution)h(supp)s(orts)e(the)j Fl(gnu)f -Ft(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f(of)h -(Unix,)150 775 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 884 y Fl(ms-dos)p Ft(,)h Fl(os/2)p -Ft(,)g(and)g(Windo)m(ws)g(platforms.)150 1128 y Fr(10.1)68 -b(Basic)45 b(Installation)150 1288 y Ft(These)30 b(are)h(installation)h -(instructions)e(for)h(Bash.)275 1430 y(The)e(simplest)i(w)m(a)m(y)g(to) -g(compile)h(Bash)e(is:)199 1572 y(1.)61 b Fs(cd)38 b -Ft(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 Fs(./configure)p Ft(')e(to)j(con\014gure)330 -1681 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f -Fs(csh)g Ft(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g -(migh)m(t)330 1791 y(need)21 b(to)g(t)m(yp)s(e)g(`)p -Fs(sh)30 b(./configure)p Ft(')18 b(instead)j(to)g(prev)m(en)m(t)h -Fs(csh)e Ft(from)g(trying)h(to)g(execute)h Fs(configure)330 -1901 y Ft(itself.)330 2039 y(Running)30 b Fs(configure)f -Ft(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 2149 y(features)e(it)g(is)f(c)m(hec) -m(king)i(for.)199 2287 y(2.)61 b(T)m(yp)s(e)30 b(`)p -Fs(make)p Ft(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g -Fs(bashbug)f Ft(bug)g(rep)s(orting)h(script.)199 2425 -y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Fs(make)g(tests)p -Ft(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2563 -y(4.)61 b(T)m(yp)s(e)36 b(`)p Fs(make)29 b(install)p -Ft(')35 b(to)i(install)h Fs(bash)d Ft(and)h Fs(bashbug)p -Ft(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 -2673 y(pages)31 b(and)f(Info)g(\014le.)275 2844 y(The)20 -b Fs(configure)f Ft(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 -2953 y(v)-5 b(ariables)44 b(used)f(during)g(compilation.)82 -b(It)43 b(uses)h(those)g(v)-5 b(alues)44 b(to)g(create)h(a)g(`)p -Fs(Makefile)p Ft(')c(in)j(eac)m(h)150 3063 y(directory)25 -b(of)g(the)g(pac)m(k)-5 b(age)27 b(\(the)e(top)g(directory)-8 -b(,)27 b(the)e(`)p Fs(builtins)p Ft(',)f(`)p Fs(doc)p -Ft(',)i(and)e(`)p Fs(support)p Ft(')g(directories,)150 -3172 y(eac)m(h)32 b(directory)f(under)d(`)p Fs(lib)p -Ft(',)j(and)f(sev)m(eral)h(others\).)42 b(It)30 b(also)i(creates)f(a)g -(`)p Fs(config.h)p Ft(')e(\014le)h(con)m(taining)150 -3282 y(system-dep)s(enden)m(t)h(de\014nitions.)44 b(Finally)-8 -b(,)34 b(it)e(creates)h(a)f(shell)g(script)f(named)g -Fs(config.status)d Ft(that)150 3392 y(y)m(ou)k(can)g(run)e(in)h(the)g -(future)g(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)h(a)g -(\014le)g(`)p Fs(config.cache)p Ft(')c(that)150 3501 -y(sa)m(v)m(es)35 b(the)f(results)f(of)h(its)g(tests)h(to)f(sp)s(eed)f -(up)g(recon\014guring,)h(and)f(a)h(\014le)g(`)p Fs(config.log)p -Ft(')d(con)m(taining)150 3611 y(compiler)25 b(output)g(\(useful)f -(mainly)h(for)g(debugging)f Fs(configure)p Ft(\).)37 -b(If)24 b(at)i(some)f(p)s(oin)m(t)g(`)p Fs(config.cache)p -Ft(')150 3720 y(con)m(tains)32 b(results)e(y)m(ou)g(don't)h(w)m(an)m(t) -g(to)g(k)m(eep,)g(y)m(ou)g(ma)m(y)g(remo)m(v)m(e)h(or)e(edit)h(it.)275 -3862 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 Fs(configure)d Ft(script)i(under-) -150 3972 y(stands,)30 b(t)m(yp)s(e)390 4114 y Fs(bash-2.04$)45 -b(./configure)g(--help)150 4256 y Ft(at)31 b(the)g(Bash)f(prompt)g(in)g -(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4398 -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 -4508 y Fs(configure)47 b Ft(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 4617 y Fs(bash-maintainers@gnu.org)24 b Ft(so)30 -b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275 -4760 y(The)24 b(\014le)i(`)p Fs(configure.ac)p Ft(')c(is)k(used)e(to)j -(create)g Fs(configure)22 b Ft(b)m(y)k(a)g(program)f(called)h(Auto)s -(conf.)39 b(Y)-8 b(ou)150 4869 y(only)31 b(need)f(`)p -Fs(configure.ac)p Ft(')d(if)k(y)m(ou)f(w)m(an)m(t)i(to)f(c)m(hange)g -(it)g(or)f(regenerate)i Fs(configure)c Ft(using)i(a)h(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 Fs(make)d(clean)p Ft('.)42 -b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g -Fs(configure)e Ft(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 Fs(make)e(distclean)p Ft('.)p eop end -%%Page: 139 145 -TeXDict begin 139 144 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(139)150 299 y Fr(10.2)68 -b(Compilers)46 b(and)f(Options)150 458 y Ft(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 Fs(configure)d Ft(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 -Fs(configure)d Ft(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 920 y Fs(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g -(./configure)275 1053 y Ft(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f -Fs(env)e Ft(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 -1186 y Fs(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 -b(LDFLAGS=-s)j(./configure)275 1318 y Ft(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 1548 y Fr(10.3)68 b(Compiling)46 b(F)-11 -b(or)45 b(Multiple)g(Arc)l(hitectures)150 1707 y Ft(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 -1817 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 -1926 y(of)25 b Fs(make)f Ft(that)h(supp)s(orts)f(the)h -Fs(VPATH)e Ft(v)-5 b(ariable,)27 b(suc)m(h)e(as)g(GNU)h -Fs(make)p Ft(.)37 b Fs(cd)25 b Ft(to)h(the)f(directory)g(where)g(y)m -(ou)150 2036 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 Fs(configure)d -Ft(script)j(from)g(the)g(source)150 2145 y(directory)-8 -b(.)41 b(Y)-8 b(ou)27 b(ma)m(y)h(need)f(to)g(supply)f(the)h(`)p -Fs(--srcdir=PATH)p Ft(')d(argumen)m(t)k(to)g(tell)g Fs(configure)c -Ft(where)150 2255 y(the)36 b(source)g(\014les)f(are.)57 -b Fs(configure)33 b Ft(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 2364 y(that)c -Fs(configure)d Ft(is)i(in)g(and)g(in)g(`..'.)275 2497 -y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Fs(make)f -Ft(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Fs(VPATH)e -Ft(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 -2607 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 2716 y(for)c(one)h(arc)m(hitecture,)h(use)e -(`)p Fs(make)g(distclean)p Ft(')e(b)s(efore)i(recon\014guring)g(for)g -(another)g(arc)m(hitecture.)275 2849 y(Alternativ)m(ely)-8 -b(,)26 b(if)21 b(y)m(our)h(system)g(supp)s(orts)d(sym)m(b)s(olic)j -(links,)i(y)m(ou)e(can)g(use)f(the)h(`)p Fs(support/mkclone)p -Ft(')150 2959 y(script)h(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 3068 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 3178 -y(directory)31 b(`)p Fs(/usr/gnu/src/bash-2.0)p Ft(':)390 -3311 y Fs(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 3444 y -Ft(The)c Fs(mkclone)e Ft(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 -3553 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 3782 -y Fr(10.4)68 b(Installation)47 b(Names)150 3942 y Ft(By)27 -b(default,)h(`)p Fs(make)i(install)p Ft(')25 b(will)j(install)g(in)m -(to)g(`)p Fs(/usr/local/bin)p Ft(',)c(`)p Fs(/usr/local/man)p -Ft(',)h(etc.)40 b(Y)-8 b(ou)150 4051 y(can)31 b(sp)s(ecify)f(an)h -(installation)h(pre\014x)d(other)i(than)g(`)p Fs(/usr/local)p -Ft(')d(b)m(y)i(giving)i Fs(configure)c Ft(the)i(option)150 -4161 y(`)p Fs(--prefix=)p Fi(PATH)11 b Ft(',)35 b(or)h(b)m(y)g(sp)s -(ecifying)g(a)h(v)-5 b(alue)37 b(for)f(the)h Fs(DESTDIR)d -Ft(`)p Fs(make)p Ft(')i(v)-5 b(ariable)37 b(when)f(running)150 -4271 y(`)p Fs(make)29 b(install)p Ft('.)275 4403 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 -4513 y(arc)m(hitecture-indep)s(enden)m(t)38 b(\014les.)62 -b(If)37 b(y)m(ou)h(giv)m(e)g Fs(configure)d Ft(the)j(option)g(`)p -Fs(--exec-prefix=)p Fi(PATH)11 b Ft(',)150 4623 y(`)p -Fs(make)29 b(install)p Ft(')63 b(will)h(use)f Fq(P)-8 -b(A)g(TH)75 b Ft(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e -(and)h(libraries.)150 4732 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 -4961 y Fr(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 -5121 y Ft(There)f(ma)m(y)g(b)s(e)f(some)i(features)f -Fs(configure)e Ft(can)i(not)g(\014gure)g(out)g(automatically)-8 -b(,)52 b(but)44 b(need)h(to)150 5230 y(determine)36 b(b)m(y)g(the)h(t)m -(yp)s(e)f(of)g(host)h(Bash)f(will)h(run)d(on.)58 b(Usually)37 -b Fs(configure)d Ft(can)i(\014gure)g(that)g(out,)150 -5340 y(but)c(if)h(it)g(prin)m(ts)g(a)g(message)h(sa)m(ying)g(it)f(can)h -(not)f(guess)g(the)g(host)g(t)m(yp)s(e,)h(giv)m(e)g(it)f(the)h(`)p -Fs(--host=TYPE)p Ft(')p eop end -%%Page: 140 146 -TeXDict begin 140 145 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(140)150 299 y(option.)39 -b(`)p Fs(TYPE)p Ft(')25 b(can)g(either)g(b)s(e)g(a)g(short)g(name)g -(for)g(the)g(system)g(t)m(yp)s(e,)h(suc)m(h)f(as)g(`)p -Fs(sun4)p Ft(',)h(or)f(a)g(canonical)150 408 y(name)30 -b(with)g(three)h(\014elds:)40 b(`)p Fs(CPU-COMPANY-SYSTEM)p -Ft(')26 b(\(e.g.,)32 b(`)p Fs(i386-unknown-freebsd4.2)p -Ft('\).)275 539 y(See)e(the)h(\014le)f(`)p Fs(support/config.sub)p -Ft(')c(for)k(the)h(p)s(ossible)f(v)-5 b(alues)30 b(of)h(eac)m(h)g -(\014eld.)150 764 y Fr(10.6)68 b(Sharing)45 b(Defaults)150 -924 y Ft(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 Fs(configure)d Ft(scripts)j(to)h(share,)i(y)m(ou)d -(can)g(create)i(a)e(site)150 1033 y(shell)48 b(script)f(called)i -Fs(config.site)44 b Ft(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 Fs(CC)p -Ft(,)j Fs(cache_)150 1143 y(file)p Ft(,)43 b(and)e Fs(prefix)p -Ft(.)73 b Fs(configure)39 b Ft(lo)s(oks)j(for)f(`)p Fs -(PREFIX/share/config.site)p Ft(')35 b(if)42 b(it)g(exists,)j(then)150 -1252 y(`)p Fs(PREFIX/etc/config.site)p Ft(')20 b(if)26 -b(it)g(exists.)40 b(Or,)26 b(y)m(ou)g(can)g(set)g(the)g -Fs(CONFIG_SITE)c Ft(en)m(vironmen)m(t)k(v)-5 b(ari-)150 -1362 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 Fs(configure)c -Ft(lo)s(oks)k(for)f(a)h(site)150 1472 y(script,)31 b(but)e(not)i(all)g -Fs(configure)d Ft(scripts)i(do.)150 1697 y Fr(10.7)68 -b(Op)t(eration)46 b(Con)l(trols)150 1856 y Fs(configure)28 -b Ft(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 2008 y Fs(--cache-file=)p -Fi(file)630 2117 y Ft(Use)k(and)g(sa)m(v)m(e)h(the)f(results)g(of)g -(the)h(tests)f(in)g Fq(\014le)40 b Ft(instead)35 b(of)h(`)p -Fs(./config.cache)p Ft('.)51 b(Set)630 2227 y Fq(\014le)36 -b Ft(to)31 b(`)p Fs(/dev/null)p Ft(')d(to)j(disable)g(cac)m(hing,)h -(for)e(debugging)g Fs(configure)p Ft(.)150 2379 y Fs(--help)192 -b Ft(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g -Fs(configure)p Ft(,)d(and)i(exit.)150 2531 y Fs(--quiet)150 -2641 y(--silent)150 2750 y(-q)384 b Ft(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 2902 y Fs(--srcdir=)p Fi(dir)630 3012 y Ft(Lo)s(ok)i(for)f -(the)h(Bash)g(source)f(co)s(de)h(in)f(directory)h Fq(dir)7 -b Ft(.)44 b(Usually)32 b Fs(configure)d Ft(can)i(deter-)630 -3121 y(mine)f(that)h(directory)g(automatically)-8 b(.)150 -3273 y Fs(--version)630 3383 y Ft(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 Fs(configure)d -Ft(script,)j(and)f(exit.)275 3535 y Fs(configure)34 b -Ft(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s -(oilerplate)g(options.)61 b(`)p Fs(configure)150 3644 -y(--help)p Ft(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 -3869 y Fr(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 -4029 y Ft(The)24 b(Bash)g Fs(configure)e Ft(has)h(a)i(n)m(um)m(b)s(er)e -(of)h(`)p Fs(--enable-)p Fi(feature)11 b Ft(')20 b(options,)26 -b(where)d Fq(feature)30 b Ft(indicates)150 4138 y(an)f(optional)i(part) -e(of)g(Bash.)41 b(There)28 b(are)i(also)g(sev)m(eral)h(`)p -Fs(--with-)p Fi(package)11 b Ft(')25 b(options,)30 b(where)f -Fq(pac)m(k)-5 b(age)150 4248 y Ft(is)32 b(something)h(lik)m(e)h(`)p -Fs(bash-malloc)p Ft(')c(or)i(`)p Fs(purify)p Ft('.)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 4357 y(`)p Fs(--without-)p Fi(package)11 -b Ft('.)36 b(T)-8 b(o)29 b(con\014gure)g(Bash)h(without)f(a)g(feature)h -(that)g(is)f(enabled)g(b)m(y)g(default,)h(use)150 4467 -y(`)p Fs(--disable-)p Fi(feature)11 b Ft('.)275 4598 -y(Here)21 b(is)g(a)g(complete)h(list)g(of)f(the)g(`)p -Fs(--enable-)p Ft(')e(and)h(`)p Fs(--with-)p Ft(')g(options)h(that)g -(the)g(Bash)g Fs(configure)150 4707 y Ft(recognizes.)150 -4859 y Fs(--with-afs)630 4969 y Ft(De\014ne)31 b(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 -5121 y Fs(--with-bash-malloc)630 5230 y Ft(Use)31 b(the)g(Bash)f(v)m -(ersion)i(of)e Fs(malloc)f Ft(in)h(the)h(directory)g(`)p -Fs(lib/malloc)p Ft('.)39 b(This)30 b(is)h(not)g(the)630 -5340 y(same)h Fs(malloc)e Ft(that)j(app)s(ears)e(in)g -Fl(gnu)h Ft(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g -(deriv)m(ed)p eop end -%%Page: 141 147 -TeXDict begin 141 146 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(141)630 299 y(from)32 b(the)h(4.2)g -Fl(bsd)f Fs(malloc)p Ft(.)45 b(This)31 b Fs(malloc)g -Ft(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 -408 y(eac)m(h)g(allo)s(cation.)48 b(This)31 b(option)i(is)f(enabled)g -(b)m(y)g(default.)46 b(The)31 b(`)p Fs(NOTES)p Ft(')g(\014le)h(con)m -(tains)i(a)630 518 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 Fs(configure)d -Ft(disables)j(this)630 628 y(option)j(automatically)i(for)d(a)h(n)m(um) -m(b)s(er)e(of)i(systems.)150 789 y Fs(--with-curses)630 -899 y Ft(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 -1008 y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete) -i(termcap)e(database.)150 1170 y Fs(--with-gnu-malloc)630 -1279 y Ft(A)g(synon)m(ym)g(for)g Fs(--with-bash-malloc)p -Ft(.)150 1441 y Fs(--with-installed-readlin)o(e[=)p Fi(P)o(REFI)o(X)11 -b Fs(])630 1550 y Ft(De\014ne)26 b(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 1660 y(than)38 b(the)h(v)m(ersion)g(in)g(`)p Fs(lib/readline)p -Ft('.)62 b(This)38 b(w)m(orks)h(only)f(with)h(Readline)g(5.0)h(and)630 -1769 y(later)29 b(v)m(ersions.)40 b(If)28 b Fq(PREFIX)37 -b Ft(is)28 b Fs(yes)f Ft(or)h(not)g(supplied,)f Fs(configure)f -Ft(uses)h(the)h(v)-5 b(alues)29 b(of)630 1879 y(the)c(mak)m(e)g(v)-5 -b(ariables)25 b Fs(includedir)d Ft(and)h Fs(libdir)p -Ft(,)h(whic)m(h)h(are)f(sub)s(directories)g(of)h Fs(prefix)630 -1989 y Ft(b)m(y)32 b(default,)g(to)h(\014nd)d(the)i(installed)h(v)m -(ersion)f(of)g(Readline)h(if)f(it)g(is)g(not)g(in)g(the)g(standard)630 -2098 y(system)j(include)f(and)g(library)g(directories.)54 -b(If)34 b Fq(PREFIX)43 b Ft(is)35 b Fs(no)p Ft(,)g(Bash)f(links)h(with) -f(the)630 2208 y(v)m(ersion)k(in)f(`)p Fs(lib/readline)p -Ft('.)58 b(If)37 b Fq(PREFIX)46 b Ft(is)38 b(set)g(to)g(an)m(y)f(other) -h(v)-5 b(alue,)39 b Fs(configure)630 2317 y Ft(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 2427 y(in)34 -b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) -g Fq(PREFIX)9 b Ft(/)p Fs(include)32 b Ft(and)i(the)630 -2536 y(library)c(in)g Fq(PREFIX)9 b Ft(/)p Fs(lib)p Ft(\).)150 -2698 y Fs(--with-purify)630 2807 y Ft(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 2969 y Fs(--enable-minimal-config)630 -3078 y Ft(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 -3241 y(There)g(are)i(sev)m(eral)g(`)p Fs(--enable-)p -Ft(')d(options)j(that)f(alter)h(ho)m(w)g(Bash)f(is)g(compiled)h(and)e -(link)m(ed,)j(rather)150 3350 y(than)k(c)m(hanging)h(run-time)f -(features.)150 3513 y Fs(--enable-largefile)630 3622 -y Ft(Enable)76 b(supp)s(ort)f(for)h(large)h(\014les)f(\()p -Fs(http://www.sas.com/standar)o(ds/l)o(arge)o(_)630 3732 -y(file/x_open.20Mar96.html)o Ft(\))23 b(if)28 b(the)g(op)s(erating)h -(system)f(requires)g(sp)s(ecial)g(compiler)630 3842 y(options)45 -b(to)g(build)e(programs)h(whic)m(h)g(can)g(access)i(large)f(\014les.)82 -b(This)44 b(is)g(enabled)g(b)m(y)630 3951 y(default,)31 -b(if)f(the)h(op)s(erating)g(system)f(pro)m(vides)g(large)i(\014le)e -(supp)s(ort.)150 4113 y Fs(--enable-profiling)630 4222 -y Ft(This)h(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 -4332 y(b)m(y)g Fs(gprof)f Ft(eac)m(h)j(time)f(it)g(is)f(executed.)150 -4493 y Fs(--enable-static-link)630 4603 y Ft(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 Fs(gcc)g Ft(is)g(b)s(eing)g(used.)61 -b(This)37 b(could)h(b)s(e)630 4712 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 4875 -y(The)f(`)p Fs(minimal-config)p Ft(')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 -4984 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 Fs(enable-)p Fi(feature)11 -b Ft('.)275 5121 y(All)41 b(of)g(the)g(follo)m(wing)i(options)e(except) -h(for)f(`)p Fs(disabled-builtins)p Ft(',)e(`)p Fs(directpand-default)p -Ft(',)150 5230 y(and)45 b(`)p Fs(xpg-echo-default)p Ft(')c(are)k -(enabled)h(b)m(y)f(default,)k(unless)44 b(the)i(op)s(erating)f(system)h -(do)s(es)f(not)150 5340 y(pro)m(vide)30 b(the)h(necessary)g(supp)s -(ort.)p eop end -%%Page: 142 148 -TeXDict begin 142 147 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(142)150 299 y Fs(--enable-alias)630 -408 y Ft(Allo)m(w)41 b(alias)g(expansion)f(and)f(include)g(the)h -Fs(alias)f Ft(and)g Fs(unalias)e Ft(builtins)j(\(see)g(Sec-)630 -518 y(tion)31 b(6.6)g([Aliases],)i(page)e(87\).)150 682 -y Fs(--enable-arith-for-comma)o(nd)630 792 y Ft(Include)21 -b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g -Fs(for)f Ft(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 -902 y(C)30 b(language)i Fs(for)d Ft(statemen)m(t)j(\(see)g(Section)f -(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 -1066 y Fs(--enable-array-variables)630 1176 y Ft(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 1285 y(ra)m(ys],)c(page)g(88\).)150 -1450 y Fs(--enable-bang-history)630 1559 y Ft(Include)36 -b(supp)s(ort)f(for)h Fs(csh)p Ft(-lik)m(e)h(history)g(substitution)f -(\(see)h(Section)g(9.3)h([History)f(In-)630 1669 y(teraction],)c(page)e -(135\).)150 1833 y Fs(--enable-brace-expansion)630 1943 -y Ft(Include)40 b Fs(csh)p Ft(-lik)m(e)h(brace)f(expansion)g(\()h -Fs(b{a,b}c)d Fp(7!)i Fs(bac)30 b(bbc)39 b Ft(\).)71 b(See)40 -b(Section)h(3.5.1)630 2052 y([Brace)32 b(Expansion],)e(page)h(21,)h -(for)e(a)g(complete)i(description.)150 2217 y Fs -(--enable-casemod-attribu)o(tes)630 2326 y Ft(Include)37 -b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h -Fs(declare)e Ft(builtin)i(and)f(as-)630 2436 y(signmen)m(t)29 -b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g -Fq(upp)s(ercase)k Ft(attribute,)e(for)e(example,)i(will)630 -2545 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 2710 y Fs -(--enable-casemod-expansi)o(on)630 2819 y Ft(Include)h(supp)s(ort)e -(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 -2984 y Fs(--enable-command-timing)630 3093 y Ft(Include)43 -b(supp)s(ort)f(for)h(recognizing)i Fs(time)e Ft(as)g(a)h(reserv)m(ed)g -(w)m(ord)f(and)g(for)h(displa)m(ying)630 3203 y(timing)37 -b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i -Fs(time)d Ft(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630 -3313 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 3477 y Fs(--enable-cond-command)630 3587 y Ft(Include)33 -b(supp)s(ort)f(for)i(the)g Fs([[)f Ft(conditional)i(command.)51 -b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 3696 y(tional)c -(Constructs],)e(page)h(10\).)150 3861 y Fs(--enable-cond-regexp)630 -3970 y Ft(Include)k(supp)s(ort)f(for)i(matc)m(hing)h -Fl(posix)e Ft(regular)h(expressions)g(using)f(the)h(`)p -Fs(=~)p Ft(')g(binary)630 4080 y(op)s(erator)25 b(in)f(the)h -Fs([[)f Ft(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h -([Conditional)e(Con-)630 4189 y(structs],)31 b(page)g(10\).)150 -4354 y Fs(--enable-coprocesses)630 4463 y Ft(Include)23 -b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Fs(coproc)e -Ft(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630 -4573 y([Pip)s(elines],)31 b(page)g(8\).)150 4737 y Fs -(--enable-debugger)630 4847 y Ft(Include)f(supp)s(ort)e(for)i(the)h -(bash)f(debugger)g(\(distributed)g(separately\).)150 -5011 y Fs(--enable-direxpand-defau)o(lt)630 5121 y Ft(Cause)53 -b(the)g Fs(direxpand)d Ft(shell)j(option)h(\(see)g(Section)f(4.3.2)i -([The)e(Shopt)f(Builtin],)630 5230 y(page)29 b(61\))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 5340 y(b)m(y)i(default.)p -eop end -%%Page: 143 149 -TeXDict begin 143 148 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(143)150 299 y Fs -(--enable-directory-stack)630 408 y Ft(Include)33 b(supp)s(ort)g(for)h -(a)g Fs(csh)p Ft(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i -Fs(pushd)p Ft(,)f Fs(popd)p Ft(,)g(and)f Fs(dirs)630 -518 y Ft(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m -(k],)g(page)f(90\).)150 673 y Fs(--enable-disabled-builti)o(ns)630 -783 y Ft(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 Fs(builtin)29 b(xxx)p Ft(')37 b(ev)m(en)j(after)f -Fs(xxx)e Ft(has)630 892 y(b)s(een)31 b(disabled)g(using)g(`)p -Fs(enable)d(-n)i(xxx)p Ft('.)43 b(See)32 b(Section)g(4.2)h([Bash)e -(Builtins],)i(page)f(47,)630 1002 y(for)e(details)i(of)e(the)h -Fs(builtin)d Ft(and)i Fs(enable)e Ft(builtin)i(commands.)150 -1157 y Fs(--enable-dparen-arithmet)o(ic)630 1267 y Ft(Include)42 -b(supp)s(ort)f(for)h(the)h Fs(\(\(...)o(\)\))f Ft(command)g(\(see)i -(Section)f(3.2.4.2)i([Conditional)630 1377 y(Constructs],)30 -b(page)h(10\).)150 1532 y Fs(--enable-extended-glob)630 -1641 y Ft(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 -1751 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(29.)150 1906 y Fs(--enable-extended-glob-d)o(efau)o(lt)630 -2016 y Ft(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g -Fq(extglob)j Ft(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) -d(Sec-)630 2125 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(61)g(to)h(b)s(e)d(enabled.)150 2281 y Fs(--enable-help-builtin)630 -2390 y Ft(Include)24 b(the)h Fs(help)f Ft(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 2500 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f -(47\).)150 2655 y Fs(--enable-history)630 2765 y Ft(Include)e(command)g -(history)h(and)f(the)h Fs(fc)f Ft(and)g Fs(history)e -Ft(builtin)j(commands)f(\(see)h(Sec-)630 2874 y(tion)h(9.1)g([Bash)g -(History)g(F)-8 b(acilities],)34 b(page)d(133\).)150 -3029 y Fs(--enable-job-control)630 3139 y Ft(This)e(enables)i(the)f -(job)g(con)m(trol)h(features)g(\(see)g(Chapter)f(7)g([Job)g(Con)m -(trol],)h(page)g(97\),)h(if)630 3249 y(the)f(op)s(erating)f(system)h -(supp)s(orts)d(them.)150 3404 y Fs(--enable-multibyte)630 -3513 y Ft(This)h(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 -3623 y(the)h(necessary)f(supp)s(ort.)150 3778 y Fs -(--enable-net-redirection)o(s)630 3888 y Ft(This)21 b(enables)h(the)g -(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)f -Fs(/dev/tcp/)p Fi(host)11 b Fs(/)p Fi(port)630 3998 y -Ft(and)29 b Fs(/dev/udp/)p Fi(host)11 b Fs(/)p Fi(port)34 -b Ft(when)28 b(used)g(in)h(redirections)h(\(see)g(Section)g(3.6)g -([Redirec-)630 4107 y(tions],)h(page)g(31\).)150 4262 -y Fs(--enable-process-substit)o(utio)o(n)630 4372 y Ft(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 4482 y(page)31 b(28\))h(if)e(the)h(op)s -(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 -4637 y Fs(--enable-progcomp)630 4746 y Ft(Enable)d(the)g(programmable)g -(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 -4856 y(Completion],)i(page)h(124\).)42 b(If)30 b(Readline)h(is)f(not)h -(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 -5011 y Fs(--enable-prompt-string-d)o(ecod)o(ing)630 5121 -y Ft(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 -5230 y Fs($PS1)p Ft(,)36 b Fs($PS2)p Ft(,)g Fs($PS3)p -Ft(,)h(and)e Fs($PS4)f Ft(prompt)h(strings.)57 b(See)36 -b(Section)h(6.9)g([Con)m(trolling)g(the)630 5340 y(Prompt],)30 -b(page)h(91,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g -(escap)s(e)h(sequences.)p eop end -%%Page: 144 150 -TeXDict begin 144 149 bop 150 -116 a Ft(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(144)150 299 y Fs(--enable-readline)630 -408 y Ft(Include)28 b(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 518 -y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g -(Editing],)h(page)g(101\).)150 677 y Fs(--enable-restricted)630 -787 y Ft(Include)41 b(supp)s(ort)f(for)i(a)g Fq(restricted)g(shell)p -Ft(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 -897 y(as)f Fs(rbash)p Ft(,)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 -1006 y(page)31 b(92,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s -(de.)150 1166 y Fs(--enable-select)630 1275 y Ft(Include)25 -b(the)h Fs(select)f Ft(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j -(the)e(generation)h(of)f(simple)630 1385 y(men)m(us)k(\(see)h(Section)g -(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(10\).)150 -1544 y Fs(--enable-separate-helpfi)o(les)630 1654 y Ft(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 Fs(help)f Ft(builtin)h(instead)630 1763 y(of)f(storing)f(the)h -(text)g(in)m(ternally)-8 b(.)150 1923 y Fs(--enable-single-help-str)o -(ings)630 2032 y Ft(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e -(the)i Fs(help)d Ft(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) -i(help)630 2142 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 2252 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 -2411 y Fs(--enable-strict-posix-de)o(faul)o(t)630 2521 -y Ft(Mak)m(e)c(Bash)f Fl(posix)p Ft(-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 -2630 y(page)31 b(93\).)150 2790 y Fs(--enable-usg-echo-defaul)o(t)630 -2899 y Ft(A)f(synon)m(ym)g(for)g Fs(--enable-xpg-echo-default)p -Ft(.)150 3059 y Fs(--enable-xpg-echo-defaul)o(t)630 3168 -y Ft(Mak)m(e)c(the)f Fs(echo)e Ft(builtin)i(expand)f(bac)m -(kslash-escap)s(ed)h(c)m(haracters)h(b)m(y)f(default,)h(without)630 -3278 y(requiring)41 b(the)g(`)p Fs(-e)p Ft(')g(option.)73 -b(This)41 b(sets)g(the)g(default)h(v)-5 b(alue)41 b(of)h(the)f -Fs(xpg_echo)e Ft(shell)630 3387 y(option)26 b(to)g Fs(on)p -Ft(,)g(whic)m(h)g(mak)m(es)g(the)g(Bash)g Fs(echo)e Ft(b)s(eha)m(v)m(e) -i(more)g(lik)m(e)h(the)f(v)m(ersion)g(sp)s(eci\014ed)630 -3497 y(in)41 b(the)h(Single)g(Unix)f(Sp)s(eci\014cation,)k(v)m(ersion)e -(3.)74 b(See)42 b(Section)g(4.2)h([Bash)f(Builtins],)630 -3606 y(page)31 b(47,)h(for)e(a)g(description)h(of)f(the)h(escap)s(e)g -(sequences)f(that)h Fs(echo)f Ft(recognizes.)275 3766 -y(The)23 b(\014le)i(`)p Fs(config-top.h)p Ft(')c(con)m(tains)26 -b(C)e(Prepro)s(cessor)g(`)p Fs(#define)p Ft(')e(statemen)m(ts)k(for)f -(options)f(whic)m(h)150 3875 y(are)35 b(not)g(settable)i(from)d -Fs(configure)p Ft(.)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 3985 -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 4095 y(information)c(ab)s(out)f(its)h(e\013ect.)p -eop end -%%Page: 145 151 -TeXDict begin 145 150 bop 150 -116 a Ft(App)s(endix)29 -b(A:)h(Rep)s(orting)h(Bugs)2299 b(145)150 299 y Fo(App)t(endix)52 -b(A)81 b(Rep)t(orting)53 b(Bugs)150 533 y Ft(Please)33 -b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i(Bash.)44 -b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e(that)h(it)g -(really)h(is)f(a)150 643 y(bug,)d(and)g(that)h(it)g(app)s(ears)f(in)g -(the)h(latest)h(v)m(ersion)f(of)g(Bash.)40 b(The)29 b(latest)j(v)m -(ersion)e(of)f(Bash)h(is)f(alw)m(a)m(ys)150 752 y(a)m(v)-5 -b(ailable)33 b(for)d(FTP)g(from)g Fs(ftp://ftp.gnu.org/pub/gn)o(u/ba)o -(sh/)o Ft(.)275 887 y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f -(that)h(a)f(bug)g(actually)h(exists,)j(use)c(the)g Fs(bashbug)e -Ft(command)i(to)150 996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 -b(If)26 b(y)m(ou)g(ha)m(v)m(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged) -h(to)f(mail)h(that)f(as)g(w)m(ell!)40 b(Suggestions)150 -1106 y(and)20 b(`philosophical')j(bug)d(rep)s(orts)g(ma)m(y)i(b)s(e)e -(mailed)i(to)g Fs(bug-bash@gnu.org)17 b Ft(or)k(p)s(osted)f(to)i(the)f -(Usenet)150 1215 y(newsgroup)29 b Fs(gnu.bash.bug)p Ft(.)275 -1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 -1484 y Fp(\017)60 b Ft(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h -(Bash.)225 1619 y Fp(\017)60 b Ft(The)30 b(hardw)m(are)g(and)g(op)s -(erating)g(system.)225 1753 y Fp(\017)60 b Ft(The)30 -b(compiler)h(used)e(to)i(compile)h(Bash.)225 1888 y Fp(\017)60 -b Ft(A)30 b(description)h(of)f(the)h(bug)f(b)s(eha)m(viour.)225 -2022 y Fp(\017)60 b Ft(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic) -m(h)f(exercises)i(the)e(bug)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(repro) -s(duce)e(it.)150 2182 y Fs(bashbug)d Ft(inserts)i(the)h(\014rst)f -(three)g(items)h(automatically)i(in)m(to)f(the)e(template)i(it)f(pro)m -(vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275 -2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m -(ual)f(to)h Fs(bug-bash@gnu.org)p Ft(.)p eop end -%%Page: 146 152 -TeXDict begin 146 151 bop 150 -116 a Ft(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(146)150 141 y Fo(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 Ft(Bash)26 -b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f -(and)g(v)-5 b(ariable)27 b(expansion,)g(redirec-)150 -640 y(tion,)i(and)e(quoting)g(as)h(the)g(Bourne)f(Shell.)40 -b(Bash)27 b(uses)g(the)h Fl(posix)f Ft(standard)f(as)i(the)g(sp)s -(eci\014cation)g(of)150 749 y(ho)m(w)34 b(these)h(features)g(are)g(to)g -(b)s(e)f(implemen)m(ted.)53 b(There)34 b(are)h(some)g(di\013erences)g -(b)s(et)m(w)m(een)g(the)g(tradi-)150 859 y(tional)e(Bourne)e(shell)h -(and)f(Bash;)i(this)f(section)g(quic)m(kly)h(details)g(the)e -(di\013erences)h(of)g(signi\014cance.)46 b(A)150 969 -y(n)m(um)m(b)s(er)24 b(of)h(these)h(di\013erences)f(are)h(explained)f -(in)g(greater)h(depth)f(in)g(previous)f(sections.)40 -b(This)25 b(section)150 1078 y(uses)33 b(the)i(v)m(ersion)f(of)g -Fs(sh)f Ft(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g -(the)g(historical)i(Bourne)d(shell\))150 1188 y(as)e(the)f(baseline)h -(reference.)225 1322 y Fp(\017)60 b Ft(Bash)32 b(is)h -Fl(posix)p Ft(-conforman)m(t,)g(ev)m(en)g(where)f(the)g -Fl(posix)g Ft(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330 -1431 y Fs(sh)e Ft(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e -(POSIX)g(Mo)s(de],)h(page)g(93\).)225 1565 y Fp(\017)60 -b Ft(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 -(79\).)225 1699 y Fp(\017)60 b Ft(Bash)40 b(has)f(command-line)h -(editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d -(101\))330 1809 y(and)30 b(the)g Fs(bind)g Ft(builtin.)225 -1943 y Fp(\017)60 b Ft(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(124\),)i(and)d(builtin)g -(commands)f Fs(complete)p Ft(,)h Fs(compgen)p Ft(,)h(and)330 -2162 y Fs(compopt)p Ft(,)29 b(to)i(manipulate)g(it.)225 -2296 y Fp(\017)60 b Ft(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(133\))i(and)d(the)330 2405 y Fs(history)k Ft(and)h -Fs(fc)g Ft(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 -b(of)f(the)h Fs(HISTTIMEFORMAT)26 b Ft(v)-5 b(ariable)32 -b(to)f(displa)m(y)f(it.)225 2649 y Fp(\017)60 b Ft(Bash)48 -b(implemen)m(ts)h Fs(csh)p Ft(-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(135\).)225 2892 y Fp(\017)60 b Ft(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(88\),)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 -(act)g(on)e(arra)m(ys.)46 b(Bash)32 b(pro)m(vides)g(a)g(n)m(um)m(b)s -(er)f(of)h(built-in)f(arra)m(y)330 3221 y(v)-5 b(ariables.)225 -3355 y Fp(\017)60 b Ft(The)37 b Fs($'...)n(')g Ft(quoting)g(syn)m(tax,) -j(whic)m(h)d(expands)f(ANSI-C)h(bac)m(kslash-escap)s(ed)h(c)m -(haracters)g(in)330 3465 y(the)26 b(text)h(b)s(et)m(w)m(een)g(the)g -(single)f(quotes,)i(is)e(supp)s(orted)f(\(see)i(Section)g(3.1.2.4)h -([ANSI-C)e(Quoting],)330 3574 y(page)31 b(6\).)225 3708 -y Fp(\017)60 b Ft(Bash)69 b(supp)s(orts)e(the)i Fs($"...)n(")g -Ft(quoting)g(syn)m(tax)g(to)h(do)e(lo)s(cale-sp)s(eci\014c)j -(translation)f(of)330 3818 y(the)65 b(c)m(haracters)i(b)s(et)m(w)m(een) -f(the)f(double)g(quotes.)145 b(The)65 b(`)p Fs(-D)p Ft(',)74 -b(`)p Fs(--dump-strings)p Ft(',)d(and)330 3927 y(`)p -Fs(--dump-po-strings)p Ft(')27 b(in)m(v)m(o)s(cation)33 -b(options)e(list)h(the)f(translatable)h(strings)f(found)f(in)h(a)g -(script)330 4037 y(\(see)g(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 -b(ranslation],)32 b(page)f(7\).)225 4171 y Fp(\017)60 -b Ft(Bash)44 b(implemen)m(ts)g(the)f Fs(!)h Ft(k)m(eyw)m(ord)g(to)g -(negate)h(the)f(return)e(v)-5 b(alue)44 b(of)g(a)g(pip)s(eline)f(\(see) -h(Sec-)330 4281 y(tion)33 b(3.2.2)i([Pip)s(elines],)f(page)g(8\).)49 -b(V)-8 b(ery)33 b(useful)f(when)g(an)h Fs(if)f Ft(statemen)m(t)j(needs) -d(to)i(act)g(only)f(if)330 4390 y(a)k(test)h(fails.)60 -b(The)36 b(Bash)g(`)p Fs(-o)30 b(pipefail)p Ft(')35 b(option)i(to)h -Fs(set)d Ft(will)i(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330 -4500 y(failure)31 b(status)f(if)h(an)m(y)f(command)g(fails.)225 -4634 y Fp(\017)60 b Ft(Bash)34 b(has)g(the)g Fs(time)f -Ft(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)h(\(see)g(Section)g -(3.2.2)g([Pip)s(elines],)330 4743 y(page)g(8\).)52 b(The)33 -b(displa)m(y)i(of)f(the)g(timing)g(statistics)i(ma)m(y)f(b)s(e)e(con)m -(trolled)j(with)e(the)g Fs(TIMEFORMAT)330 4853 y Ft(v)-5 -b(ariable.)225 4987 y Fp(\017)60 b Ft(Bash)23 b(implemen)m(ts)g(the)h -Fs(for)29 b(\(\()h Fi(expr1)39 b Fs(;)30 b Fi(expr2)40 -b Fs(;)30 b Fi(expr3)39 b Fs(\)\))23 b Ft(arithmetic)h(for)e(command,)j -(sim-)330 5096 y(ilar)31 b(to)g(the)g(C)f(language)h(\(see)h(Section)f -(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)225 -5230 y Fp(\017)60 b Ft(Bash)31 b(includes)f(the)g Fs(select)f -Ft(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: 147 153 -TeXDict begin 147 152 bop 150 -116 a Ft(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(147)225 299 y Fp(\017)60 -b Ft(Bash)40 b(includes)g(the)g Fs([[)g Ft(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 -b(regular)e(expression)g(matc)m(hing.)225 653 y Fp(\017)60 -b Ft(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m -(hing)f(for)e(the)g Fs(case)g Ft(and)f Fs([[)h Ft(constructs.)225 -789 y Fp(\017)60 b Ft(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 -898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f -(page)h(21\).)225 1034 y Fp(\017)60 b Ft(Bash)24 b(implemen)m(ts)h -(command)e(aliases)j(and)d(the)i Fs(alias)d Ft(and)i -Fs(unalias)e Ft(builtins)h(\(see)i(Section)g(6.6)330 -1143 y([Aliases],)32 b(page)f(87\).)225 1279 y Fp(\017)60 -b Ft(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e -Fs(\(\()g Ft(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 -(expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330 -1498 y(metic],)h(page)f(86\).)225 1633 y Fp(\017)60 b -Ft(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 -(normally)g(do)g(this)g(unless)g(the)g(v)-5 b(ariables)24 -b(are)f(explicitly)330 1852 y(mark)m(ed)30 b(using)g(the)h -Fs(export)e Ft(command.)225 1988 y Fp(\017)60 b Ft(Bash)26 -b(supp)s(orts)d(the)j(`)p Fs(+=)p Ft(')f(assignmen)m(t)i(op)s(erator,)g -(whic)m(h)e(app)s(ends)f(to)i(the)g(v)-5 b(alue)26 b(of)f(the)h(v)-5 -b(ariable)330 2097 y(named)30 b(on)g(the)h(left)g(hand)e(side.)225 -2233 y Fp(\017)60 b Ft(Bash)36 b(includes)g(the)g Fl(posix)f -Ft(pattern)h(remo)m(v)-5 b(al)37 b(`)p Fs(\045)p Ft(',)h(`)p -Fs(#)p Ft(',)g(`)p Fs(\045\045)p Ft(')e(and)f(`)p Fs(##)p -Ft(')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(22\).)225 2587 y Fp(\017)60 -b Ft(The)46 b(expansion)g Fs(${#xx})p Ft(,)j(whic)m(h)d(returns)f(the)i -(length)f(of)h Fs(${xx})p Ft(,)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 -(22\).)225 2832 y Fp(\017)60 b Ft(The)30 b(expansion)g -Fs(${var:)p Fq(o\013set)r Fs([:)p Fq(length)p Fs(]})p -Ft(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i -Fs(var)p Ft('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g -Fq(length)p Ft(,)j(b)s(eginning)c(at)i Fq(o\013set)r -Ft(,)j(is)42 b(presen)m(t)h(\(see)h(Section)f(3.5.3)i([Shell)e(P)m -(arameter)330 3051 y(Expansion],)30 b(page)h(22\).)225 -3187 y Fp(\017)60 b Ft(The)21 b(expansion)f Fs(${var/[/])p -Fq(pattern)p Fs([/)p Fq(replacemen)m(t)r Fs(]})p Ft(,)i(whic)m(h)e -(matc)m(hes)j Fq(pattern)e Ft(and)f(replaces)330 3296 -y(it)29 b(with)e Fq(replacemen)m(t)32 b Ft(in)c(the)g(v)-5 -b(alue)29 b(of)f Fs(var)p Ft(,)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(22\).)225 3541 y Fp(\017)60 -b Ft(The)32 b(expansion)g Fs(${!)p Fi(prefix)11 b Fs(*})29 -b Ft(expansion,)j(whic)m(h)g(expands)g(to)h(the)f(names)g(of)h(all)g -(shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)f(names)h(b)s(egin)f -(with)g Fq(pre\014x)6 b Ft(,)36 b(is)g(a)m(v)-5 b(ailable)38 -b(\(see)e(Section)h(3.5.3)g([Shell)f(P)m(arameter)330 -3761 y(Expansion],)30 b(page)h(22\).)225 3896 y Fp(\017)60 -b Ft(Bash)22 b(has)f Fq(indirect)j Ft(v)-5 b(ariable)22 -b(expansion)g(using)f Fs(${!word})e Ft(\(see)k(Section)f(3.5.3)i -([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(22\).)225 -4141 y Fp(\017)60 b Ft(Bash)31 b(can)f(expand)g(p)s(ositional)h -(parameters)g(b)s(ey)m(ond)e Fs($9)h Ft(using)g Fs(${)p -Fi(num)11 b Fs(})p Ft(.)225 4276 y Fp(\017)60 b Ft(The)27 -b Fl(posix)g Fs($\(\))g Ft(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(27\),)j(and)38 -b(preferred)g(to)i(the)g(Bourne)f(shell's)h Fs(``)e Ft(\(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 Fp(\017)60 b Ft(Bash)31 -b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s -(cess)f(Substitution],)f(page)h(28\).)225 4766 y Fp(\017)60 -b Ft(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55 -b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330 -4876 y(user)40 b(\()p Fs(UID)p Ft(,)i Fs(EUID)p Ft(,)g(and)e -Fs(GROUPS)p Ft(\),)h(the)g(curren)m(t)f(host)g(\()p Fs(HOSTTYPE)p -Ft(,)h Fs(OSTYPE)p Ft(,)h Fs(MACHTYPE)p Ft(,)f(and)330 -4985 y Fs(HOSTNAME)p Ft(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f -(that)h(is)f(running)f(\()p Fs(BASH)p Ft(,)56 b Fs(BASH_VERSION)p -Ft(,)e(and)330 5095 y Fs(BASH_VERSINFO)p Ft(\).)37 b(See)31 -b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(68,)g(for)f -(details.)225 5230 y Fp(\017)60 b Ft(The)44 b Fs(IFS)f -Ft(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(28\).)41 -b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p -eop end -%%Page: 148 154 -TeXDict begin 148 153 bop 150 -116 a Ft(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(148)225 299 y Fp(\017)60 -b Ft(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co) -s(de)f(uses)g(`)p Fs(!)p Ft(')h(and)f(`)p Fs(^)p Ft(')h(to)g(negate)h -(the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f -(brac)m(k)m(ets.)43 b(The)29 b(Bourne)i(shell)f(uses)g(only)h(`)p -Fs(!)p Ft('.)225 536 y Fp(\017)60 b Ft(Bash)38 b(implemen)m(ts)g(the)g -(full)g(set)g(of)g Fl(posix)f Ft(\014lename)h(expansion)g(op)s -(erators,)i(including)d Fq(c)m(har-)330 646 y(acter)i(classes)t -Ft(,)h Fq(equiv)-5 b(alence)39 b(classes)t Ft(,)h(and)d -Fq(collating)j(sym)m(b)s(ols)g Ft(\(see)f(Section)f(3.5.8)h([Filename) -330 756 y(Expansion],)30 b(page)h(29\).)225 883 y Fp(\017)60 -b Ft(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g(matc)m(hing)h -(features)f(when)f(the)h Fs(extglob)d Ft(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(29\).)225 1121 y Fp(\017)60 b Ft(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 Fs(sh)d -Ft(do)s(es)g(not)g(separate)330 1230 y(the)31 b(t)m(w)m(o)g(name)g -(spaces.)225 1358 y Fp(\017)60 b Ft(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 Fs(local)f Ft(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(47\).)225 -1596 y Fp(\017)60 b Ft(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(37\).)60 b(In)35 b Fs(sh)p Ft(,)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 Fp(\017)60 -b Ft(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(31\).)225 2180 y Fp(\017)60 -b Ft(Bash)29 b(con)m(tains)h(the)f(`)p Fs(<>)p Ft(')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 -Fs(&>)p Ft(')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(31\).)225 -2527 y Fp(\017)60 b Ft(Bash)21 b(includes)f(the)h(`)p -Fs(<<<)p Ft(')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(command.)225 2765 y Fp(\017)60 b Ft(Bash)29 -b(implemen)m(ts)h(the)f(`)p Fs([n]<&)p Fi(word)11 b Ft(')26 -b(and)j(`)p Fs([n]>&)p Fi(word)11 b Ft(')26 b(redirection)k(op)s -(erators,)g(whic)m(h)e(mo)m(v)m(e)330 2874 y(one)j(\014le)f(descriptor) -g(to)h(another.)225 3002 y Fp(\017)60 b Ft(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(31\).)225 -3240 y Fp(\017)60 b Ft(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(31\).)225 3477 y Fp(\017)60 -b Ft(The)29 b Fs(noclobber)e Ft(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(57\).)66 -b(The)38 b(`)p Fs(>|)p Ft(')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 -Fs(noclobber)p Ft(.)225 3824 y Fp(\017)60 b Ft(The)34 -b(Bash)g Fs(cd)g Ft(and)f Fs(pwd)g Ft(builtins)h(\(see)h(Section)g(4.1) -g([Bourne)g(Shell)f(Builtins],)h(page)g(40\))h(eac)m(h)330 -3934 y(tak)m(e)c(`)p Fs(-L)p Ft(')e(and)g(`)p Fs(-P)p -Ft(')g(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 Fp(\017)60 b Ft(Bash)25 -b(allo)m(ws)h(a)g(function)e(to)i(o)m(v)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 Fs(builtin)f Ft(and)g Fs(command)g -Ft(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g(Builtins],)g -(page)g(47\).)225 4408 y Fp(\017)60 b Ft(The)35 b Fs(command)e -Ft(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(47\).)225 -4646 y Fp(\017)60 b Ft(Individual)23 b(builtins)g(ma)m(y)i(b)s(e)e -(enabled)h(or)g(disabled)g(using)f(the)h Fs(enable)f -Ft(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31 -b(Builtins],)g(page)g(47\).)225 4883 y Fp(\017)60 b Ft(The)26 -b(Bash)h Fs(exec)e Ft(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(40\).)225 5230 -y Fp(\017)60 b Ft(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 -Fs(export)f(-f)h Ft(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8 -b(unctions],)32 b(page)f(16\).)p eop end -%%Page: 149 155 -TeXDict begin 149 154 bop 150 -116 a Ft(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(149)225 299 y Fp(\017)60 -b Ft(The)37 b(Bash)g Fs(export)p Ft(,)h Fs(readonly)p -Ft(,)f(and)f Fs(declare)g Ft(builtins)h(can)g(tak)m(e)i(a)f(`)p -Fs(-f)p Ft(')f(option)h(to)g(act)g(on)330 408 y(shell)26 -b(functions,)g(a)h(`)p Fs(-p)p Ft(')e(option)h(to)h(displa)m(y)f(v)-5 -b(ariables)26 b(with)g(v)-5 b(arious)25 b(attributes)i(set)f(in)f(a)i -(format)330 518 y(that)g(can)f(b)s(e)f(used)h(as)g(shell)g(input,)h(a)f -(`)p Fs(-n)p Ft(')g(option)g(to)h(remo)m(v)m(e)h(v)-5 -b(arious)26 b(v)-5 b(ariable)27 b(attributes,)h(and)330 -628 y(`)p Fs(name=value)p Ft(')g(argumen)m(ts)j(to)g(set)g(v)-5 -b(ariable)31 b(attributes)g(and)f(v)-5 b(alues)30 b(sim)m(ultaneously) --8 b(.)225 765 y Fp(\017)60 b Ft(The)42 b(Bash)h Fs(hash)f -Ft(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 -Fs($PATH)p Ft(,)g(using)f(`)p Fs(hash)h(-p)p Ft(')g(\(see)330 -984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(40\).)225 -1121 y Fp(\017)60 b Ft(Bash)27 b(includes)f(a)i Fs(help)d -Ft(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(47\).)225 -1367 y Fp(\017)60 b Ft(The)42 b Fs(printf)g Ft(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(47\).)225 -1614 y Fp(\017)60 b Ft(The)26 b(Bash)h Fs(read)f Ft(builtin)g(\(see)i -(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(47\))g(will)f(read)g(a)g -(line)g(ending)330 1724 y(in)f(`)p Fs(\\)p Ft(')h(with)f(the)g(`)p -Fs(-r)p Ft(')h(option,)h(and)d(will)i(use)f(the)h Fs(REPLY)e -Ft(v)-5 b(ariable)27 b(as)g(a)f(default)h(if)f(no)h(non-option)330 -1833 y(argumen)m(ts)k(are)h(supplied.)42 b(The)30 b(Bash)i -Fs(read)e Ft(builtin)g(also)j(accepts)f(a)g(prompt)e(string)h(with)g -(the)330 1943 y(`)p Fs(-p)p Ft(')k(option)g(and)f(will)h(use)g -(Readline)g(to)h(obtain)f(the)g(line)g(when)f(giv)m(en)i(the)f(`)p -Fs(-e)p Ft(')g(option.)54 b(The)330 2052 y Fs(read)31 -b Ft(builtin)h(also)i(has)e(additional)h(options)g(to)g(con)m(trol)h -(input:)44 b(the)32 b(`)p Fs(-s)p Ft(')h(option)f(will)h(turn)f(o\013) -330 2162 y(ec)m(hoing)38 b(of)e(input)f(c)m(haracters)j(as)e(they)h -(are)f(read,)i(the)e(`)p Fs(-t)p Ft(')g(option)h(will)g(allo)m(w)g -Fs(read)e Ft(to)i(time)330 2271 y(out)c(if)g(input)f(do)s(es)g(not)h -(arriv)m(e)g(within)g(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)f(of)i -(seconds,)h(the)f(`)p Fs(-n)p Ft(')f(option)i(will)330 -2381 y(allo)m(w)29 b(reading)e(only)h(a)g(sp)s(eci\014ed)e(n)m(um)m(b)s -(er)g(of)i(c)m(haracters)h(rather)e(than)g(a)h(full)f(line,)i(and)d -(the)i(`)p Fs(-d)p Ft(')330 2491 y(option)j(will)g(read)f(un)m(til)g(a) -h(particular)g(c)m(haracter)h(rather)e(than)g(newline.)225 -2628 y Fp(\017)60 b Ft(The)33 b Fs(return)e Ft(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 Fs(.)g Ft(or)330 2737 y Fs(source)c Ft(builtins)g(\(see)j -(Section)f(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(40\).)225 -2874 y Fp(\017)60 b Ft(Bash)43 b(includes)g(the)g Fs(shopt)f -Ft(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(61\),)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 -(79\).)225 3230 y Fp(\017)60 b Ft(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 -Fs(set)g Ft(builtin)g(\(see)h(Sec-)330 3340 y(tion)31 -b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(57\).)225 3477 -y Fp(\017)60 b Ft(The)45 b(`)p Fs(-x)p Ft(')g(\(`)p Fs(xtrace)p -Ft('\))g(option)h(displa)m(ys)g(commands)f(other)h(than)f(simple)h -(commands)f(when)330 3587 y(p)s(erforming)29 b(an)h(execution)i(trace)g -(\(see)f(Section)g(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(57\).)225 -3724 y Fp(\017)60 b Ft(The)28 b Fs(test)g Ft(builtin)h(\(see)h(Section) -f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(40\))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 -Fl(posix)f Ft(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 -b(argumen)m(ts.)225 4080 y Fp(\017)60 b Ft(Bash)31 b(includes)g(the)h -Fs(caller)d Ft(builtin,)j(whic)m(h)f(displa)m(ys)g(the)g(con)m(text)i -(of)f(an)m(y)g(activ)m(e)h(subroutine)330 4189 y(call)28 -b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h -Fs(.)f Ft(or)g Fs(source)f Ft(builtins\).)39 b(This)26 -b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225 -4436 y Fp(\017)60 b Ft(The)42 b Fs(trap)f Ft(builtin)h(\(see)i(Section) -f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(40\))h(allo)m(ws)g(a)e -Fs(DEBUG)330 4545 y Ft(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e -(to)g Fs(EXIT)p Ft(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h -Fs(DEBUG)e Ft(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h -(simple)f(command,)j Fs(for)c Ft(command,)k Fs(case)c -Ft(command,)k Fs(select)330 4765 y Ft(command,)35 b(ev)m(ery)g -(arithmetic)g Fs(for)e Ft(command,)i(and)f(b)s(efore)g(the)g(\014rst)f -(command)h(executes)h(in)330 4874 y(a)29 b(shell)g(function.)40 -b(The)28 b Fs(DEBUG)g Ft(trap)g(is)h(not)g(inherited)f(b)m(y)h(shell)g -(functions)f(unless)g(the)h(function)330 4984 y(has)35 -b(b)s(een)g(giv)m(en)i(the)f Fs(trace)e Ft(attribute)i(or)g(the)g -Fs(functrace)d Ft(option)j(has)f(b)s(een)g(enabled)g(using)330 -5093 y(the)28 b Fs(shopt)e Ft(builtin.)39 b(The)27 b -Fs(extdebug)f Ft(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f -(the)g Fs(DEBUG)e Ft(trap.)330 5230 y(The)21 b Fs(trap)e -Ft(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j -(page)e(40\))g(allo)m(ws)g(an)f Fs(ERR)f Ft(pseudo-)330 -5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g -Fs(EXIT)f Ft(and)g Fs(DEBUG)p Ft(.)39 b(Commands)28 b(sp)s(eci\014ed)h -(with)g(an)g Fs(ERR)g Ft(trap)p eop end -%%Page: 150 156 -TeXDict begin 150 155 bop 150 -116 a Ft(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(150)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 Fs(ERR)g Ft(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h -(shell)g(functions)f(unless)g(the)h Fs(-o)29 b(errtrace)37 -b Ft(option)i(to)g(the)g Fs(set)f Ft(builtin)g(is)330 -518 y(enabled.)330 650 y(The)g Fs(trap)g Ft(builtin)h(\(see)g(Section)h -(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(40\))g(allo)m(ws)g(a)g -Fs(RETURN)330 760 y Ft(pseudo-signal)35 b(sp)s(eci\014cation,)j -(similar)d(to)h Fs(EXIT)e Ft(and)g Fs(DEBUG)p Ft(.)54 -b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y -Fs(RETURN)k Ft(trap)i(are)g(executed)h(b)s(efore)e(execution)i(resumes) -e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 979 -y(script)36 b(executed)g(with)g Fs(.)f Ft(or)h Fs(source)e -Ft(returns.)56 b(The)35 b Fs(RETURN)f Ft(trap)i(is)g(not)g(inherited)f -(b)m(y)h(shell)330 1088 y(functions)k(unless)h(the)g(function)f(has)h -(b)s(een)f(giv)m(en)i(the)f Fs(trace)e Ft(attribute)j(or)e(the)h -Fs(functrace)330 1198 y Ft(option)31 b(has)f(b)s(een)g(enabled)g(using) -g(the)g Fs(shopt)f Ft(builtin.)225 1330 y Fp(\017)60 -b Ft(The)30 b(Bash)g Fs(type)f Ft(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 -1440 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i -(page)f(47\).)225 1571 y Fp(\017)60 b Ft(The)34 b(Bash)h -Fs(umask)e Ft(builtin)h(p)s(ermits)g(a)g(`)p Fs(-p)p -Ft(')h(option)g(to)g(cause)g(the)g(output)f(to)h(b)s(e)f(displa)m(y)m -(ed)h(in)330 1681 y(the)g(form)g(of)g(a)h Fs(umask)e -Ft(command)h(that)g(ma)m(y)h(b)s(e)f(reused)f(as)h(input)g(\(see)h -(Section)g(4.1)g([Bourne)330 1791 y(Shell)30 b(Builtins],)h(page)h -(40\).)225 1923 y Fp(\017)60 b Ft(Bash)34 b(implemen)m(ts)h(a)g -Fs(csh)p Ft(-lik)m(e)g(directory)f(stac)m(k,)j(and)d(pro)m(vides)g(the) -g Fs(pushd)p Ft(,)g Fs(popd)p Ft(,)g(and)g Fs(dirs)330 -2032 y Ft(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(90\).)56 b(Bash)35 -b(also)330 2142 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 Fs(DIRSTACK)f Ft(shell)h(v)-5 -b(ariable.)225 2274 y Fp(\017)60 b Ft(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 2383 y(activ)m(e)33 b(\(see)e(Section)g -(6.9)h([Con)m(trolling)f(the)g(Prompt],)f(page)h(91\).)225 -2515 y Fp(\017)60 b Ft(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 2625 y(page)31 b(92\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s -(de)f(is)h(to)s(o)g(limited.)225 2757 y Fp(\017)60 b -Ft(The)30 b Fs(disown)f Ft(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 2866 y([Job)h(Con)m(trol)h(Builtins],)g(page)g(98\))h(or)e -(suppress)e(the)i(sending)g(of)g Fs(SIGHUP)e Ft(to)j(a)g(job)f(when)f -(the)330 2976 y(shell)f(exits)g(as)f(the)h(result)f(of)h(a)f -Fs(SIGHUP)p Ft(.)225 3108 y Fp(\017)60 b Ft(Bash)31 b(includes)f(a)g(n) -m(um)m(b)s(er)f(of)i(features)g(to)g(supp)s(ort)d(a)j(separate)g -(debugger)f(for)h(shell)f(scripts.)225 3240 y Fp(\017)60 -b Ft(The)28 b(SVR4.2)h(shell)f(has)g(t)m(w)m(o)i(privilege-related)g -(builtins)e(\()p Fs(mldmode)e Ft(and)i Fs(priv)p Ft(\))f(not)i(presen)m -(t)f(in)330 3350 y(Bash.)225 3482 y Fp(\017)60 b Ft(Bash)31 -b(do)s(es)f(not)g(ha)m(v)m(e)i(the)e Fs(stop)g Ft(or)g -Fs(newgrp)f Ft(builtins.)225 3613 y Fp(\017)60 b Ft(Bash)31 -b(do)s(es)f(not)g(use)g(the)h Fs(SHACCT)d Ft(v)-5 b(ariable)32 -b(or)e(p)s(erform)f(shell)i(accoun)m(ting.)225 3745 y -Fp(\017)60 b Ft(The)30 b(SVR4.2)h Fs(sh)f Ft(uses)g(a)g -Fs(TIMEOUT)f Ft(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g -Fs(TMOUT)p Ft(.)150 3900 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(79.)150 4127 y Fr(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 -4287 y Ft(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 -(limi-)150 4396 y(tations)f(of)e(the)h(SVR4.2)g(shell.)41 -b(F)-8 b(or)31 b(instance:)225 4528 y Fp(\017)60 b Ft(Bash)32 -b(do)s(es)f(not)h(fork)f(a)h(subshell)e(when)h(redirecting)h(in)m(to)h -(or)e(out)h(of)g(a)g(shell)f(con)m(trol)i(structure)330 -4638 y(suc)m(h)d(as)h(an)f Fs(if)g Ft(or)g Fs(while)f -Ft(statemen)m(t.)225 4770 y Fp(\017)60 b Ft(Bash)29 b(do)s(es)f(not)h -(allo)m(w)h(un)m(balanced)f(quotes.)41 b(The)28 b(SVR4.2)h(shell)g -(will)g(silen)m(tly)i(insert)d(a)h(needed)330 4879 y(closing)g(quote)g -(at)f Fs(EOF)f Ft(under)g(certain)h(circumstances.)41 -b(This)27 b(can)h(b)s(e)g(the)g(cause)g(of)g(some)h(hard-)330 -4989 y(to-\014nd)h(errors.)225 5121 y Fp(\017)60 b Ft(The)45 -b(SVR4.2)h(shell)f(uses)g(a)g(baro)s(que)g(memory)g(managemen)m(t)i(sc) -m(heme)e(based)g(on)g(trapping)330 5230 y Fs(SIGSEGV)p -Ft(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f -(with)g Fs(SIGSEGV)e Ft(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330 -5340 y(the)31 b Fs(system\(\))d Ft(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: 151 157 -TeXDict begin 151 156 bop 150 -116 a Ft(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 Fp(\017)60 -b Ft(In)26 b(a)i(questionable)g(attempt)h(at)f(securit)m(y)-8 -b(,)29 b(the)e(SVR4.2)h(shell,)g(when)f(in)m(v)m(ok)m(ed)h(without)g -(the)f(`)p Fs(-p)p Ft(')330 408 y(option,)39 b(will)d(alter)i(its)e -(real)h(and)f(e\013ectiv)m(e)j Fl(uid)d Ft(and)g Fl(gid)h -Ft(if)f(they)h(are)f(less)h(than)f(some)h(magic)330 518 -y(threshold)30 b(v)-5 b(alue,)31 b(commonly)g(100.)42 -b(This)29 b(can)i(lead)g(to)g(unexp)s(ected)f(results.)225 -653 y Fp(\017)60 b Ft(The)30 b(SVR4.2)h(shell)g(do)s(es)f(not)g(allo)m -(w)i(users)e(to)h(trap)f Fs(SIGSEGV)p Ft(,)f Fs(SIGALRM)p -Ft(,)f(or)j Fs(SIGCHLD)p Ft(.)225 787 y Fp(\017)60 b -Ft(The)34 b(SVR4.2)h(shell)g(do)s(es)g(not)f(allo)m(w)j(the)d -Fs(IFS)p Ft(,)h Fs(MAILCHECK)p Ft(,)f Fs(PATH)p Ft(,)h -Fs(PS1)p Ft(,)g(or)f Fs(PS2)g Ft(v)-5 b(ariables)35 b(to)330 -897 y(b)s(e)30 b(unset.)225 1031 y Fp(\017)60 b Ft(The)30 -b(SVR4.2)h(shell)g(treats)g(`)p Fs(^)p Ft(')f(as)h(the)g(undo)s(cumen)m -(ted)e(equiv)-5 b(alen)m(t)31 b(of)g(`)p Fs(|)p Ft('.)225 -1166 y Fp(\017)60 b Ft(Bash)37 b(allo)m(ws)h(m)m(ultiple)f(option)g -(argumen)m(ts)g(when)e(it)i(is)g(in)m(v)m(ok)m(ed)h(\()p -Fs(-x)30 b(-v)p Ft(\);)40 b(the)c(SVR4.2)i(shell)330 -1275 y(allo)m(ws)c(only)f(one)g(option)g(argumen)m(t)g(\()p -Fs(-xv)p Ft(\).)47 b(In)32 b(fact,)i(some)f(v)m(ersions)g(of)g(the)g -(shell)f(dump)f(core)330 1385 y(if)f(the)h(second)f(argumen)m(t)h(b)s -(egins)f(with)g(a)h(`)p Fs(-)p Ft('.)225 1519 y Fp(\017)60 -b Ft(The)26 b(SVR4.2)i(shell)f(exits)g(a)g(script)g(if)g(an)m(y)g -(builtin)f(fails;)j(Bash)e(exits)g(a)g(script)g(only)g(if)g(one)g(of)g -(the)330 1629 y Fl(posix)34 b Ft(sp)s(ecial)h(builtins)f(fails,)i(and)e -(only)h(for)f(certain)h(failures,)h(as)f(en)m(umerated)g(in)f(the)h -Fl(posix)330 1738 y Ft(standard.)225 1873 y Fp(\017)60 -b Ft(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 Fs(jsh)g Ft(\(it)h(turns)e(on)h(job)g -(con)m(trol\).)p eop end -%%Page: 152 158 -TeXDict begin 152 157 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(152)150 299 y Fo(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 Ft(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 632 y(c)817 635 y Fp(\015)e -Ft(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31 -b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745 -y Fs(http://fsf.org/)390 964 y Ft(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f -(to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 -1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f -(is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330 -1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g -(a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330 -1450 y(useful)29 b(do)s(cumen)m(t)h Fq(free)36 b Ft(in)29 -b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j -(the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f -(redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i -(either)f(commercially)h(or)e(non-)330 1669 y(commercially)-8 -b(.)56 b(Secondarily)-8 b(,)36 b(this)f(License)g(preserv)m(es)g(for)f -(the)h(author)f(and)g(publisher)f(a)i(w)m(a)m(y)330 1778 -y(to)i(get)g(credit)g(for)f(their)g(w)m(ork,)i(while)e(not)g(b)s(eing)g -(considered)g(resp)s(onsible)f(for)h(mo)s(di\014cations)330 -1888 y(made)30 b(b)m(y)h(others.)330 2021 y(This)22 b(License)i(is)f(a) -h(kind)e(of)i(\\cop)m(yleft",)j(whic)m(h)c(means)g(that)h(deriv)-5 -b(ativ)m(e)24 b(w)m(orks)f(of)h(the)f(do)s(cumen)m(t)330 -2131 y(m)m(ust)34 b(themselv)m(es)h(b)s(e)e(free)h(in)g(the)g(same)g -(sense.)51 b(It)34 b(complemen)m(ts)h(the)f(GNU)g(General)h(Public)330 -2240 y(License,)c(whic)m(h)f(is)h(a)f(cop)m(yleft)i(license)g(designed) -e(for)g(free)h(soft)m(w)m(are.)330 2373 y(W)-8 b(e)31 -b(ha)m(v)m(e)f(designed)g(this)f(License)h(in)f(order)g(to)i(use)e(it)h -(for)f(man)m(uals)h(for)f(free)h(soft)m(w)m(are,)h(b)s(ecause)330 -2483 y(free)42 b(soft)m(w)m(are)i(needs)e(free)g(do)s(cumen)m(tation:) -65 b(a)42 b(free)h(program)f(should)f(come)i(with)f(man)m(uals)330 -2592 y(pro)m(viding)29 b(the)g(same)g(freedoms)f(that)i(the)f(soft)m(w) -m(are)h(do)s(es.)40 b(But)29 b(this)f(License)i(is)f(not)g(limited)g -(to)330 2702 y(soft)m(w)m(are)j(man)m(uals;)f(it)g(can)g(b)s(e)f(used)g -(for)g(an)m(y)h(textual)h(w)m(ork,)f(regardless)g(of)g(sub)5 -b(ject)30 b(matter)i(or)330 2812 y(whether)f(it)h(is)f(published)f(as)i -(a)f(prin)m(ted)g(b)s(o)s(ok.)44 b(W)-8 b(e)32 b(recommend)f(this)h -(License)g(principally)f(for)330 2921 y(w)m(orks)f(whose)h(purp)s(ose)d -(is)j(instruction)f(or)g(reference.)199 3054 y(1.)61 -b(APPLICABILITY)29 b(AND)j(DEFINITIONS)330 3187 y(This)39 -b(License)i(applies)f(to)g(an)m(y)h(man)m(ual)f(or)g(other)g(w)m(ork,)i -(in)e(an)m(y)g(medium,)i(that)e(con)m(tains)i(a)330 3297 -y(notice)h(placed)f(b)m(y)f(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m(ying) -h(it)g(can)g(b)s(e)f(distributed)f(under)g(the)i(terms)330 -3407 y(of)c(this)f(License.)62 b(Suc)m(h)37 b(a)h(notice)h(gran)m(ts)f -(a)g(w)m(orld-wide,)h(ro)m(y)m(alt)m(y-free)i(license,)f(unlimited)d -(in)330 3516 y(duration,)49 b(to)d(use)f(that)g(w)m(ork)h(under)d(the)j -(conditions)f(stated)h(herein.)85 b(The)45 b(\\Do)s(cumen)m(t",)330 -3626 y(b)s(elo)m(w,)29 b(refers)f(to)h(an)m(y)g(suc)m(h)f(man)m(ual)h -(or)f(w)m(ork.)40 b(An)m(y)29 b(mem)m(b)s(er)e(of)i(the)f(public)g(is)g -(a)h(licensee,)i(and)330 3735 y(is)25 b(addressed)f(as)h(\\y)m(ou".)40 -b(Y)-8 b(ou)26 b(accept)g(the)f(license)h(if)f(y)m(ou)h(cop)m(y)-8 -b(,)27 b(mo)s(dify)d(or)h(distribute)g(the)g(w)m(ork)330 -3845 y(in)30 b(a)h(w)m(a)m(y)g(requiring)f(p)s(ermission)f(under)g(cop) -m(yrigh)m(t)j(la)m(w.)330 3978 y(A)i(\\Mo)s(di\014ed)f(V)-8 -b(ersion")35 b(of)f(the)g(Do)s(cumen)m(t)g(means)g(an)m(y)g(w)m(ork)f -(con)m(taining)j(the)e(Do)s(cumen)m(t)g(or)330 4088 y(a)k(p)s(ortion)f -(of)h(it,)i(either)e(copied)g(v)m(erbatim,)i(or)d(with)h(mo)s -(di\014cations)f(and/or)h(translated)g(in)m(to)330 4197 -y(another)31 b(language.)330 4330 y(A)26 b(\\Secondary)g(Section")h(is) -f(a)h(named)e(app)s(endix)f(or)i(a)h(fron)m(t-matter)g(section)g(of)f -(the)g(Do)s(cumen)m(t)330 4440 y(that)c(deals)g(exclusiv)m(ely)h(with)e -(the)g(relationship)h(of)f(the)h(publishers)d(or)i(authors)g(of)h(the)f -(Do)s(cumen)m(t)330 4549 y(to)38 b(the)f(Do)s(cumen)m(t's)i(o)m(v)m -(erall)g(sub)5 b(ject)37 b(\(or)h(to)g(related)g(matters\))g(and)f(con) -m(tains)h(nothing)f(that)330 4659 y(could)j(fall)h(directly)g(within)f -(that)h(o)m(v)m(erall)i(sub)5 b(ject.)70 b(\(Th)m(us,)42 -b(if)e(the)h(Do)s(cumen)m(t)g(is)f(in)g(part)h(a)330 -4769 y(textb)s(o)s(ok)24 b(of)g(mathematics,)j(a)d(Secondary)f(Section) -h(ma)m(y)g(not)g(explain)g(an)m(y)g(mathematics.\))40 -b(The)330 4878 y(relationship)28 b(could)f(b)s(e)g(a)g(matter)i(of)e -(historical)i(connection)f(with)f(the)h(sub)5 b(ject)27 -b(or)g(with)g(related)330 4988 y(matters,)38 b(or)d(of)h(legal,)i -(commercial,)h(philosophical,)f(ethical)f(or)e(p)s(olitical)i(p)s -(osition)f(regarding)330 5097 y(them.)330 5230 y(The)25 -b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g -(Sections)g(whose)f(titles)i(are)f(designated,)i(as)330 -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: 153 159 -TeXDict begin 153 158 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(153)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 -b(arian)m(t.)46 b(The)31 b(Do)s(cumen)m(t)i(ma)m(y)f(con)m(tain)i(zero) -e(In)m(v)-5 b(arian)m(t)330 518 y(Sections.)39 b(If)25 -b(the)f(Do)s(cumen)m(t)i(do)s(es)e(not)h(iden)m(tify)g(an)m(y)g(In)m(v) --5 b(arian)m(t)25 b(Sections)h(then)e(there)h(are)g(none.)330 -669 y(The)36 b(\\Co)m(v)m(er)i(T)-8 b(exts")38 b(are)f(certain)g(short) -g(passages)g(of)g(text)g(that)h(are)f(listed,)i(as)d(F)-8 -b(ron)m(t-Co)m(v)m(er)330 778 y(T)g(exts)26 b(or)f(Bac)m(k-Co)m(v)m(er) -j(T)-8 b(exts,)27 b(in)d(the)h(notice)i(that)e(sa)m(ys)h(that)g(the)f -(Do)s(cumen)m(t)h(is)f(released)g(under)330 888 y(this)h(License.)40 -b(A)25 b(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8 b(ext)26 -b(ma)m(y)h(b)s(e)e(at)i(most)f(5)g(w)m(ords,)g(and)g(a)g(Bac)m(k-Co)m -(v)m(er)j(T)-8 b(ext)26 b(ma)m(y)330 998 y(b)s(e)k(at)h(most)g(25)g(w)m -(ords.)330 1148 y(A)36 b(\\T)-8 b(ransparen)m(t")36 b(cop)m(y)g(of)g -(the)f(Do)s(cumen)m(t)h(means)g(a)g(mac)m(hine-readable)h(cop)m(y)-8 -b(,)38 b(represen)m(ted)330 1258 y(in)d(a)h(format)g(whose)g(sp)s -(eci\014cation)g(is)g(a)m(v)-5 b(ailable)38 b(to)f(the)f(general)g -(public,)h(that)f(is)g(suitable)g(for)330 1367 y(revising)c(the)g(do)s -(cumen)m(t)f(straigh)m(tforw)m(ardly)i(with)e(generic)i(text)g(editors) -f(or)f(\(for)h(images)h(com-)330 1477 y(p)s(osed)23 b(of)h(pixels\))g -(generic)h(pain)m(t)f(programs)g(or)f(\(for)h(dra)m(wings\))g(some)g -(widely)g(a)m(v)-5 b(ailable)26 b(dra)m(wing)330 1587 -y(editor,)k(and)f(that)g(is)g(suitable)h(for)f(input)f(to)i(text)g -(formatters)f(or)g(for)g(automatic)i(translation)f(to)330 -1696 y(a)d(v)-5 b(ariet)m(y)28 b(of)f(formats)g(suitable)h(for)e(input) -g(to)i(text)g(formatters.)40 b(A)27 b(cop)m(y)g(made)g(in)g(an)g -(otherwise)330 1806 y(T)-8 b(ransparen)m(t)37 b(\014le)h(format)g -(whose)f(markup,)i(or)e(absence)h(of)g(markup,)g(has)g(b)s(een)f -(arranged)g(to)330 1915 y(th)m(w)m(art)27 b(or)g(discourage)g -(subsequen)m(t)f(mo)s(di\014cation)h(b)m(y)g(readers)f(is)g(not)h(T)-8 -b(ransparen)m(t.)39 b(An)27 b(image)330 2025 y(format)35 -b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g -(substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g -(is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i -(\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T) --8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fl(asci)r(i)g -Ft(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j -(LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j -Ff(SGML)f Ft(or)f Ff(XML)g Ft(using)g(a)g(publicly)330 -2504 y(a)m(v)-5 b(ailable)42 b Ff(DTD)p Ft(,)g(and)d -(standard-conforming)h(simple)g Ff(HTML)p Ft(,)g(P)m(ostScript)h(or)f -Ff(PDF)g Ft(designed)330 2614 y(for)e(h)m(uman)g(mo)s(di\014cation.)65 -b(Examples)38 b(of)h(transparen)m(t)f(image)i(formats)e(include)g -Ff(PNG)p Ft(,)h Ff(X)n(CF)330 2724 y Ft(and)h Ff(JPG)p -Ft(.)g(Opaque)h(formats)g(include)f(proprietary)g(formats)h(that)h(can) -f(b)s(e)f(read)g(and)h(edited)330 2833 y(only)54 b(b)m(y)f(proprietary) -h(w)m(ord)f(pro)s(cessors,)59 b Ff(SGML)54 b Ft(or)f -Ff(XML)h Ft(for)g(whic)m(h)f(the)h Ff(DTD)g Ft(and/or)330 -2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g(generally)i(a)m(v)-5 -b(ailable,)71 b(and)60 b(the)h(mac)m(hine-generated)j -Ff(HTML)p Ft(,)330 3052 y(P)m(ostScript)31 b(or)f Ff(PDF)h -Ft(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s(cessors)g(for)g(output) -g(purp)s(oses)f(only)-8 b(.)330 3203 y(The)34 b(\\Title)h(P)m(age")i -(means,)e(for)f(a)h(prin)m(ted)f(b)s(o)s(ok,)h(the)f(title)i(page)f -(itself,)h(plus)e(suc)m(h)f(follo)m(wing)330 3313 y(pages)28 -b(as)g(are)g(needed)g(to)g(hold,)g(legibly)-8 b(,)30 -b(the)e(material)h(this)e(License)i(requires)e(to)h(app)s(ear)f(in)h -(the)330 3422 y(title)g(page.)40 b(F)-8 b(or)28 b(w)m(orks)e(in)g -(formats)h(whic)m(h)g(do)f(not)h(ha)m(v)m(e)h(an)m(y)e(title)j(page)e -(as)g(suc)m(h,)g(\\Title)h(P)m(age")330 3532 y(means)j(the)f(text)i -(near)e(the)h(most)g(prominen)m(t)g(app)s(earance)f(of)h(the)g(w)m -(ork's)g(title,)h(preceding)f(the)330 3641 y(b)s(eginning)f(of)g(the)h -(b)s(o)s(dy)e(of)h(the)h(text.)330 3792 y(The)j(\\publisher")g(means)h -(an)m(y)f(p)s(erson)g(or)h(en)m(tit)m(y)h(that)f(distributes)f(copies)i -(of)e(the)h(Do)s(cumen)m(t)330 3902 y(to)c(the)g(public.)330 -4052 y(A)f(section)h(\\En)m(titled)g(XYZ")f(means)f(a)h(named)g -(subunit)e(of)h(the)h(Do)s(cumen)m(t)h(whose)e(title)i(either)330 -4162 y(is)d(precisely)g(XYZ)g(or)f(con)m(tains)i(XYZ)f(in)f(paren)m -(theses)i(follo)m(wing)g(text)g(that)f(translates)h(XYZ)e(in)330 -4271 y(another)e(language.)40 b(\(Here)26 b(XYZ)f(stands)f(for)h(a)g -(sp)s(eci\014c)g(section)h(name)f(men)m(tioned)h(b)s(elo)m(w,)g(suc)m -(h)330 4381 y(as)i(\\Ac)m(kno)m(wledgemen)m(ts",)33 b(\\Dedications",)e -(\\Endorsemen)m(ts",)e(or)f(\\History".\))42 b(T)-8 b(o)29 -b(\\Preserv)m(e)330 4491 y(the)34 b(Title")h(of)e(suc)m(h)h(a)g -(section)g(when)f(y)m(ou)h(mo)s(dify)e(the)i(Do)s(cumen)m(t)h(means)e -(that)h(it)g(remains)g(a)330 4600 y(section)e(\\En)m(titled)f(XYZ")g -(according)g(to)g(this)g(de\014nition.)330 4751 y(The)c(Do)s(cumen)m(t) -i(ma)m(y)f(include)f(W)-8 b(arran)m(t)m(y)30 b(Disclaimers)f(next)f(to) -g(the)g(notice)h(whic)m(h)e(states)i(that)330 4861 y(this)34 -b(License)g(applies)g(to)h(the)f(Do)s(cumen)m(t.)52 b(These)33 -b(W)-8 b(arran)m(t)m(y)36 b(Disclaimers)f(are)g(considered)e(to)330 -4970 y(b)s(e)k(included)g(b)m(y)g(reference)h(in)g(this)f(License,)j -(but)d(only)h(as)g(regards)f(disclaiming)i(w)m(arran)m(ties:)330 -5080 y(an)m(y)e(other)g(implication)i(that)e(these)g(W)-8 -b(arran)m(t)m(y)39 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: 154 160 -TeXDict begin 154 159 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(154)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 -(and)42 b(the)h(license)330 518 y(notice)37 b(sa)m(ying)g(this)e -(License)i(applies)e(to)i(the)f(Do)s(cumen)m(t)g(are)g(repro)s(duced)e -(in)i(all)g(copies,)j(and)330 628 y(that)27 b(y)m(ou)g(add)f(no)h -(other)f(conditions)h(whatso)s(ev)m(er)h(to)f(those)g(of)g(this)f -(License.)40 b(Y)-8 b(ou)27 b(ma)m(y)g(not)g(use)330 -737 y(tec)m(hnical)35 b(measures)d(to)i(obstruct)f(or)g(con)m(trol)h -(the)f(reading)g(or)g(further)e(cop)m(ying)j(of)f(the)g(copies)330 -847 y(y)m(ou)25 b(mak)m(e)g(or)g(distribute.)38 b(Ho)m(w)m(ev)m(er,)28 -b(y)m(ou)d(ma)m(y)g(accept)h(comp)s(ensation)f(in)f(exc)m(hange)j(for)d -(copies.)330 956 y(If)32 b(y)m(ou)g(distribute)g(a)h(large)g(enough)f -(n)m(um)m(b)s(er)f(of)h(copies)h(y)m(ou)f(m)m(ust)h(also)g(follo)m(w)g -(the)f(conditions)330 1066 y(in)e(section)i(3.)330 1200 -y(Y)-8 b(ou)21 b(ma)m(y)h(also)f(lend)g(copies,)i(under)d(the)h(same)g -(conditions)g(stated)h(ab)s(o)m(v)m(e,)i(and)c(y)m(ou)h(ma)m(y)g -(publicly)330 1310 y(displa)m(y)31 b(copies.)199 1443 -y(3.)61 b(COPYING)30 b(IN)g(QUANTITY)330 1577 y(If)25 -b(y)m(ou)g(publish)f(prin)m(ted)g(copies)i(\(or)g(copies)g(in)f(media)g -(that)h(commonly)g(ha)m(v)m(e)g(prin)m(ted)f(co)m(v)m(ers\))i(of)330 -1687 y(the)32 b(Do)s(cumen)m(t,)h(n)m(um)m(b)s(ering)e(more)h(than)f -(100,)j(and)d(the)h(Do)s(cumen)m(t's)h(license)f(notice)h(requires)330 -1797 y(Co)m(v)m(er)i(T)-8 b(exts,)36 b(y)m(ou)f(m)m(ust)f(enclose)i -(the)e(copies)h(in)f(co)m(v)m(ers)i(that)f(carry)-8 b(,)36 -b(clearly)f(and)f(legibly)-8 b(,)37 b(all)330 1906 y(these)j(Co)m(v)m -(er)g(T)-8 b(exts:)59 b(F)-8 b(ron)m(t-Co)m(v)m(er)41 -b(T)-8 b(exts)40 b(on)f(the)g(fron)m(t)g(co)m(v)m(er,)44 -b(and)38 b(Bac)m(k-Co)m(v)m(er)k(T)-8 b(exts)40 b(on)330 -2016 y(the)29 b(bac)m(k)h(co)m(v)m(er.)42 b(Both)30 b(co)m(v)m(ers)h(m) -m(ust)e(also)h(clearly)g(and)f(legibly)h(iden)m(tify)f(y)m(ou)h(as)f -(the)h(publisher)330 2125 y(of)k(these)h(copies.)53 b(The)34 -b(fron)m(t)h(co)m(v)m(er)h(m)m(ust)e(presen)m(t)g(the)h(full)f(title)i -(with)d(all)j(w)m(ords)d(of)i(the)f(title)330 2235 y(equally)e -(prominen)m(t)e(and)g(visible.)43 b(Y)-8 b(ou)31 b(ma)m(y)g(add)g -(other)g(material)h(on)f(the)g(co)m(v)m(ers)h(in)e(addition.)330 -2345 y(Cop)m(ying)36 b(with)g(c)m(hanges)h(limited)g(to)g(the)g(co)m(v) -m(ers,)i(as)d(long)h(as)g(they)f(preserv)m(e)g(the)h(title)g(of)g(the) -330 2454 y(Do)s(cumen)m(t)h(and)e(satisfy)i(these)f(conditions,)j(can)d -(b)s(e)g(treated)h(as)f(v)m(erbatim)h(cop)m(ying)g(in)f(other)330 -2564 y(resp)s(ects.)330 2698 y(If)32 b(the)h(required)f(texts)i(for)e -(either)h(co)m(v)m(er)i(are)e(to)s(o)g(v)m(oluminous)g(to)g(\014t)g -(legibly)-8 b(,)35 b(y)m(ou)e(should)f(put)330 2807 y(the)h(\014rst)f -(ones)h(listed)g(\(as)h(man)m(y)f(as)g(\014t)g(reasonably\))g(on)g(the) -g(actual)h(co)m(v)m(er,)h(and)e(con)m(tin)m(ue)h(the)330 -2917 y(rest)d(on)m(to)g(adjacen)m(t)h(pages.)330 3051 -y(If)27 b(y)m(ou)g(publish)e(or)i(distribute)g(Opaque)f(copies)i(of)f -(the)h(Do)s(cumen)m(t)f(n)m(um)m(b)s(ering)f(more)i(than)e(100,)330 -3160 y(y)m(ou)i(m)m(ust)g(either)h(include)e(a)i(mac)m(hine-readable)g -(T)-8 b(ransparen)m(t)28 b(cop)m(y)h(along)g(with)e(eac)m(h)i(Opaque) -330 3270 y(cop)m(y)-8 b(,)38 b(or)d(state)h(in)f(or)g(with)g(eac)m(h)h -(Opaque)e(cop)m(y)i(a)g(computer-net)m(w)m(ork)g(lo)s(cation)h(from)d -(whic)m(h)330 3380 y(the)24 b(general)i(net)m(w)m(ork-using)f(public)e -(has)h(access)i(to)f(do)m(wnload)f(using)g(public-standard)f(net)m(w)m -(ork)330 3489 y(proto)s(cols)40 b(a)f(complete)h(T)-8 -b(ransparen)m(t)39 b(cop)m(y)g(of)g(the)h(Do)s(cumen)m(t,)i(free)d(of)g -(added)f(material.)67 b(If)330 3599 y(y)m(ou)39 b(use)g(the)g(latter)h -(option,)h(y)m(ou)f(m)m(ust)e(tak)m(e)j(reasonably)e(pruden)m(t)e -(steps,)k(when)d(y)m(ou)h(b)s(egin)330 3708 y(distribution)f(of)g -(Opaque)g(copies)h(in)e(quan)m(tit)m(y)-8 b(,)43 b(to)38 -b(ensure)g(that)h(this)f(T)-8 b(ransparen)m(t)38 b(cop)m(y)h(will)330 -3818 y(remain)30 b(th)m(us)g(accessible)i(at)f(the)f(stated)h(lo)s -(cation)h(un)m(til)e(at)h(least)h(one)e(y)m(ear)h(after)g(the)f(last)h -(time)330 3927 y(y)m(ou)37 b(distribute)f(an)h(Opaque)f(cop)m(y)i -(\(directly)g(or)e(through)g(y)m(our)h(agen)m(ts)h(or)f(retailers\))h -(of)f(that)330 4037 y(edition)31 b(to)g(the)g(public.)330 -4171 y(It)k(is)f(requested,)i(but)e(not)h(required,)g(that)g(y)m(ou)g -(con)m(tact)h(the)f(authors)f(of)h(the)g(Do)s(cumen)m(t)g(w)m(ell)330 -4281 y(b)s(efore)28 b(redistributing)g(an)m(y)h(large)h(n)m(um)m(b)s -(er)d(of)i(copies,)h(to)f(giv)m(e)h(them)f(a)g(c)m(hance)h(to)f(pro)m -(vide)g(y)m(ou)330 4390 y(with)h(an)g(up)s(dated)f(v)m(ersion)i(of)g -(the)f(Do)s(cumen)m(t.)199 4524 y(4.)61 b(MODIFICA)-8 -b(TIONS)330 4658 y(Y)g(ou)26 b(ma)m(y)g(cop)m(y)g(and)f(distribute)g(a) -h(Mo)s(di\014ed)f(V)-8 b(ersion)26 b(of)g(the)g(Do)s(cumen)m(t)g(under) -e(the)h(conditions)330 4768 y(of)c(sections)h(2)g(and)e(3)h(ab)s(o)m(v) -m(e,)k(pro)m(vided)20 b(that)i(y)m(ou)f(release)i(the)e(Mo)s(di\014ed)f -(V)-8 b(ersion)22 b(under)d(precisely)330 4877 y(this)29 -b(License,)h(with)f(the)g(Mo)s(di\014ed)f(V)-8 b(ersion)30 -b(\014lling)f(the)g(role)h(of)f(the)g(Do)s(cumen)m(t,)h(th)m(us)f -(licensing)330 4987 y(distribution)k(and)h(mo)s(di\014cation)g(of)h -(the)f(Mo)s(di\014ed)f(V)-8 b(ersion)35 b(to)g(who)s(ev)m(er)f(p)s -(ossesses)f(a)i(cop)m(y)g(of)330 5096 y(it.)41 b(In)30 -b(addition,)h(y)m(ou)f(m)m(ust)h(do)f(these)h(things)f(in)g(the)h(Mo)s -(di\014ed)e(V)-8 b(ersion:)357 5230 y(A.)60 b(Use)33 -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 -(an)m(y\))g(a)g(title)h(distinct)f(from)g(that)g(of)g(the)510 -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: 155 161 -TeXDict begin 155 160 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(155)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 -545 y(B.)61 b(List)31 b(on)f(the)h(Title)g(P)m(age,)i(as)d(authors,)h -(one)g(or)f(more)h(p)s(ersons)e(or)h(en)m(tities)j(resp)s(onsible)c -(for)510 655 y(authorship)c(of)h(the)h(mo)s(di\014cations)f(in)g(the)g -(Mo)s(di\014ed)f(V)-8 b(ersion,)28 b(together)g(with)d(at)i(least)h -(\014v)m(e)510 765 y(of)c(the)g(principal)g(authors)f(of)i(the)f(Do)s -(cumen)m(t)g(\(all)h(of)g(its)f(principal)g(authors,)h(if)f(it)g(has)g -(few)m(er)510 874 y(than)30 b(\014v)m(e\),)h(unless)f(they)h(release)g -(y)m(ou)g(from)f(this)g(requiremen)m(t.)359 1011 y(C.)60 -b(State)32 b(on)e(the)h(Title)h(page)f(the)g(name)g(of)g(the)g -(publisher)e(of)i(the)g(Mo)s(di\014ed)f(V)-8 b(ersion,)32 -b(as)f(the)510 1121 y(publisher.)355 1258 y(D.)61 b(Preserv)m(e)31 -b(all)g(the)g(cop)m(yrigh)m(t)h(notices)f(of)g(the)f(Do)s(cumen)m(t.) -363 1395 y(E.)60 b(Add)30 b(an)i(appropriate)f(cop)m(yrigh)m(t)i -(notice)f(for)g(y)m(our)f(mo)s(di\014cations)g(adjacen)m(t)i(to)f(the)g -(other)510 1504 y(cop)m(yrigh)m(t)g(notices.)365 1641 -y(F.)61 b(Include,)28 b(immediately)h(after)f(the)h(cop)m(yrigh)m(t)g -(notices,)h(a)e(license)h(notice)g(giving)g(the)f(public)510 -1751 y(p)s(ermission)23 b(to)j(use)e(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)25 b(under)e(the)i(terms)f(of)h(this)f(License,)j(in)d(the)g -(form)510 1861 y(sho)m(wn)30 b(in)g(the)g(Addendum)f(b)s(elo)m(w.)353 -1998 y(G.)61 b(Preserv)m(e)23 b(in)g(that)g(license)h(notice)g(the)f -(full)g(lists)g(of)g(In)m(v)-5 b(arian)m(t)23 b(Sections)h(and)e -(required)g(Co)m(v)m(er)510 2107 y(T)-8 b(exts)31 b(giv)m(en)g(in)f -(the)h(Do)s(cumen)m(t's)g(license)h(notice.)357 2244 -y(H.)60 b(Include)30 b(an)g(unaltered)g(cop)m(y)h(of)g(this)f(License.) -392 2381 y(I.)60 b(Preserv)m(e)33 b(the)f(section)h(En)m(titled)g -(\\History",)h(Preserv)m(e)f(its)f(Title,)i(and)d(add)h(to)h(it)f(an)g -(item)510 2491 y(stating)d(at)g(least)g(the)g(title,)h(y)m(ear,)g(new)d -(authors,)i(and)e(publisher)f(of)j(the)f(Mo)s(di\014ed)f(V)-8 -b(ersion)510 2600 y(as)32 b(giv)m(en)g(on)f(the)h(Title)g(P)m(age.)45 -b(If)31 b(there)h(is)f(no)g(section)i(En)m(titled)f(\\History")h(in)e -(the)g(Do)s(cu-)510 2710 y(men)m(t,)37 b(create)f(one)f(stating)h(the)f -(title,)i(y)m(ear,)g(authors,)f(and)e(publisher)f(of)i(the)g(Do)s -(cumen)m(t)510 2819 y(as)h(giv)m(en)h(on)f(its)h(Title)g(P)m(age,)i -(then)d(add)g(an)g(item)g(describing)g(the)g(Mo)s(di\014ed)g(V)-8 -b(ersion)37 b(as)510 2929 y(stated)31 b(in)f(the)h(previous)f(sen)m -(tence.)378 3066 y(J.)60 b(Preserv)m(e)33 b(the)g(net)m(w)m(ork)g(lo)s -(cation,)i(if)d(an)m(y)-8 b(,)34 b(giv)m(en)f(in)g(the)f(Do)s(cumen)m -(t)h(for)g(public)e(access)j(to)510 3176 y(a)e(T)-8 b(ransparen)m(t)30 -b(cop)m(y)i(of)g(the)f(Do)s(cumen)m(t,)h(and)f(lik)m(ewise)h(the)g(net) -m(w)m(ork)g(lo)s(cations)g(giv)m(en)g(in)510 3285 y(the)g(Do)s(cumen)m -(t)g(for)g(previous)f(v)m(ersions)h(it)g(w)m(as)g(based)f(on.)45 -b(These)31 b(ma)m(y)h(b)s(e)f(placed)h(in)g(the)510 3395 -y(\\History")27 b(section.)40 b(Y)-8 b(ou)25 b(ma)m(y)h(omit)g(a)f(net) -m(w)m(ork)h(lo)s(cation)g(for)f(a)h(w)m(ork)f(that)g(w)m(as)h -(published)510 3504 y(at)36 b(least)h(four)e(y)m(ears)i(b)s(efore)e -(the)h(Do)s(cumen)m(t)h(itself,)h(or)d(if)h(the)g(original)h(publisher) -d(of)i(the)510 3614 y(v)m(ersion)31 b(it)g(refers)f(to)h(giv)m(es)h(p)s -(ermission.)354 3751 y(K.)60 b(F)-8 b(or)24 b(an)m(y)h(section)f(En)m -(titled)h(\\Ac)m(kno)m(wledgemen)m(ts")i(or)d(\\Dedications",)k -(Preserv)m(e)c(the)g(Title)510 3861 y(of)j(the)f(section,)j(and)d -(preserv)m(e)h(in)f(the)h(section)g(all)h(the)e(substance)h(and)f(tone) -h(of)f(eac)m(h)i(of)f(the)510 3970 y(con)m(tributor)k(ac)m(kno)m -(wledgemen)m(ts)i(and/or)d(dedications)h(giv)m(en)h(therein.)368 -4107 y(L.)60 b(Preserv)m(e)36 b(all)g(the)g(In)m(v)-5 -b(arian)m(t)36 b(Sections)g(of)f(the)h(Do)s(cumen)m(t,)h(unaltered)f -(in)f(their)g(text)i(and)510 4217 y(in)f(their)g(titles.)58 -b(Section)37 b(n)m(um)m(b)s(ers)d(or)i(the)g(equiv)-5 -b(alen)m(t)38 b(are)e(not)g(considered)g(part)g(of)g(the)510 -4326 y(section)c(titles.)341 4463 y(M.)61 b(Delete)33 -b(an)m(y)e(section)h(En)m(titled)f(\\Endorsemen)m(ts".)42 -b(Suc)m(h)30 b(a)i(section)f(ma)m(y)h(not)f(b)s(e)f(included)510 -4573 y(in)g(the)h(Mo)s(di\014ed)e(V)-8 b(ersion.)357 -4710 y(N.)60 b(Do)29 b(not)g(retitle)h(an)m(y)e(existing)i(section)f -(to)g(b)s(e)f(En)m(titled)h(\\Endorsemen)m(ts")g(or)f(to)h(con\015ict)g -(in)510 4819 y(title)j(with)e(an)m(y)h(In)m(v)-5 b(arian)m(t)31 -b(Section.)354 4956 y(O.)60 b(Preserv)m(e)31 b(an)m(y)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g -(V)-8 b(ersion)34 b(includes)f(new)g(fron)m(t-matter)i(sections)f(or)f -(app)s(endices)g(that)h(qualify)330 5230 y(as)28 b(Secondary)g -(Sections)g(and)f(con)m(tain)j(no)d(material)j(copied)e(from)f(the)h -(Do)s(cumen)m(t,)i(y)m(ou)e(ma)m(y)g(at)330 5340 y(y)m(our)k(option)h -(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: 156 162 -TeXDict begin 156 161 bop 150 -116 a Ft(App)s(endix)29 -b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560 -b(156)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 -(section)g(titles.)330 551 y(Y)-8 b(ou)43 b(ma)m(y)g(add)f(a)g(section) -i(En)m(titled)f(\\Endorsemen)m(ts",)j(pro)m(vided)c(it)h(con)m(tains)g -(nothing)g(but)330 661 y(endorsemen)m(ts)30 b(of)g(y)m(our)f(Mo)s -(di\014ed)g(V)-8 b(ersion)31 b(b)m(y)e(v)-5 b(arious)30 -b(parties|for)g(example,)g(statemen)m(ts)i(of)330 770 -y(p)s(eer)27 b(review)g(or)g(that)h(the)f(text)i(has)d(b)s(een)h(appro) -m(v)m(ed)g(b)m(y)g(an)h(organization)h(as)e(the)h(authoritativ)m(e)330 -880 y(de\014nition)i(of)h(a)f(standard.)330 1022 y(Y)-8 -b(ou)29 b(ma)m(y)g(add)e(a)i(passage)g(of)g(up)e(to)i(\014v)m(e)g(w)m -(ords)e(as)i(a)g(F)-8 b(ron)m(t-Co)m(v)m(er)30 b(T)-8 -b(ext,)30 b(and)e(a)g(passage)i(of)e(up)330 1132 y(to)g(25)g(w)m(ords)e -(as)i(a)f(Bac)m(k-Co)m(v)m(er)j(T)-8 b(ext,)29 b(to)f(the)f(end)f(of)i -(the)f(list)h(of)f(Co)m(v)m(er)h(T)-8 b(exts)27 b(in)g(the)h(Mo)s -(di\014ed)330 1241 y(V)-8 b(ersion.)58 b(Only)35 b(one)h(passage)h(of)f -(F)-8 b(ron)m(t-Co)m(v)m(er)38 b(T)-8 b(ext)36 b(and)g(one)g(of)g(Bac)m -(k-Co)m(v)m(er)j(T)-8 b(ext)36 b(ma)m(y)h(b)s(e)330 1351 -y(added)27 b(b)m(y)g(\(or)h(through)f(arrangemen)m(ts)h(made)g(b)m(y\)) -g(an)m(y)g(one)f(en)m(tit)m(y)-8 b(.)42 b(If)27 b(the)h(Do)s(cumen)m(t) -g(already)330 1461 y(includes)34 b(a)g(co)m(v)m(er)h(text)g(for)f(the)g -(same)h(co)m(v)m(er,)h(previously)e(added)f(b)m(y)h(y)m(ou)g(or)g(b)m -(y)g(arrangemen)m(t)330 1570 y(made)h(b)m(y)g(the)h(same)f(en)m(tit)m -(y)i(y)m(ou)f(are)f(acting)i(on)e(b)s(ehalf)f(of,)j(y)m(ou)f(ma)m(y)g -(not)f(add)g(another;)j(but)330 1680 y(y)m(ou)c(ma)m(y)h(replace)g(the) -f(old)g(one,)i(on)e(explicit)h(p)s(ermission)e(from)g(the)i(previous)e -(publisher)f(that)330 1789 y(added)e(the)g(old)h(one.)330 -1932 y(The)25 b(author\(s\))h(and)f(publisher\(s\))f(of)i(the)f(Do)s -(cumen)m(t)h(do)g(not)f(b)m(y)h(this)f(License)h(giv)m(e)h(p)s -(ermission)330 2041 y(to)k(use)f(their)g(names)h(for)f(publicit)m(y)g -(for)h(or)f(to)h(assert)g(or)f(imply)g(endorsemen)m(t)g(of)h(an)m(y)g -(Mo)s(di\014ed)330 2151 y(V)-8 b(ersion.)199 2293 y(5.)61 -b(COMBINING)31 b(DOCUMENTS)330 2436 y(Y)-8 b(ou)39 b(ma)m(y)g(com)m -(bine)h(the)f(Do)s(cumen)m(t)g(with)g(other)f(do)s(cumen)m(ts)h -(released)g(under)f(this)g(License,)330 2545 y(under)f(the)h(terms)g -(de\014ned)f(in)h(section)h(4)g(ab)s(o)m(v)m(e)g(for)f(mo)s(di\014ed)f -(v)m(ersions,)k(pro)m(vided)d(that)h(y)m(ou)330 2655 -y(include)25 b(in)g(the)g(com)m(bination)i(all)f(of)g(the)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)g(of)g(all)g(of)f(the)h(original)g(do)s -(cumen)m(ts,)330 2765 y(unmo)s(di\014ed,)g(and)g(list)h(them)g(all)g -(as)g(In)m(v)-5 b(arian)m(t)28 b(Sections)f(of)g(y)m(our)g(com)m(bined) -g(w)m(ork)f(in)h(its)g(license)330 2874 y(notice,)32 -b(and)e(that)h(y)m(ou)f(preserv)m(e)h(all)g(their)g(W)-8 -b(arran)m(t)m(y)32 b(Disclaimers.)330 3017 y(The)e(com)m(bined)g(w)m -(ork)h(need)e(only)i(con)m(tain)g(one)g(cop)m(y)g(of)f(this)g(License,) -i(and)d(m)m(ultiple)i(iden)m(tical)330 3126 y(In)m(v)-5 -b(arian)m(t)33 b(Sections)g(ma)m(y)g(b)s(e)f(replaced)h(with)f(a)h -(single)g(cop)m(y)-8 b(.)48 b(If)32 b(there)h(are)g(m)m(ultiple)g(In)m -(v)-5 b(arian)m(t)330 3236 y(Sections)27 b(with)g(the)g(same)g(name)g -(but)f(di\013eren)m(t)h(con)m(ten)m(ts,)i(mak)m(e)f(the)f(title)h(of)f -(eac)m(h)h(suc)m(h)f(section)330 3345 y(unique)33 b(b)m(y)h(adding)f -(at)i(the)f(end)g(of)g(it,)h(in)f(paren)m(theses,)i(the)e(name)g(of)g -(the)g(original)h(author)f(or)330 3455 y(publisher)23 -b(of)i(that)h(section)g(if)f(kno)m(wn,)h(or)f(else)h(a)f(unique)f(n)m -(um)m(b)s(er.)38 b(Mak)m(e)26 b(the)g(same)f(adjustmen)m(t)330 -3565 y(to)g(the)g(section)g(titles)h(in)e(the)h(list)g(of)f(In)m(v)-5 -b(arian)m(t)26 b(Sections)f(in)f(the)g(license)i(notice)g(of)e(the)h -(com)m(bined)330 3674 y(w)m(ork.)330 3817 y(In)41 b(the)g(com)m -(bination,)46 b(y)m(ou)41 b(m)m(ust)g(com)m(bine)h(an)m(y)g(sections)g -(En)m(titled)g(\\History")h(in)e(the)g(v)-5 b(ari-)330 -3926 y(ous)32 b(original)h(do)s(cumen)m(ts,)g(forming)f(one)g(section)h -(En)m(titled)g(\\History";)i(lik)m(ewise)f(com)m(bine)f(an)m(y)330 -4036 y(sections)g(En)m(titled)f(\\Ac)m(kno)m(wledgemen)m(ts",)k(and)31 -b(an)m(y)h(sections)h(En)m(titled)g(\\Dedications".)47 -b(Y)-8 b(ou)330 4145 y(m)m(ust)30 b(delete)i(all)f(sections)h(En)m -(titled)f(\\Endorsemen)m(ts.")199 4288 y(6.)61 b(COLLECTIONS)28 -b(OF)i(DOCUMENTS)330 4430 y(Y)-8 b(ou)32 b(ma)m(y)h(mak)m(e)g(a)f -(collection)i(consisting)f(of)f(the)g(Do)s(cumen)m(t)g(and)g(other)g -(do)s(cumen)m(ts)f(released)330 4540 y(under)41 b(this)h(License,)k -(and)c(replace)h(the)g(individual)f(copies)h(of)f(this)g(License)h(in)f -(the)h(v)-5 b(arious)330 4650 y(do)s(cumen)m(ts)42 b(with)g(a)h(single) -g(cop)m(y)h(that)f(is)f(included)g(in)g(the)h(collection,)48 -b(pro)m(vided)42 b(that)i(y)m(ou)330 4759 y(follo)m(w)38 -b(the)g(rules)e(of)h(this)g(License)h(for)f(v)m(erbatim)h(cop)m(ying)g -(of)f(eac)m(h)h(of)f(the)h(do)s(cumen)m(ts)e(in)h(all)330 -4869 y(other)31 b(resp)s(ects.)330 5011 y(Y)-8 b(ou)32 -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 -(collection,)i(and)d(distribute)g(it)h(individu-)330 -5121 y(ally)k(under)d(this)i(License,)i(pro)m(vided)e(y)m(ou)g(insert)g -(a)g(cop)m(y)h(of)f(this)g(License)g(in)m(to)h(the)g(extracted)330 -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: 157 163 -TeXDict begin 157 162 bop 150 -116 a Ft(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)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 -(on)f(a)g(v)m(olume)h(of)g(a)f(storage)i(or)e(distribution)g(medium,)g -(is)h(called)330 661 y(an)c(\\aggregate")k(if)c(the)g(cop)m(yrigh)m(t)i -(resulting)e(from)f(the)i(compilation)g(is)f(not)h(used)e(to)i(limit)g -(the)330 770 y(legal)d(righ)m(ts)f(of)g(the)g(compilation's)h(users)e -(b)s(ey)m(ond)g(what)g(the)h(individual)f(w)m(orks)g(p)s(ermit.)39 -b(When)330 880 y(the)g(Do)s(cumen)m(t)g(is)f(included)g(in)g(an)g -(aggregate,)44 b(this)38 b(License)h(do)s(es)f(not)h(apply)f(to)h(the)g -(other)330 989 y(w)m(orks)30 b(in)g(the)h(aggregate)i(whic)m(h)d(are)h -(not)g(themselv)m(es)g(deriv)-5 b(ativ)m(e)32 b(w)m(orks)f(of)f(the)h -(Do)s(cumen)m(t.)330 1132 y(If)22 b(the)h(Co)m(v)m(er)h(T)-8 -b(ext)23 b(requiremen)m(t)g(of)g(section)h(3)f(is)g(applicable)h(to)f -(these)h(copies)f(of)g(the)g(Do)s(cumen)m(t,)330 1241 -y(then)f(if)g(the)h(Do)s(cumen)m(t)g(is)g(less)f(than)g(one)h(half)f -(of)h(the)g(en)m(tire)g(aggregate,)k(the)c(Do)s(cumen)m(t's)g(Co)m(v)m -(er)330 1351 y(T)-8 b(exts)27 b(ma)m(y)g(b)s(e)f(placed)h(on)g(co)m(v)m -(ers)h(that)f(brac)m(k)m(et)h(the)f(Do)s(cumen)m(t)g(within)f(the)h -(aggregate,)j(or)d(the)330 1461 y(electronic)37 b(equiv)-5 -b(alen)m(t)36 b(of)g(co)m(v)m(ers)g(if)f(the)g(Do)s(cumen)m(t)h(is)f -(in)g(electronic)i(form.)54 b(Otherwise)35 b(they)330 -1570 y(m)m(ust)30 b(app)s(ear)g(on)g(prin)m(ted)g(co)m(v)m(ers)i(that)f -(brac)m(k)m(et)h(the)f(whole)f(aggregate.)199 1713 y(8.)61 -b(TRANSLA)-8 b(TION)330 1855 y(T)g(ranslation)41 b(is)f(considered)f(a) -i(kind)e(of)h(mo)s(di\014cation,)j(so)d(y)m(ou)g(ma)m(y)h(distribute)e -(translations)330 1965 y(of)45 b(the)f(Do)s(cumen)m(t)h(under)e(the)h -(terms)h(of)f(section)i(4.)83 b(Replacing)45 b(In)m(v)-5 -b(arian)m(t)45 b(Sections)g(with)330 2074 y(translations)h(requires)f -(sp)s(ecial)h(p)s(ermission)f(from)g(their)g(cop)m(yrigh)m(t)i -(holders,)i(but)c(y)m(ou)g(ma)m(y)330 2184 y(include)24 -b(translations)i(of)e(some)h(or)g(all)g(In)m(v)-5 b(arian)m(t)25 -b(Sections)g(in)f(addition)h(to)g(the)g(original)h(v)m(ersions)330 -2293 y(of)32 b(these)f(In)m(v)-5 b(arian)m(t)33 b(Sections.)44 -b(Y)-8 b(ou)32 b(ma)m(y)g(include)f(a)h(translation)g(of)g(this)f -(License,)i(and)d(all)j(the)330 2403 y(license)42 b(notices)g(in)f(the) -h(Do)s(cumen)m(t,)j(and)40 b(an)m(y)i(W)-8 b(arran)m(t)m(y)42 -b(Disclaimers,)k(pro)m(vided)41 b(that)h(y)m(ou)330 2513 -y(also)f(include)f(the)g(original)h(English)f(v)m(ersion)g(of)g(this)g -(License)h(and)e(the)h(original)h(v)m(ersions)g(of)330 -2622 y(those)35 b(notices)g(and)e(disclaimers.)53 b(In)33 -b(case)i(of)g(a)f(disagreemen)m(t)h(b)s(et)m(w)m(een)g(the)f -(translation)i(and)330 2732 y(the)f(original)i(v)m(ersion)e(of)h(this)f -(License)h(or)f(a)g(notice)i(or)e(disclaimer,)i(the)f(original)g(v)m -(ersion)g(will)330 2841 y(prev)-5 b(ail.)330 2984 y(If)28 -b(a)h(section)h(in)e(the)h(Do)s(cumen)m(t)h(is)e(En)m(titled)i(\\Ac)m -(kno)m(wledgemen)m(ts",)i(\\Dedications",)g(or)d(\\His-)330 -3093 y(tory",)f(the)f(requiremen)m(t)f(\(section)i(4\))f(to)g(Preserv)m -(e)g(its)f(Title)i(\(section)f(1\))g(will)g(t)m(ypically)h(require)330 -3203 y(c)m(hanging)j(the)g(actual)h(title.)199 3345 y(9.)61 -b(TERMINA)-8 b(TION)330 3488 y(Y)g(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8 -b(,)31 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)f(the)h -(Do)s(cumen)m(t)g(except)h(as)f(expressly)330 3598 y(pro)m(vided)38 -b(under)f(this)i(License.)65 b(An)m(y)39 b(attempt)h(otherwise)f(to)g -(cop)m(y)-8 b(,)42 b(mo)s(dify)-8 b(,)40 b(sublicense,)h(or)330 -3707 y(distribute)30 b(it)h(is)f(v)m(oid,)h(and)f(will)h(automatically) -i(terminate)f(y)m(our)e(righ)m(ts)h(under)e(this)h(License.)330 -3850 y(Ho)m(w)m(ev)m(er,)35 b(if)e(y)m(ou)f(cease)i(all)f(violation)i -(of)d(this)g(License,)i(then)e(y)m(our)h(license)g(from)f(a)h -(particular)330 3959 y(cop)m(yrigh)m(t)k(holder)e(is)h(reinstated)h -(\(a\))f(pro)m(visionally)-8 b(,)39 b(unless)c(and)g(un)m(til)h(the)g -(cop)m(yrigh)m(t)h(holder)330 4069 y(explicitly)42 b(and)e(\014nally)h -(terminates)g(y)m(our)g(license,)j(and)c(\(b\))h(p)s(ermanen)m(tly)-8 -b(,)43 b(if)e(the)g(cop)m(yrigh)m(t)330 4178 y(holder)34 -b(fails)h(to)g(notify)g(y)m(ou)g(of)f(the)h(violation)h(b)m(y)e(some)h -(reasonable)g(means)g(prior)e(to)i(60)h(da)m(ys)330 4288 -y(after)31 b(the)f(cessation.)330 4430 y(Moreo)m(v)m(er,)k(y)m(our)d -(license)i(from)e(a)h(particular)f(cop)m(yrigh)m(t)i(holder)e(is)h -(reinstated)g(p)s(ermanen)m(tly)f(if)330 4540 y(the)d(cop)m(yrigh)m(t)h -(holder)f(noti\014es)g(y)m(ou)g(of)g(the)g(violation)h(b)m(y)f(some)g -(reasonable)h(means,)f(this)g(is)g(the)330 4650 y(\014rst)f(time)i(y)m -(ou)f(ha)m(v)m(e)h(receiv)m(ed)g(notice)g(of)f(violation)i(of)e(this)f -(License)i(\(for)f(an)m(y)g(w)m(ork\))g(from)f(that)330 -4759 y(cop)m(yrigh)m(t)33 b(holder,)g(and)e(y)m(ou)h(cure)g(the)g -(violation)i(prior)d(to)i(30)f(da)m(ys)h(after)f(y)m(our)g(receipt)h -(of)f(the)330 4869 y(notice.)330 5011 y(T)-8 b(ermination)28 -b(of)g(y)m(our)f(righ)m(ts)h(under)e(this)i(section)g(do)s(es)f(not)h -(terminate)h(the)e(licenses)i(of)f(parties)330 5121 y(who)38 -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 -(under)f(this)h(License.)64 b(If)38 b(y)m(our)g(righ)m(ts)h(ha)m(v)m(e) -330 5230 y(b)s(een)25 b(terminated)i(and)e(not)h(p)s(ermanen)m(tly)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: 158 164 -TeXDict begin 158 163 bop 150 -116 a Ft(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)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 -b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31 -b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330 -653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f -(in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330 -762 y(See)c Fs(http://www.gnu.org/copy)o(left)o(/)p Ft(.)330 -897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g -(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29 -b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g -(particular)f(n)m(um)m(b)s(ered)f(v)m(ersion)i(of)f(this)g(License)h -(\\or)g(an)m(y)g(later)g(v)m(ersion")330 1116 y(applies)33 -b(to)g(it,)h(y)m(ou)e(ha)m(v)m(e)i(the)f(option)g(of)f(follo)m(wing)i -(the)f(terms)f(and)g(conditions)h(either)g(of)f(that)330 -1225 y(sp)s(eci\014ed)37 b(v)m(ersion)i(or)e(of)h(an)m(y)h(later)g(v)m -(ersion)f(that)g(has)g(b)s(een)f(published)f(\(not)j(as)f(a)g(draft\))g -(b)m(y)330 1335 y(the)33 b(F)-8 b(ree)34 b(Soft)m(w)m(are)f(F)-8 -b(oundation.)49 b(If)32 b(the)h(Do)s(cumen)m(t)g(do)s(es)g(not)g(sp)s -(ecify)f(a)h(v)m(ersion)g(n)m(um)m(b)s(er)f(of)330 1445 -y(this)i(License,)j(y)m(ou)d(ma)m(y)i(c)m(ho)s(ose)f(an)m(y)g(v)m -(ersion)g(ev)m(er)g(published)e(\(not)i(as)g(a)f(draft\))h(b)m(y)f(the) -h(F)-8 b(ree)330 1554 y(Soft)m(w)m(are)33 b(F)-8 b(oundation.)46 -b(If)32 b(the)g(Do)s(cumen)m(t)g(sp)s(eci\014es)g(that)g(a)h(pro)m(xy)f -(can)g(decide)g(whic)m(h)g(future)330 1664 y(v)m(ersions)h(of)g(this)f -(License)h(can)g(b)s(e)f(used,)g(that)i(pro)m(xy's)e(public)g(statemen) -m(t)i(of)f(acceptance)i(of)e(a)330 1773 y(v)m(ersion)e(p)s(ermanen)m -(tly)f(authorizes)h(y)m(ou)g(to)g(c)m(ho)s(ose)g(that)g(v)m(ersion)g -(for)f(the)h(Do)s(cumen)m(t.)154 1908 y(11.)61 b(RELICENSING)330 -2042 y(\\Massiv)m(e)39 b(Multiauthor)f(Collab)s(oration)g(Site")h(\(or) -e(\\MMC)h(Site"\))h(means)e(an)m(y)h(W)-8 b(orld)37 b(Wide)330 -2152 y(W)-8 b(eb)36 b(serv)m(er)g(that)h(publishes)d(cop)m(yrigh)m -(table)k(w)m(orks)e(and)f(also)i(pro)m(vides)e(prominen)m(t)h -(facilities)330 2262 y(for)27 b(an)m(yb)s(o)s(dy)g(to)h(edit)g(those)g -(w)m(orks.)39 b(A)28 b(public)f(wiki)h(that)g(an)m(yb)s(o)s(dy)e(can)i -(edit)g(is)f(an)h(example)g(of)330 2371 y(suc)m(h)33 -b(a)h(serv)m(er.)51 b(A)34 b(\\Massiv)m(e)i(Multiauthor)e(Collab)s -(oration")h(\(or)f(\\MMC"\))h(con)m(tained)g(in)f(the)330 -2481 y(site)d(means)f(an)m(y)h(set)g(of)g(cop)m(yrigh)m(table)h(w)m -(orks)e(th)m(us)g(published)f(on)h(the)h(MMC)f(site.)330 -2615 y(\\CC-BY-SA")36 b(means)f(the)g(Creativ)m(e)i(Commons)e(A)m -(ttribution-Share)g(Alik)m(e)i(3.0)f(license)g(pub-)330 -2725 y(lished)27 b(b)m(y)f(Creativ)m(e)j(Commons)d(Corp)s(oration,)h(a) -g(not-for-pro\014t)g(corp)s(oration)h(with)e(a)h(principal)330 -2834 y(place)g(of)f(business)e(in)i(San)f(F)-8 b(rancisco,)29 -b(California,)f(as)e(w)m(ell)h(as)f(future)f(cop)m(yleft)i(v)m(ersions) -f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g -(organization.)330 3078 y(\\Incorp)s(orate")h(means)e(to)h(publish)e -(or)i(republish)e(a)i(Do)s(cumen)m(t,)g(in)g(whole)g(or)f(in)g(part,)h -(as)g(part)330 3188 y(of)g(another)f(Do)s(cumen)m(t.)330 -3323 y(An)c(MMC)g(is)h(\\eligible)h(for)e(relicensing")h(if)g(it)f(is)h -(licensed)f(under)f(this)h(License,)i(and)e(if)g(all)h(w)m(orks)330 -3432 y(that)43 b(w)m(ere)f(\014rst)f(published)f(under)h(this)h -(License)g(somewhere)g(other)g(than)g(this)g(MMC,)h(and)330 -3542 y(subsequen)m(tly)34 b(incorp)s(orated)h(in)f(whole)h(or)g(in)f -(part)h(in)m(to)h(the)f(MMC,)g(\(1\))h(had)e(no)h(co)m(v)m(er)h(texts) -330 3651 y(or)30 b(in)m(v)-5 b(arian)m(t)32 b(sections,)g(and)d(\(2\))j -(w)m(ere)f(th)m(us)f(incorp)s(orated)g(prior)g(to)h(No)m(v)m(em)m(b)s -(er)g(1,)g(2008.)330 3786 y(The)40 b(op)s(erator)h(of)g(an)f(MMC)h -(Site)g(ma)m(y)g(republish)e(an)h(MMC)h(con)m(tained)h(in)e(the)h(site) -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: 159 165 -TeXDict begin 159 164 bop 150 -116 a Ft(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)150 299 y Fr(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 Ft(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 -568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh) -m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468 -680 y Fe(Copyright)42 b(\(C\))79 b Fd(year)88 b(your)40 -b(name)9 b Fe(.)468 767 y(Permission)42 b(is)e(granted)g(to)g(copy,)h -(distribute)g(and/or)g(modify)f(this)g(document)468 854 -y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i -(License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h -(published)h(by)d(the)h(Free)g(Software)h(Foundation;)468 -1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g -(and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f -(license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468 -1203 y(Free)g(Documentation)h(License''.)275 1337 y Ft(If)d(y)m(ou)h -(ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8 -b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k -(T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6 -b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547 -1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g -Fd(list)f(their)g(titles)9 b Fe(,)41 b(with)547 1646 -y(the)f(Front-Cover)i(Texts)e(being)g Fd(list)9 b Fe(,)40 -b(and)g(with)g(the)g(Back-Cover)i(Texts)547 1733 y(being)e -Fd(list)9 b Fe(.)275 1868 y Ft(If)34 b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 -b(arian)m(t)36 b(Sections)g(without)f(Co)m(v)m(er)h(T)-8 -b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g(of)g(the)150 -1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g(alternativ)m(es)i(to)e -(suit)f(the)h(situation.)275 2112 y(If)23 b(y)m(our)h(do)s(cumen)m(t)f -(con)m(tains)i(non)m(trivial)g(examples)g(of)f(program)f(co)s(de,)j(w)m -(e)e(recommend)g(releasing)150 2222 y(these)44 b(examples)f(in)g -(parallel)h(under)e(y)m(our)h(c)m(hoice)i(of)e(free)g(soft)m(w)m(are)h -(license,)k(suc)m(h)43 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: 160 166 -TeXDict begin 160 165 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(160)150 299 y Fo(App)t(endix)52 -b(D)81 b(Indexes)150 631 y Fr(D.1)68 b(Index)45 b(of)g(Shell)g(Builtin) -g(Commands)150 868 y(.)150 984 y Fe(.)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)39 b Fb(40)150 1218 y Fr(:)150 1335 -y Fe(:)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 -b Fb(40)150 1579 y Fr([)150 1695 y Fe([)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)39 b Fb(44)150 1938 y Fr(A)150 2055 -y Fe(alias)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fb(47)150 -2289 y Fr(B)150 2405 y Fe(bg)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)37 b Fb(98)150 2493 y Fe(bind)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -49 b Fb(47)150 2580 y Fe(break)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 -b Fb(40)150 2668 y Fe(builtin)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(48)150 2902 y Fr(C)150 3019 y Fe(caller)17 b Fc(:)e(:)e(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -43 b Fb(48)150 3106 y Fe(cd)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)37 b Fb(41)150 3194 y Fe(command)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(49)150 3281 y Fe(compgen)12 b Fc(:)j(:)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(:)39 b -Fb(126)150 3368 y Fe(complete)10 b Fc(:)15 b(:)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(127)150 -3456 y Fe(compopt)12 b Fc(:)j(:)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(:)39 b Fb(130)150 3543 -y Fe(continue)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(41)150 3778 y -Fr(D)150 3894 y Fe(declare)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b -Fb(49)150 3982 y Fe(dirs)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(90)150 4069 y Fe(disown)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(99)150 4303 y Fr(E)150 4420 y Fe(echo)23 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(50)150 4507 y Fe(enable)17 -b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(51)150 4595 y Fe(eval)23 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(41)150 4682 y -Fe(exec)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(41)150 -4770 y Fe(exit)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(42)150 4857 y Fe(export)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(42)150 5110 y Fr(F)150 5227 y Fe(fc)8 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(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 b Fb(133)150 5314 -y Fe(fg)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(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(98)2025 868 y Fr(G)2025 988 y Fe(getopts)15 b Fc(:)f(:)f(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(42)2025 1250 y Fr(H)2025 1370 y Fe(hash)23 b Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(43)2025 1459 y Fe(help)23 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(52)2025 1549 -y Fe(history)12 b Fc(:)j(:)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(:)h(:)f(:)39 b Fb(134)2025 1811 -y Fr(J)2025 1931 y Fe(jobs)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(98)2025 2193 y Fr(K)2025 2313 y Fe(kill)23 b Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(99)2025 2557 y Fr(L)2025 -2677 y Fe(let)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(52)2025 2766 y Fe(local)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(52)2025 2856 y Fe(logout)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(52)2025 3118 y Fr(M)2025 3238 y Fe(mapfile)15 b -Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)41 b Fb(52)2025 3500 y Fr(P)2025 3620 -y Fe(popd)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(90)2025 -3710 y Fe(printf)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(53)2025 -3799 y Fe(pushd)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b -Fb(90)2025 3888 y Fe(pwd)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(43)2025 4150 y Fr(R)2025 4270 y Fe(read)23 b Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(54)2025 4360 y Fe(readarray)9 -b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)36 b Fb(55)2025 4449 y Fe(readonly)12 b Fc(:)j(:)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(:)39 -b Fb(43)2025 4538 y Fe(return)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(44)2025 4782 y Fr(S)2025 4902 y Fe(set)8 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(57)2025 4991 -y Fe(shift)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(44)2025 -5080 y Fe(shopt)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b -Fb(61)2025 5169 y Fe(source)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(55)2025 5259 y Fe(suspend)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(99)p eop end -%%Page: 161 167 -TeXDict begin 161 166 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(161)150 299 y Fr(T)150 428 y Fe(test)23 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(44)150 522 y -Fe(times)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fb(45)150 -616 y Fe(trap)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(45)150 709 y Fe(type)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(55)150 803 y Fe(typeset)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(56)2025 299 y Fr(U)2025 415 y Fe(ulimit)17 b Fc(:)d(:)g(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -44 b Fb(56)2025 502 y Fe(umask)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(46)2025 590 y Fe(unalias)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(57)2025 677 y Fe(unset)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(47)2025 910 y Fr(W)2025 1026 y Fe(wait)23 b Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(99)150 1259 y Fr(D.2)68 -b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h(W)-11 b(ords)150 -1495 y(!)150 1612 y Fe(!)15 b Fc(:)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(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)42 b Fb(8)150 1855 y Fr([)150 1971 y Fe([[)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(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(12)150 -2220 y Fr(])150 2337 y Fe(]])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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)37 b Fb(12)150 2579 y Fa({)150 2695 y Fe({)13 b Fc(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(14)150 2938 y Fa(})150 -3054 y Fe(})13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 -b Fb(14)150 3296 y Fr(C)150 3412 y Fe(case)23 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(11)150 3646 y Fr(D)150 -3762 y Fe(do)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(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 -b Fb(10)150 3849 y Fe(done)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(10)150 4083 y Fr(E)150 4199 y Fe(elif)23 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(10)2025 1495 y Fe(else)23 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(10)2025 1586 -y Fe(esac)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(11)2025 -1838 y Fr(F)2025 1961 y Fe(fi)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)37 b Fb(10)2025 2052 y Fe(for)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)34 b Fb(10)2025 2143 y Fe(function)12 b Fc(:)j(:)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(:)39 -b Fb(16)2025 2394 y Fr(I)2025 2518 y Fe(if)10 b Fc(:)k(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)37 b Fb(10)2025 2608 y Fe(in)10 b -Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(11)2025 -2860 y Fr(S)2025 2983 y Fe(select)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(12)2025 3235 y Fr(T)2025 3358 y Fe(then)23 b Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(10)2025 3449 y Fe(time)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(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fb(8)2025 -3701 y Fr(U)2025 3824 y Fe(until)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(10)2025 4076 y Fr(W)2025 4199 y Fe(while)21 b Fc(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(10)150 4431 y Fr(D.3)68 b(P)l(arameter)47 -b(and)d(V)-11 b(ariable)46 b(Index)150 4668 y(!)150 4794 -y Fe(!)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 -b Fb(20)150 5054 y Fr(#)150 5180 y Fe(#)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)39 b Fb(19)2025 4668 y Fr($)2025 4794 -y Fe($)13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)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(:)39 -b Fb(20)2025 5067 y Fr(*)2025 5192 y Fe(*)13 b Fc(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)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(:)39 b Fb(19)p eop end -%%Page: 162 168 -TeXDict begin 162 167 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(162)150 299 y Fr(-)150 415 y Fe(-)13 -b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(20)150 -649 y Fr(?)150 765 y Fe(?)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)39 b Fb(20)150 999 y Fr(@)150 1115 y Fe(@)13 b -Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(19)p -159 1349 41 6 v 150 1465 a Fe(_)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)39 b Fb(20)150 1699 y Fr(0)150 1815 y Fe(0)13 -b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(20)150 -2049 y Fr(A)150 2166 y Fe(auto_resume)22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 b Fb(100)150 -2409 y Fr(B)150 2525 y Fe(BASH)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(68)150 2612 y Fe(BASH_ALIASES)22 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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(69)150 2700 -y Fe(BASH_ARGC)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(69)150 2787 y -Fe(BASH_ARGV)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(69)150 2874 y Fe(BASH_CMDS)9 -b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)36 b Fb(69)150 2962 y Fe(BASH_COMMAND)22 -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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 -b Fb(69)150 3049 y Fe(BASH_COMPAT)24 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(69)150 -3137 y Fe(BASH_ENV)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(70)150 3224 -y Fe(BASH_EXECUTION_STRING)13 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 -b Fb(70)150 3311 y Fe(BASH_LINENO)24 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(70)150 -3399 y Fe(BASH_REMATCH)22 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(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(70)150 3486 y Fe(BASH_SOURCE)24 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -48 b Fb(70)150 3573 y Fe(BASH_SUBSHELL)16 b Fc(:)g(:)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(:)43 b Fb(70)150 3661 y -Fe(BASH_VERSINFO)16 b Fc(:)g(:)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(:)43 b Fb(70)150 3748 y Fe(BASH_VERSION)22 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(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 -b Fb(71)150 3835 y Fe(BASH_XTRACEFD)16 b Fc(:)g(:)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(:)43 b Fb(71)150 3923 y Fe(BASHOPTS)12 -b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)38 b Fb(69)150 4010 y Fe(BASHPID)15 b -Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)41 b Fb(69)150 4098 y Fe(bell-style)24 -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(:) -49 b Fb(105)150 4185 y Fe(bind-tty-special-chars)8 b -Fc(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)35 b Fb(105)150 4437 y Fr(C)150 4554 -y Fe(CDPATH)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(68)150 4641 -y Fe(CHILD_MAX)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(71)150 4728 y -Fe(colored-stats)14 b Fc(:)i(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)41 b Fb(105)150 4816 y Fe(COLUMNS)15 b Fc(:)f(:)f(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(71)150 4903 y Fe(comment-begin)14 b Fc(:)i(:)d(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(105)150 4991 y Fe(COMP_CWORD)7 -b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)33 b Fb(71)150 5078 y Fe(COMP_KEY)12 b Fc(:)j(:)e(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 -b Fb(72)150 5165 y Fe(COMP_LINE)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b -Fb(71)150 5253 y Fe(COMP_POINT)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(71)150 -5340 y Fe(COMP_TYPE)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(72)2025 299 -y Fe(COMP_WORDBREAKS)11 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)38 b Fb(72)2025 387 y Fe(COMP_WORDS)7 b Fc(:)15 -b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -33 b Fb(72)2025 474 y Fe(completion-display-width)26 -b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)47 b Fb(105)2025 562 y Fe(completion-ignore-case)8 -b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(105)2025 649 y Fe(completion-map-case)16 -b Fc(:)h(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(105)2025 737 y Fe -(completion-prefix-display-leng)q(th)17 b Fc(:)i(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)44 b Fb(106)2025 825 y Fe -(completion-query-items)8 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b -Fb(106)2025 912 y Fe(COMPREPLY)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(72)2025 -1000 y Fe(convert-meta)17 b Fc(:)e(:)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(:)44 b Fb(106)2025 1088 y Fe(COPROC)17 -b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(72)2025 1323 y Fr(D)2025 -1440 y Fe(DIRSTACK)12 b Fc(:)j(:)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(:)39 b Fb(72)2025 1527 -y Fe(disable-completion)22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)45 -b Fb(106)2025 1781 y Fr(E)2025 1898 y Fe(editing-mode)17 -b Fc(:)e(:)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(:)44 -b Fb(106)2025 1985 y Fe(EMACS)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(72)2025 2073 y Fe(enable-keypad)14 b Fc(:)i(:)d(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(106)2025 2161 y Fe(ENV)8 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(72)2025 -2248 y Fe(EUID)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(72)2025 2336 y Fe(expand-tilde)17 b Fc(:)e(:)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(:)44 b Fb(106)2025 2590 y Fr(F)2025 -2707 y Fe(FCEDIT)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(72)2025 -2794 y Fe(FIGNORE)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fb(73)2025 -2882 y Fe(FUNCNAME)12 b Fc(:)j(:)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(:)39 b Fb(73)2025 2970 -y Fe(FUNCNEST)12 b Fc(:)j(:)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(:)39 b Fb(73)2025 3205 -y Fr(G)2025 3322 y Fe(GLOBIGNORE)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(73)2025 -3409 y Fe(GROUPS)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(73)2025 -3644 y Fr(H)2025 3761 y Fe(histchars)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 -b Fb(73)2025 3849 y Fe(HISTCMD)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(73)2025 3936 y Fe(HISTCONTROL)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(73)2025 -4024 y Fe(HISTFILE)12 b Fc(:)j(:)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(:)39 b Fb(74)2025 4112 -y Fe(HISTFILESIZE)21 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(:)45 b Fb(74)2025 4199 y Fe(HISTIGNORE)7 -b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)33 b Fb(74)2025 4287 y Fe(history-preserve-point)8 -b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(107)2025 4375 y Fe(history-size)17 -b Fc(:)e(:)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(:)44 -b Fb(107)2025 4462 y Fe(HISTSIZE)12 b Fc(:)j(:)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(:)39 -b Fb(74)2025 4550 y Fe(HISTTIMEFORMAT)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(74)2025 4637 y Fe(HOME)23 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(68)2025 4725 -y Fe(horizontal-scroll-mode)8 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 -b Fb(107)2025 4813 y Fe(HOSTFILE)12 b Fc(:)j(:)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(:)39 -b Fb(74)2025 4900 y Fe(HOSTNAME)12 b Fc(:)j(:)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(:)39 b -Fb(75)2025 4988 y Fe(HOSTTYPE)12 b Fc(:)j(:)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(:)39 b -Fb(75)2025 5223 y Fr(I)2025 5340 y Fe(IFS)8 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(68)p eop end -%%Page: 163 169 -TeXDict begin 163 168 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(163)150 299 y Fe(IGNOREEOF)9 b -Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)36 b Fb(75)150 387 y Fe(input-meta)24 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(:)49 -b Fb(107)150 475 y Fe(INPUTRC)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(75)150 563 y Fe(isearch-terminators)16 b Fc(:)h(:)d(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)43 b Fb(107)150 800 y Fr(K)150 918 y Fe(keymap)15 -b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)42 b Fb(107)150 1173 y Fr(L)150 1291 -y Fe(LANG)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(75)150 -1379 y Fe(LC_ALL)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(75)150 -1467 y Fe(LC_COLLATE)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(75)150 1555 y -Fe(LC_CTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(75)150 1643 y Fe(LC_MESSAGES)13 -b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)40 -b Fb(7,)26 b(75)150 1731 y Fe(LC_NUMERIC)7 b Fc(:)15 -b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -33 b Fb(75)150 1819 y Fe(LINENO)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(75)150 1907 y Fe(LINES)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 -b Fb(75)150 2144 y Fr(M)150 2262 y Fe(MACHTYPE)12 b Fc(:)j(:)e(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 -b Fb(75)150 2350 y Fe(MAIL)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(68)150 2438 y Fe(MAILCHECK)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b -Fb(76)150 2526 y Fe(MAILPATH)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(68)150 -2614 y Fe(MAPFILE)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(76)150 -2702 y Fe(mark-modified-lines)16 b Fc(:)h(:)d(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 -b Fb(108)150 2790 y Fe(mark-symlinked-directories)16 -b Fc(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -42 b Fb(108)150 2878 y Fe(match-hidden-files)23 b Fc(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(108)150 2966 y Fe -(menu-complete-display-prefix)11 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(108)150 3054 y Fe(meta-flag)7 -b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)34 b Fb(107)150 3309 y Fr(O)150 3427 y Fe(OLDPWD)17 -b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(76)150 3515 y Fe(OPTARG)17 -b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(68)150 3603 y Fe(OPTERR)17 -b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(76)150 3691 y Fe(OPTIND)17 -b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(68)150 3779 y Fe(OSTYPE)17 -b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(76)150 3867 y Fe(output-meta)22 -b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 -b Fb(108)150 4123 y Fr(P)150 4240 y Fe(page-completions)7 -b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(108)2025 -299 y Fe(PATH)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(68)2025 386 y Fe(PIPESTATUS)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(76)2025 -473 y Fe(POSIXLY_CORRECT)11 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)38 b Fb(76)2025 560 y Fe(PPID)23 b Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(76)2025 648 y Fe(PROMPT_COMMAND)14 -b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 -b Fb(76)2025 735 y Fe(PROMPT_DIRTRIM)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(76)2025 822 y Fe(PS1)8 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(68)2025 -909 y Fe(PS2)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(68)2025 996 y Fe(PS3)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(76)2025 1083 y Fe(PS4)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -34 b Fb(76)2025 1171 y Fe(PWD)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)34 b Fb(76)2025 1403 y Fr(R)2025 1519 y Fe(RANDOM)17 -b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(76)2025 1606 y Fe(READLINE_LINE)16 -b Fc(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 -b Fb(77)2025 1694 y Fe(READLINE_POINT)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(77)2025 1781 y Fe(REPLY)21 -b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(77)2025 1868 y Fe -(revert-all-at-newline)11 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(108)2025 2101 y Fr(S)2025 2217 y Fe(SECONDS)15 b -Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)41 b Fb(77)2025 2304 y Fe(SHELL)21 b -Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(77)2025 2391 y Fe(SHELLOPTS)9 -b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)36 b Fb(77)2025 2478 y Fe(SHLVL)21 b Fc(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(77)2025 2565 y Fe(show-all-if-ambiguous)11 -b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(108)2025 2653 y Fe -(show-all-if-unmodified)8 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b -Fb(109)2025 2740 y Fe(show-mode-in-prompt)16 b Fc(:)h(:)c(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)43 b Fb(109)2025 2827 y Fe(skip-completed-text)16 -b Fc(:)h(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(109)2025 3078 y Fr(T)2025 -3194 y Fe(TEXTDOMAIN)9 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(7)2025 3282 -y Fe(TEXTDOMAINDIR)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)46 b Fb(7)2025 3369 y Fe(TIMEFORMAT)7 -b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)33 b Fb(77)2025 3456 y Fe(TMOUT)21 b Fc(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(78)2025 3543 y Fe(TMPDIR)17 -b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(78)2025 3776 y Fr(U)2025 -3892 y Fe(UID)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(78)2025 4124 y Fr(V)2025 4240 y Fe(visible-stats)14 -b Fc(:)i(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 -b Fb(109)150 4489 y Fr(D.4)68 b(F)-11 b(unction)44 b(Index)150 -4726 y(A)150 4860 y Fe(abort)27 b(\(C-g\))9 b Fc(:)14 -b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 -b Fb(122)150 4956 y Fe(accept-line)28 b(\(Newline)g(or)e(Return\))e -Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)50 b -Fb(116)150 5051 y Fe(alias-expand-line)29 b(\(\))21 b -Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(124)2025 4726 y Fr(B)2025 -4860 y Fe(backward-char)28 b(\(C-b\))c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)50 -b Fb(115)2025 4956 y Fe(backward-delete-char)30 b(\(Rubout\))14 -b Fc(:)h(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 -b Fb(117)2025 5052 y Fe(backward-kill-line)29 b(\(C-x)e(Rubout\))16 -b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)43 b Fb(118)2025 -5148 y Fe(backward-kill-word)29 b(\(M-DEL\))24 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 -b Fb(119)2025 5244 y Fe(backward-word)28 b(\(M-b\))c -Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)50 b Fb(115)2025 5340 -y Fe(beginning-of-history)30 b(\(M-<\))23 b Fc(:)13 b(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fb(116)p -eop end -%%Page: 164 170 -TeXDict begin 164 169 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(164)150 299 y Fe(beginning-of-line)29 -b(\(C-a\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(115)150 558 y Fr(C)150 -677 y Fe(call-last-kbd-macro)30 b(\(C-x)c(e\))9 b Fc(:)14 -b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(121)150 765 y Fe(capitalize-word)29 b(\(M-c\))18 -b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)44 b Fb(118)150 854 y Fe(character-search)29 -b(\(C-]\))15 b Fc(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 b Fb(122)150 943 y -Fe(character-search-backward)31 b(\(M-C-]\))23 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(122)150 1031 y Fe(clear-screen)28 -b(\(C-l\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 -b Fb(115)150 1120 y Fe(complete)27 b(\(TAB\))20 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(120)150 -1208 y Fe(complete-command)29 b(\(M-!\))15 b Fc(:)g(:)e(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 -b Fb(121)150 1297 y Fe(complete-filename)29 b(\(M-/\))13 -b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)39 b Fb(120)150 1386 y Fe(complete-hostname)29 -b(\(M-@\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(121)150 1474 y Fe -(complete-into-braces)30 b(\(M-{\))23 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(121)150 -1563 y Fe(complete-username)29 b(\(M-~\))13 b Fc(:)h(:)f(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 -b Fb(121)150 1652 y Fe(complete-variable)29 b(\(M-$\))13 -b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)39 b Fb(121)150 1740 y Fe(copy-backward-word)30 -b(\(\))18 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(119)150 1829 -y Fe(copy-forward-word)29 b(\(\))21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 -b Fb(119)150 1917 y Fe(copy-region-as-kill)30 b(\(\))15 -b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)42 b Fb(119)150 2176 y Fr(D)150 2295 -y Fe(dabbrev-expand)29 b(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)38 b Fb(121)150 2384 y Fe(delete-char)28 b(\(C-d\))11 -b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(117)150 -2472 y Fe(delete-char-or-list)30 b(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 -b Fb(120)150 2561 y Fe(delete-horizontal-space)31 b(\(\))22 -b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -49 b Fb(119)150 2650 y Fe(digit-argument)29 b(\()p Fd(M-0)p -Fe(,)e Fd(M-1)p Fe(,)f(...)g Fd(M--)p Fe(\))d Fc(:)13 -b(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(119)150 2738 y Fe -(display-shell-version)30 b(\(C-x)d(C-v\))16 b Fc(:)e(:)f(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)43 b Fb(123)150 2827 y Fe(do-uppercase-version) -30 b(\(M-a,)d(M-b,)f(M-)p Fd(x)9 b Fe(,)27 b(...\))325 -2914 y Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 b Fb(122)150 3003 -y Fe(downcase-word)29 b(\(M-l\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)49 -b Fb(118)150 3091 y Fe(dump-functions)29 b(\(\))11 b -Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(123)150 -3180 y Fe(dump-macros)28 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)45 b Fb(123)150 3269 y Fe(dump-variables)29 -b(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 -b Fb(123)150 3357 y Fe(dynamic-complete-history)31 b(\(M-TAB\))7 -b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(121)150 -3616 y Fr(E)150 3735 y Fe(edit-and-execute-command)e(\(C-xC-e\))23 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(124)150 -3824 y Fe(end-kbd-macro)29 b(\(C-x)d(\)\))7 b Fc(:)14 -b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)34 b Fb(121)150 3912 y Fe(end-of-history)29 -b(\(M->\))21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(116)150 -4001 y Fe(end-of-line)28 b(\(C-e\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)38 b Fb(115)150 4090 y Fe(exchange-point-and-mark)31 -b(\(C-x)26 b(C-x\))11 b Fc(:)j(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)38 -b Fb(122)150 4349 y Fr(F)150 4467 y Fe(forward-backward-delete-char)32 -b(\(\))9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 -b Fb(117)150 4556 y Fe(forward-char)28 b(\(C-f\))8 b -Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(115)150 -4645 y Fe(forward-search-history)c(\(C-s\))17 b Fc(:)d(:)f(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(116)150 4733 -y Fe(forward-word)28 b(\(M-f\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)35 b Fb(115)150 4982 y Fr(G)150 5101 y Fe(glob-complete-word)30 -b(\(M-g\))10 b Fc(:)k(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(123)150 5189 y Fe(glob-expand-word)29 -b(\(C-x)e(*\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(123)150 5278 y Fe -(glob-list-expansions)30 b(\(C-x)d(g\))7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(123)2025 -299 y Fr(H)2025 419 y Fe(history-and-alias-expand-line)f(\(\))7 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(124)2025 -508 y Fe(history-expand-line)c(\(M-^\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b -Fb(123)2025 597 y Fe(history-search-backward)d(\(\))22 -b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -49 b Fb(116)2025 686 y Fe(history-search-forward)30 b(\(\))8 -b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)34 b Fb(116)2025 775 y Fe(history-substr-search-backward)e(\(\)) -22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)48 b Fb(117)2025 -864 y Fe(history-substr-search-forward)32 b(\(\))7 b -Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(116)2025 -1125 y Fr(I)2025 1244 y Fe(insert-comment)29 b(\(M-#\))21 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(123)2025 1333 y Fe -(insert-completions)29 b(\(M-*\))10 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fb(120)2025 -1422 y Fe(insert-last-argument)30 b(\(M-.)c(or)g(M-_\))18 -b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(124)2025 -1683 y Fr(K)2025 1803 y Fe(kill-line)27 b(\(C-k\))16 -b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b -Fb(118)2025 1892 y Fe(kill-region)28 b(\(\))19 b Fc(:)13 -b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fb(119)2025 -1981 y Fe(kill-whole-line)29 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)35 b Fb(118)2025 2070 y Fe(kill-word)27 b(\(M-d\))16 -b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b -Fb(118)2025 2321 y Fr(M)2025 2440 y Fe(magic-space)28 -b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45 -b Fb(124)2025 2529 y Fe(menu-complete)28 b(\(\))13 b -Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(120)2025 -2618 y Fe(menu-complete-backward)30 b(\(\))8 b Fc(:)13 -b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(120)2025 2880 y Fr(N)2025 2999 y Fe(next-history)28 -b(\(C-n\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 -b Fb(116)2025 3088 y Fe(non-incremental-forward-search)q(-hist)q(ory)d -(\(M-n\))2200 3175 y Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b -Fb(116)2025 3264 y Fe(non-incremental-reverse-search)q(-hist)q(ory)32 -b(\(M-p\))2200 3352 y Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b -Fb(116)2025 3594 y Fr(O)2025 3714 y Fe(operate-and-get-next)30 -b(\(C-o\))23 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)49 b Fb(124)2025 3803 y Fe(overwrite-mode)29 -b(\(\))11 b Fc(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(118)2025 4053 y Fr(P)2025 4173 y Fe(possible-command-completions) -32 b(\(C-x)26 b(!\))21 b Fc(:)13 b(:)g(:)h(:)f(:)47 b -Fb(121)2025 4262 y Fe(possible-completions)30 b(\(M-?\))23 -b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -49 b Fb(120)2025 4351 y Fe(possible-filename-completions)32 -b(\(C-x)26 b(/\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(120)2025 -4440 y Fe(possible-hostname-completions)32 b(\(C-x)26 -b(@\))18 b Fc(:)c(:)f(:)g(:)45 b Fb(121)2025 4529 y Fe -(possible-username-completions)32 b(\(C-x)26 b(~\))18 -b Fc(:)c(:)f(:)g(:)45 b Fb(121)2025 4618 y Fe -(possible-variable-completions)32 b(\(C-x)26 b($\))18 -b Fc(:)c(:)f(:)g(:)45 b Fb(121)2025 4707 y Fe(prefix-meta)28 -b(\(ESC\))11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(122)2025 4796 y Fe(previous-history)29 b(\(C-p\))15 -b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)42 b Fb(116)2025 4885 y Fe(print-last-kbd-macro)30 -b(\(\))13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(122)2025 5146 y Fr(Q)2025 -5266 y Fe(quoted-insert)28 b(\(C-q)f(or)f(C-v\))19 b -Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)46 b Fb(117)p eop end -%%Page: 165 171 -TeXDict begin 165 170 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(165)150 299 y Fr(R)150 426 y Fe -(re-read-init-file)29 b(\(C-x)e(C-r\))9 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(122)150 -519 y Fe(redraw-current-line)30 b(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 -b Fb(115)150 612 y Fe(reverse-search-history)31 b(\(C-r\))17 -b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(116)150 705 y Fe(revert-line)28 b(\(M-r\))11 b Fc(:)j(:)f(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)38 b Fb(122)150 975 y Fr(S)150 1103 -y Fe(self-insert)28 b(\(a,)e(b,)g(A,)g(1,)h(!,)f(...\))7 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 -b Fb(117)150 1195 y Fe(set-mark)27 b(\(C-@\))20 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(122)150 -1288 y Fe(shell-backward-kill-word)31 b(\(\))20 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(119)150 1381 y Fe(shell-backward-word)30 b(\(\))15 -b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)42 b Fb(115)150 1474 y Fe(shell-expand-line)29 -b(\(M-C-e\))8 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(123)150 1567 y Fe(shell-forward-word)c -(\(\))18 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(115)150 1659 -y Fe(shell-kill-word)29 b(\(\))8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)35 b Fb(119)150 1752 y Fe(skip-csi-sequence)29 b(\(\))21 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(122)150 1845 y Fe(start-kbd-macro)29 -b(\(C-x)e(\(\))19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(121)2025 299 -y Fr(T)2025 415 y Fe(tilde-expand)28 b(\(M-&\))8 b Fc(:)15 -b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(122)2025 503 y -Fe(transpose-chars)29 b(\(C-t\))18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 -b Fb(118)2025 590 y Fe(transpose-words)29 b(\(M-t\))18 -b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)45 b Fb(118)2025 843 y Fr(U)2025 -959 y Fe(undo)26 b(\(C-_)h(or)f(C-x)g(C-u\))c Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)48 b Fb(122)2025 1047 y Fe(universal-argument)29 -b(\(\))18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(119)2025 1134 -y Fe(unix-filename-rubout)30 b(\(\))13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)40 -b Fb(119)2025 1222 y Fe(unix-line-discard)29 b(\(C-u\))13 -b Fc(:)h(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)40 b Fb(118)2025 1309 y Fe(unix-word-rubout)29 -b(\(C-w\))15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fb(119)2025 1396 -y Fe(upcase-word)28 b(\(M-u\))11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)38 b Fb(118)2025 1649 y Fr(Y)2025 1766 y Fe(yank)26 -b(\(C-y\))12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)39 b Fb(119)2025 1853 y Fe(yank-last-arg)28 -b(\(M-.)f(or)f(M-_\))19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)46 b Fb(117)2025 1940 y Fe(yank-nth-arg)28 -b(\(M-C-y\))22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(117)2025 -2028 y Fe(yank-pop)27 b(\(M-y\))20 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)45 b Fb(119)150 2260 y Fr(D.5)68 -b(Concept)45 b(Index)150 2520 y(A)150 2640 y Fb(alias)27 -b(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)44 b Fb(87)150 2729 y(arithmetic)26 b(ev)l(aluation)16 -b Fc(:)e(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)43 b Fb(86)150 2818 -y(arithmetic)26 b(expansion)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(28)150 2907 y(arithmetic,)27 b(shell)17 b Fc(:)d(:)f(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(86)150 2996 y(arra)n(ys)15 -b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fb(88)150 3255 y Fr(B)150 -3375 y Fb(bac)n(kground)9 b Fc(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(97)150 3464 y(Bash)26 -b(con\014guration)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(138)150 3553 y(Bash)26 b(installation)c Fc(:)13 -b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fb(138)150 -3642 y(Bourne)26 b(shell)13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(5)150 3731 -y(brace)26 b(expansion)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)47 b Fb(21)150 3820 y(builtin)9 b Fc(:)k(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)36 b Fb(3)150 4063 y Fr(C)150 4182 y Fb(command)26 -b(editing)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 -b Fb(102)150 4272 y(command)26 b(execution)d Fc(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b Fb(35)150 4361 -y(command)26 b(expansion)16 b Fc(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 -b Fb(34)150 4450 y(command)26 b(history)12 b Fc(:)h(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)39 b Fb(133)150 4539 y(command)26 -b(searc)n(h)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -36 b Fb(35)150 4628 y(command)26 b(substitution)15 b -Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(27)150 4717 y(command)26 -b(timing)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)34 b Fb(8)150 4806 y(commands,)26 b(comp)r(ound)18 -b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(9)150 4895 -y(commands,)26 b(conditional)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 -b Fb(10)150 4984 y(commands,)26 b(grouping)9 b Fc(:)14 -b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(14)150 5073 -y(commands,)26 b(lists)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(9)150 5162 y(commands,)26 -b(lo)r(oping)16 b Fc(:)f(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 -b Fb(10)150 5251 y(commands,)26 b(pip)r(elines)12 b Fc(:)i(:)f(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(8)150 5340 y(commands,)26 -b(shell)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -42 b Fb(8)2025 2520 y(commands,)26 b(simple)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(:)h(:)f(:)g(:)44 b Fb(8)2025 2609 y(commen)n(ts,)26 -b(shell)7 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)35 b Fb(7)2025 2698 y(completion)26 b(builtins)15 -b Fc(:)f(:)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(:)42 b Fb(126)2025 -2787 y(con\014guration)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(:)g(:) -g(:)g(:)h(:)f(:)g(:)42 b Fb(138)2025 2875 y(con)n(trol)26 -b(op)r(erator)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)46 b Fb(3)2025 2964 y(copro)r(cess)12 b Fc(:)i(:)f(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 -b Fb(15)2025 3222 y Fr(D)2025 3342 y Fb(directory)26 -b(stac)n(k)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)49 b Fb(90)2025 3600 y Fr(E)2025 3719 y Fb(editing)26 -b(command)g(lines)11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(102)2025 3808 y(en)n(vironmen)n(t)12 b Fc(:)g(:)h(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(37)2025 -3897 y(ev)l(aluation,)26 b(arithmetic)e Fc(:)13 b(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)49 b Fb(86)2025 3985 y(ev)n(en)n(t)24 b(designators)14 -b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 b -Fb(136)2025 4074 y(execution)25 b(en)n(vironmen)n(t)11 -b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fb(36)2025 4163 -y(exit)25 b(status)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)45 b Fb(3,)26 b(37)2025 4252 y(expansion)20 -b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)47 b Fb(20)2025 4341 y(expansion,)26 b(arithmetic)12 -b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(28)2025 4430 -y(expansion,)26 b(brace)10 b Fc(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)36 b Fb(21)2025 4518 y(expansion,)26 b(\014lename)12 -b Fc(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fb(29)2025 -4607 y(expansion,)26 b(parameter)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)40 b Fb(22)2025 4696 y(expansion,)26 b(pathname)18 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(29)2025 -4785 y(expansion,)26 b(tilde)8 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(21)2025 4874 y(expressions,)27 -b(arithmetic)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 -b Fb(86)2025 4963 y(expressions,)27 b(conditional)11 -b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(84)2025 5221 y Fr(F)2025 -5340 y Fb(\014eld)15 b Fc(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 -b Fb(3)p eop end -%%Page: 166 172 -TeXDict begin 166 171 bop 150 -116 a Ft(App)s(endix)29 -b(D:)i(Indexes)2623 b(166)150 299 y Fb(\014lename)15 -b Fc(:)f(:)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(:)42 b Fb(3)150 386 y(\014lename)26 -b(expansion)d 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(:)g(:)g(:)g(:)49 -b Fb(29)150 473 y(foreground)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fb(97)150 -561 y(functions,)26 b(shell)21 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)47 b Fb(16)150 811 y Fr(H)150 -927 y Fb(history)26 b(builtins)14 b Fc(:)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(:)40 b Fb(133)150 1014 y(history)26 -b(ev)n(en)n(ts)18 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(:)46 b Fb(136)150 1101 y(history)26 b(expansion)8 -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(:)35 -b Fb(135)150 1189 y(history)26 b(list)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(133)150 -1276 y(History)-6 b(,)26 b(ho)n(w)g(to)f(use)13 b Fc(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)39 b Fb(132)150 1526 y Fr(I)150 1642 -y Fb(iden)n(ti\014er)22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50 b Fb(3)150 -1729 y(initialization)28 b(\014le,)e(readline)11 b Fc(:)j(:)f(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 -b Fb(104)150 1816 y(installation)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(138)150 -1904 y(in)n(teraction,)27 b(readline)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)45 b Fb(101)150 1991 y(in)n(teractiv)n(e)26 b(shell)14 -b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(81,)26 -b(82)150 2078 y(in)n(ternationalization)14 b Fc(:)h(:)f(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)41 b Fb(7)150 2311 y Fr(J)150 2428 -y Fb(job)16 b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43 -b Fb(3)150 2515 y(job)26 b(con)n(trol)13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40 b Fb(3,)26 -b(97)150 2765 y Fr(K)150 2881 y Fb(kill)g(ring)19 b Fc(:)13 -b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)45 b Fb(103)150 2968 y(killing)27 b(text)17 b -Fc(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -44 b Fb(103)150 3218 y Fr(L)150 3334 y Fb(lo)r(calization)14 -b Fc(:)i(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)41 b Fb(7)150 3421 y(login)27 b(shell)17 b -Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)44 b Fb(81)150 3671 y Fr(M)150 3788 y Fb(matc)n(hing,)26 -b(pattern)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 -b Fb(29)150 3875 y(metac)n(haracter)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(3)150 4108 -y Fr(N)150 4224 y Fb(name)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 -b Fb(3)150 4311 y(nativ)n(e)25 b(languages)13 b Fc(:)i(:)e(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 b Fb(7)150 4399 -y(notation,)27 b(readline)7 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)33 b Fb(102)150 4649 y Fr(O)150 4765 y Fb(op)r(erator,)27 -b(shell)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)43 b Fb(3)150 5015 y Fr(P)150 5131 y Fb(parameter)26 -b(expansion)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 -b Fb(22)150 5218 y(parameters)17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43 b Fb(18)150 -5305 y(parameters,)27 b(p)r(ositional)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)44 b Fb(19)2025 299 y(parameters,)27 b(sp)r(ecial)18 -b Fc(:)c(:)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(:)44 b Fb(19)2025 -386 y(pathname)25 b(expansion)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(:)g(:) -h(:)38 b Fb(29)2025 474 y(pattern)25 b(matc)n(hing)14 -b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 -b Fb(29)2025 561 y(pip)r(eline)23 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(:)50 -b Fb(8)2025 649 y(POSIX)17 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44 -b Fb(3)2025 736 y(POSIX)24 b(Mo)r(de)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fb(93)2025 -824 y(pro)r(cess)26 b(group)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(3)2025 911 -y(pro)r(cess)26 b(group)g(ID)21 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)49 b Fb(3)2025 999 y(pro)r(cess)26 -b(substitution)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 -b Fb(28)2025 1086 y(programmable)27 b(completion)20 b -Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)46 b Fb(124)2025 1174 y(prompting)11 b -Fc(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)38 b Fb(91)2025 1425 y Fr(Q)2025 1541 y Fb(quoting)10 -b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Fb(6)2025 1629 y(quoting,)26 -b(ANSI)13 b Fc(:)e(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)40 b Fb(6)2025 1880 y Fr(R)2025 1997 y Fb(Readline,)26 -b(ho)n(w)g(to)g(use)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(:)49 -b Fb(100)2025 2084 y(redirection)7 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b -Fb(31)2025 2172 y(reserv)n(ed)25 b(w)n(ord)7 b Fc(:)14 -b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(3)2025 2259 y(restricted)26 b(shell)8 b Fc(:)14 -b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 -b Fb(92)2025 2346 y(return)25 b(status)c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)48 b Fb(4)2025 -2581 y Fr(S)2025 2697 y Fb(shell)26 b(arithmetic)11 b -Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 -b Fb(86)2025 2785 y(shell)26 b(function)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fb(16)2025 -2872 y(shell)26 b(script)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(38)2025 2960 -y(shell)26 b(v)l(ariable)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(18)2025 3047 y(shell,)26 -b(in)n(teractiv)n(e)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)40 b Fb(82)2025 3135 y(signal)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)34 b Fb(4)2025 3222 y(signal)27 b(handling)17 -b Fc(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 -b Fb(38)2025 3310 y(sp)r(ecial)27 b(builtin)10 b Fc(:)j(:)g(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(4,)26 b(67)2025 -3397 y(startup)f(\014les)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(81)2025 3485 y(susp)r(ending)25 -b(jobs)6 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)33 b Fb(97)2025 3736 y Fr(T)2025 3853 y Fb(tilde)26 -b(expansion)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)45 b Fb(21)2025 3940 y(tok)n(en)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)38 b Fb(4)2025 4027 y(translation,)27 b(nativ)n(e)e(languages)13 -b Fc(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)40 b Fb(7)2025 4279 y Fr(V)2025 4395 y Fb(v)l(ariable,)26 -b(shell)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)34 b Fb(18)2025 4483 y(v)l(ariables,)27 b(readline)18 -b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45 b Fb(105)2025 -4734 y Fr(W)2025 4850 y Fb(w)n(ord)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)48 b Fb(4)2025 4938 y(w)n(ord)26 b(splitting)21 -b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 -b Fb(28)2025 5189 y Fr(Y)2025 5305 y Fb(y)n(anking)25 -b(text)7 b Fc(:)12 b(:)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(:)34 b Fb(103)p eop end -%%Trailer - -userdict /end-hook known{end-hook}if -%%EOF diff --git a/doc/bashref.rw b/doc/bashref.rw deleted file mode 100644 index 583532617..000000000 --- a/doc/bashref.rw +++ /dev/null @@ -1,21 +0,0 @@ -\entry{time}{8}{\code {time}} -\entry{!}{8}{\code {!}} -\entry{until}{10}{\code {until}} -\entry{do}{10}{\code {do}} -\entry{done}{10}{\code {done}} -\entry{while}{10}{\code {while}} -\entry{for}{10}{\code {for}} -\entry{if}{10}{\code {if}} -\entry{then}{10}{\code {then}} -\entry{else}{10}{\code {else}} -\entry{elif}{10}{\code {elif}} -\entry{fi}{10}{\code {fi}} -\entry{case}{11}{\code {case}} -\entry{in}{11}{\code {in}} -\entry{esac}{11}{\code {esac}} -\entry{select}{12}{\code {select}} -\entry{[[}{12}{\code {[[}} -\entry{]]}{12}{\code {]]}} -\entry{{\tt \char 123}}{14}{\code {{\tt \char 123}}} -\entry{{\tt \char 125}}{14}{\code {{\tt \char 125}}} -\entry{function}{16}{\code {function}} diff --git a/doc/bashref.rws b/doc/bashref.rws deleted file mode 100644 index 52e3e3356..000000000 --- a/doc/bashref.rws +++ /dev/null @@ -1,35 +0,0 @@ -\initial {!} -\entry {\code {!}}{8} -\initial {[} -\entry {\code {[[}}{12} -\initial {]} -\entry {\code {]]}}{12} -\initial {{\tt \char 123}} -\entry {\code {{\tt \char 123}}}{14} -\initial {{\tt \char 125}} -\entry {\code {{\tt \char 125}}}{14} -\initial {C} -\entry {\code {case}}{11} -\initial {D} -\entry {\code {do}}{10} -\entry {\code {done}}{10} -\initial {E} -\entry {\code {elif}}{10} -\entry {\code {else}}{10} -\entry {\code {esac}}{11} -\initial {F} -\entry {\code {fi}}{10} -\entry {\code {for}}{10} -\entry {\code {function}}{16} -\initial {I} -\entry {\code {if}}{10} -\entry {\code {in}}{11} -\initial {S} -\entry {\code {select}}{12} -\initial {T} -\entry {\code {then}}{10} -\entry {\code {time}}{8} -\initial {U} -\entry {\code {until}}{10} -\initial {W} -\entry {\code {while}}{10} diff --git a/doc/bashref.tmp b/doc/bashref.tmp deleted file mode 100644 index e37dd0c98..000000000 --- a/doc/bashref.tmp +++ /dev/null @@ -1,19 +0,0 @@ - -This text is a brief description of the features that are present in -the Bash shell (version @value{VERSION}, @value{UPDATED}). - -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--2013 Free Software Foundation, Inc. - -@quotation -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.3 or -any later version published by the Free Software Foundation; with no -Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. -A copy of the license is included in the section entitled -``GNU Free Documentation License''. -@end quotation -@endinput diff --git a/doc/bashref.toc b/doc/bashref.toc deleted file mode 100644 index 882988cb1..000000000 --- a/doc/bashref.toc +++ /dev/null @@ -1,139 +0,0 @@ -@numchapentry{Introduction}{1}{Introduction}{1} -@numsecentry{What is Bash?}{1.1}{What is Bash?}{1} -@numsecentry{What is a shell?}{1.2}{What is a shell?}{1} -@numchapentry{Definitions}{2}{Definitions}{3} -@numchapentry{Basic Shell Features}{3}{Basic Shell Features}{5} -@numsecentry{Shell Syntax}{3.1}{Shell Syntax}{5} -@numsubsecentry{Shell Operation}{3.1.1}{Shell Operation}{5} -@numsubsecentry{Quoting}{3.1.2}{Quoting}{6} -@numsubsubsecentry{Escape Character}{3.1.2.1}{Escape Character}{6} -@numsubsubsecentry{Single Quotes}{3.1.2.2}{Single Quotes}{6} -@numsubsubsecentry{Double Quotes}{3.1.2.3}{Double Quotes}{6} -@numsubsubsecentry{ANSI-C Quoting}{3.1.2.4}{ANSI-C Quoting}{6} -@numsubsubsecentry{Locale-Specific Translation}{3.1.2.5}{Locale Translation}{7} -@numsubsecentry{Comments}{3.1.3}{Comments}{7} -@numsecentry{Shell Commands}{3.2}{Shell Commands}{8} -@numsubsecentry{Simple Commands}{3.2.1}{Simple Commands}{8} -@numsubsecentry{Pipelines}{3.2.2}{Pipelines}{8} -@numsubsecentry{Lists of Commands}{3.2.3}{Lists}{9} -@numsubsecentry{Compound Commands}{3.2.4}{Compound Commands}{9} -@numsubsubsecentry{Looping Constructs}{3.2.4.1}{Looping Constructs}{10} -@numsubsubsecentry{Conditional Constructs}{3.2.4.2}{Conditional Constructs}{10} -@numsubsubsecentry{Grouping Commands}{3.2.4.3}{Command Grouping}{14} -@numsubsecentry{Coprocesses}{3.2.5}{Coprocesses}{15} -@numsubsecentry{GNU Parallel}{3.2.6}{GNU Parallel}{15} -@numsecentry{Shell Functions}{3.3}{Shell Functions}{16} -@numsecentry{Shell Parameters}{3.4}{Shell Parameters}{18} -@numsubsecentry{Positional Parameters}{3.4.1}{Positional Parameters}{19} -@numsubsecentry{Special Parameters}{3.4.2}{Special Parameters}{19} -@numsecentry{Shell Expansions}{3.5}{Shell Expansions}{20} -@numsubsecentry{Brace Expansion}{3.5.1}{Brace Expansion}{21} -@numsubsecentry{Tilde Expansion}{3.5.2}{Tilde Expansion}{21} -@numsubsecentry{Shell Parameter Expansion}{3.5.3}{Shell Parameter Expansion}{22} -@numsubsecentry{Command Substitution}{3.5.4}{Command Substitution}{27} -@numsubsecentry{Arithmetic Expansion}{3.5.5}{Arithmetic Expansion}{28} -@numsubsecentry{Process Substitution}{3.5.6}{Process Substitution}{28} -@numsubsecentry{Word Splitting}{3.5.7}{Word Splitting}{28} -@numsubsecentry{Filename Expansion}{3.5.8}{Filename Expansion}{29} -@numsubsubsecentry{Pattern Matching}{3.5.8.1}{Pattern Matching}{29} -@numsubsecentry{Quote Removal}{3.5.9}{Quote Removal}{31} -@numsecentry{Redirections}{3.6}{Redirections}{31} -@numsubsecentry{Redirecting Input}{3.6.1}{}{32} -@numsubsecentry{Redirecting Output}{3.6.2}{}{32} -@numsubsecentry{Appending Redirected Output}{3.6.3}{}{32} -@numsubsecentry{Redirecting Standard Output and Standard Error}{3.6.4}{}{32} -@numsubsecentry{Appending Standard Output and Standard Error}{3.6.5}{}{33} -@numsubsecentry{Here Documents}{3.6.6}{}{33} -@numsubsecentry{Here Strings}{3.6.7}{}{33} -@numsubsecentry{Duplicating File Descriptors}{3.6.8}{}{34} -@numsubsecentry{Moving File Descriptors}{3.6.9}{}{34} -@numsubsecentry{Opening File Descriptors for Reading and Writing}{3.6.10}{}{34} -@numsecentry{Executing Commands}{3.7}{Executing Commands}{34} -@numsubsecentry{Simple Command Expansion}{3.7.1}{Simple Command Expansion}{34} -@numsubsecentry{Command Search and Execution}{3.7.2}{Command Search and Execution}{35} -@numsubsecentry{Command Execution Environment}{3.7.3}{Command Execution Environment}{36} -@numsubsecentry{Environment}{3.7.4}{Environment}{37} -@numsubsecentry{Exit Status}{3.7.5}{Exit Status}{37} -@numsubsecentry{Signals}{3.7.6}{Signals}{38} -@numsecentry{Shell Scripts}{3.8}{Shell Scripts}{38} -@numchapentry{Shell Builtin Commands}{4}{Shell Builtin Commands}{40} -@numsecentry{Bourne Shell Builtins}{4.1}{Bourne Shell Builtins}{40} -@numsecentry{Bash Builtin Commands}{4.2}{Bash Builtins}{47} -@numsecentry{Modifying Shell Behavior}{4.3}{Modifying Shell Behavior}{57} -@numsubsecentry{The Set Builtin}{4.3.1}{The Set Builtin}{57} -@numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{61} -@numsecentry{Special Builtins}{4.4}{Special Builtins}{67} -@numchapentry{Shell Variables}{5}{Shell Variables}{68} -@numsecentry{Bourne Shell Variables}{5.1}{Bourne Shell Variables}{68} -@numsecentry{Bash Variables}{5.2}{Bash Variables}{68} -@numchapentry{Bash Features}{6}{Bash Features}{79} -@numsecentry{Invoking Bash}{6.1}{Invoking Bash}{79} -@numsecentry{Bash Startup Files}{6.2}{Bash Startup Files}{81} -@numsecentry{Interactive Shells}{6.3}{Interactive Shells}{82} -@numsubsecentry{What is an Interactive Shell?}{6.3.1}{What is an Interactive Shell?}{83} -@numsubsecentry{Is this Shell Interactive?}{6.3.2}{Is this Shell Interactive?}{83} -@numsubsecentry{Interactive Shell Behavior}{6.3.3}{Interactive Shell Behavior}{83} -@numsecentry{Bash Conditional Expressions}{6.4}{Bash Conditional Expressions}{84} -@numsecentry{Shell Arithmetic}{6.5}{Shell Arithmetic}{86} -@numsecentry{Aliases}{6.6}{Aliases}{87} -@numsecentry{Arrays}{6.7}{Arrays}{88} -@numsecentry{The Directory Stack}{6.8}{The Directory Stack}{90} -@numsubsecentry{Directory Stack Builtins}{6.8.1}{Directory Stack Builtins}{90} -@numsecentry{Controlling the Prompt}{6.9}{Controlling the Prompt}{91} -@numsecentry{The Restricted Shell}{6.10}{The Restricted Shell}{92} -@numsecentry{Bash POSIX Mode}{6.11}{Bash POSIX Mode}{93} -@numchapentry{Job Control}{7}{Job Control}{97} -@numsecentry{Job Control Basics}{7.1}{Job Control Basics}{97} -@numsecentry{Job Control Builtins}{7.2}{Job Control Builtins}{98} -@numsecentry{Job Control Variables}{7.3}{Job Control Variables}{100} -@numchapentry{Command Line Editing}{8}{Command Line Editing}{101} -@numsecentry{Introduction to Line Editing}{8.1}{Introduction and Notation}{101} -@numsecentry{Readline Interaction}{8.2}{Readline Interaction}{101} -@numsubsecentry{Readline Bare Essentials}{8.2.1}{Readline Bare Essentials}{102} -@numsubsecentry{Readline Movement Commands}{8.2.2}{Readline Movement Commands}{102} -@numsubsecentry{Readline Killing Commands}{8.2.3}{Readline Killing Commands}{103} -@numsubsecentry{Readline Arguments}{8.2.4}{Readline Arguments}{103} -@numsubsecentry{Searching for Commands in the History}{8.2.5}{Searching}{103} -@numsecentry{Readline Init File}{8.3}{Readline Init File}{104} -@numsubsecentry{Readline Init File Syntax}{8.3.1}{Readline Init File Syntax}{104} -@numsubsecentry{Conditional Init Constructs}{8.3.2}{Conditional Init Constructs}{111} -@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{112} -@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{115} -@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{115} -@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{116} -@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{117} -@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{118} -@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{119} -@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{120} -@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{121} -@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{122} -@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{124} -@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{124} -@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{126} -@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{130} -@numchapentry{Using History Interactively}{9}{Using History Interactively}{133} -@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{133} -@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{133} -@numsecentry{History Expansion}{9.3}{History Interaction}{135} -@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{136} -@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{136} -@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{137} -@numchapentry{Installing Bash}{10}{Installing Bash}{138} -@numsecentry{Basic Installation}{10.1}{Basic Installation}{138} -@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{139} -@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{139} -@numsecentry{Installation Names}{10.4}{Installation Names}{139} -@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{139} -@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{140} -@numsecentry{Operation Controls}{10.7}{Operation Controls}{140} -@numsecentry{Optional Features}{10.8}{Optional Features}{140} -@appentry{Reporting Bugs}{A}{Reporting Bugs}{145} -@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{146} -@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{150} -@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{152} -@appentry{Indexes}{D}{Indexes}{160} -@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{160} -@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{161} -@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{161} -@appsecentry{Function Index}{D.4}{Function Index}{163} -@appsecentry{Concept Index}{D.5}{Concept Index}{165} diff --git a/doc/bashref.tp b/doc/bashref.tp deleted file mode 100644 index e69de29bb..000000000 diff --git a/doc/bashref.vr b/doc/bashref.vr deleted file mode 100644 index 0107c8f00..000000000 --- a/doc/bashref.vr +++ /dev/null @@ -1,142 +0,0 @@ -\entry{LC_MESSAGES}{7}{\code {LC_MESSAGES}} -\entry{TEXTDOMAIN}{7}{\code {TEXTDOMAIN}} -\entry{TEXTDOMAINDIR}{7}{\code {TEXTDOMAINDIR}} -\entry{*}{19}{\code {*}} -\entry{@}{19}{\code {@}} -\entry{#}{19}{\code {#}} -\entry{?}{20}{\code {?}} -\entry{-}{20}{\code {-}} -\entry{$}{20}{\code {$}} -\entry{!}{20}{\code {!}} -\entry{0}{20}{\code {0}} -\entry{_}{20}{\code {_}} -\entry{CDPATH}{68}{\code {CDPATH}} -\entry{HOME}{68}{\code {HOME}} -\entry{IFS}{68}{\code {IFS}} -\entry{MAIL}{68}{\code {MAIL}} -\entry{MAILPATH}{68}{\code {MAILPATH}} -\entry{OPTARG}{68}{\code {OPTARG}} -\entry{OPTIND}{68}{\code {OPTIND}} -\entry{PATH}{68}{\code {PATH}} -\entry{PS1}{68}{\code {PS1}} -\entry{PS2}{68}{\code {PS2}} -\entry{BASH}{68}{\code {BASH}} -\entry{BASHOPTS}{69}{\code {BASHOPTS}} -\entry{BASHPID}{69}{\code {BASHPID}} -\entry{BASH_ALIASES}{69}{\code {BASH_ALIASES}} -\entry{BASH_ARGC}{69}{\code {BASH_ARGC}} -\entry{BASH_ARGV}{69}{\code {BASH_ARGV}} -\entry{BASH_CMDS}{69}{\code {BASH_CMDS}} -\entry{BASH_COMMAND}{69}{\code {BASH_COMMAND}} -\entry{BASH_COMPAT}{69}{\code {BASH_COMPAT}} -\entry{BASH_ENV}{70}{\code {BASH_ENV}} -\entry{BASH_EXECUTION_STRING}{70}{\code {BASH_EXECUTION_STRING}} -\entry{BASH_LINENO}{70}{\code {BASH_LINENO}} -\entry{BASH_REMATCH}{70}{\code {BASH_REMATCH}} -\entry{BASH_SOURCE}{70}{\code {BASH_SOURCE}} -\entry{BASH_SUBSHELL}{70}{\code {BASH_SUBSHELL}} -\entry{BASH_VERSINFO}{70}{\code {BASH_VERSINFO}} -\entry{BASH_VERSION}{71}{\code {BASH_VERSION}} -\entry{BASH_XTRACEFD}{71}{\code {BASH_XTRACEFD}} -\entry{CHILD_MAX}{71}{\code {CHILD_MAX}} -\entry{COLUMNS}{71}{\code {COLUMNS}} -\entry{COMP_CWORD}{71}{\code {COMP_CWORD}} -\entry{COMP_LINE}{71}{\code {COMP_LINE}} -\entry{COMP_POINT}{71}{\code {COMP_POINT}} -\entry{COMP_TYPE}{72}{\code {COMP_TYPE}} -\entry{COMP_KEY}{72}{\code {COMP_KEY}} -\entry{COMP_WORDBREAKS}{72}{\code {COMP_WORDBREAKS}} -\entry{COMP_WORDS}{72}{\code {COMP_WORDS}} -\entry{COMPREPLY}{72}{\code {COMPREPLY}} -\entry{COPROC}{72}{\code {COPROC}} -\entry{DIRSTACK}{72}{\code {DIRSTACK}} -\entry{EMACS}{72}{\code {EMACS}} -\entry{ENV}{72}{\code {ENV}} -\entry{EUID}{72}{\code {EUID}} -\entry{FCEDIT}{72}{\code {FCEDIT}} -\entry{FIGNORE}{73}{\code {FIGNORE}} -\entry{FUNCNAME}{73}{\code {FUNCNAME}} -\entry{FUNCNEST}{73}{\code {FUNCNEST}} -\entry{GLOBIGNORE}{73}{\code {GLOBIGNORE}} -\entry{GROUPS}{73}{\code {GROUPS}} -\entry{histchars}{73}{\code {histchars}} -\entry{HISTCMD}{73}{\code {HISTCMD}} -\entry{HISTCONTROL}{73}{\code {HISTCONTROL}} -\entry{HISTFILE}{74}{\code {HISTFILE}} -\entry{HISTFILESIZE}{74}{\code {HISTFILESIZE}} -\entry{HISTIGNORE}{74}{\code {HISTIGNORE}} -\entry{HISTSIZE}{74}{\code {HISTSIZE}} -\entry{HISTTIMEFORMAT}{74}{\code {HISTTIMEFORMAT}} -\entry{HOSTFILE}{74}{\code {HOSTFILE}} -\entry{HOSTNAME}{75}{\code {HOSTNAME}} -\entry{HOSTTYPE}{75}{\code {HOSTTYPE}} -\entry{IGNOREEOF}{75}{\code {IGNOREEOF}} -\entry{INPUTRC}{75}{\code {INPUTRC}} -\entry{LANG}{75}{\code {LANG}} -\entry{LC_ALL}{75}{\code {LC_ALL}} -\entry{LC_COLLATE}{75}{\code {LC_COLLATE}} -\entry{LC_CTYPE}{75}{\code {LC_CTYPE}} -\entry{LC_MESSAGES}{75}{\code {LC_MESSAGES}} -\entry{LC_NUMERIC}{75}{\code {LC_NUMERIC}} -\entry{LINENO}{75}{\code {LINENO}} -\entry{LINES}{75}{\code {LINES}} -\entry{MACHTYPE}{75}{\code {MACHTYPE}} -\entry{MAILCHECK}{76}{\code {MAILCHECK}} -\entry{MAPFILE}{76}{\code {MAPFILE}} -\entry{OLDPWD}{76}{\code {OLDPWD}} -\entry{OPTERR}{76}{\code {OPTERR}} -\entry{OSTYPE}{76}{\code {OSTYPE}} -\entry{PIPESTATUS}{76}{\code {PIPESTATUS}} -\entry{POSIXLY_CORRECT}{76}{\code {POSIXLY_CORRECT}} -\entry{PPID}{76}{\code {PPID}} -\entry{PROMPT_COMMAND}{76}{\code {PROMPT_COMMAND}} -\entry{PROMPT_DIRTRIM}{76}{\code {PROMPT_DIRTRIM}} -\entry{PS3}{76}{\code {PS3}} -\entry{PS4}{76}{\code {PS4}} -\entry{PWD}{76}{\code {PWD}} -\entry{RANDOM}{76}{\code {RANDOM}} -\entry{READLINE_LINE}{77}{\code {READLINE_LINE}} -\entry{READLINE_POINT}{77}{\code {READLINE_POINT}} -\entry{REPLY}{77}{\code {REPLY}} -\entry{SECONDS}{77}{\code {SECONDS}} -\entry{SHELL}{77}{\code {SHELL}} -\entry{SHELLOPTS}{77}{\code {SHELLOPTS}} -\entry{SHLVL}{77}{\code {SHLVL}} -\entry{TIMEFORMAT}{77}{\code {TIMEFORMAT}} -\entry{TMOUT}{78}{\code {TMOUT}} -\entry{TMPDIR}{78}{\code {TMPDIR}} -\entry{UID}{78}{\code {UID}} -\entry{auto_resume}{100}{\code {auto_resume}} -\entry{bell-style}{105}{\code {bell-style}} -\entry{bind-tty-special-chars}{105}{\code {bind-tty-special-chars}} -\entry{colored-stats}{105}{\code {colored-stats}} -\entry{comment-begin}{105}{\code {comment-begin}} -\entry{completion-display-width}{105}{\code {completion-display-width}} -\entry{completion-ignore-case}{105}{\code {completion-ignore-case}} -\entry{completion-map-case}{105}{\code {completion-map-case}} -\entry{completion-prefix-display-length}{106}{\code {completion-prefix-display-length}} -\entry{completion-query-items}{106}{\code {completion-query-items}} -\entry{convert-meta}{106}{\code {convert-meta}} -\entry{disable-completion}{106}{\code {disable-completion}} -\entry{editing-mode}{106}{\code {editing-mode}} -\entry{enable-keypad}{106}{\code {enable-keypad}} -\entry{expand-tilde}{106}{\code {expand-tilde}} -\entry{history-preserve-point}{107}{\code {history-preserve-point}} -\entry{history-size}{107}{\code {history-size}} -\entry{horizontal-scroll-mode}{107}{\code {horizontal-scroll-mode}} -\entry{input-meta}{107}{\code {input-meta}} -\entry{meta-flag}{107}{\code {meta-flag}} -\entry{isearch-terminators}{107}{\code {isearch-terminators}} -\entry{keymap}{107}{\code {keymap}} -\entry{mark-modified-lines}{108}{\code {mark-modified-lines}} -\entry{mark-symlinked-directories}{108}{\code {mark-symlinked-directories}} -\entry{match-hidden-files}{108}{\code {match-hidden-files}} -\entry{menu-complete-display-prefix}{108}{\code {menu-complete-display-prefix}} -\entry{output-meta}{108}{\code {output-meta}} -\entry{page-completions}{108}{\code {page-completions}} -\entry{revert-all-at-newline}{108}{\code {revert-all-at-newline}} -\entry{show-all-if-ambiguous}{108}{\code {show-all-if-ambiguous}} -\entry{show-all-if-unmodified}{109}{\code {show-all-if-unmodified}} -\entry{show-mode-in-prompt}{109}{\code {show-mode-in-prompt}} -\entry{skip-completed-text}{109}{\code {skip-completed-text}} -\entry{visible-stats}{109}{\code {visible-stats}} diff --git a/doc/bashref.vrs b/doc/bashref.vrs deleted file mode 100644 index 0b52c8acc..000000000 --- a/doc/bashref.vrs +++ /dev/null @@ -1,169 +0,0 @@ -\initial {!} -\entry {\code {!}}{20} -\initial {#} -\entry {\code {#}}{19} -\initial {$} -\entry {\code {$}}{20} -\initial {*} -\entry {\code {*}}{19} -\initial {-} -\entry {\code {-}}{20} -\initial {?} -\entry {\code {?}}{20} -\initial {@} -\entry {\code {@}}{19} -\initial {_} -\entry {\code {_}}{20} -\initial {0} -\entry {\code {0}}{20} -\initial {A} -\entry {\code {auto_resume}}{100} -\initial {B} -\entry {\code {BASH}}{68} -\entry {\code {BASH_ALIASES}}{69} -\entry {\code {BASH_ARGC}}{69} -\entry {\code {BASH_ARGV}}{69} -\entry {\code {BASH_CMDS}}{69} -\entry {\code {BASH_COMMAND}}{69} -\entry {\code {BASH_COMPAT}}{69} -\entry {\code {BASH_ENV}}{70} -\entry {\code {BASH_EXECUTION_STRING}}{70} -\entry {\code {BASH_LINENO}}{70} -\entry {\code {BASH_REMATCH}}{70} -\entry {\code {BASH_SOURCE}}{70} -\entry {\code {BASH_SUBSHELL}}{70} -\entry {\code {BASH_VERSINFO}}{70} -\entry {\code {BASH_VERSION}}{71} -\entry {\code {BASH_XTRACEFD}}{71} -\entry {\code {BASHOPTS}}{69} -\entry {\code {BASHPID}}{69} -\entry {\code {bell-style}}{105} -\entry {\code {bind-tty-special-chars}}{105} -\initial {C} -\entry {\code {CDPATH}}{68} -\entry {\code {CHILD_MAX}}{71} -\entry {\code {colored-stats}}{105} -\entry {\code {COLUMNS}}{71} -\entry {\code {comment-begin}}{105} -\entry {\code {COMP_CWORD}}{71} -\entry {\code {COMP_KEY}}{72} -\entry {\code {COMP_LINE}}{71} -\entry {\code {COMP_POINT}}{71} -\entry {\code {COMP_TYPE}}{72} -\entry {\code {COMP_WORDBREAKS}}{72} -\entry {\code {COMP_WORDS}}{72} -\entry {\code {completion-display-width}}{105} -\entry {\code {completion-ignore-case}}{105} -\entry {\code {completion-map-case}}{105} -\entry {\code {completion-prefix-display-length}}{106} -\entry {\code {completion-query-items}}{106} -\entry {\code {COMPREPLY}}{72} -\entry {\code {convert-meta}}{106} -\entry {\code {COPROC}}{72} -\initial {D} -\entry {\code {DIRSTACK}}{72} -\entry {\code {disable-completion}}{106} -\initial {E} -\entry {\code {editing-mode}}{106} -\entry {\code {EMACS}}{72} -\entry {\code {enable-keypad}}{106} -\entry {\code {ENV}}{72} -\entry {\code {EUID}}{72} -\entry {\code {expand-tilde}}{106} -\initial {F} -\entry {\code {FCEDIT}}{72} -\entry {\code {FIGNORE}}{73} -\entry {\code {FUNCNAME}}{73} -\entry {\code {FUNCNEST}}{73} -\initial {G} -\entry {\code {GLOBIGNORE}}{73} -\entry {\code {GROUPS}}{73} -\initial {H} -\entry {\code {histchars}}{73} -\entry {\code {HISTCMD}}{73} -\entry {\code {HISTCONTROL}}{73} -\entry {\code {HISTFILE}}{74} -\entry {\code {HISTFILESIZE}}{74} -\entry {\code {HISTIGNORE}}{74} -\entry {\code {history-preserve-point}}{107} -\entry {\code {history-size}}{107} -\entry {\code {HISTSIZE}}{74} -\entry {\code {HISTTIMEFORMAT}}{74} -\entry {\code {HOME}}{68} -\entry {\code {horizontal-scroll-mode}}{107} -\entry {\code {HOSTFILE}}{74} -\entry {\code {HOSTNAME}}{75} -\entry {\code {HOSTTYPE}}{75} -\initial {I} -\entry {\code {IFS}}{68} -\entry {\code {IGNOREEOF}}{75} -\entry {\code {input-meta}}{107} -\entry {\code {INPUTRC}}{75} -\entry {\code {isearch-terminators}}{107} -\initial {K} -\entry {\code {keymap}}{107} -\initial {L} -\entry {\code {LANG}}{75} -\entry {\code {LC_ALL}}{75} -\entry {\code {LC_COLLATE}}{75} -\entry {\code {LC_CTYPE}}{75} -\entry {\code {LC_MESSAGES}}{7, 75} -\entry {\code {LC_NUMERIC}}{75} -\entry {\code {LINENO}}{75} -\entry {\code {LINES}}{75} -\initial {M} -\entry {\code {MACHTYPE}}{75} -\entry {\code {MAIL}}{68} -\entry {\code {MAILCHECK}}{76} -\entry {\code {MAILPATH}}{68} -\entry {\code {MAPFILE}}{76} -\entry {\code {mark-modified-lines}}{108} -\entry {\code {mark-symlinked-directories}}{108} -\entry {\code {match-hidden-files}}{108} -\entry {\code {menu-complete-display-prefix}}{108} -\entry {\code {meta-flag}}{107} -\initial {O} -\entry {\code {OLDPWD}}{76} -\entry {\code {OPTARG}}{68} -\entry {\code {OPTERR}}{76} -\entry {\code {OPTIND}}{68} -\entry {\code {OSTYPE}}{76} -\entry {\code {output-meta}}{108} -\initial {P} -\entry {\code {page-completions}}{108} -\entry {\code {PATH}}{68} -\entry {\code {PIPESTATUS}}{76} -\entry {\code {POSIXLY_CORRECT}}{76} -\entry {\code {PPID}}{76} -\entry {\code {PROMPT_COMMAND}}{76} -\entry {\code {PROMPT_DIRTRIM}}{76} -\entry {\code {PS1}}{68} -\entry {\code {PS2}}{68} -\entry {\code {PS3}}{76} -\entry {\code {PS4}}{76} -\entry {\code {PWD}}{76} -\initial {R} -\entry {\code {RANDOM}}{76} -\entry {\code {READLINE_LINE}}{77} -\entry {\code {READLINE_POINT}}{77} -\entry {\code {REPLY}}{77} -\entry {\code {revert-all-at-newline}}{108} -\initial {S} -\entry {\code {SECONDS}}{77} -\entry {\code {SHELL}}{77} -\entry {\code {SHELLOPTS}}{77} -\entry {\code {SHLVL}}{77} -\entry {\code {show-all-if-ambiguous}}{108} -\entry {\code {show-all-if-unmodified}}{109} -\entry {\code {show-mode-in-prompt}}{109} -\entry {\code {skip-completed-text}}{109} -\initial {T} -\entry {\code {TEXTDOMAIN}}{7} -\entry {\code {TEXTDOMAINDIR}}{7} -\entry {\code {TIMEFORMAT}}{77} -\entry {\code {TMOUT}}{78} -\entry {\code {TMPDIR}}{78} -\initial {U} -\entry {\code {UID}}{78} -\initial {V} -\entry {\code {visible-stats}}{109} diff --git a/doc/builtins.0 b/doc/builtins.0 deleted file mode 100644 index 1eaf9a225..000000000 --- a/doc/builtins.0 +++ /dev/null @@ -1,1727 +0,0 @@ -BASH_BUILTINS(1) BASH_BUILTINS(1) - - - -NNAAMMEE - bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, - compgen, complete, compopt, continue, declare, dirs, disown, echo, - enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, - history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, - pwd, read, readonly, return, set, shift, shopt, source, suspend, test, - times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - - bash built-in commands, see bbaasshh(1) - -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 - and do not treat ---- specially. The eexxiitt, llooggoouutt, bbrreeaakk, ccoonnttiinnuuee, lleett, - and sshhiifftt builtins accept and process arguments beginning with -- with- - out requiring ----. Other builtins that accept arguments but are not - specified as accepting options interpret arguments beginning with -- as - invalid options and require ---- to prevent this interpretation. - :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s - and performing any specified redirections. A zero exit code is - returned. - - .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - Read and execute commands from _f_i_l_e_n_a_m_e in the current shell - environment and return the exit status of the last command exe- - 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. 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 - 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 - 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 - 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 - without job control. - - bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVVXX] - bbiinndd [--mm _k_e_y_m_a_p] [--qq _f_u_n_c_t_i_o_n] [--uu _f_u_n_c_t_i_o_n] [--rr _k_e_y_s_e_q] - bbiinndd [--mm _k_e_y_m_a_p] --ff _f_i_l_e_n_a_m_e - bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d - bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e - bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d - Display current rreeaaddlliinnee key and function bindings, bind a key - sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee - variable. Each non-option argument is a command as it would - appear in _._i_n_p_u_t_r_c, but each binding or command must be passed - as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. - Options, if supplied, have the following meanings: - --mm _k_e_y_m_a_p - Use _k_e_y_m_a_p as the keymap to be affected by the subsequent - bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_- - _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d, - and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is - 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 - 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- - read. - --SS Display rreeaaddlliinnee key sequences bound to macros and the - strings they output. - --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 - Read key bindings from _f_i_l_e_n_a_m_e. - --qq _f_u_n_c_t_i_o_n - Query about which keys invoke the named _f_u_n_c_t_i_o_n. - --uu _f_u_n_c_t_i_o_n - Unbind all keys bound to the named _f_u_n_c_t_i_o_n. - --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 - 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 - editing state. - --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 - 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 - 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 - return its exit status. This is useful when defining a function - 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 - _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- - 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 - 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- - 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, - i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not - used. The --PP option causes ccdd to use the physical directory - structure by resolving symbolic links while traversing _d_i_r and - before processing instances of _._. in _d_i_r (see also the --PP option - to the sseett builtin command); the --LL option forces symbolic links - to be followed by resolving the link after processing instances - of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing - the immediately previous pathname component from _d_i_r, back to a - slash or the beginning of _d_i_r. If the --ee option is supplied - with --PP, and the current working directory cannot be success- - fully determined after a successful directory change, ccdd will - return an unsuccessful status. An argument of -- is converted to - $$OOLLDDPPWWDD before the directory change is attempted. If a non- - empty directory name from CCDDPPAATTHH is used, or if -- is the first - argument, and the directory change is successful, the absolute - pathname of the new working directory is written to the standard - output. The return value is true if the directory was success- - fully changed; false otherwise. - - ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...] - Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function - lookup. Only builtin commands or commands found in the PPAATTHH are - executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is - performed using a default value for PPAATTHH that is guaranteed to - find all of the standard utilities. If either the --VV or --vv - 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 - 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 - 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- - 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 - facilities, while available, will not have useful values. - - The matches will be generated in the same way as if the pro- - grammable completion code had generated them directly from a - completion specification with the same flags. If _w_o_r_d is speci- - fied, only those completions matching _w_o_r_d will be displayed. - - The return value is true unless an invalid option is supplied, - 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_- - _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 - to be reused as input. The --rr option removes a completion spec- - ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- - pletion specifications. The --DD option indicates that the - remaining options and actions should apply to the ``default'' - command completion; that is, completion attempted on a command - for which no completion has previously been defined. The --EE - option indicates that the remaining options and actions should - apply to ``empty'' command completion; that is, completion - attempted on a blank line. - - The process of applying these completion specifications when - word completion is attempted is described above under PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn. - - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- - 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- - 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 - the compspec generates no matches. - ddiirrnnaammeess - 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 - shell functions. - nnooqquuoottee Tell readline not to quote the completed words - if they are filenames (quoting filenames is the - default). - 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 - 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 - 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 - specified as --bb. - ccoommmmaanndd Command names. May also be specified as --cc. - ddiirreeccttoorryy - Directory names. May also be specified as --dd. - ddiissaabblleedd - Names of disabled shell builtins. - eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be - specified as --ee. - ffiillee File names. May also be specified as --ff. - ffuunnccttiioonn - Names of shell functions. - ggrroouupp Group names. May also be specified as --gg. - hheellppttooppiicc - Help topics as accepted by the hheellpp builtin. - hhoossttnnaammee - Hostnames, as taken from the file specified by - the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also - be specified as --jj. - 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 - builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt - builtin. - ssiiggnnaall Signal names. - ssttooppppeedd Names of stopped jobs, if job control is active. - uusseerr User names. May also be specified as --uu. - vvaarriiaabbllee - Names of all shell variables. May also be spec- - ified as --vv. - --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its - output is used as the possible completions. - --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) - 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-- - 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 - 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- - 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. - --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- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this - case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e argu- - ment, an attempt is made to remove a completion specification - for a _n_a_m_e for which no specification exists, or an error occurs - adding a completion specification. - - ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEE] [++oo _o_p_t_i_o_n] [_n_a_m_e] - Modify completion options for each _n_a_m_e according to the - _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es - are supplied. If no _o_p_t_i_o_ns are given, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin - described above. The --DD option indicates that the remaining - options should apply to the ``default'' command completion; that - is, completion attempted on a command for which no completion - has previously been defined. The --EE option indicates that the - remaining options should apply to ``empty'' command completion; - that is, completion attempted on a blank line. - - The return value is true unless an invalid option is supplied, - 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'' - 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 - display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options are ignored. When --pp is - supplied without _n_a_m_e arguments, it will display the attributes - and values of all variables having the attributes specified by - the additional options. If no other options are supplied with - --pp, ddeeccllaarree will display the attributes and values of all shell - variables. The --ff option will restrict the display to shell - functions. The --FF option inhibits the display of function defi- - nitions; only the function name and attributes are printed. If - the eexxttddeebbuugg shell option is enabled using sshhoopptt, the source - file name and line number where the function is defined are dis- - played as well. The --FF option implies --ff. The --gg option forces - variables to be created or modified at the global scope, even - when ddeeccllaarree is executed in a shell function. It is ignored in - all other cases. The following options can be used to restrict - output to variables with the specified attribute or to give - variables attributes: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss - above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss - above). - --ff Use function names only. - --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when - the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case - 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 and assign- - ments to _n_a_m_e, except for changing the --nn attribute - itself, are performed on the variable referenced by - _n_a_m_e's value. The --nn 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 - variables. - --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 - environment. - - Using `+' instead of `-' turns off the attribute instead, with - the exceptions that ++aa may not be used to destroy an array vari- - able and ++rr will not remove the readonly attribute. When used - in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with - the llooccaall command, unless the --gg option is supplied. If a vari- - able name is followed by =_v_a_l_u_e, the value of the variable is - set to _v_a_l_u_e. 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 vari- - able 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 readonly status for a readonly vari- - able, an attempt is made to turn off array status for an array - variable, or an attempt is made to display a non-existent func- - tion 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. - --cc Clears the directory stack by deleting all of the - entries. - --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- - 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 - list shown by ddiirrss when invoked without options, starting - with zero. - - The return value is 0 unless an invalid option is supplied or _n - indexes beyond the end of the directory stack. - - ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...] - Without options, 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 --aa nor --rr is sup- - plied, the shell's notion of the _c_u_r_r_e_n_t _j_o_b is used. If the --hh - option is given, each _j_o_b_s_p_e_c is not removed from the 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 present, and neither the --aa - nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If no - _j_o_b_s_p_e_c is supplied, the --aa option means to remove or mark all - jobs; the --rr option without a _j_o_b_s_p_e_c argument restricts opera- - tion 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 - 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 - sequences: - \\aa alert (bell) - \\bb backspace - \\cc suppress further output - \\ee - \\EE an escape character - \\ff form feed - \\nn new line - \\rr carriage return - \\tt horizontal tab - \\vv vertical tab - \\\\ backslash - \\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 - value _H_H (one or two hex digits) - \\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 - 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 - 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 - 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 - shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. - If no _n_a_m_e arguments are given, or if the --pp option is supplied, - a list of shell builtins is printed. With no other option argu- - ments, the list consists of all enabled shell builtins. If --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an - error loading a new builtin from a shared object. - - 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 - 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 - the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what - _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e - 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. - - eexxiitt [_n] - 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 - 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- - 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- - 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- - 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 - ``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 - 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 - 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. - 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 - 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 - 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 - _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 - ggeettooppttss within the same shell invocation if a new set of parame- - ters is to be used. - - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of - the first non-option argument, and _n_a_m_e is set to ?. - - ggeettooppttss normally parses the positional parameters, but if more - arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - - 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 - 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 - character found. - - 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- - 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- - 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 - _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 - 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 - format - --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n - - The return status is 0 unless no command matches _p_a_t_t_e_r_n. - - hhiissttoorryy [[_n]] - hhiissttoorryy --cc - hhiissttoorryy --dd _o_f_f_s_e_t - 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 - following meanings: - --cc Clear the history list by deleting all the entries. - --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. - --aa Append the ``new'' history lines (history lines entered - since the beginning of the current bbaasshh session) to the - 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 - current bbaasshh session. - --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 - 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 - 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 - timestamps for the previous history line. The return value is 0 - unless an invalid option is encountered, an error occurs while - reading or writing the history file, an invalid _o_f_f_s_e_t is sup- - plied as an argument to --dd, or the history expansion supplied as - an argument to --pp fails. - - jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ] - jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ] - The first form lists the active jobs. The options have the fol- - lowing meanings: - --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. - --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 - 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 - executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. - - kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... - kkiillll --ll [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are - listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. kkiillll returns true - if at least one signal was successfully sent, or false if an - 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 - 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 - 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. With no operands, llooccaall writes a list of - local variables to the standard output. It is an error to use - llooccaall when not within a function. The return status is 0 unless - llooccaall is used outside a function, an invalid _n_a_m_e is supplied, - or _n_a_m_e is a readonly variable. - - llooggoouutt Exit a login shell. - - mmaappffiillee [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] - [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - rreeaaddaarrrraayy [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] - [--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 - supplied, have the following meanings: - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are - copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default - index is 0. - --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing newline from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- - 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 option specifies _q_u_a_n_t_u_m. - --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. - 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 - the line is read but before the array element is assigned. - - 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 - _a_r_r_a_y is not an indexed array. - - ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to - the new top directory. Arguments, if supplied, have the follow- - ing meanings: - --nn Suppresses the normal change of directory when removing - 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 - +0'' removes the first directory, ``popd +1'' the second. - --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to - last. - - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid - option is encountered, the directory stack is empty, a non-exis- - tent directory stack entry is specified, or the directory change - fails. - - 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 - 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 - addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff - interprets the following extensions: - %%bb causes pprriinnttff to expand backslash escape sequences in the - corresponding _a_r_g_u_m_e_n_t (except that \\cc terminates output, - backslashes in \\'', \\"", and \\?? are not removed, and octal - escapes beginning with \\00 may contain up to four digits). - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a - 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). - 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 - behavior. - - 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 - 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_- - _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 - 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, 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 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 - 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 - zero) is at the top. - _d_i_r Adds _d_i_r to the directory stack at the top, making it the - new current working directory as if it had been supplied - as the argument to the ccdd builtin. - - If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd returns 0 unless the direc- - tory stack is empty, a non-existent directory stack element is - specified, or the directory change to the specified new current - directory fails. - - ppwwdd [--LLPP] - 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 - invalid option is supplied. - - rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp - _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, and the - first word is assigned to the first _n_a_m_e, the second word to the - second _n_a_m_e, and so on, with leftover words and their interven- - ing separators assigned to the last _n_a_m_e. If there are fewer - words read from the input stream than names, the remaining names - are assigned empty values. The characters in IIFFSS are used to - split the line into words. The backslash character (\\) may be - used to remove any special meaning for the next character read - and for line continuation. Options, if supplied, have the fol- - lowing meanings: - --aa _a_n_a_m_e - The words are assigned to sequential indices of the array - variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any - new values are assigned. Other _n_a_m_e arguments are - 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. - --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. - --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. - --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than - waiting for a complete line of input, but honor a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the - 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. - --pp _p_r_o_m_p_t - Display _p_r_o_m_p_t on standard error, without a trailing new- - line, before attempting to read any input. The prompt is - displayed only if input is coming from a terminal. - --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not be used as a line - 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. - 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- - 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 return code is zero, unless end-of-file is - encountered, rreeaadd times out (in which case the return code is - greater than 128), a variable assignment error (such as assign- - ing to a readonly variable) occurs, or an invalid file descrip- - tor is supplied as the argument to --uu. - - rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - 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 - _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 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 - displayed in a format that can be reused as input for setting or - resetting the currently-set variables. Read-only variables can- - not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. - The output is sorted according to the current locale. When - options are specified, they set or unset shell attributes. Any - arguments remaining after option processing are treated as val- - ues for the positional parameters and are assigned, in order, to - $$11, $$22, ...... $$_n. Options, if specified, have the following - meanings: - --aa Automatically mark variables and functions which are - modified or created for export to the environment of - subsequent commands. - --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 - (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero sta- - tus. 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 - applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - above), and may cause subshells to exit before executing - all the commands in the subshell. - - 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 - 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 - that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run - in a separate process group. When a background job com- - pletes, the shell prints a line containing its exit sta- - tus. - --nn Read commands but do not execute them. This may be used - 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: - aalllleexxppoorrtt - Same as --aa. - bbrraacceeeexxppaanndd - Same as --BB. - 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 - editing interface used for rreeaadd --ee. - eerrrreexxiitt Same as --ee. - eerrrrttrraaccee - Same as --EE. - ffuunnccttrraaccee - Same as --TT. - hhaasshhaallll Same as --hh. - hhiisstteexxppaanndd - Same as --HH. - hhiissttoorryy Enable command history, as described above under - HHIISSTTOORRYY. This option is on by default in inter- - active shells. - iiggnnoorreeeeooff - 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. - nnoocclloobbbbeerr - Same as --CC. - nnooeexxeecc Same as --nn. - nnoogglloobb Same as --ff. - nnoolloogg Currently ignored. - nnoottiiffyy Same as --bb. - nnoouunnsseett Same as --uu. - oonneeccmmdd Same as --tt. - 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 - 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). - pprriivviilleeggeedd - Same as --pp. - vveerrbboossee Same as --vv. - 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 - 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 - 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- - 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 - 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 - 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 - command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command - and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn - above). This is on by default. - --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- - 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 - working directory. It uses the physical directory - structure instead. By default, bbaasshh follows the logical - 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 - RREETTUURRNN traps are normally not inherited in such cases. - ---- 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 - with a --. - -- 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 - 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 - zero if _n is greater than $$## or less than zero; otherwise 0. - - sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - Toggle the values of variables controlling optional shell behav- - ior. With no options, or with the --pp option, a list of all set- - table options is displayed, with an indication of whether or not - each is set. The --pp option causes output to be displayed in a - form that may be reused as input. Other options have the fol- - lowing meanings: - --ss Enable (set) each _o_p_t_n_a_m_e. - --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status - 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- - wise. - --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) - 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 - valid shell option. - - The list of sshhoopptt options is: - - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- - 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 - 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 - 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 - 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- - formed. - cchheecckkjjoobbss - If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs - are running, this causes the exit to be deferred until a - second exit is attempted without an 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. - ccoommppaatt3311 - If set, bbaasshh changes its behavior to that of version 3.1 - 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 - 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). - 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 - in the list. - ccoommppaatt4411 - If set, bbaasshh, when in posix mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even 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 - removal. - ccoommpplleettee__ffuullllqquuoottee - 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 - 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 - buffer. 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- - tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. - eexxeeccffaaiill - If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not - exit if eexxeecc fails. - eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under - AALLIIAASSEESS. This option is enabled by default for interac- - tive shells. - eexxttddeebbuugg - If set, behavior intended for use by debuggers is - enabled: - 11.. The --FF option to the ddeeccllaarree builtin displays the - source file name and line number corresponding to - each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and - not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), a call to - rreettuurrnn is simulated. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described - in their descriptions above. - 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 (( - _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 - quotes. This option is enabled by default. - ffaaiillgglloobb - 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 - 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 - default. - gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching (see - PPaatttteerrnn MMaattcchhiinngg above) behave as if in the traditional - C locale when performing comparisons. That is, the cur- - rent locale's collating sequence is not taken into - account, so bb will not collate between AA and BB, and - upper-case and lower-case ASCII characters will collate - together. - 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 //, - 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 - exits, rather than overwriting the file. - hhiissttrreeeeddiitt - 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 - into the rreeaaddlliinnee editing buffer, allowing further modi- - fication. - hhoossttccoommpplleettee - If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE - above). This is enabled by default. - hhuuppoonneexxiitt - If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- - active login shell exits. - iinntteerraaccttiivvee__ccoommmmeennttss - If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This - option is enabled by default. - llaassttppiippee - 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 - commands are saved to the history with embedded newlines - rather than using semicolon separators where possible. - llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be - 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- - played. - nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - 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 - fashion when performing pathname expansion (see PPaatthhnnaammee - EExxppaannssiioonn above). - nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive - fashion when performing matching while executing ccaassee or - [[[[ conditional commands. - nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, - rather than themselves. - pprrooggccoommpp - If set, the programmable completion facilities (see PPrroo-- - ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is - 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 - above. This option is enabled by default. - rreessttrriicctteedd__sshheellll - 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- - cover whether or not a shell is restricted. - sshhiifftt__vveerrbboossee - 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 - argument. This option is enabled by default. - xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape - sequences by default. - - ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT - signal. A login shell cannot be suspended; the --ff option can be - used to override this and force the suspension. The return sta- - tus is 0 unless the shell is a login shell and --ff is not sup- - plied, or if job control is not enabled. - - 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 - an argument of ---- as signifying the end of options. - - Expressions may be combined using the following operators, - listed in decreasing order of precedence. The evaluation - 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 - 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. - _e_x_p_r_1 -oo _e_x_p_r_2 - True if either _e_x_p_r_1 or _e_x_p_r_2 is true. - - tteesstt and [[ evaluate conditional expressions using a set of rules - based on the number of arguments. - - 0 arguments - The expression is false. - 1 argument - The expression is true if and only if the argument is not - null. - 2 arguments - If the first argument is !!, the expression is true if and - only if the second argument is null. If the first 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 - operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the - result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo operators are considered binary operators when - there are three arguments. If the first argument is !!, - the value is the negation of the two-argument test using - the second and third arguments. If the first argument is - exactly (( and the third argument is exactly )), the result - is the one-argument test of the second argument. Other- - wise, the expression is false. - 4 arguments - If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining - arguments. Otherwise, the expression is parsed and eval- - uated according to precedence using the rules listed - above. - 5 or more arguments - The expression is parsed and evaluated according to - precedence using the rules listed above. - - 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 - 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 - case insensitive and the SSIIGG prefix is optional. - - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the - sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a - _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell - function or a script executed with the .. or ssoouurrccee builtins fin- - ishes executing. - - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a 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 - failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, - part of a command executed in a &&&& or |||| list 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) - option. - - 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 - 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 - 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 - 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, - 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 - 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 - function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true - if all of the arguments are found, false if any are not found. - - uulliimmiitt [--HHSSTTaabbccddeeffiillmmnnppqqrrssttuuvvxx [_l_i_m_i_t]] - Provides control over the resources available to the shell and - to processes started by it, on systems that allow such control. - 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- - 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 - 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: - --aa All current limits are reported - --bb The maximum socket buffer size - --cc The maximum size of core files created - --dd The maximum size of a process's data segment - --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its - children - --ii The maximum number of pending signals - --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor - this limit) - --nn The maximum number of open file descriptors (most systems - do not allow this value to be set) - --pp The pipe size in 512-byte blocks (this may not be set) - --qq The maximum number of bytes in POSIX message queues - --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 - user - --vv The maximum amount of virtual memory available to the - shell and, on some systems, to its children - --xx The maximum number of file locks - --TT The maximum number of threads - - If _l_i_m_i_t is given, 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; and --TT, --bb, --nn, and --uu, which are unscaled values. The - return status is 0 unless an invalid option or argument is sup- - plied, 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 - 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, - 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 - 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. - 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-- - 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 _._._.] - Wait for each specified process and return its termination sta- - tus. Each _n may be a process ID or a job specification; if a - job spec is given, all processes in that job's pipeline are - waited for. If _n is not given, all currently active child pro- - cesses are waited for, and the return status is zero. If 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. - -SSEEEE AALLSSOO - bash(1), sh(1) - - - -GNU Bash-4.2 2004 Apr 20 BASH_BUILTINS(1) diff --git a/doc/builtins.ps b/doc/builtins.ps deleted file mode 100644 index b07ec598f..000000000 --- a/doc/builtins.ps +++ /dev/null @@ -1,2896 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Fri Jan 11 16:34:25 2013 -%%DocumentNeededResources: font Times-Roman -%%+ font Times-Bold -%%+ font Times-Italic -%%+ font Symbol -%%+ font Courier -%%DocumentSuppliedResources: procset grops 1.19 2 -%%Pages: 23 -%%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () -%%Orientation: Portrait -%%EndComments -%%BeginDefaults -%%PageMedia: Default -%%EndDefaults -%%BeginProlog -%%BeginResource: procset grops 1.19 2 -%!PS-Adobe-3.0 Resource-ProcSet -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/Fr{ -setrgbcolor fill -}bind def -/setcmykcolor where{ -pop -/Fk{ -setcmykcolor fill -}bind def -}if -/Fg{ -setgray fill -}bind def -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/setcmykcolor where{ -pop -/Ck/setcmykcolor load def -}if -/Cg/setgray load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -/setpagedevice{}def -}bind def -/PEND{ -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%EndProlog -%%BeginSetup -%%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice -%%EndFeature -%%IncludeResource: font Times-Roman -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -%%IncludeResource: font Symbol -%%IncludeResource: font Courier -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron -/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE -/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95 -/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 1.325 -(bash, :, ., [, alias, bg, bind, break, b)108 96 R 1.325(uiltin, caller) --.2 F 3.825(,c)-.4 G 1.324 -(d, command, compgen, complete, compopt, continue,)-3.825 F .903 -(declare, dirs, diso)108 108 R .903(wn, echo, enable, e)-.25 F -.25(va) --.25 G .904(l, e).25 F -.15(xe)-.15 G .904(c, e).15 F .904(xit, e)-.15 F -.904(xport, f)-.15 F .904(alse, fc, fg, getopts, hash, help, history)-.1 -F 3.404(,j)-.65 G(obs,)-3.404 E .133(kill, let, local, logout, map\214l\ -e, popd, printf, pushd, pwd, read, readonly)108 120 R 2.633(,r)-.65 G -.133(eturn, set, shift, shopt, source, sus-)-2.633 F .279(pend, test, t\ -imes, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 -132 R .279(ait \255 bash b)-.1 F .279(uilt-in commands, see)-.2 F/F2 10 -/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S(SH B) -.329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063 -(Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\ -ted in this section as accepting options preceded by)-.2 F F2108 -184.8 Q F0(accepts)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 .078(do not treat)108 196.8 R F22.577 E F0(specially)2.577 E -5.077(.T)-.65 G(he)-5.077 E F2(exit)2.577 E F0(,)A F2(logout)2.577 E F0 -(,)A F2(br)2.577 E(eak)-.18 E F0(,)A F2(continue)2.577 E F0(,)A F2(let) -2.577 E F0 2.577(,a)C(nd)-2.577 E F2(shift)2.577 E F0 -.2(bu)2.577 G -.077(iltins accept and process ar).2 F(gu-)-.18 E .319(ments be)108 -208.8 R .319(ginning with)-.15 F F22.819 E F0 .319 -(without requiring)2.819 F F22.819 E F0 5.319(.O)C .319(ther b) --5.319 F .319(uiltins that accept ar)-.2 F .32(guments b)-.18 F .32 -(ut are not speci\214ed as)-.2 F 1.144(accepting options interpret ar) -108 220.8 R 1.144(guments be)-.18 F 1.144(ginning with)-.15 F F2 -3.643 E F0 1.143(as in)3.643 F -.25(va)-.4 G 1.143 -(lid options and require).25 F F23.643 E F0 1.143(to pre)3.643 F --.15(ve)-.25 G 1.143(nt this).15 F(interpretation.)108 232.8 Q 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. A)144 274.8 R(zero e)2.5 E(xit code is returned.)-.15 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 -E F0 .981(option to the)3.481 F F2(shopt)3.481 E F0 -.2(bu)3.481 G .981 -(iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144 -375.6 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F -(y)-.15 E F3(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F -2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F3 -(\214lename)144 387.6 Q F0 .342(is e)2.842 F -.15(xe)-.15 G 2.842 -(cuted. Otherwise).15 F .342(the positional parameters are unchanged.) -2.842 F .341(The return status is the)5.341 F .716 -(status of the last command e)144 399.6 R .716 -(xited within the script \(0 if no commands are e)-.15 F -.15(xe)-.15 G -.716(cuted\), and f).15 F .716(alse if)-.1 F F3(\214lename)145.91 411.6 -Q F0(is not found or cannot be read.)2.68 E F2(alias)108 428.4 Q F0([) -2.5 E F2A F0 2.5(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].) -C(..])-2.5 E F2(Alias)144 440.4 Q F0 2.725(with no ar)5.225 F 2.724 -(guments or with the)-.18 F F25.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F2(alias)5.224 E -F3(name)144 452.4 Q F0(=)A F3(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 F3(name) -3.08 E F0(whose)144 464.4 Q F3(value)2.895 E F0 .395(is gi)2.895 F -.15 -(ve)-.25 G 2.895(n. A).15 F .395(trailing space in)2.895 F F3(value) -5.395 E F0 .395(causes the ne)2.895 F .395(xt w)-.15 F .395 -(ord to be check)-.1 F .395(ed for alias sub-)-.1 F .054 -(stitution when the alias is e)144 476.4 R 2.554(xpanded. F)-.15 F .054 -(or each)-.15 F F3(name)2.554 E F0 .054(in the ar)2.554 F .054 -(gument list for which no)-.18 F F3(value)2.554 E F0 .054(is sup-)2.554 -F 1.314(plied, the name and v)144 488.4 R 1.314 -(alue of the alias is printed.)-.25 F F2(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F3(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 500.4 Q F2(bg)108 517.2 Q F0([) -2.5 E F3(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144 -529.2 R F3(jobspec)3.244 E F0 .745 -(in the background, as if it had been started with)3.244 F F2(&)3.245 E -F0 5.745(.I)C(f)-5.745 E F3(job-)4.985 E(spec)144 541.2 Q F0 .672 -(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the) --3.172 F F3(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F2 -(bg)5.671 E F3(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418 -(when job control is disabled or)144 553.2 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 F3(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G -(ot)-2.919 E(found or w)144 565.2 Q(as started without job control.)-.1 -E F2(bind)108 582 Q F0([)2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F2(\255lpsvPSVX)-2.5 E F0(])A F2(bind)108 594 Q F0([)2.5 E F2 -A F3 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F2-2.5 E F3 -(function)2.5 E F0 2.5(][)C F2-2.5 E F3(function)2.5 E F0 2.5(][)C -F2-2.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(])A F2(bind)108 606 Q F0([) -2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0(])A F22.5 E F3 -(\214lename)2.5 E F2(bind)108 618 Q F0([)2.5 E F2A F3 -.1(ke)2.5 G -(ymap)-.2 E F0(])A F22.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -(shell\255command)A F2(bind)108 630 Q F0([)2.5 E F2A F3 -.1(ke)2.5 -G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -(function\255name)A F2(bind)108 642 Q F3 -.37(re)2.5 G -(adline\255command).37 E F0 .239(Display current)144 654 R F2 -.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 F2 -.18(re)2.738 G(adline).18 E F0 .238(function or) -2.738 F .475(macro, or set a)144 666 R F2 -.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 F3 -(.inputr)144 678 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 690 R(if supplied, ha)2.5 E -.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2144 702 -Q F3 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 714 Q F3 -.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 F3 -.1(ke) -180 726 S(ymap)-.2 E F0 3.193(names are)5.883 F F3 3.193 -(emacs, emacs\255standar)5.693 F 3.192 -(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -F0(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Italic@0 SF(vi\255command)180 84 Q F0 4.429(,a)C(nd)-4.429 E F1 -(vi\255insert)4.429 E F0(.).68 E F1(vi)6.929 E F0 1.929(is equi)4.429 F --.25(va)-.25 G 1.929(lent to).25 F F1(vi\255command)4.429 E F0(;)A F1 -(emacs)4.429 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.93(lent to).25 -F F1(emacs\255standar)180 96 Q(d)-.37 E F0(.)A/F2 10/Times-Bold@0 SF -144 108 Q F0(List the names of all)27.52 E F2 -.18(re)2.5 G -(adline).18 E F0(functions.)2.5 E F2144 120 Q F0(Display)24.74 E -F2 -.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 F2144 132 Q F0(List current)24.19 E -F2 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F2 -144 144 Q F0(Display)26.41 E F2 -.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 156 S 2.5(yt).1 G(hat the)-2.5 -E 2.5(yc)-.15 G(an be re-read.)-2.5 E F2144 168 Q F0(Display)24.74 -E F2 -.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 F2144 180 Q F0(Display)25.3 E F2 -.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 F2144 192 Q F0(List current)23.08 E F2 -.18 -(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E(alues.) --.25 E F2144 204 Q F1(\214lename)2.5 E F0(Read k)180 216 Q .3 -.15 -(ey b)-.1 H(indings from).15 E F1(\214lename)2.5 E F0(.)A F2144 -228 Q F1(function)2.5 E F0(Query about which k)180 240 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 F1 -(function)2.5 E F0(.)A F2144 252 Q F1(function)2.5 E F0 -(Unbind all k)180 264 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) --2.5 E F1(function)2.5 E F0(.)A F2144 276 Q F1 -.1(ke)2.5 G(yseq) --.2 E F0(Remo)180 288 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H -(urrent binding for).15 E F1 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F2144 -300 Q F1 -.1(ke)2.5 G(yseq)-.2 E F2(:)A F1(shell\255command)A F0(Cause) -180 312 Q F1(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 F1 -.1(ke)4.325 G -(yseq)-.2 E F0 1.825(is entered.)4.325 F(When)6.825 E F1(shell\255com-) -4.325 E(mand)180 324 Q F0 1.765(is e)4.265 F -.15(xe)-.15 G 1.765 -(cuted, the shell sets the).15 F/F3 9/Times-Bold@0 SF(READLINE_LINE) -4.265 E F0 -.25(va)4.015 G 1.765(riable to the contents of the).25 F F2 --.18(re)180 336 S(adline).18 E F0 1.353(line b)3.852 F(uf)-.2 E 1.353 -(fer and the)-.25 F F3(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 -(riable to the current location of the).25 F 2.012(insertion point.)180 -348 R 2.011(If the e)7.012 F -.15(xe)-.15 G 2.011 -(cuted command changes the v).15 F 2.011(alue of)-.25 F F3 -(READLINE_LINE)4.511 E F0(or)4.261 E F3(READLINE_POINT)180 360 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 F2144 372 -Q F0 .829(List all k)23.08 F 1.129 -.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 384 Q(The return v) -144 400.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 F2(br)108 417.6 Q(eak)-.18 E F0([)2.5 E F1(n)A F0(])A .055 -(Exit from within a)144 429.6 R F2 -.25(fo)2.555 G(r).25 E F0(,)A F2 -(while)2.555 E F0(,)A F2(until)2.555 E F0 2.555(,o)C(r)-2.555 E F2 -(select)2.555 E F0 2.555(loop. If)2.555 F F1(n)2.555 E F0 .055 -(is speci\214ed, break)2.555 F F1(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G -(ls.).15 E F1(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF2.554 -E F0(1.)2.554 E(If)144 441.6 Q F1(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 -453.6 Q F1(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F2 -.2 -(bu)108 470.4 S(iltin).2 E F1(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E -F1(ar)A(guments)-.37 E F0(])A(Ex)144 482.4 Q .793 -(ecute the speci\214ed shell b)-.15 F .793(uiltin, passing it)-.2 F F1 -(ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 -F .792(xit status.)-.15 F .792(This is useful)5.792 F .615 -(when de\214ning a function whose name is the same as a shell b)144 -494.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144 -506.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F2(cd)3.07 E F0 --.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E -5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 518.4 Q(alse if)-.1 -E F1(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F2(caller)108 535.2 Q F0([)2.5 E F1 -.2(ex)C(pr) -.2 E F0(])A .253(Returns the conte)144 547.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 F2(.)2.754 E F0(or)2.754 E F2(sour)144 559.2 Q -(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F1 -.2 -(ex)2.825 G(pr).2 E F0(,)A F2(caller)2.825 E F0 .324 -(displays the line number and source \214lename of the current)2.824 F -.253(subroutine call.)144 571.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 F1 -.2(ex)2.753 G(pr).2 E F0(,)A F2(caller)2.753 E F0 .254 -(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\ -tine name, and source \214le corresponding to that position in the curr\ -ent e)144 583.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e) -144 595.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 607.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 F1 -.2(ex)3.019 G(pr).2 E F0 .519 -(does not corre-)3.019 F(spond to a v)144 619.2 Q -(alid position in the call stack.)-.25 E F2(cd)108 636 Q F0([)2.5 E F2 -A F0(|[)A F2A F0([)2.5 E F2A F0(]]] [)A F1(dir)A F0(]) -A .321(Change the current directory to)144 648 R F1(dir)2.821 E F0 5.321 -(.i)C(f)-5.321 E F1(dir)2.821 E F0 .322(is not supplied, the v)2.821 F -.322(alue of the)-.25 F F3(HOME)2.822 E F0 .322(shell v)2.572 F .322 -(ariable is)-.25 F 1.036(the def)144 660 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 F1(dir)3.535 E F0 1.035(are ignored.)3.535 F 1.035(The v)6.035 F -(ariable)-.25 E F3(CDP)3.535 E -.855(AT)-.666 G(H).855 E F0(de\214nes) -3.285 E .849(the search path for the directory containing)144 672 R F1 -(dir)3.349 E F0 3.35(:e).73 G .85(ach directory name in)-3.35 F F3(CDP) -3.35 E -.855(AT)-.666 G(H).855 E F0 .85(is searched for)3.1 F F1(dir)144 -684 Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665 -(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 -.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664 -(ull directory name)-3.165 F(in)144 696 Q F3(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 -(,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F2(.)A F0 -.74('')C 6.662(.I) -.74 G(f)-6.662 E F1(dir)4.513 E F0(be)4.893 E 1.663 -(gins with a slash \(/\), then)-.15 F F3(CDP)144 708 Q -.855(AT)-.666 G -(H).855 E F0 .347(is not used. The)2.598 F F22.847 E F0 .347 -(option causes)2.847 F F2(cd)2.847 E F0 .347(to use the ph)2.847 F .347 -(ysical directory structure by resolving)-.05 F 1.12 -(symbolic links while tra)144 720 R -.15(ve)-.2 G(rsing).15 E F1(dir) -3.62 E F0 1.12(and before processing instances of)3.62 F F1(..)3.62 E F0 -(in)3.62 E F1(dir)3.62 E F0 1.12(\(see also the)3.62 F F23.62 E F0 -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(2)203.725 E 0 Cg EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .395 -(option to the)144 84 R/F1 10/Times-Bold@0 SF(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 96 R/F2 10 -/Times-Italic@0 SF(..)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.944(sp)-2.943 G .444(rocessed by remo) --2.944 F(ving)-.15 E .744(the immediately pre)144 108 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.465(If the)144 120 R F13.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 .013 -(determined after a successful directory change,)144 132 R F1(cd)2.512 E -F0 .012(will return an unsuccessful status.)2.512 F .012(An ar)5.012 F -(gument)-.18 E(of)144 144 Q F12.671 E F0 .171(is con)2.671 F -.15 -(ve)-.4 G .171(rted to).15 F/F3 9/Times-Bold@0 SF($OLDPWD)2.671 E F0 -.171(before the directory change is attempted.)2.421 F .172 -(If a non-empty directory)5.172 F .744(name from)144 156 R F3(CDP)3.244 -E -.855(AT)-.666 G(H).855 E F0 .744(is used, or if)2.994 F F13.244 E -F0 .744(is the \214rst ar)3.244 F .743 -(gument, and the directory change is successful,)-.18 F .594 -(the absolute pathname of the ne)144 168 R 3.094(ww)-.25 G .594 -(orking directory is written to the standard output.)-3.194 F .594 -(The return)5.594 F -.25(va)144 180 S(lue is true if the directory w).25 -E(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108 -196.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F2(command)2.5 E F0([)2.5 E F2 -(ar)A(g)-.37 E F0(...])2.5 E(Run)144 208.8 Q F2(command)2.957 E F0(with) -3.527 E F2(ar)3.087 E(gs)-.37 E F0 .257 -(suppressing the normal shell function lookup. Only b)3.027 F .257 -(uiltin commands or)-.2 F .501(commands found in the)144 220.8 R F3 --.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G 3.002 -(cuted. If).15 F(the)3.002 E F13.002 E F0 .502(option is gi)3.002 -F -.15(ve)-.25 G .502(n, the search for).15 F F2(command)3.202 E F0(is) -3.772 E .4(performed using a def)144 232.8 R .4(ault v)-.1 F .4 -(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 -(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.399 E .174(either the)144 244.8 R F12.674 E F0(or)2.674 E F1 -2.674 E F0 .175(option is supplied, a description of)2.674 F F2 -(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F12.675 E -F0 .175(option causes)2.675 F 3.318(as)144 256.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 F2(command)3.617 E F0 .817(to be displayed; the)4.087 -F F1144 268.8 Q F0 .249(option produces a more v)2.749 F .249 -(erbose description.)-.15 F .249(If the)5.249 F F12.749 E F0(or) -2.749 E F12.75 E F0 .25(option is supplied, the e)2.75 F .25 -(xit status)-.15 F 1.005(is 0 if)144 280.8 R F2(command)3.705 E F0 -.1 -(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 -(If neither option is supplied and an error occurred or)6.005 F F2 -(command)144.2 292.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 F1(command)4.099 E F0 -.2(bu)144 304.8 S -(iltin is the e).2 E(xit status of)-.15 E F2(command)2.5 E F0(.).77 E F1 -(compgen)108 321.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d) --.37 E F0(])A .013(Generate possible completion matches for)144 333.6 R -F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513 -E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 -(accepted by the)144 345.6 R F1(complete)3.481 E F0 -.2(bu)3.481 G .981 -(iltin with the e).2 F .981(xception of)-.15 F F13.481 E F0(and) -3.481 E F13.481 E F0 3.481(,a)C .982(nd write the matches to the) --3.481 F 1.415(standard output.)144 357.6 R 1.415(When using the)6.415 F -F13.915 E F0(or)3.915 E F13.915 E F0 1.415(options, the v) -3.915 F 1.415(arious shell v)-.25 F 1.415(ariables set by the pro-)-.25 -F(grammable completion f)144 369.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 393.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 -405.6 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) -2.52 F(those completions matching)144 417.6 Q F2(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 441.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 458.4 Q F0([)3.728 E F1(\255abcdefgjksuv)A F0 3.728(][)C -F1-3.728 E F2(comp-option)3.728 E F0 3.728(][)C F1(\255DE)-3.728 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.729(][)C F1-3.729 E F2(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F1-3.729 E F2(func-)3.729 E(tion)108 -470.4 Q F0 2.5(][)C F1-2.5 E F2(command)2.5 E F0(])A([)144 482.4 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 -494.4 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 506.4 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633 -(uments to each).18 F F2(name)3.133 E F0 .633(should be completed.)3.133 -F .634(If the)5.634 F F13.134 E F0 .634 -(option is supplied, or if no)3.134 F .14(options are supplied, e)144 -518.4 R .139(xisting completion speci\214cations are printed in a w)-.15 -F .139(ay that allo)-.1 F .139(ws them to be)-.25 F .31 -(reused as input.)144 530.4 R(The)5.31 E F12.81 E F0 .31 -(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 -(ompletion speci\214cation for each)-2.81 F F2(name)2.81 E F0 2.81(,o)C -1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2(name)2.81 E F0(s)A 1.347 -(are supplied, all completion speci\214cations.)144 542.4 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 554.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 -566.4 S .955(ommand for which no completion has pre)-3.455 F .955 -(viously been de\214ned.)-.25 F(The)5.955 E F13.455 E F0 .955 -(option indicates that)3.455 F .064 -(the remaining options and actions should apply to `)144 578.4 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 590.4 Q 1.438 -(The process of applying these completion speci\214cations when w)144 -614.4 R 1.437(ord completion is attempted is)-.1 F(described abo)144 -626.4 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 650.4 R .855 -.15(ve t)-.2 H .555 -(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 -(guments to the)-.18 F F13.056 E F0(,)A F13.056 E F0 3.056 -(,a)C(nd)-3.056 E F13.056 E F0 .723(options \(and, if necessary) -144 662.4 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 674.4 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 686.4 Q -F2(comp-option)2.5 E F0(The)184 698.4 Q F2(comp-option)2.79 E F0 .291 -(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') -.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 -(yond the simple)-.15 F(generation of completions.)184 710.4 Q F2 -(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(3)203.725 E 0 Cg EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(bashdefault)184 84 Q F0 .281 -(Perform the rest of the def)224 96 R(ault)-.1 E F1(bash)2.781 E F0 .281 -(completions if the compspec generates no)2.781 F(matches.)224 108 Q F1 -(default)184 120 Q F0 2.875(Use readline')10 F 5.375(sd)-.55 G(ef)-5.375 -E 2.876(ault \214lename completion if the compspec generates no)-.1 F -(matches.)224 132 Q F1(dir)184 144 Q(names)-.15 E F0(Perform directory \ -name completion if the compspec generates no matches.)224 156 Q F1 -(\214lenames)184 168 Q F0 -.7(Te)224 180 S .137(ll readline that the co\ -mpspec generates \214lenames, so it can perform an).7 F 2.636<798c>-.15 -G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 192 R 2.634 -(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F -.45(cial characters, or suppressing trailing spaces\).)224 204 R .45 -(Intended to be used with shell)5.45 F(functions.)224 216 Q F1(noquote) -184 228 Q F0 -.7(Te)5.55 G .814 -(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F -3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 240 Q(ault\).)-.1 E F1(nospace)184 252 Q F0 --.7(Te)6.11 G .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 -264 Q F1(plusdirs)184 276 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G -1.985(atches de\214ned by the compspec are generated, directory name) --4.485 F .584(completion is attempted and an)224 288 R 3.084(ym)-.15 G -.584(atches are added to the results of the other)-3.084 F(actions.)224 -300 Q F1144 312 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 -324 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 -336 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(arrayv)184 348 Q(ar)-.1 E F0(Array v)224 360 Q -(ariable names.)-.25 E F1 4.7(binding Readline)184 372 R F0 -.1(ke)2.5 G -2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 384 S(iltin).2 E F0 -(Names of shell b)11.85 E(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 396 -Q F0(Command names.)224 408 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 420 Q(ectory)-.18 E F0(Directory names.)224 432 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 444 -Q F0(Names of disabled shell b)224 456 Q(uiltins.)-.2 E F1(enabled)184 -468 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 -480 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May) --.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -492 Q F0(File names.)27.22 E(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(function)184 504 Q F0(Names of shell functions.)224 516 Q F1 -(gr)184 528 Q(oup)-.18 E F0(Group names.)14.62 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -540 Q F0(Help topics as accepted by the)224 552 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 564 Q F0(Hostnames, as tak)224 576 -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 588 Q F0 -(Job names, if job control is acti)26.11 E -.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 600 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 612 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 -624 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve) --.25 G(.).15 E F1(ser)184 636 Q(vice)-.1 E F0(Service names.)10.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 648 Q -F0 -1.11(Va)14.45 G(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 660 Q F0(Shell option names as accepted by the)16.66 E F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 672 Q F0 -(Signal names.)14.99 E F1(stopped)184 684 Q F0 -(Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.) -.15 E F1(user)184 696 Q F0(User names.)21.67 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 708 S -(riable).1 E F0(Names of all shell v)5.1 E 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF144 84 Q/F2 10/Times-Italic@0 SF(command)2.5 E -(command)184 96 Q F0 1.055(is e)3.555 F -.15(xe)-.15 G 1.055 -(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 108 Q F1144 120 Q F2(function)2.5 E F0 .114 -(The shell function)184 132 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 144 R --.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1 -($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817 -(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 156 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 168 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 180 R -.102(When it \214nishes, the possible completions are retrie)5.102 F --.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the) --.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 192 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 204 Q F2(globpat)2.5 E F0 1.007 -(The pathname e)184 216 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 228 Q F1144 240 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 252 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534 -(ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 264 Q F1144 276 Q F2(suf)2.5 E -2.81(\214x suf)-.18 F<8c78>-.18 E F0 -(is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 288 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 300 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 312 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 -(resultant list which match the w)184 324 Q(ord being completed.)-.1 E -F1144 336 Q F2(\214lterpat)2.5 E(\214lterpat)184 348 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 360 R 1.596 -(guments, and each completion)-.18 F(matching)184 372 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 384 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 400.8 R .467 -(alue is true unless an in)-.25 F -.25(va)-.4 G .466 -(lid option is supplied, an option other than).25 F F12.966 E F0 -(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 1.361 -(plied without a)144 412.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 424.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 441.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 453.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 465.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 477.6 Q F2(name) -3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v) -5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 489.6 Q F0 -.2(bu) -2.797 G .297(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.228(the `)144 501.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\ -mmand completion; that is, completion attempted on a command for which \ -no)-3.728 F 2.177(completion has pre)144 513.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 525.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 549.6 R 1.388(alue is true unless an in)-.25 F --.25(va)-.4 G 1.387 -(lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 561.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 578.4 Q F0([) -2.5 E F2(n)A F0(])A 1.753(Resume the ne)144 590.4 R 1.753 -(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 602.4 R F2(n)3.709 E F0 -1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10 -/Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 -(is greater than the number of enclosing)3.949 F .513 -(loops, the last enclosing loop \(the `)144 614.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 626.4 Q F1(declar)108 643.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 655.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 667.2 R 1.265(ariables and/or gi)-.25 F -1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no) -3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 -G 3.764(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F --.25(va)144 679.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 691.2 Q F2(name)3.58 E F0 -(ar)3.58 E 1.079(guments, additional options are ignored.)-.18 F(When) -6.079 E F13.579 E F0 1.079(is supplied without)3.579 F F2(name) -3.579 E F0(ar)3.579 E(gu-)-.18 E .15(ments, it will display the attrib) -144 703.2 R .15(utes and v)-.2 F .151(alues of all v)-.25 F .151 -(ariables ha)-.25 F .151(ving the attrib)-.2 F .151 -(utes speci\214ed by the)-.2 F .047(additional options.)144 715.2 R .047 -(If no other options are supplied with)5.047 F F12.547 E F0(,)A F1 -(declar)2.547 E(e)-.18 E F0 .046(will display the attrib)2.546 F .046 -(utes and)-.2 F -.25(va)144 727.2 S 1.362(lues of all shell v).25 F -3.862(ariables. The)-.25 F F13.862 E F0 1.363 -(option will restrict the display to shell functions.)3.862 F(The)6.363 -E F13.863 E F0(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 2.422(optio\ -n inhibits the display of function de\214nitions; only the function nam\ -e and attrib)144 84 R 2.422(utes are)-.2 F 2.663(printed. If)144 96 R -(the)2.663 E/F1 10/Times-Bold@0 SF(extdeb)2.663 E(ug)-.2 E F0 .164 -(shell option is enabled using)2.663 F F1(shopt)2.664 E F0 2.664(,t)C -.164(he source \214le name and line number)-2.664 F 1.288 -(where the function is de\214ned are displayed as well.)144 108 R(The) -6.288 E F13.788 E F0 1.288(option implies)3.788 F F13.788 E -F0 6.288(.T)C(he)-6.288 E F13.788 E F0(option)3.788 E .49 -(forces v)144 120 R .49 -(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G 2.991(nw).15 G(hen)-2.991 E F1(declar)2.991 E(e)-.18 E F0 -.491(is e)2.991 F -.15(xe)-.15 G .491(cuted in a).15 F .125 -(shell function.)144 132 R .125(It is ignored in all other cases.)5.125 -F .125(The follo)5.125 F .124 -(wing options can be used to restrict output)-.25 F(to v)144 144 Q -(ariables with the speci\214ed attrib)-.25 E(ute or to gi)-.2 E .3 -.15 -(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1144 156 Q F0 -(Each)25.3 E/F2 10/Times-Italic@0 SF(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)23.08 -E 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)26.97 E(.)-.65 E F1 -144 192 Q F0 .557(The v)27.52 F .558 -(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 -(va)-.25 G .558(luation \(see).25 F/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)27.52 F .909(ariable is assigned a v)-.25 F .909 -(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 228 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 240 Q -F0(Gi)24.74 E 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.033(That other v)180 252 R 1.033(ariable is de\214ned by the v)-.25 F -1.033(alue of)-.25 F F2(name)3.533 E F0 6.033(.A)C 1.033 -(ll references and assignments to)-6.033 F F2(name)180 264 Q F0 4.032 -(,e)C 1.532(xcept for changing the)-4.182 F F14.032 E F0(attrib) -4.032 E 1.532(ute itself, are performed on the v)-.2 F 1.533 -(ariable refer)-.25 F(-)-.2 E(enced by)180 276 Q F2(name)2.5 E F0 1.1 --.55('s v)D 2.5(alue. The).3 F F12.5 E F0(attrib)2.5 E -(ute cannot be applied to array v)-.2 E(ariables.)-.25 E F1144 288 -Q F0(Mak)25.86 E(e)-.1 E F2(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 300 -Q F1144 312 Q F0(Gi)26.97 E .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 324 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 336 -Q F0 .91(When the v)24.74 F .909(ariable is assigned a v)-.25 F .909 -(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15 -(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 348 R(lo) -2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 -360 Q F0(Mark)25.3 E 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 376.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 388.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 400.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 .134 -(is supplied.)144 412.8 R .134(If a v)5.134 F .134 -(ariable name is follo)-.25 F .134(wed by =)-.25 F F2(value)A F0 2.634 -(,t)C .134(he v)-2.634 F .134(alue of the v)-.25 F .133 -(ariable is set to)-.25 F F2(value)2.633 E F0 5.133(.T)C(he)-5.133 E .8 -(return v)144 424.8 R .8(alue is 0 unless an in)-.25 F -.25(va)-.4 G -.801 -(lid option is encountered, an attempt is made to de\214ne a function) -.25 F(using)144 436.8 Q/F4 10/Courier@0 SF 1.039(\255f foo=bar)3.539 F -F0 3.539(,a)C 3.539(na)-3.539 G 1.038(ttempt is made to assign a v) --3.539 F 1.038(alue to a readonly v)-.25 F 1.038(ariable, an attempt is) --.25 F .974(made to assign a v)144 448.8 R .974(alue to an array v)-.25 -F .974(ariable without using the compound assignment syntax \(see)-.25 F -F1(Arrays)144 460.8 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the) -.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F -.36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .056 -(readonly status for a readonly v)144 472.8 R .057 -(ariable, an attempt is made to turn of)-.25 F 2.557(fa)-.25 G .057 -(rray status for an array v)-2.557 F(ari-)-.25 E -(able, or an attempt is made to display a non-e)144 484.8 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 501.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 513.6 S .329 -(thout options, displays the list of currently remembered directories.) -.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 525.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 537.6 Q -F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G -2.5(se).15 G(ntries from the list.)-2.5 E F1144 549.6 Q F0 -(Clears the directory stack by deleting all of the entries.)25.86 E F1 -144 561.6 Q F0 .882 -(Produces a listing using full pathnames; the def)27.52 F .881 -(ault listing format uses a tilde to denote)-.1 F(the home directory)180 -573.6 Q(.)-.65 E F1144 585.6 Q F0 -(Print the directory stack with one entry per line.)24.74 E F1144 -597.6 Q F0 .272(Print the directory stack with one entry per line, pre\ -\214xing each entry with its inde)25.3 F 2.773(xi)-.15 G 2.773(nt)-2.773 -G(he)-2.773 E(stack.)180 609.6 Q F1(+)144 621.6 Q F2(n)A F0 1.565 -(Displays the)25.3 F 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 633.6 Q F1144 645.6 Q F2 -(n)A F0 1.194(Displays the)25.3 F 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 657.6 Q .258(The return v)144 -674.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 686.4 Q F1(diso)108 703.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 -.4(Wi)144 715.2 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(neither)144 -727.2 Q F13.837 E F0(nor)3.837 E F13.837 E F0 1.337 -(is supplied, the shell')3.837 F 3.836(sn)-.55 G 1.336(otion of the) --3.836 F F2(curr)3.836 E 1.336(ent job)-.37 F F0 1.336(is used.)3.836 F -1.336(If the)6.336 F F13.836 E F0 1.336(option is)3.836 F -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(gi)144 84 Q --.15(ve)-.25 G .14(n, each).15 F/F1 10/Times-Italic@0 SF(jobspec)4.38 E -F0 .14(is not remo)2.95 F -.15(ve)-.15 G 2.641(df).15 G .141 -(rom the table, b)-2.641 F .141(ut is mark)-.2 F .141(ed so that)-.1 F -/F2 9/Times-Bold@0 SF(SIGHUP)2.641 E F0 .141(is not sent to the)2.391 F -.005(job if the shell recei)144 96 R -.15(ve)-.25 G 2.504(sa).15 G F2 -(SIGHUP)A/F3 9/Times-Roman@0 SF(.)A F0 .004(If no)4.504 F F1(jobspec) -4.244 E F0 .004(is present, and neither the)2.814 F/F4 10/Times-Bold@0 -SF2.504 E F0 .004(nor the)2.504 F F42.504 E F0 .004 -(option is)2.504 F 1.228(supplied, the)144 108 R F1(curr)3.728 E 1.228 -(ent job)-.37 F F0 1.229(is used.)3.729 F 1.229(If no)6.229 F F1 -(jobspec)5.469 E F0 1.229(is supplied, the)4.039 F F43.729 E F0 -1.229(option means to remo)3.729 F 1.529 -.15(ve o)-.15 H(r).15 E .657 -(mark all jobs; the)144 120 R F43.157 E F0 .657(option without a) -3.157 F F1(jobspec)4.897 E F0(ar)3.467 E .656 -(gument restricts operation to running jobs.)-.18 F(The)5.656 E -(return v)144 132 Q(alue is 0 unless a)-.25 E F1(jobspec)4.24 E F0 -(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F4(echo)108 148.8 Q -F0([)2.5 E F4(\255neE)A F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.424(Output the)144 160.8 R F1(ar)2.924 E(g)-.37 E F0 .424 -(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 -(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308 -(error occurs.)144 172.8 R(If)5.308 E F42.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 F42.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 -184.8 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) -6.348 E F43.849 E F0 1.349(option disables the)3.849 F 1.055 -(interpretation of these escape characters, e)144 196.8 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 -208.8 Q F4(xpg_echo)3.458 E F0 .959 -(shell option may be used to dynamically determine whether or not)3.458 -F F4(echo)3.459 E F0 -.15(ex)3.459 G(pands).15 E .716 -(these escape characters by def)144 220.8 R(ault.)-.1 E F4(echo)5.716 E -F0 .716(does not interpret)3.216 F F43.216 E F0 .715 -(to mean the end of options.)3.216 F F4(echo)5.715 E F0 -(interprets the follo)144 232.8 Q(wing escape sequences:)-.25 E F4(\\a) -144 244.8 Q F0(alert \(bell\))28.22 E F4(\\b)144 256.8 Q F0(backspace) -27.66 E F4(\\c)144 268.8 Q F0(suppress further output)28.78 E F4(\\e)144 -280.8 Q(\\E)144 292.8 Q F0(an escape character)26.55 E F4(\\f)144 304.8 -Q F0(form feed)29.89 E F4(\\n)144 316.8 Q F0(ne)27.66 E 2.5(wl)-.25 G -(ine)-2.5 E F4(\\r)144 328.8 Q F0(carriage return)28.78 E F4(\\t)144 -340.8 Q F0(horizontal tab)29.89 E F4(\\v)144 352.8 Q F0 -.15(ve)28.22 G -(rtical tab).15 E F4(\\\\)144 364.8 Q F0(backslash)30.44 E F4(\\0)144 -376.8 Q F1(nnn)A F0(the eight-bit character whose v)13.22 E -(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0 -(\(zero to three octal digits\))2.5 E F4(\\x)144 388.8 Q F1(HH)A F0 -(the eight-bit character whose v)13.78 E(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 F4(\\u)144 400.8 Q F1(HHHH)A F0 -1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 412.8 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 424.8 Q 2.5(xd)-.15 G(igits\))-2.5 E F4 -(\\U)144 436.8 Q F1(HHHHHHHH)A F0 .548 -(the Unicode \(ISO/IEC 10646\) character whose v)180 448.8 R .547 -(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) -3.047 E(HHH)180 460.8 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F4(enable)108 477.6 Q F0([)2.5 E F4A F0 2.5(][)C -F4(\255dnps)-2.5 E F0 2.5(][)C F4-2.5 E F1(\214lename)2.5 E F0 2.5 -(][)C F1(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 489.6 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 501.6 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 513.6 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F43.489 E F0 .99 -(is used, each)3.49 F F1(name)3.49 E F0 .99(is dis-)3.49 F 1.582 -(abled; otherwise,)144 525.6 R F1(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 -F4(test)4.082 E F0 1.582(binary found via the)4.082 F F2 -.666(PA)4.081 -G(TH)-.189 E F0 .08(instead of the shell b)144 537.6 R .08(uiltin v)-.2 -F .08(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test)2.58 F -F0 5.081(.T)C(he)-5.081 E F42.581 E F0 .081 -(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 549.6 S 1.525 -(iltin command).2 F F1(name)4.385 E F0 1.524(from shared object)4.204 F -F1(\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 561.6 Q F4 -2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F -.366(viously loaded with)-.25 F F42.867 E F0 5.367(.I)C 2.867(fn) --5.367 G(o)-2.867 E F1(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 573.6 R F4 -2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399 -(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 -F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144 -585.6 R 2.598(uiltins. If)-.2 F F42.598 E F0 .098 -(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F -(If)5.099 E F42.599 E F0 1.917 -(is supplied, the list printed includes all b)144 597.6 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.878 -(enabled. If)144 609.6 R F42.878 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.878 F F1(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 621.6 R F1(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 -633.6 Q F4 -2.3 -.15(ev a)108 650.4 T(l).15 E F0([)2.5 E F1(ar)A(g)-.37 -E F0(...])2.5 E(The)144 662.4 Q F1(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 674.4 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 F4 -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 F1(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 686.4 Q -(guments,)-.18 E F4 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F4 -(exec)108 703.2 Q F0([)2.5 E F4(\255cl)A F0 2.5(][)C F4-2.5 E F1 -(name)2.5 E F0 2.5(][)C F1(command)-2.5 E F0([)2.5 E F1(ar)A(guments) --.37 E F0(]])A(If)144 715.2 Q F1(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 F1(ar)3.136 E -(guments)-.37 E F0(become)3.076 E .177(the ar)144 727.2 R .177 -(guments to)-.18 F F1(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G -(he)-2.676 E F42.676 E F0 .176 -(option is supplied, the shell places a dash at the be)2.676 F .176 -(ginning of)-.15 F(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(7)203.725 -E 0 Cg EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .499 -(the zeroth ar)144 84 R .499(gument passed to)-.18 F/F1 10 -/Times-Italic@0 SF(command)2.999 E F0 5.499(.T).77 G .499(his is what) --5.499 F F1(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.5 E/F2 -10/Times-Bold@0 SF3 E F0 .5(option causes)3 F F1(com-)3.2 E(mand) -144 96 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 F23.138 E -F0 .638(is supplied, the shell passes)3.138 F F1(name)3.498 E F0 .638 -(as the)3.318 F 1.077(zeroth ar)144 108 R 1.077(gument to the e)-.18 F --.15(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F1(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 120 Q .877 -.15(ve s) --.25 H .577(hell e).15 F .577(xits, unless the)-.15 F F2(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 132 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 F1(command)2.705 E F0 .005(is not speci\214ed,)3.275 F(an)144 144 -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 156 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F2(exit)108 172.8 Q F0([)2.5 E F1(n)A F0 -6.29(]C)C .095(ause the shell to e)-6.29 F .095(xit with a status of) --.15 F F1(n)2.595 E F0 5.095(.I)C(f)-5.095 E F1(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 184.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 F2(export)108 201.6 Q F0([)2.5 -E F2(\255fn)A F0 2.5(][).833 G F1(name)-2.5 E F0([=)A F1(wor)A(d)-.37 E -F0(]] ...)A F2(export \255p)108 213.6 Q F0 .257(The supplied)144 225.6 R -F1(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 237.6 R(the)2.626 E F2 -2.626 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) -.15 F F1(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F1(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .127 -(n, or if the).15 F F2144 249.6 Q F0 .048 -(option is supplied, a list of names of all e)2.548 F .048(xported v) --.15 F .048(ariables is printed.)-.25 F(The)5.048 E F22.547 E F0 -.047(option causes the)2.547 F -.15(ex)144 261.6 S 1.446 -(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 -(rom each)-3.947 F F1(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 F1(wor)A(d) --.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 273.6 S .742(lue of the v) -.25 F .742(ariable is set to)-.25 F F1(wor)3.242 E(d)-.37 E F0(.)A F2 -(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 285.6 R F1(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 F22.532 E F0 .032(is supplied with a)2.532 F F1(name)2.892 E F0 -(that)2.712 E(is not a function.)144 297.6 Q F2(fc)108 314.4 Q F0([)2.5 -E F2A F1(ename)2.5 E F0 2.5(][)C F2(\255lnr)-2.5 E F0 2.5(][)C F1 -<8c72>-2.5 E(st)-.1 E F0 2.5(][)C F1(last)-2.5 E F0(])A F2(fc \255s)108 -326.4 Q F0([)2.5 E F1(pat)A F0(=)A F1 -.37(re)C(p).37 E F0 2.5(][)C F1 -(cmd)-2.5 E F0(])A .432 -(The \214rst form selects a range of commands from)144 338.4 R F1<8c72> -4.842 E(st)-.1 E F0(to)3.612 E F1(last)3.022 E F0 .431 -(from the history list and displays or)3.612 F .141(edits and re-e)144 -350.4 R -.15(xe)-.15 G .141(cutes them.).15 F F1 -.45(Fi)5.141 G -.1(rs) -.45 G(t).1 E F0(and)3.321 E F1(last)2.731 E F0 .141 -(may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 362.4 Q .311(ginning with that string\) or as a number \(an inde) --.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F --.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .314 -(is used as an of)144 374.4 R .314 -(fset from the current command number\).)-.25 F(If)5.314 E F1(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 386.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 F1<8c72>5.358 E(st)-.1 E F0(other)4.128 E(-)-.2 E 2.5(wise. If) -144 398.4 R F1<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 422.4 -Q F22.522 E F0 .022 -(option suppresses the command numbers when listing.)2.522 F(The)5.022 E -F22.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 434.4 R .438(If the) -5.438 F F22.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 -(n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.334(the editor gi)144 446.4 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E -F1(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835 -(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.335 E F1(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G -(n,).15 E .631(the v)144 458.4 R .631(alue of the)-.25 F F3(FCEDIT)3.131 -E F0 -.25(va)2.881 G .631(riable is used, and the v).25 F .631(alue of) --.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.13 E F0 .63 -(is not set.)2.88 F .63(If nei-)5.63 F .95(ther v)144 470.4 R .95 -(ariable is set,)-.25 F F1(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 482.4 S(cuted.).15 E .789(In the second form,)144 506.4 R -F1(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 -(cuted after each instance of).15 F F1(pat)3.288 E F0 .788 -(is replaced by)3.288 F F1 -.37(re)3.288 G(p).37 E F0(.)A F1(Com-)5.788 -E(mand)144 518.4 Q F0 .346(is intepreted the same as)2.846 F F1<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 .347(r='fc \255s')2.847 F F0 -2.847(,s)C 2.847(ot)-2.847 G(hat)-2.847 E(typing)144 530.4 Q F4 7.166 -(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166 -(ginning with)-.15 F F4(cc)3.666 E F0 1.165(and typing)3.666 F F4(r) -3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F -(mand.)144 542.4 Q .142(If the \214rst form is used, the return v)144 -566.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 -(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F1(last)2.732 E F0 .455(specify history lines out of range.)144 578.4 -R .454(If the)5.454 F F22.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 590.4 R -.15(xe)-.15 G .787 -(cuted or f).15 F .788 -(ailure if an error occurs with the temporary \214le of commands.)-.1 F -.788(If the)5.788 F 1.136 -(second form is used, the return status is that of the command re-e)144 -602.4 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F1(cmd)3.835 E F0 1.135 -(does not)4.405 F(specify a v)144 614.4 Q -(alid history line, in which case)-.25 E F2(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F2(fg)108 631.2 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume) -144 643.2 Q F1(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0 -1.414(is not present, the)4.223 F(shell')144 655.2 Q 3.117(sn)-.55 G -.617(otion of the)-3.117 F F1(curr)3.117 E .617(ent job)-.37 F F0 .617 -(is used.)3.117 F .617(The return v)5.617 F .616 -(alue is that of the command placed into the)-.25 F(fore)144 667.2 Q -.362(ground, or f)-.15 F .362 -(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363 -(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 679.2 Q -F0 .004(does not specify a v)2.815 F .004(alid job or)-.25 F F1(jobspec) -4.244 E F0 .004(speci\214es a job that w)2.814 F .004 -(as started without job control.)-.1 F F2(getopts)108 696 Q F1 -(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F2(getopts)144 -708 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 720 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(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(ar)144 84 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 96 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E/F1 10 -/Times-Bold@0 SF(getopts)4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 -E .796(option in the shell v)144 108 R(ariable)-.25 E/F2 10 -/Times-Italic@0 SF(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 120 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 132 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.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 144 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 156 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 .294(et of parameters)-2.793 F(is to be used.)144 168 Q -2.044(When the end of options is encountered,)144 192 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 204 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 228 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 -240 Q F0(parses those instead.)2.5 E F1(getopts)144 264 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 276 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 288 -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 300 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 324 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 336 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1 -(getopts)2.899 E F0 .399 -(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 -348 Q 1.241(If a required ar)144 372 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 384 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 396 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 420 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 432 Q F1(hash)108 448.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 460.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 472.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 -.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .243(If the)144 484.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 496.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 508.8 R .833 -(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) -C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 520.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 -532.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 -544.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 556.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 568.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 585.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 -597.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 -609.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 621.6 Q F1 -144 633.6 Q F0(Display a short description of each)24.74 E F2 -(pattern)2.5 E F1144 645.6 Q F0(Display the description of each) -21.97 E F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat) --2.5 E F1144 657.6 Q F0 -(Display only a short usage synopsis for each)26.41 E F2(pattern)2.5 E -F0(The return status is 0 unless no command matches)144 674.4 Q F2 -(pattern)2.5 E F0(.).24 E F1(history [)108 691.2 Q F2(n)A F1(])A -(history \255c)108 703.2 Q F0(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 -E(9)203.725 E 0 Cg EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(history \255d)108 84 Q/F2 10/Times-Italic@0 SF(of)2.5 E -(fset)-.18 E F1(history \255anrw)108 96 Q F0([)2.5 E F2(\214lename)A F0 -(])A F1(history \255p)108 108 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 120 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 132 -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 144 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 156 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 168 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 180 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 192 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 204 Q F0 -(Clear the history list by deleting all the entries.)25.86 E F1144 -216 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position) -180 228 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1144 240 Q F0 .599 -(Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.099('h)-.74 G .598 -(istory lines \(history lines entered since the be)-3.099 F .598 -(ginning of the current)-.15 F F1(bash)180 252 Q F0 -(session\) to the history \214le.)2.5 E F1144 264 Q F0 .854(Read \ -the history lines not already read from the history \214le into the cur\ -rent history list.)24.74 F .773 -(These are lines appended to the history \214le since the be)180 276 R -.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E -(sion.)180 288 Q F1144 300 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)25.86 E F1144 -312 Q F0(Write the current history list to the history \214le, o)23.08 E --.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 324 Q F0 .625 -(Perform history substitution on the follo)24.74 F(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F -2.975(output. Does)180 336 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 348 Q(xpansion.)-.15 E F1144 360 Q F0 .362 -(Store the)26.41 F F2(ar)3.192 E(gs)-.37 E F0 .363 -(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 -(he last command in the history list is)-5.363 F(remo)180 372 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 388.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 .668(entry is written to the history \214le, mark)144 400.8 R .669 -(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 -(hen the history)-5.669 F .956(\214le is read, lines be)144 412.8 R .956 -(ginning with the history comment character follo)-.15 F .955 -(wed immediately by a digit)-.25 F .415 -(are interpreted as timestamps for the pre)144 424.8 R .416 -(vious history line.)-.25 F .416(The return v)5.416 F .416 -(alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ -ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 436.8 R -.25(va)-.4 G(lid).25 E F2(of)2.999 E(fset)-.18 E F0 -(is)2.999 E(supplied as an ar)144 448.8 Q(gument to)-.18 E F12.5 E -F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E -(xpansion supplied as an ar)-.15 E(gument to)-.18 E F12.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F1(jobs)108 465.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 -(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 477.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 489.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 501.6 Q F0 -(List process IDs in addition to the normal information.)27.52 E F1 -144 513.6 Q F0 .193(Display information only about jobs that ha) -24.74 F .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 F -.194(as last noti-)-.1 F(\214ed of their status.)180 525.6 Q F1144 -537.6 Q F0(List only the process ID of the job')24.74 E 2.5(sp)-.55 G -(rocess group leader)-2.5 E(.)-.55 E F1144 549.6 Q F0 -(Display only running jobs.)25.86 E F1144 561.6 Q F0 -(Display only stopped jobs.)26.41 E(If)144 578.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 590.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 607.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 619.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 636 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 648 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G -(it_status).2 E F0(])A .12(Send the signal named by)144 660 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 672 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 684 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 696 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 708 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 720 Q 1.984(gument to)-.18 F F1 -4.484 E F0 1.985 -(is a number specifying either a signal number or the e)4.484 F 1.985 -(xit status of a process)-.15 F(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .672 -(terminated by a signal.)144 84 R/F1 10/Times-Bold@0 SF(kill)5.672 E F0 -.672(returns true if at least one signal w)3.172 F .671 -(as successfully sent, or f)-.1 F .671(alse if an)-.1 F -(error occurs or an in)144 96 Q -.25(va)-.4 G -(lid option is encountered.).25 E F1(let)108 112.8 Q/F2 10 -/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0 -(...])2.5 E(Each)144 124.8 Q F2(ar)3.026 E(g)-.37 E F0 .196 -(is an arithmetic e)2.916 F .197(xpression to be e)-.15 F -.25(va)-.25 G -.197(luated \(see).25 F/F3 9/Times-Bold@0 SF .197(ARITHMETIC EV)2.697 F -(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)2.447 E -.15(ve)-.15 G -2.697(\). If).15 F(the last)144 136.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 153.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 -(..])-2.5 E -.15(Fo)144 165.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 177.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 -189.6 Q F2(name)3.721 E F0 .861(to ha)3.541 F 1.161 -.15(ve a v)-.2 H -.861(isible scope restricted to that function and its children.).15 F --.4(Wi)5.86 G .86(th no operands,).4 F F1(local)144 201.6 Q F0 1.164 -(writes a list of local v)3.664 F 1.165 -(ariables to the standard output.)-.25 F 1.165(It is an error to use) -6.165 F F1(local)3.665 E F0 1.165(when not)3.665 F .233 -(within a function.)144 213.6 R .233(The return status is 0 unless)5.233 -F F1(local)2.733 E F0 .233(is used outside a function, an in)2.733 F --.25(va)-.4 G(lid).25 E F2(name)3.092 E F0(is)2.912 E(supplied, or)144 -225.6 Q F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1 -(logout)108 242.4 Q F0(Exit a login shell.)9.33 E F1(map\214le)108 259.2 -Q F0([)2.5 E F1A 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 271.2 S -(adarray).18 E F0([)2.5 E F1A 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 283.2 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 295.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 307.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 319.2 Q F0(Cop)24.74 E 2.5(ya)-.1 G -2.5(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2 -(count)2.5 E F0(is 0, all lines are copied.)2.5 E F1144 331.2 Q F0 -(Be)22.52 E(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 343.2 Q F0 -(Discard the \214rst)26.41 E F2(count)2.5 E F0(lines read.)2.5 E F1 -144 355.2 Q F0(Remo)26.97 E .3 -.15(ve a t)-.15 H(railing ne).15 E -(wline from each line read.)-.25 E F1144 367.2 Q F0 -(Read lines from \214le descriptor)24.74 E F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 379.2 Q F0(Ev)23.08 E -(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 391.2 -Q F0(Specify the number of lines read between each call to)25.86 E F2 -(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 408 Q F12.967 E F0 .467 -(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 -(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 -(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 420 R 2.762(xo)-.15 G -2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\ -ned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 432 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 444 Q -(If not supplied with an e)144 460.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 477.6 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 489.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 506.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 518.4 Q -.15(ve)-.15 G 2.799 -(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G -.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 -G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 -530.4 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 -(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 -(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 -F(wing)-.25 E(meanings:)144 542.4 Q F1144 554.4 Q F0 .551 -(Suppresses the normal change of directory when remo)24.74 F .551 -(ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 566.4 Q F1(+)144 578.4 Q F2(n)A -F0(Remo)25.3 E -.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 -590.4 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 602.4 Q F2(n)A F0 -(Remo)25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 -1.259(th entry counting from the right of the list sho)B 1.26(wn by)-.25 -F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 -614.4 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0(remo)2.5 E -.15 -(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F4(popd -1)2.5 -E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 631.2 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 643.2 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 655.2 Q -(ails.)-.1 E F1(printf)108 672 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 684 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 696 R(ariable)-.25 -E F2(var)2.626 E F0 .126(rather than being printed to the standard)2.626 -F(output.)144 708 Q(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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E(The)144 84 Q -/F1 10/Times-Italic@0 SF(format)3.018 E F0 .517(is a character string w\ -hich contains three types of objects: plain characters, which are)3.018 -F .704(simply copied to standard output, character escape sequences, wh\ -ich are con)144 96 R -.15(ve)-.4 G .704(rted and copied to).15 F .036(t\ -he standard output, and format speci\214cations, each of which causes p\ -rinting of the ne)144 108 R .036(xt successi)-.15 F -.15(ve)-.25 G F1 -(ar)144 120 Q(gument)-.37 E F0 5.531(.I)C 3.031(na)-5.531 G .531 -(ddition to the standard)-3.031 F F1(printf)3.032 E F0 .532 -(\(1\) format speci\214cations,)B/F2 10/Times-Bold@0 SF(printf)3.032 E -F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 132 Q -(xtensions:)-.15 E F2(%b)144 144 Q F0(causes)20.44 E F2(printf)5.115 E -F0 2.615(to e)5.115 F 2.615 -(xpand backslash escape sequences in the corresponding)-.15 F F1(ar) -5.115 E(gument)-.37 E F0(\(e)180 156 Q .608(xcept that)-.15 F F2(\\c) -3.108 E F0 .608(terminates output, backslashes in)3.108 F F2<5c08>3.108 -E F0(,)A F2(\\")3.108 E F0 3.108(,a)C(nd)-3.108 E F2(\\?)3.108 E F0 .608 -(are not remo)3.108 F -.15(ve)-.15 G .608(d, and octal).15 F(escapes be) -180 168 Q(ginning with)-.15 E F2(\\0)2.5 E F0 -(may contain up to four digits\).)2.5 E F2(%q)144 180 Q F0(causes)20.44 -E F2(printf)2.51 E F0 .01(to output the corresponding)2.51 F F1(ar)2.51 -E(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 192 Q F2(%\()144 204 Q F1(datefmt)A F2(\)T)A F0(causes)180 -216 Q F2(printf)4.403 E F0 1.904 -(to output the date-time string resulting from using)4.403 F F1(datefmt) -4.404 E F0 1.904(as a format)4.404 F .381(string for)180 228 R F1 -(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F1(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 -240 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 252 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 264 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 F2(printf)2.855 E F0(beha)180 276 Q(vior) --.2 E(.)-.55 E(Ar)144 292.8 Q .464(guments to non-string format speci\ -\214ers are treated as C constants, e)-.18 F .463 -(xcept that a leading plus or)-.15 F 1.258(minus sign is allo)144 304.8 -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 316.8 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 333.6 Q F1(format)3.424 E -F0 .923(is reused as necessary to consume all of the)3.424 F F1(ar)3.423 -E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F1(format) -3.423 E F0 .923(requires more)3.423 F F1(ar)144 345.6 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 357.6 Q(The return v)5 E -(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F2(pushd) -108 374.4 Q F0([)2.5 E F2A F0 2.5(][)C(+)-2.5 E F1(n)A F0 2.5(][)C --2.5 E F1(n)A F0(])A F2(pushd)108 386.4 Q F0([)2.5 E F2A F0 -2.5(][)C F1(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\ -rectory stack, or rotates the stack, making the ne)144 398.4 R 3.139(wt) --.25 G .639(op of the)-3.139 F 1.315(stack the current w)144 410.4 R -1.315(orking directory)-.1 F 6.315(.W)-.65 G 1.315(ith no ar)-6.715 F -1.315(guments, e)-.18 F 1.316(xchanges the top tw)-.15 F 3.816(od)-.1 G -1.316(irectories and)-3.816 F .872 -(returns 0, unless the directory stack is empty)144 422.4 R 5.871(.A) --.65 G -.18(rg)-5.871 G .871(uments, if supplied, ha).18 F 1.171 -.15 -(ve t)-.2 H .871(he follo).15 F .871(wing mean-)-.25 F(ings:)144 434.4 Q -F2144 446.4 Q F0 .902(Suppresses the normal change of directory w\ -hen adding directories to the stack, so that)24.74 F -(only the stack is manipulated.)180 458.4 Q F2(+)144 470.4 Q F1(n)A F0 -1.268(Rotates the stack so that the)25.3 F F1(n)3.768 E F0 1.267 -(th directory \(counting from the left of the list sho)B 1.267(wn by) --.25 F F2(dirs)180 482.4 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F2144 494.4 Q F1(n)A F0 -.92(Rotates the stack so that the)25.3 F F1(n)3.42 E F0 .92 -(th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F2(dirs)180 506.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F1(dir)144.35 518.4 Q F0(Adds)23.98 E F1(dir)3.138 E F0 .288 -(to the directory stack at the top, making it the ne)3.518 F 2.787(wc) --.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F -(if it had been supplied as the ar)180 530.4 Q(gument to the)-.18 E F2 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 547.2 R F2(pushd) -2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488 -(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F -F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 559.2 R F1(dir) -3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 -F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846 -(stack is empty)144 571.2 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 583.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F2(pwd)108 600 Q F0([)2.5 E F2(\255LP)A F0(])A .845 -(Print the absolute pathname of the current w)144 612 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 -624 R F22.681 E F0 .181(option is supplied or the)2.681 F F2 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2(set) -2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If) -144 636 R(the)3.264 E F23.264 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.264 -F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 648 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 660 Q F2 -.18(re)108 676.8 S(ad) -.18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2-3.817 E F1(aname) -3.817 E F0 3.817(][)C F2-3.817 E F1(delim)3.817 E F0 3.817(][)C F2 --3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2-3.817 E F1 -(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2-3.816 E F1(nc) -3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2-3.816 E F1(pr)3.816 E -(ompt)-.45 E F0 3.816(][)C F2-3.816 E F1(timeout)3.816 E F0 3.816 -(][)C F2-3.816 E F1(fd)3.816 E F0(])A([)108 688.8 Q F1(name)A F0 -(...])2.5 E .516(One line is read from the standard input, or from the \ -\214le descriptor)144 700.8 R F1(fd)3.016 E F0 .516(supplied as an ar) -3.016 F .516(gument to)-.18 F(the)144 712.8 Q F22.538 E F0 .038 -(option, and the \214rst w)2.538 F .038(ord is assigned to the \214rst) --.1 F F1(name)2.539 E F0 2.539(,t).18 G .039(he second w)-2.539 F .039 -(ord to the second)-.1 F F1(name)2.539 E F0(,).18 E .42 -(and so on, with lefto)144 724.8 R -.15(ve)-.15 G 2.92(rw).15 G .42 -(ords and their interv)-3.02 F .42 -(ening separators assigned to the last)-.15 F F1(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .54(are fe) -144 84 R .54(wer w)-.25 F .541(ords read from the input stream than nam\ -es, the remaining names are assigned empty)-.1 F -.25(va)144 96 S 2.511 -(lues. The).25 F .011(characters in)2.511 F/F1 9/Times-Bold@0 SF(IFS) -2.511 E F0 .011(are used to split the line into w)2.261 F 2.511 -(ords. The)-.1 F .011(backslash character \()2.511 F/F2 10/Times-Bold@0 -SF(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89(be used to remo)144 108 R 2.19 --.15(ve a)-.15 H 2.19 -.15(ny s).15 H 1.891(pecial meaning for the ne) -.15 F 1.891(xt character read and for line continuation.)-.15 F -(Options, if supplied, ha)144 120 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 132 Q/F3 10/Times-Italic@0 SF(aname) -2.5 E F0 1.05(The w)180 144 R 1.049 -(ords are assigned to sequential indices of the array v)-.1 F(ariable) --.25 E F3(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F -F3(aname)180.33 156 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 F3(name)2.5 E F0(ar)2.5 -E(guments are ignored.)-.18 E F2144 168 Q F3(delim)2.5 E F0 -(The \214rst character of)180 180 Q F3(delim)2.5 E F0 -(is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F2144 192 Q F0 .372 -(If the standard input is coming from a terminal,)25.86 F F2 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E F1(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 204 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 216 Q -.15(ve)-.25 G 2.5(\)e).15 G -(diting settings.)-2.5 E F2144 228 Q F3(te)2.5 E(xt)-.2 E F0(If) -10.78 E F2 -.18(re)2.715 G(adline).18 E F0 .216 -(is being used to read the line,)2.715 F F3(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 240 Q(gins.)-.15 E F2144 252 Q F3(nc)2.5 E(har) --.15 E(s)-.1 E F2 -.18(re)180 264 S(ad).18 E F0 1.395 -(returns after reading)3.895 F F3(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 276 Q(ut honor a delimiter if fe)-.2 E(wer than)-.25 -E F3(nc)2.5 E(har)-.15 E(s)-.1 E F0 -(characters are read before the delimiter)2.5 E(.)-.55 E F2144 288 -Q F3(nc)2.5 E(har)-.15 E(s)-.1 E F2 -.18(re)180 300 S(ad).18 E F0 1.269 -(returns after reading e)3.769 F(xactly)-.15 E F3(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 312 R F2 -.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 324 R -F2 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F3(nc)3.503 -E(har)-.15 E(s)-.1 E F0(characters are read.)180 336 Q F2144 348 Q -F3(pr)2.5 E(ompt)-.45 E F0(Display)180 360 Q F3(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 372 Q 2.5(yi)-.15 G 2.5(nput. The)-2.5 F -(prompt is displayed only if input is coming from a terminal.)2.5 E F2 -144 384 Q F0 .543(Backslash does not act as an escape character) -25.86 F 5.543(.T)-.55 G .544(he backslash is considered to be part of) --5.543 F(the line.)180 396 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 F2144 408 Q F0(Silent mode.)26.41 E -(If input is coming from a terminal, characters are not echoed.)5 E F2 -144 420 Q F3(timeout)2.5 E F0(Cause)180 432 Q F2 -.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 444 R F3(timeout)3.061 E F0 -(seconds.)3.061 E F3(timeout)5.561 E F0 .561(may be a decimal number) -3.061 F(with a fractional portion follo)180 456 Q -(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E -.3 -.15(ve i)-.25 H(f).15 E F2 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ -g input from a terminal, pipe, or other special \214le; it has no ef)180 -468 R .506(fect when reading)-.25 F .59(from re)180 480 R .59 -(gular \214les.)-.15 F(If)5.59 E F2 -.18(re)3.09 G(ad).18 E F0 .589 -(times out,)3.09 F F2 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2 -G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589 -(artial input read into the speci\214ed).15 F -.25(va)180 492 S(riable) -.25 E F3(name)2.77 E F0 5.27(.I)C(f)-5.27 E F3(timeout)2.77 E F0 .27 -(is 0,)2.77 F F2 -.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 504 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 -516 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F2144 528 Q F3(fd)2.5 E F0 -(Read input from \214le descriptor)14.46 E F3(fd)2.5 E F0(.)A .191 -(If no)144 544.8 R F3(names)3.051 E F0 .191 -(are supplied, the line read is assigned to the v)2.961 F(ariable)-.25 E -F1(REPL)2.692 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .192 -(The return code is zero,)4.692 F 1.344 -(unless end-of-\214le is encountered,)144 556.8 R F2 -.18(re)3.844 G(ad) -.18 E F0 1.343 -(times out \(in which case the return code is greater than)3.844 F .871 -(128\), a v)144 568.8 R .871 -(ariable assignment error \(such as assigning to a readonly v)-.25 F -.872(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G(lid).25 E -(\214le descriptor is supplied as the ar)144 580.8 Q(gument to)-.18 E F2 -2.5 E F0(.)A F2 -.18(re)108 597.6 S(adonly).18 E F0([)2.5 E F2 -(\255aAf)A F0 2.5(][)C F2-2.5 E F0 2.5(][)C F3(name)-2.5 E F0([=)A -F3(wor)A(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 609.6 R -.15(ve) --.25 G(n).15 E F3(names)3.27 E F0 .77(are mark)3.27 F .77 -(ed readonly; the v)-.1 F .77(alues of these)-.25 F F3(names)3.63 E F0 -.77(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 -621.6 R 1.096(If the)6.096 F F23.596 E F0 1.097 -(option is supplied, the functions corresponding to the)3.596 F F3 -(names)3.597 E F0 1.097(are so)3.597 F(mark)144 633.6 Q 3.334(ed. The) --.1 F F23.334 E F0 .834(option restricts the v)3.334 F .834 -(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) --3.334 F F23.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 645.6 R 1.076 -.15(ve a)-.25 H 3.276 -(rrays. If).15 F .777(both options are supplied,)3.276 F F23.277 E -F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F3(name) -3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 657.6 R -.15(ve) --.25 G .521(n, or if the).15 F F23.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 669.6 R(The)5.296 E F2 -2.796 E F0(option)2.796 E .786 -(causes output to be displayed in a format that may be reused as input.) -144 681.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -693.6 Q .717(wed by =)-.25 F F3(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 F3(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 705.6 R F3(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) --.25 F .26(ariable name, or)-.25 F F22.76 E F0 .26 -(is supplied with a)2.76 F F3(name)144.36 717.6 Q F0 -(that is not a function.)2.68 E(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 E(13)198.725 E 0 Cg EP -%%Page: 14 14 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF -.18(re)108 84 S(tur).18 E(n)-.15 E F0([)2.5 E/F2 10 -/Times-Italic@0 SF(n)A F0(])A .02(Causes a function to stop e)144 96 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 .469 -(the return status is that of the last command e)144 108 R -.15(xe)-.15 -G .469(cuted in the function body).15 F 5.469(.I)-.65 G(f)-5.469 E F1 --.18(re)2.969 G(tur).18 E(n)-.15 E F0 .468(is used out-)2.969 F .466 -(side a function, b)144 120 R .466(ut during e)-.2 F -.15(xe)-.15 G .467 -(cution of a script by the).15 F F1(.)2.967 E F0(\()5.467 E F1(sour)A -(ce)-.18 E F0 2.967(\)c)C .467(ommand, it causes the shell to)-2.967 F -.088(stop e)144 132 R -.15(xe)-.15 G .087 -(cuting that script and return either).15 F F2(n)2.947 E F0 .087 -(or the e)2.827 F .087(xit status of the last command e)-.15 F -.15(xe) --.15 G .087(cuted within).15 F .613(the script as the e)144 144 R .613 -(xit status of the script.)-.15 F(If)5.613 E F2(n)3.113 E F0 .613 -(is supplied, the return v)3.113 F .613 -(alue is its least signi\214cant 8)-.25 F 2.511(bits. The)144 156 R .011 -(return status is non-zero if)2.511 F F1 -.18(re)2.511 G(tur).18 E(n) --.15 E F0 .011(is supplied a non-numeric ar)2.511 F .01 -(gument, or is used outside)-.18 F 2.909(af)144 168 S .409 -(unction and not during e)-2.909 F -.15(xe)-.15 G .41 -(cution of a script by).15 F F1(.)2.91 E F0(or)3.743 E F1(sour)2.91 E -(ce)-.18 E F0 5.41(.A)C .71 -.15(ny c)-5.41 H .41 -(ommand associated with the).15 F F1(RETURN)144 180 Q F0(trap is e)2.5 E --.15(xe)-.15 G(cuted before e).15 E -.15(xe)-.15 G -(cution resumes after the function or script.).15 E F1(set)108 196.8 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 208.8 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1 -(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0 -(...])2.5 E -.4(Wi)144 220.8 S .836(thout options, the name and v).4 F -.835(alue of each shell v)-.25 F .835 -(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 232.8 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.947(reset. In)144 244.8 R F2 .447(posix mode) -2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447 -(ariables are listed.)-.25 F .447 -(The output is sorted according to the current)5.447 F 3.53 -(locale. When)144 256.8 R 1.031(options are speci\214ed, the)3.53 F -3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An) --.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F -1.624(after option processing are treated as v)144 268.8 R 1.623 -(alues for the positional parameters and are assigned, in)-.25 F(order) -144 280.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A -F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 292.8 Q -F0 .539(Automatically mark v)29.3 F .539 -(ariables and functions which are modi\214ed or created for e)-.25 F .54 -(xport to)-.15 F(the en)184 304.8 Q(vironment of subsequent commands.) --.4 E F1144 316.8 Q F0 .132 -(Report the status of terminated background jobs immediately)28.74 F -2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 328.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 340.8 Q F0 -.087(Exit immediately if a)29.86 F 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 352.8 Q -F2 1.294(compound command)3.794 F F0(\(see)3.794 E/F3 9/Times-Bold@0 SF -1.294(SHELL GRAMMAR)3.794 F F0(abo)3.544 E -.15(ve)-.15 G 3.793(\), e) -.15 F 1.293(xits with a non-zero status.)-.15 F .079 -(The shell does not e)184 364.8 R .079(xit if the command that f)-.15 F -.08(ails is part of the command list immediately)-.1 F(follo)184 376.8 Q -1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0 --.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654 -(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv) -4.154 E(ed)-.15 E -.1(wo)184 388.8 S .581(rds, part of an).1 F 3.081(yc) --.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1 -(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582 -(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 400.8 R -F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c) --3.418 H .918(ommand in a pipeline b).15 F .917 -(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E --.25(va)184 412.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66 -(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661 -(ompound command other than a subshell returns a)-3.161 F 1.113 -(non-zero status because a command f)184 424.8 R 1.112(ailed while)-.1 F -F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112 -(eing ignored, the shell does)-3.612 F .177(not e)184 436.8 R 2.677 -(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678 -(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 -(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178 -(option applies to)2.678 F .618(the shell en)184 448.8 R .617 -(vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 460.8 R(ONMENT) --.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 -(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 472.8 -Q 2.042(If a compound command or shell function e)184 490.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 -502.8 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 514.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 -2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 526.8 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 538.8 Q F13.154 E F0 .654 -(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953 --.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F -(or the command containing the function call completes.)184 550.8 Q F1 -144 562.8 Q F0(Disable pathname e)30.97 E(xpansion.)-.15 E F1 -144 574.8 Q F0 2.238(Remember the location of commands as the) -28.74 F 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F --.15(xe)-.15 G 4.739(cution. This).15 F(is)4.739 E(enabled by def)184 -586.8 Q(ault.)-.1 E F1144 598.8 Q F0 .514(All ar)28.74 F .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 610.8 Q F1 -144 622.8 Q F0 .148(Monitor mode.)25.97 F .148 -(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F -.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651 -(on systems that support it \(see)184 634.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 646.8 R -.679(When a background job completes, the shell prints a line containin\ -g its)5.678 F -.15(ex)184 658.8 S(it status.).15 E F1144 670.8 Q -F0 .653(Read commands b)28.74 F .653(ut do not e)-.2 F -.15(xe)-.15 G -.653(cute them.).15 F .652(This may be used to check a shell script for) -5.653 F(syntax errors.)184 682.8 Q(This is ignored by interacti)5 E .3 --.15(ve s)-.25 H(hells.).15 E F1144 694.8 Q F2(option\255name)2.5 -E F0(The)184 706.8 Q F2(option\255name)2.5 E F0(can be one of the follo) -2.5 E(wing:)-.25 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(14) -198.725 E 0 Cg EP -%%Page: 15 15 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(allexport)184 84 Q F0(Same as)224 96 Q F12.5 E F0 -(.)A F1(braceexpand)184 108 Q F0(Same as)224 120 Q F12.5 E F0(.)A -F1(emacs)184 132 Q F0 .089 -(Use an emacs-style command line editing interf)13.9 F 2.589(ace. This) --.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 144 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 156 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 168 Q(exit)-.18 E F0(Same as)11.31 E F12.5 E F0(.)A F1 -(errtrace)184 180 Q F0(Same as)5.03 E F12.5 E F0(.)A F1(functrace) -184 192 Q F0(Same as)224 204 Q F12.5 E F0(.)A F1(hashall)184 216 Q -F0(Same as)9.43 E F12.5 E F0(.)A F1(histexpand)184 228 Q F0 -(Same as)224 240 Q F12.5 E F0(.)A F1(history)184 252 Q F0 .586 -(Enable command history)10 F 3.087(,a)-.65 G 3.087(sd)-3.087 G .587 -(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E/F2 9 -/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 264 Q -(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -276 Q(eeof)-.18 E F0 1.657(The ef)224 288 R 1.657 -(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10) -4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -300 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 312 S(yw).1 E(ord)-.1 E F0(Same as)224 324 Q F1 -2.5 E F0(.)A F1(monitor)184 336 Q F0(Same as)5.56 E F12.5 E -F0(.)A F1(noclob)184 348 Q(ber)-.1 E F0(Same as)224 360 Q F12.5 E -F0(.)A F1(noexec)184 372 Q F0(Same as)11.12 E F12.5 E F0(.)A F1 -(noglob)184 384 Q F0(Same as)11.1 E F12.5 E F0(.)A F1(nolog)184 -396 Q F0(Currently ignored.)16.66 E F1(notify)184 408 Q F0(Same as)15 E -F12.5 E F0(.)A F1(nounset)184 420 Q F0(Same as)6.66 E F12.5 -E F0(.)A F1(onecmd)184 432 Q F0(Same as)6.67 E F12.5 E F0(.)A F1 -(ph)184 444 Q(ysical)-.15 E F0(Same as)5.14 E F12.5 E F0(.)A F1 -(pipefail)184 456 Q F0 1.029(If set, the return v)7.77 F 1.029 -(alue of a pipeline is the v)-.25 F 1.03 -(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 468 R -1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 480 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 492 Q F0 -2.09(Change the beha)17.77 F 2.091(vior of)-.2 F F1(bash)4.591 E F0 -2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 -(fers from the)-.25 F(POSIX standard to match the standard \()224 504 Q -/F5 10/Times-Italic@0 SF(posix mode)A F0(\).)A 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)7.33 E F12.5 E F0(.)A F1(vi)184 552 Q F0 -1.466(Use a vi-style command line editing interf)32.22 F 3.965 -(ace. This)-.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F -(interf)224 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)13.35 E F12.5 E F0(.)A(If)184 -594 Q F13.052 E F0 .552(is supplied with no)3.052 F F5 -(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553 -(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184 -606 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0 -3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071 -(commands to recreate the current)3.571 F -(option settings is displayed on the standard output.)184 618 Q F1 -144 630 Q F0 -.45(Tu)28.74 G 1.071(rn on).45 F F5(privile)4.821 E -.1 -(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F -F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072 -(\214les are not pro-)3.322 F 1.501 -(cessed, shell functions are not inherited from the en)184 642 R 1.5 -(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 654 S -(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0 -(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524 -(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F -(vironment,)-.4 E .38(are ignored.)184 666 R .38 -(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u) --.25 H .379(ser \(group\) id not equal to the real).15 F .461 -(user \(group\) id, and the)184 678 R F12.961 E F0 .461 -(option is not supplied, these actions are tak)2.961 F .462 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 690 Q .695 -.15(ve u)-.25 H .395 -(ser id is set to the real user id.).15 F .395(If the)5.395 F F1 -2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .386(user id is not reset.)184 702 R -.45(Tu)5.386 G -.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886 -F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F -(set to the real user and group ids.)184 714 Q(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF144 84 Q F0(Exit after reading and e)30.97 E -.15 -(xe)-.15 G(cuting one command.).15 E F1144 96 Q F0 -.35(Tr)28.74 G -.044(eat unset v).35 F .044(ariables and parameters other than the spec\ -ial 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 -(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)29.3 E 2.5(ya) --.15 G(re read.)-2.5 E F1144 156 Q F0 .315(After e)29.3 F .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 -(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)27.63 F 2.578 -(xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.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,)27.08 F F1(bash)2.714 E -F0 .214(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 -(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 -2.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 -(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)27.63 F 2.604(yt)-.15 G .104(rap on) --2.604 F F1(ERR)2.604 E F0 .103 -(is inherited by shell functions, command substitutions, and com-)2.604 -F .838(mands e)184 264 R -.15(xe)-.15 G .838(cuted in a subshell en).15 -F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839 -(trap is normally not inherited in)3.339 F(such cases.)184 276 Q F1 -144 288 Q F0(Enable)26.52 E F1(!)3.032 E F0 .532 -(style history substitution.)5.532 F .531(This option is on by def)5.532 -F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 300 Q -.15 -(ve)-.25 G(.).15 E F1144 312 Q F0 .959 -(If set, the shell does not resolv)28.19 F 3.459(es)-.15 G .959 -(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96 -(cuting commands such as).15 F F1(cd)3.46 E F0 2.822 -(that change the current w)184 324 R 2.822(orking directory)-.1 F 7.822 -(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.821 -(ysical directory structure)-.05 F 2.685(instead. By)184 336 R(def)2.685 -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)27.63 F 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 -(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)28.6 F .401(guments follo)-.18 F 2.901(wt)-.25 G .401 -(his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.4 E(the positional parameters are set to the)184 408 Q F2 -(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -420 Q F0 1.944(Signal the end of options, cause all remaining)34.3 F F2 -(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.445(ea)-4.444 G -1.945(ssigned to the positional)-4.445 F 3.446(parameters. The)184 432 R -F13.446 E F0(and)3.446 E F13.446 E F0 .945 -(options are turned of)3.446 F 3.445(f. If)-.25 F .945(there are no) -3.445 F F2(ar)3.445 E(g)-.37 E F0 .945(s, the positional)B -(parameters remain unchanged.)184 444 Q .425(The options are of)144 -460.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 -(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 -(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([) -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 .222(ggle the v).8 F .222 -(alues of v)-.25 F .222(ariables controlling optional shell beha)-.25 F -(vior)-.2 E 5.222(.W)-.55 G .222(ith no options, or with the)-5.622 F F1 -2.722 E F0 .721(option, a list of all settable options is display\ -ed, with an indication of whether or not each is set.)144 614.4 R(The) -144 626.4 Q F12.828 E F0 .327(option causes output to be displaye\ -d in a form that may be reused as input.)2.828 F .327(Other options) -5.327 F(ha)144 638.4 Q .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:) --.25 E F1144 650.4 Q F0(Enable \(set\) each)26.41 E F2(optname)2.5 -E F0(.)A F1144 662.4 Q F0(Disable \(unset\) each)24.74 E F2 -(optname)2.5 E F0(.)A F1144 674.4 Q F0 .003(Suppresses normal out\ -put \(quiet mode\); the return status indicates whether the)24.74 F F2 -(optname)2.504 E F0(is)2.504 E .256(set or unset.)180 686.4 R .256 -(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 E .256 -(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G(ith)-2.756 E F1 -2.756 E F0 2.755(,t)C .255(he return status is zero if)-2.755 F -(all)180 698.4 Q F2(optnames)2.5 E F0(are enabled; non-zero otherwise.) -2.5 E F1144 710.4 Q F0(Restricts the v)25.3 E(alues of)-.25 E F2 -(optname)2.5 E F0(to be those de\214ned for the)2.5 E 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 727.2 R F13.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(GNU Bash-4.2)72 768 Q -(2004 Apr 20)148.735 E(16)198.725 E 0 Cg EP -%%Page: 17 17 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 2.234 -(set or unset, respecti)144 84 R -.15(ve)-.25 G(ly).15 E 7.234(.U)-.65 G -2.234(nless otherwise noted, the)-7.234 F/F1 10/Times-Bold@0 SF(shopt) -4.734 E F0 2.234(options are disabled \(unset\) by)4.734 F(def)144 96 Q -(ault.)-.1 E 1.544 -(The return status when listing options is zero if all)144 112.8 R/F2 10 -/Times-Italic@0 SF(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 124.8 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 136.8 Q(The list of)144 153.6 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 171.6 Q F0 .199 -(If set, a command name that is the name of a directory is e)11.11 F --.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 183.6 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 195.6 Q(ars)-.1 E F0 .156(If set, an ar)184 207.6 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 219.6 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 231.6 Q F0 -1.055 -(If set, minor errors in the spelling of a directory component in a) -10.55 F F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 243.6 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 255.6 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 267.6 Q -(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 279.6 Q F0 2.08(If set,)184 291.6 R F1(bash)4.58 -E F0 2.079(checks that a command found in the hash table e)4.58 F 2.079 -(xists before trying to)-.15 F -.15(exe)184 303.6 S(cute it.).15 E -(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 315.6 -Q F0 .448(If set,)184 327.6 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 339.6 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 351.6 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 363.6 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 375.6 Q F0 .797(If set,)184 -387.6 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 399.6 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 411.6 Q F0 1.202(If set,)6.11 F F1(bash)3.702 E F0 1.202 -(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 -(ll lines of a multiple-line command in the same history).15 F(entry)184 -423.6 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 435.6 -Q F0 .42(If set,)184 447.6 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 459.6 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 471.6 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 483.6 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(sequence and)184 495.6 Q F2(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat32)144 507.6 Q F0 1.41(If set,)184 519.6 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 531.6 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(vious item\).)184 543.6 Q -F1(compat40)144 555.6 Q F0 1.41(If set,)184 567.6 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 579.6 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 591.6 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 603.6 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 615.6 Q -(xt command in the list.)-.15 E F1(compat41)144 627.6 Q F0 1.444 -(If set,)184 639.6 R F1(bash)3.944 E F0 3.944(,w)C 1.443 -(hen in posix mode, treats a single quote in a double-quoted parameter) --3.944 F -.15(ex)184 651.6 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 -663.6 R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 -(posix mode through v)184 675.6 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 687.6 Q F1(compat42)144 -699.6 Q F0 1.797(If set,)184 711.6 R F1(bash)4.297 E F0 1.796 -(does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 723.6 S(pansion using quote remo).15 E --.25(va)-.15 G(l.).25 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(complete_fullquote)144 84 Q F0 .653(If set,)184 96 R F1 -(bash)3.153 E F0 .653(quotes all shell metacharacters in \214lenames an\ -d directory names when per)3.153 F(-)-.2 E 1.525(forming completion.)184 -108 R 1.524(If not set,)6.525 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 \ -\214lenames when these)184 120 R .029(metacharacters appear in shell v) -184 132 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 144 R 1.073(ariable names that e)-.25 F -1.073(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 --.25(ev e)184 156 T 1.923 -.4(r, a).25 H 1.423 -.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 -(only when bash is using backslashes to quote completed \214lenames.)184 -168 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 180 Q -(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F1(dir)144 192 Q(expand)-.18 E F0 .487 -(If set,)184 204 R F1(bash)2.987 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 -216 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 -228 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F1(dirspell)144 240 Q F0 .859(If set,)7.77 F -F1(bash)3.359 E F0 .858 -(attempts spelling correction on directory names during w)3.359 F .858 -(ord completion if)-.1 F -(the directory name initially supplied does not e)184 252 Q(xist.)-.15 E -F1(dotglob)144 264 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165 -(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i) --.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F -(xpansion.)-.15 E F1(execfail)144 276 Q F0 1.387 -(If set, a non-interacti)7.79 F 1.687 -.15(ve s)-.25 H 1.386 -(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G -1.386(cute the \214le speci\214ed as an).15 F(ar)184 288 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 300 Q F0 -.716(If set, aliases are e)184 312 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 324 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 336 Q(ug)-.2 E F0(If set, beha)184 348 Q -(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 -360 Q F0(The)28.5 E F14.251 E F0 1.751(option to the)4.251 F F1 -(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 -(iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 372 Q -(gument.)-.18 E F1(2.)184 384 Q F0 1.667(If the command run by the)28.5 -F F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 396 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 408 Q F0 .841 -(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 -(exe)220 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 432 Q(ce)-.18 E F0 -.2(bu)2.5 G(iltins\), a call to).2 E F1 --.18(re)2.5 G(tur).18 E(n)-.15 E F0(is simulated.)2.5 E F1(4.)184 444 Q -F2 -.27(BA)28.5 G(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 456 Q -.15(ve)-.15 G(.).15 E F1(5.)184 468 Q F0 1.359 -(Function tracing is enabled:)28.5 F 1.359 -(command substitution, shell functions, and sub-)6.359 F(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 492 Q F0 .805(Error tracing is enabled:)28.5 F .804 -(command substitution, shell functions, and subshells)5.805 F(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 516 Q F0 .4(If set, the e)8.89 F .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 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.424(If set, patterns which f)7.77 F 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.425 -(xpansion result in an)-.15 F -.15(ex)184 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 -.937(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 .936(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.948 -(pletions. See)184 636 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(.)A F0 .447(This option is)4.947 F(enabled by def) -184 648 Q(ault.)-.1 E F1(globasciiranges)144 660 Q F0 .805 -(If set, range e)184 672 R .806 -(xpressions used in pattern matching \(see)-.15 F F2 -.09(Pa)3.306 G -(tter).09 E 3.056(nM)-.135 G(atching)-3.056 E F0(abo)3.056 E -.15(ve) --.15 G 3.306(\)b).15 G(eha)-3.306 E -.15(ve)-.2 G 2.089 -(as if in the traditional C locale when performing comparisons.)184 684 -R 2.089(That is, the current)7.089 F(locale')184 696 Q 2.613(sc)-.55 G -.113(ollating sequence is not tak)-2.613 F .113(en into account, so)-.1 -F F1(b)2.613 E F0 .114(will not collate between)2.613 F F1(A)2.614 E F0 -(and)2.614 E F1(B)184 708 Q F0 2.5(,a)C(nd upper)-2.5 E(-case and lo)-.2 -E(wer)-.25 E(-case ASCII characters will collate together)-.2 E(.)-.55 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 290.48 -(TINS\(1\) B)-.92 F(ASH_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)5 F F1 -(**)3.019 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte) --.15 F .518(xt will match all \214les and zero)-.15 F .431 -(or more directories and subdirectories.)184 96 R .431 -(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 -2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 -108 Q F1(gnu_errfmt)144 120 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 132 Q F1(histappend)144 -144 Q F0 .676 -(If set, the history list is appended to the \214le named by the v)184 -156 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0 --.25(va)2.926 G(ri-).25 E(able when the shell e)184 168 Q -(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 -(histr)144 180 Q(eedit)-.18 E F0 .575(If set, and)184 192 R F1 -.18(re) -3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F -.15 -(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075 F -.576(ailed his-)-.1 F(tory substitution.)184 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 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 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 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 -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 300 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 312 Q F0(If set,) -184 324 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 -(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(interacti)144 336 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 348 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 360 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 372 Q -(ault.)-.1 E F1(lastpipe)144 384 Q F0 1.212 -(If set, and job control is not acti)6.66 F -.15(ve)-.25 G 3.712(,t).15 -G 1.212(he shell runs the last command of a pipeline not)-3.712 F -.15 -(exe)184 396 S(cuted in the background in the current shell en).15 E -(vironment.)-.4 E F1(lithist)144 408 Q F0 .654(If set, and the)15.55 F -F1(cmdhist)3.154 E F0 .654 -(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F -(with embedded ne)184 420 Q -(wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 432 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -444 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 456 S(lue may not be changed.).25 -E F1(mailwar)144 468 Q(n)-.15 E F0 .814(If set, and a \214le that)184 -480 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 492 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0 -(has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1 -(no_empty_cmd_completion)144 504 Q F0 .325(If set, and)184 516 R F1 -.18 -(re)2.825 G(adline).18 E F0 .325(is being used,)2.825 F F1(bash)2.824 E -F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH) --.189 E F0 .324(for possible)2.574 F -(completions when completion is attempted on an empty line.)184 528 Q F1 -(nocaseglob)144 540 Q F0 .436(If set,)184 552 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 564 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 576 Q F0 1.194(If set,)184 -588 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(while e)184 600 Q -.15(xe)-.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5 -E F1([[)2.5 E F0(conditional commands.)2.5 E F1(nullglob)144 612 Q F0 -.854(If set,)184 624 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 636 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 648 Q(ogcomp)-.18 E F0 .677 -(If set, the programmable completion f)184 660 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 672 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 684 Q(omptv) --.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 696 R 1.448 -(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 708 S .171(pansion, and quote remo).15 F -.25(va)-.15 -G 2.67(la).25 G .17(fter being e)-2.67 F .17(xpanded as described in) --.15 F F2(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 720 Q(ault.)-.1 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF -.18(re)144 84 S(stricted_shell).18 E F0 1.069 -(The shell sets this option if it is started in restricted mode \(see) -184 96 R/F2 9/Times-Bold@0 SF 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 -108 Q 4.178(w\). The)-.25 F -.25(va)4.178 G 1.678 -(lue may not be changed.).25 F 1.678 -(This is not reset when the startup \214les are)6.678 F -.15(exe)184 120 -S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E -.15(ve) --.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E F1 -(shift_v)144 132 Q(erbose)-.1 E F0 .501(If set, the)184 144 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 156 Q F1(sour) -144 168 Q(cepath)-.18 E F0 .771(If set, the)184 180 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 192 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.) --.1 E F1(xpg_echo)144 204 Q F0(If set, the)184 216 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 232.8 Q F0([)2.5 E F1A F0(])A 1.001 -(Suspend the e)144 244.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 256.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 268.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 285.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 297.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)6.77 F .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 309.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 321.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 333.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 351.6 R .785 -(wing operators, listed in decreasing order of prece-)-.25 F 3.411 -(dence. The)144 363.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 375.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 387.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)12.6 G(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E -(alse.)-.1 E F1(\()144 399.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)6.77 F .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 411.6 Q F3 -.2 -(ex)144 423.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 435.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 447.6 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -459.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 476.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 494.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 506.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 518.4 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 530.4 Q -(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 542.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 554.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 .38(If the \214rst ar)180 566.4 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .679 --.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.879 E(TION)180 578.4 Q .552 -(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552 -(xpression is true if the unary test is true.)-.15 F .552 -(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 590.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 602.4 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 614.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 626.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.105 E .579(result of the e)180 638.4 R .578(xpression i\ -s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.332(as operands.)180 650.4 R(The)6.332 E F13.832 -E F0(and)3.832 E F13.832 E F0 1.333 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 662.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 .52(test using the second and third ar)180 -674.4 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 686.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 698.4 Q(xpression is f)-.15 E(alse.)-.1 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 2.5(4a)144 -84 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 96 R .384 -(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)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 108 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 -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.)13.23 F -(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 .702(The command)144 231.6 R F2(ar) -3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G -(ignal\(s\))-3.203 E F2(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F2 -(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single) -144 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 255.6 R .658(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .659 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 267.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 F2(ar)3.41 E(g)-.37 E F0 .58 -(is not present and)3.3 F F13.08 E F0(has)3.08 E 1.214 -(been supplied, then the trap commands associated with each)144 279.6 R -F2(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 -F(gu-)-.18 E .86(ments are supplied or if only)144 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 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.311(bers. Each)144 315.6 R F2(sigspec)4.651 E F0 1.811 -(is either a signal name de\214ned in <)4.621 F F2(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 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.648 -(If a)144 345.6 R F2(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 -1.648(\(0\) the command)3.898 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.649(xit from the shell.) --.15 F 1.649(If a)6.649 F F2(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 -357.6 Q(UG)-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.168(the command)3.418 F -F2(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 F2 1.167(simple command) -3.667 F F0(,)A F2(for)3.667 E F0(command,)3.667 E F2(case)3.667 E F0 -(com-)3.667 E(mand,)144 369.6 Q F2(select)2.646 E F0 .146(command, e) -2.646 F -.15(ve)-.25 G .146(ry arithmetic).15 F F2(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 381.6 R F3 .146 -(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0 -.145(option to)2.645 F(the)144 393.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 F2(sigspec)3.54 E F0(is)3.51 E F3 -(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 405.6 Q F2(ar) -3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643 -(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce) --.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 417.6 Q -.15(xe) --.15 G(cuting.).15 E .521(If a)144 435.6 R F2(sigspec)3.361 E F0(is) -3.331 E F3(ERR)3.021 E F4(,)A F0 .522(the command)2.771 F F2(ar)3.352 E -(g)-.37 E F0 .522(is e)3.242 F -.15(xe)-.15 G .522(cuted whene).15 F --.15(ve)-.25 G 3.022(raap).15 G .522(ipeline \(which may consist of a) --3.022 F .185(single simple command\), a list, or a compound command re\ -turns a non\255zero e)144 447.6 R .184(xit status, subject to)-.15 F -.451(the follo)144 459.6 R .451(wing conditions.)-.25 F(The)5.451 E F3 -(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 471.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 F2(if)2.897 E F0 .387 -(statement, part)4.847 F .777(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 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 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 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 .661(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 .173 -(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F2(name) -3.033 E F0 -.1(wo)2.853 G .174 -(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F -F1144 590.4 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0 -.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E -F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0 -(,).24 E F2 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F2 -(\214le)5.252 E F0(if)3.522 E F2(name)144.36 602.4 Q F0 .086 -(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086 -(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F2 -(name)2.947 E F0 .087(is not)2.767 F .119 -(found, then nothing is printed, and an e)144 614.4 R .118 -(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F -F12.618 E F0 .118(option is used,)2.618 F F1(type)2.618 E F0 .855 -(either returns the name of the disk \214le that w)144 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 .641(mand name, or nothing if) -144 638.4 R/F5 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141 -G .641(uld not return).1 F F2(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E -F13.14 E F0 .64(option forces a)3.14 F F3 -.666(PA)3.14 G(TH)-.189 -E F0 .112(search for each)144 650.4 R F2(name)2.612 E F0 2.612(,e)C -.15 -(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E 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(fac)-5.113 G .113(ommand is hashed,)-2.613 F F12.613 E -F0(and)144 662.4 Q F13.231 E F0 .731(print the hashed v)3.231 F -.73(alue, which is not necessarily the \214le that appears \214rst in) --.25 F F3 -.666(PA)3.23 G(TH)-.189 E F4(.)A F0 .73(If the)5.23 F F1 -144 674.4 Q F0 1.748(option is used,)4.248 F F1(type)4.248 E F0 -1.748(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G -1.748(cutable named).15 F F2(name)4.249 E F0 6.749(.T).18 G(his)-6.749 E -.744(includes aliases and functions, if and only if the)144 686.4 R F1 -3.244 E F0 .744(option is not also used.)3.244 F .743 -(The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 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 .326(with the) -144 710.4 R F1(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F1(type) -5.326 E F0 .326(returns true if all of the ar)2.826 F .325 -(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325 -(re not)-2.825 F(found.)144 722.4 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10 -/Times-Bold@0 SF(ulimit)108 84 Q F0([)2.5 E F1(\255HST)A -(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E/F2 10/Times-Italic@0 SF(limit)A -F0(]])A(Pro)144 96 Q .243(vides control o)-.15 F -.15(ve)-.15 G 2.743 -(rt).15 G .243(he resources a)-2.743 F -.25(va)-.2 G .244 -(ilable to the shell and to processes started by it, on systems).25 F -.944(that allo)144 108 R 3.444(ws)-.25 G .944(uch control.)-3.444 F(The) -5.944 E F13.444 E F0(and)3.444 E F13.444 E F0 .943 -(options specify that the hard or soft limit is set for the)3.444 F(gi) -144 120 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 sof\ -t limit may)2.708 F .426(be increased up to the v)144 132 R .426 -(alue of the hard limit.)-.25 F .425(If neither)5.426 F F12.925 E -F0(nor)2.925 E F12.925 E F0 .425 -(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144 -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 156 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w) -C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 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 180 R F12.999 E F0 .499 -(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498 -(more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 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)25.3 E F1144 216 Q F0 -(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E F1 -144 228 Q F0(The maximum size of core \214les created)25.86 E F1 -144 240 Q F0(The maximum size of a process')24.74 E 2.5(sd)-.55 G -(ata se)-2.5 E(gment)-.15 E F1144 252 Q F0 -(The maximum scheduling priority \("nice"\))25.86 E F1144 264 Q F0 -(The maximum size of \214les written by the shell and its children)26.97 -E F1144 276 Q F0(The maximum number of pending signals)27.52 E F1 -144 288 Q F0(The maximum size that may be lock)27.52 E -(ed into memory)-.1 E F1144 300 Q F0 -(The maximum resident set size \(man)21.97 E 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F1144 312 Q F0 .791(The \ -maximum number of open \214le descriptors \(most systems do not allo) -24.74 F 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F -(be set\))180 324 Q F1144 336 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1 -144 348 Q F0(The maximum number of bytes in POSIX message queues) -24.74 E F1144 360 Q F0(The maximum real-time scheduling priority) -25.86 E F1144 372 Q F0(The maximum stack size)26.41 E F1144 -384 Q F0(The maximum amount of cpu time in seconds)26.97 E F1144 -396 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G -(ilable to a single user).25 E F1144 408 Q F0 .47 -(The maximum amount of virtual memory a)25.3 F -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 420 -Q F1144 432 Q F0(The maximum number of \214le locks)25.3 E F1 -144 444 Q F0(The maximum number of threads)23.63 E(If)144 460.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 .045 -(no option is gi)144 472.8 R -.15(ve)-.25 G .045(n, then).15 F F1 -2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 -(lues are in 1024-byte increments, e)1.11 F .044(xcept for)-.15 F F1 -2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .402(in seconds;)144 -484.8 R F12.902 E F0 2.902(,w)C .402 -(hich is in units of 512-byte blocks; and)-2.902 F F12.902 E F0(,) -A F12.902 E F0(,)A F12.902 E F0 2.902(,a)C(nd)-2.902 E F1 -2.903 E F0 2.903(,w)C .403(hich are unscaled)-2.903 F -.25(va)144 -496.8 S 3.083(lues. The).25 F .583(return status is 0 unless an in)3.083 -F -.25(va)-.4 G .583(lid option or ar).25 F .583 -(gument is supplied, or an error occurs)-.18 F(while setting a ne)144 -508.8 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 525.6 Q F0([)2.5 E F1 -A 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 537.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 549.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -561.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 573.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 585.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 597.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 614.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 626.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 638.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 655.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 667.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.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 679.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 691.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 703.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 715.2 R .492(ariable it references.)-.25 -F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 -2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F -1.622(options are supplied, each)144 727.2 R F2(name)4.122 E F0 1.622 -(refers to a v)4.122 F 1.622(ariable; if there is no v)-.25 F 1.621 -(ariable by that name, an)-.25 F(y)-.15 E(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 290.48 -(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .004 -(function with that name is unset.)144 84 R .004(Each unset v)5.004 F -.004(ariable or function is remo)-.25 F -.15(ve)-.15 G 2.504(df).15 G -.004(rom the en)-2.504 F(vironment)-.4 E 3.206 -(passed to subsequent commands.)144 96 R 3.206(If an)8.206 F 5.706(yo) --.15 G(f)-5.706 E/F1 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 E -/F2 9/Times-Roman@0 SF(,)A F1(RANDOM)5.455 E F2(,)A F1(SECONDS)5.455 E -F2(,)A F1(LINENO)144 108 Q F2(,)A F1(HISTCMD)4.347 E F2(,)A F1(FUNCN) -4.347 E(AME)-.18 E F2(,)A F1(GR)4.347 E(OUPS)-.27 E F2(,)A F0(or)4.348 E -F1(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 120 -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/F3 10/Times-Italic@0 SF(name)2.86 E F0(is readonly)2.68 E(.)-.65 -E/F4 10/Times-Bold@0 SF(wait)108 136.8 Q F0([)2.5 E F4(\255-n)A F0 2.5 -(][)C F3 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8(Wa)144 148.8 S .288 -(it for each speci\214ed process and return its termination status.).8 F -(Each)5.288 E F3(n)3.148 E F0 .287(may be a process ID or a)3.028 F .722 -(job speci\214cation; if a job spec is gi)144 160.8 R -.15(ve)-.25 G -.722(n, all processes in that job').15 F 3.222(sp)-.55 G .722 -(ipeline are w)-3.222 F .722(aited for)-.1 F 5.722(.I)-.55 G(f)-5.722 E -F3(n)3.583 E F0(is)3.463 E .876(not gi)144 172.8 R -.15(ve)-.25 G .876 -(n, all currently acti).15 F 1.176 -.15(ve c)-.25 H .876 -(hild processes are w).15 F .876(aited for)-.1 F 3.376(,a)-.4 G .876 -(nd the return status is zero.)-3.376 F .875(If the)5.875 F F4(\255-n) -144 184.8 Q F0 .176(option is supplied,)2.676 F F4(wait)2.676 E F0 -.1 -(wa)2.676 G .176(its for an).1 F 2.677(yj)-.15 G .177 -(ob to terminate and returns its e)-2.677 F .177(xit status.)-.15 F(If) -5.177 E F3(n)3.037 E F0(speci\214es)2.917 E 2.596(an)144 196.8 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 208.8 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(SEE ALSO)72 225.6 Q F0(bash\(1\), sh\(1\))108 -237.6 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP -%%Trailer -end -%%EOF diff --git a/doc/faq.headers.mail b/doc/faq.headers.mail deleted file mode 100644 index 481e8436c..000000000 --- a/doc/faq.headers.mail +++ /dev/null @@ -1,4 +0,0 @@ -From: chet.ramey@case.edu (Chet Ramey) -To: bug-bash@gnu.org -Subject: BASH Frequently-Asked Questions (FAQ version 3.36) -Reply-To: chet@po.cwru.edu diff --git a/doc/faq.headers.news b/doc/faq.headers.news deleted file mode 100644 index 875e74b72..000000000 --- a/doc/faq.headers.news +++ /dev/null @@ -1,9 +0,0 @@ -Newsgroups: comp.unix.shell,comp.unix.questions -Distribution: world -From: chet@po.cwru.edu (Chet Ramey) -Subject: BASH Frequently-Asked Questions (FAQ version 3.36) -Organization: Case Western Reserve University -Summary: A's to Q's about BASH, the Bourne-Again SHell -Reply-To: chet@po.cwru.edu -Followup-To: poster - diff --git a/doc/faq.headers.news2 b/doc/faq.headers.news2 deleted file mode 100644 index 0a8f38683..000000000 --- a/doc/faq.headers.news2 +++ /dev/null @@ -1,9 +0,0 @@ -Newsgroups: comp.unix.shell,comp.unix.questions,comp.answers,news.answers -From: chet@po.cwru.edu (Chet Ramey) -Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.36) -Organization: Case Western Reserve University -Summary: A's to Q's about BASH, the Bourne-Again SHell -Reply-To: chet@po.cwru.edu -Followup-To: poster -Approved: news-answers-request@MIT.EDU - diff --git a/doc/faq.mail b/doc/faq.mail deleted file mode 100644 index 4ca0ed872..000000000 --- a/doc/faq.mail +++ /dev/null @@ -1,1886 +0,0 @@ -From: chet.ramey@case.edu (Chet Ramey) -To: bug-bash@gnu.org -Subject: BASH Frequently-Asked Questions (FAQ version 3.36) -Reply-To: chet@po.cwru.edu -Archive-name: unix-faq/shell/bash -Posting-Frequency: monthly -Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Fri May 11 16:18:55 EDT 2007 -FAQ-Version: 3.36 -Bash-Version: 3.2 -URL: ftp://ftp.cwru.edu/pub/bash/FAQ -Maintainer: chet@po.cwru.edu (Chet Ramey) - -This is the Bash FAQ, version 3.36, for Bash version 3.2. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.2, first made available on 12 October, 2006. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.2: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-3.1 or bash-3.2. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.2? - -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.2: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.2: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2007. Never make predictions. - -This document is Copyright 1995-2006 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/faq.mail.test b/doc/faq.mail.test deleted file mode 100644 index 7ad2440df..000000000 --- a/doc/faq.mail.test +++ /dev/null @@ -1,1886 +0,0 @@ -From: chet.ramey@case.edu (Chet Ramey) -To: chet.ramey@gmail.com -Subject: BASH Frequently-Asked Questions (FAQ version 3.36) -Reply-To: chet@po.cwru.edu -Archive-name: unix-faq/shell/bash -Posting-Frequency: monthly -Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Fri May 11 16:18:55 EDT 2007 -FAQ-Version: 3.36 -Bash-Version: 3.2 -URL: ftp://ftp.cwru.edu/pub/bash/FAQ -Maintainer: chet@po.cwru.edu (Chet Ramey) - -This is the Bash FAQ, version 3.36, for Bash version 3.2. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.2, first made available on 12 October, 2006. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.2: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-3.1 or bash-3.2. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.2? - -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.2: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.2: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2007. Never make predictions. - -This document is Copyright 1995-2006 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/faq.news b/doc/faq.news deleted file mode 100644 index f58af0dfd..000000000 --- a/doc/faq.news +++ /dev/null @@ -1,1891 +0,0 @@ -Newsgroups: comp.unix.shell,comp.unix.questions -Distribution: world -From: chet@po.cwru.edu (Chet Ramey) -Subject: BASH Frequently-Asked Questions (FAQ version 3.36) -Organization: Case Western Reserve University -Summary: A's to Q's about BASH, the Bourne-Again SHell -Reply-To: chet@po.cwru.edu -Followup-To: poster - -Archive-name: unix-faq/shell/bash -Posting-Frequency: monthly -Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Fri May 11 16:18:55 EDT 2007 -FAQ-Version: 3.36 -Bash-Version: 3.2 -URL: ftp://ftp.cwru.edu/pub/bash/FAQ -Maintainer: chet@po.cwru.edu (Chet Ramey) - -This is the Bash FAQ, version 3.36, for Bash version 3.2. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.2, first made available on 12 October, 2006. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.2: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-3.1 or bash-3.2. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.2? - -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.2: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.2: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2007. Never make predictions. - -This document is Copyright 1995-2006 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/faq.news2 b/doc/faq.news2 deleted file mode 100644 index 9a14ab121..000000000 --- a/doc/faq.news2 +++ /dev/null @@ -1,1891 +0,0 @@ -Newsgroups: comp.unix.shell,comp.unix.questions,comp.answers,news.answers -From: chet@po.cwru.edu (Chet Ramey) -Subject: [gnu.bash.bug] BASH Frequently-Asked Questions (FAQ version 3.36) -Organization: Case Western Reserve University -Summary: A's to Q's about BASH, the Bourne-Again SHell -Reply-To: chet@po.cwru.edu -Followup-To: poster -Approved: news-answers-request@MIT.EDU - -Archive-name: unix-faq/shell/bash -Posting-Frequency: monthly -Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Fri May 11 16:18:55 EDT 2007 -FAQ-Version: 3.36 -Bash-Version: 3.2 -URL: ftp://ftp.cwru.edu/pub/bash/FAQ -Maintainer: chet@po.cwru.edu (Chet Ramey) - -This is the Bash FAQ, version 3.36, for Bash version 3.2. - -This document contains a set of frequently-asked questions concerning -Bash, the GNU Bourne-Again Shell. Bash is a freely-available command -interpreter with advanced features for both interactive use and shell -programming. - -Another good source of basic information about shells is the collection -of FAQ articles periodically posted to comp.unix.shell. - -Questions and comments concerning this document should be sent to -chet.ramey@case.edu. - -This document is available for anonymous FTP with the URL - -ftp://ftp.cwru.edu/pub/bash/FAQ - -The Bash home page is http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html - ----------- -Contents: - -Section A: The Basics - -A1) What is it? -A2) What's the latest version? -A3) Where can I get it? -A4) On what machines will bash run? -A5) Will bash run on operating systems other than Unix? -A6) How can I build bash with gcc? -A7) How can I make bash my login shell? -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? -A9) What's the `POSIX Shell and Utilities standard'? -A10) What is the bash `posix mode'? - -Section B: The latest version - -B1) What's new in version 3.2? -B2) Are there any user-visible incompatibilities between bash-3.2 and - bash-2.05b? - -Section C: Differences from other Unix shells - -C1) How does bash differ from sh, the Bourne shell? -C2) How does bash differ from the Korn shell, version ksh88? -C3) Which new features in ksh-93 are not in bash, and which are? - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? -D2) Why doesn't bash treat brace expansions exactly like csh? -D3) Why doesn't bash have csh variable modifiers? -D4) How can I make my csh aliases work when I convert to bash? -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -Section E: Why does bash do certain things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? -E2) Why does bash sometimes say `Broken pipe'? -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? -E6) Why doesn't a while or for loop get suspended when I type ^Z? -E7) What about empty for loops in Makefiles? -E8) Why does the arithmetic evaluation code complain about `08'? -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? -E10) Why does `cd //' leave $PWD as `//'? -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? -E12) Why don't negative offsets in substring expansion work like I expect? -E13) Why does filename completion misbehave if a colon appears in the filename? -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause matching to stop working? - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? -G5) How do I get the current directory into my prompt? -G6) How can I rename "*.foo" to "*.bar"? -G7) How can I translate a filename from uppercase to lowercase? -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? -H2) What kind of bash documentation is there? -H3) What's coming in future versions? -H4) What's on the bash `wish list'? -H5) When will the next release appear? - ----------- -Section A: The Basics - -A1) What is it? - -Bash is a Unix command interpreter (shell). It is an implementation of -the Posix 1003.2 shell standard, and resembles the Korn and System V -shells. - -Bash contains a number of enhancements over those shells, both -for interactive use and shell programming. Features geared -toward interactive use include command line editing, command -history, job control, aliases, and prompt expansion. Programming -features include additional variable expansions, shell -arithmetic, and a number of variables and options to control -shell behavior. - -Bash was originally written by Brian Fox of the Free Software -Foundation. The current developer and maintainer is Chet Ramey -of Case Western Reserve University. - -A2) What's the latest version? - -The latest version is 3.2, first made available on 12 October, 2006. - -A3) Where can I get it? - -Bash is the GNU project's shell, and so is available from the -master GNU archive site, ftp.gnu.org, and its mirrors. The -latest version is also available for FTP from ftp.cwru.edu. -The following URLs tell how to get version 3.2: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-3.2.tar.gz - -Formatted versions of the documentation are available with the URLs: - -ftp://ftp.gnu.org/pub/gnu/bash/bash-doc-3.2.tar.gz -ftp://ftp.cwru.edu/pub/bash/bash-doc-3.2.tar.gz - -Any patches for the current version are available with the URL: - -ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/ - -A4) On what machines will bash run? - -Bash has been ported to nearly every version of Unix. All you -should have to do to build it on a machine for which a port -exists is to type `configure' and then `make'. The build process -will attempt to discover the version of Unix you have and tailor -itself accordingly, using a script created by GNU autoconf. - -More information appears in the file `INSTALL' in the distribution. - -The Bash web page (http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html) -explains how to obtain binary versions of bash for most of the major -commercial Unix systems. - -A5) Will bash run on operating systems other than Unix? - -Configuration specifics for Unix-like systems such as QNX and -LynxOS are included in the distribution. Bash-2.05 and later -versions should compile and run on Minix 2.0 (patches were -contributed), but I don't believe anyone has built bash-2.x on -earlier Minix versions yet. - -Bash has been ported to versions of Windows implementing the Win32 -programming interface. This includes Windows 95 and Windows NT. -The port was done by Cygnus Solutions (now part of Red Hat) as part -of their CYGWIN project. For more information about the project, see -http://www.cygwin.com/. - -Cygnus originally ported bash-1.14.7, and that port was part of their -early GNU-Win32 (the original name) releases. Cygnus has also done -ports of bash-2.05b and bash-3.0 to the CYGWIN environment, and both -are available as part of their current release. Bash-3.2 is currently -being tested and should be available soon. - -Bash-2.05b and later versions should require no local Cygnus changes to -build and run under CYGWIN. - -DJ Delorie has a port of bash-2.x which runs under MS-DOS, as part -of the DJGPP project. For more information on the project, see - -http://www.delorie.com/djgpp/ - -I have been told that the original DJGPP port was done by Daisuke Aoyama. - -Mark Elbrecht has sent me notice that bash-2.04 -is available for DJGPP V2. The files are available as: - -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204b.zip binary -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204d.zip documentation -ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/bsh204s.zip source - -Mark began to work with bash-2.05, but I don't know the current status. - -Bash-3.0 compiles and runs with no modifications under Microsoft's Services -for Unix (SFU), once known as Interix. I do not anticipate any problems -with building bash-3.1 or bash-3.2. - -A6) How can I build bash with gcc? - -Bash configures to use gcc by default if it is available. Read the -file INSTALL in the distribution for more information. - -A7) How can I make bash my login shell? - -Some machines let you use `chsh' to change your login shell. Other -systems use `passwd -s' or `passwd -e'. If one of these works for -you, that's all you need. Note that many systems require the full -pathname to a shell to appear in /etc/shells before you can make it -your login shell. For this, you may need the assistance of your -friendly local system administrator. - -If you cannot do this, you can still use bash as your login shell, but -you need to perform some tricks. The basic idea is to add a command -to your login shell's startup file to replace your login shell with -bash. - -For example, if your login shell is csh or tcsh, and you have installed -bash in /usr/gnu/bin/bash, add the following line to ~/.login: - - if ( -f /usr/gnu/bin/bash ) exec /usr/gnu/bin/bash --login - -(the `--login' tells bash that it is a login shell). - -It's not a good idea to put this command into ~/.cshrc, because every -csh you run without the `-f' option, even ones started to run csh scripts, -reads that file. If you must put the command in ~/.cshrc, use something -like - - if ( $?prompt ) exec /usr/gnu/bin/bash --login - -to ensure that bash is exec'd only when the csh is interactive. - -If your login shell is sh or ksh, you have to do two things. - -First, create an empty file in your home directory named `.bash_profile'. -The existence of this file will prevent the exec'd bash from trying to -read ~/.profile, and re-execing itself over and over again. ~/.bash_profile -is the first file bash tries to read initialization commands from when -it is invoked as a login shell. - -Next, add a line similar to the above to ~/.profile: - - [ -f /usr/gnu/bin/bash ] && [ -x /usr/gnu/bin/bash ] && \ - exec /usr/gnu/bin/bash --login - -This will cause login shells to replace themselves with bash running as -a login shell. Once you have this working, you can copy your initialization -code from ~/.profile to ~/.bash_profile. - -I have received word that the recipe supplied above is insufficient for -machines running CDE. CDE has a maze of twisty little startup files, all -slightly different. - -If you cannot change your login shell in the password file to bash, you -will have to (apparently) live with CDE using the shell in the password -file to run its startup scripts. If you have changed your shell to bash, -there is code in the CDE startup files (on Solaris, at least) that attempts -to do the right thing. It is, however, often broken, and may require that -you use the $BASH_ENV trick described below. - -`dtterm' claims to use $SHELL as the default program to start, so if you -can change $SHELL in the CDE startup files, you should be able to use bash -in your terminal windows. - -Setting DTSOURCEPROFILE in ~/.dtprofile will cause the `Xsession' program -to read your login shell's startup files. You may be able to use bash for -the rest of the CDE programs by setting SHELL to bash in ~/.dtprofile as -well, but I have not tried this. - -You can use the above `exec' recipe to start bash when not logging in with -CDE by testing the value of the DT variable: - - if [ -n "$DT" ]; then - [ -f /usr/gnu/bin/bash ] && exec /usr/gnu/bin/bash --login - fi - -If CDE starts its shells non-interactively during login, the login shell -startup files (~/.profile, ~/.bash_profile) will not be sourced at login. -To get around this problem, append a line similar to the following to your -~/.dtprofile: - - BASH_ENV=${HOME}/.bash_profile ; export BASH_ENV - -and add the following line to the beginning of ~/.bash_profile: - - unset BASH_ENV - -A8) I just changed my login shell to bash, and now I can't FTP into my - machine. Why not? - -You must add the full pathname to bash to the file /etc/shells. As -noted in the answer to the previous question, many systems require -this before you can make bash your login shell. - -Most versions of ftpd use this file to prohibit `special' users -such as `uucp' and `news' from using FTP. - -A9) What's the `POSIX Shell and Utilities standard'? - -POSIX is a name originally coined by Richard Stallman for a -family of open system standards based on UNIX. There are a -number of aspects of UNIX under consideration for -standardization, from the basic system services at the system -call and C library level to applications and tools to system -administration and management. Each area of standardization is -assigned to a working group in the 1003 series. - -The POSIX Shell and Utilities standard was originally developed by -IEEE Working Group 1003.2 (POSIX.2). Today it has been merged with -the original 1003.1 Working Group and is maintained by the Austin -Group (a joint working group of the IEEE, The Open Group and -ISO/IEC SC22/WG15). Today the Shell and Utilities are a volume -within the set of documents that make up IEEE Std 1003.1-2001, and -thus now the former POSIX.2 (from 1992) is now part of the current -POSIX.1 standard (POSIX 1003.1-2001). - -The Shell and Utilities volume concentrates on the command -interpreter interface and utility programs commonly executed from -the command line or by other programs. The standard is freely -available on the web at http://www.UNIX-systems.org/version3/ . -Work continues at the Austin Group on maintenance issues; see -http://www.opengroup.org/austin/ to join the discussions. - -Bash is concerned with the aspects of the shell's behavior defined -by the POSIX Shell and Utilities volume. The shell command -language has of course been standardized, including the basic flow -control and program execution constructs, I/O redirection and -pipelining, argument handling, variable expansion, and quoting. - -The `special' builtins, which must be implemented as part of the -shell to provide the desired functionality, are specified as -being part of the shell; examples of these are `eval' and -`export'. Other utilities appear in the sections of POSIX not -devoted to the shell which are commonly (and in some cases must -be) implemented as builtin commands, such as `read' and `test'. -POSIX also specifies aspects of the shell's interactive -behavior as part of the UPE, including job control and command -line editing. Only vi-style line editing commands have been -standardized; emacs editing commands were left out due to -objections. - -The latest version of the POSIX Shell and Utilities standard is -available (now updated to the 2004 Edition) as part of the Single -UNIX Specification Version 3 at - -http://www.UNIX-systems.org/version3/ - -A10) What is the bash `posix mode'? - -Although bash is an implementation of the POSIX shell -specification, there are areas where the bash default behavior -differs from that spec. The bash `posix mode' changes the bash -behavior in these areas so that it obeys the spec more closely. - -Posix mode is entered by starting bash with the --posix or -'-o posix' option or executing `set -o posix' after bash is running. - -The specific aspects of bash which change when posix mode is -active are listed in the file POSIX in the bash distribution. -They are also listed in a section in the Bash Reference Manual -(from which that file is generated). - -Section B: The latest version - -B1) What's new in version 3.2? - -Bash-3.2 is the second maintenance release of the third major release of -bash. It contains the following significant new features (see the manual -page for complete descriptions and the CHANGES and NEWS files in the -bash-3.2 distribution). - -o Bash-3.2 now checks shell scripts for NUL characters rather than non-printing - characters when deciding whether or not a script is a binary file. - -o Quoting the string argument to the [[ command's =~ (regexp) operator now - forces string matching, as with the other pattern-matching operators. - -A short feature history dating from Bash-2.0: - -Bash-3.1 contained the following new features: - -o Bash-3.1 may now be configured and built in a mode that enforces strict - POSIX compliance. - -o The `+=' assignment operator, which appends to the value of a string or - array variable, has been implemented. - -o It is now possible to ignore case when matching in contexts other than - filename generation using the new `nocasematch' shell option. - -Bash-3.0 contained the following new features: - -o Features to support the bash debugger have been implemented, and there - is a new `extdebug' option to turn the non-default options on - -o HISTCONTROL is now a colon-separated list of options and has been - extended with a new `erasedups' option that will result in only one - copy of a command being kept in the history list - -o Brace expansion has been extended with a new {x..y} form, producing - sequences of digits or characters - -o Timestamps are now kept with history entries, with an option to save - and restore them from the history file; there is a new HISTTIMEFORMAT - variable describing how to display the timestamps when listing history - entries - -o The `[[' command can now perform extended regular expression (egrep-like) - matching, with matched subexpressions placed in the BASH_REMATCH array - variable - -o A new `pipefail' option causes a pipeline to return a failure status if - any command in it fails - -o The `jobs', `kill', and `wait' builtins now accept job control notation - in their arguments even if job control is not enabled - -o The `gettext' package and libintl have been integrated, and the shell - messages may be translated into other languages - -Bash-2.05b introduced the following new features: - -o support for multibyte characters has been added to both bash and readline - -o the DEBUG trap is now run *before* simple commands, ((...)) commands, - [[...]] conditional commands, and for ((...)) loops - -o the shell now performs arithmetic in the largest integer size the machine - supports (intmax_t) - -o there is a new \D{...} prompt expansion; passes the `...' to strftime(3) - and inserts the result into the expanded prompt - -o there is a new `here-string' redirection operator: <<< word - -o when displaying variables, function attributes and definitions are shown - separately, allowing them to be re-used as input (attempting to re-use - the old output would result in syntax errors). - -o `read' has a new `-u fd' option to read from a specified file descriptor - -o the bash debugger in examples/bashdb has been modified to work with the - new DEBUG trap semantics, the command set has been made more gdb-like, - and the changes to $LINENO make debugging functions work better - -o the expansion of $LINENO inside a shell function is only relative to the - function start if the shell is interactive -- if the shell is running a - script, $LINENO expands to the line number in the script. This is as - POSIX-2001 requires - -Bash-2.05a introduced the following new features: - -o The `printf' builtin has undergone major work - -o There is a new read-only `shopt' option: login_shell, which is set by - login shells and unset otherwise - -o New `\A' prompt string escape sequence; expanding to time in 24-hour - HH:MM format - -o New `-A group/-g' option to complete and compgen; goes group name - completion - -o New [+-]O invocation option to set and unset `shopt' options at startup - -o ksh-like `ERR' trap - -o `for' loops now allow empty word lists after the `in' reserved word - -o new `hard' and `soft' arguments for the `ulimit' builtin - -o Readline can be configured to place the user at the same point on the line - when retrieving commands from the history list - -o Readline can be configured to skip `hidden' files (filenames with a leading - `.' on Unix) when performing completion - -Bash-2.05 introduced the following new features: - -o This version has once again reverted to using locales and strcoll(3) when - processing pattern matching bracket expressions, as POSIX requires. -o Added a new `--init-file' invocation argument as a synonym for `--rcfile', - per the new GNU coding standards. -o The /dev/tcp and /dev/udp redirections now accept service names as well as - port numbers. -o `complete' and `compgen' now take a `-o value' option, which controls some - of the aspects of that compspec. Valid values are: - - default - perform bash default completion if programmable - completion produces no matches - dirnames - perform directory name completion if programmable - completion produces no matches - filenames - tell readline that the compspec produces filenames, - so it can do things like append slashes to - directory names and suppress trailing spaces -o A new loadable builtin, realpath, which canonicalizes and expands symlinks - in pathname arguments. -o When `set' is called without options, it prints function defintions in a - way that allows them to be reused as input. This affects `declare' and - `declare -p' as well. This only happens when the shell is not in POSIX - mode, since POSIX.2 forbids this behavior. - -Bash-2.04 introduced the following new features: - -o Programmable word completion with the new `complete' and `compgen' builtins; - examples are provided in examples/complete/complete-examples -o `history' has a new `-d' option to delete a history entry -o `bind' has a new `-x' option to bind key sequences to shell commands -o The prompt expansion code has new `\j' and `\l' escape sequences -o The `no_empty_cmd_completion' shell option, if enabled, inhibits - command completion when TAB is typed on an empty line -o `help' has a new `-s' option to print a usage synopsis -o New arithmetic operators: var++, var--, ++var, --var, expr1,expr2 (comma) -o New ksh93-style arithmetic for command: - for ((expr1 ; expr2; expr3 )); do list; done -o `read' has new options: `-t', `-n', `-d', `-s' -o The redirection code handles several filenames specially: /dev/fd/N, - /dev/stdin, /dev/stdout, /dev/stderr -o The redirection code now recognizes /dev/tcp/HOST/PORT and - /dev/udp/HOST/PORT and tries to open a TCP or UDP socket, respectively, - to the specified port on the specified host -o The ${!prefix*} expansion has been implemented -o A new FUNCNAME variable, which expands to the name of a currently-executing - function -o The GROUPS variable is no longer readonly -o A new shopt `xpg_echo' variable, to control the behavior of echo with - respect to backslash-escape sequences at runtime -o The NON_INTERACTIVE_LOGIN_SHELLS #define has returned - -The version of Readline released with Bash-2.04, Readline-4.1, had several -new features as well: - -o Parentheses matching is always compiled into readline, and controllable - with the new `blink-matching-paren' variable -o The history-search-forward and history-search-backward functions now leave - point at the end of the line when the search string is empty, like - reverse-search-history, and forward-search-history -o A new function for applications: rl_on_new_line_with_prompt() -o New variables for applications: rl_already_prompted, and rl_gnu_readline_p - - -Bash-2.03 had very few new features, in keeping with the convention -that odd-numbered releases provide mainly bug fixes. A number of new -features were added to Readline, mostly at the request of the Cygnus -folks. - -A new shopt option, `restricted_shell', so that startup files can test - whether or not the shell was started in restricted mode -Filename generation is now performed on the words between ( and ) in - compound array assignments (this is really a bug fix) -OLDPWD is now auto-exported, as POSIX.2 requires -ENV and BASH_ENV are read-only variables in a restricted shell -Bash may now be linked against an already-installed Readline library, - as long as the Readline library is version 4 or newer -All shells begun with the `--login' option will source the login shell - startup files, even if the shell is not interactive - -There were lots of changes to the version of the Readline library released -along with Bash-2.03. For a complete list of the changes, read the file -CHANGES in the Bash-2.03 distribution. - -Bash-2.02 contained the following new features: - -a new version of malloc (based on the old GNU malloc code in previous - bash versions) that is more page-oriented, more conservative - with memory usage, does not `orphan' large blocks when they - are freed, is usable on 64-bit machines, and has allocation - checking turned on unconditionally -POSIX.2-style globbing character classes ([:alpha:], [:alnum:], etc.) -POSIX.2-style globbing equivalence classes -POSIX.2-style globbing collating symbols -the ksh [[...]] extended conditional command -the ksh egrep-style extended pattern matching operators -a new `printf' builtin -the ksh-like $(, &>, >|, <<<, [n]<&word-, [n]>&word- - prompt string special char translation and variable expansion - auto-export of variables in initial environment - command search finds functions before builtins - bash return builtin will exit a file sourced with `.' - builtins: cd -/-L/-P, exec -l/-c/-a, echo -e/-E, hash -d/-l/-p/-t. - export -n/-f/-p/name=value, pwd -L/-P, - read -e/-p/-a/-t/-n/-d/-s/-u, - readonly -a/-f/name=value, trap -l, set +o, - set -b/-m/-o option/-h/-p/-B/-C/-H/-P, - unset -f/-v, ulimit -i/-m/-p/-q/-u/-x, - type -a/-p/-t/-f/-P, suspend -f, kill -n, - test -o optname/s1 == s2/s1 < s2/s1 > s2/-nt/-ot/-ef/-O/-G/-S - bash reads ~/.bashrc for interactive shells, $ENV for non-interactive - bash restricted shell mode is more extensive - bash allows functions and variables with the same name - brace expansion - tilde expansion - arithmetic expansion with $((...)) and `let' builtin - the `[[...]]' extended conditional command - process substitution - aliases and alias/unalias builtins - local variables in functions and `local' builtin - readline and command-line editing with programmable completion - command history and history/fc builtins - csh-like history expansion - other new bash builtins: bind, command, compgen, complete, builtin, - declare/typeset, dirs, enable, fc, help, - history, logout, popd, pushd, disown, shopt, - printf - exported functions - filename generation when using output redirection (command >a*) - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - variable assignments preceding commands affect only that command, - even for builtins and functions - posix mode and strict posix conformance - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr, - /dev/tcp/host/port, /dev/udp/host/port - debugger support, including `caller' builtin and new variables - RETURN trap - the `+=' assignment operator - - -Things sh has that bash does not: - uses variable SHACCT to do shell accounting - includes `stop' builtin (bash can use alias stop='kill -s STOP') - `newgrp' builtin - turns on job control if called as `jsh' - $TIMEOUT (like bash $TMOUT) - `^' is a synonym for `|' - new SVR4.2 sh builtins: mldmode, priv - -Implementation differences: - redirection to/from compound commands causes sh to create a subshell - bash does not allow unbalanced quotes; sh silently inserts them at EOF - bash does not mess with signal 11 - sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 - bash splits only the results of expansions on IFS, using POSIX.2 - field splitting rules; sh splits all words on IFS - sh does not allow MAILCHECK to be unset (?) - sh does not allow traps on SIGALRM or SIGCHLD - bash allows multiple option arguments when invoked (e.g. -x -v); - sh allows only a single option argument (`sh -x -v' attempts - to open a file named `-v', and, on SunOS 4.1.4, dumps core. - On Solaris 2.4 and earlier versions, sh goes into an infinite - loop.) - sh exits a script if any builtin fails; bash exits only if one of - the POSIX.2 `special' builtins fails - -C2) How does bash differ from the Korn shell, version ksh88? - -Things bash has or uses that ksh88 does not: - long invocation options - [-+]O invocation option - -l invocation option - `!' reserved word - arithmetic for command: for ((expr1 ; expr2; expr3 )); do list; done - arithmetic in largest machine-supported size (intmax_t) - posix mode and posix conformance - command hashing - tilde expansion for assignment statements that look like $PATH - process substitution with named pipes if /dev/fd is not available - the ${!param} indirect parameter expansion operator - the ${!param*} prefix expansion operator - the ${param:offset[:length]} parameter substring operator - the ${param/pat[/string]} parameter pattern substitution operator - variables: BASH, BASH_VERSION, BASH_VERSINFO, UID, EUID, SHLVL, - TIMEFORMAT, HISTCMD, HOSTTYPE, OSTYPE, MACHTYPE, - HISTFILESIZE, HISTIGNORE, HISTCONTROL, PROMPT_COMMAND, - IGNOREEOF, FIGNORE, INPUTRC, HOSTFILE, DIRSTACK, - PIPESTATUS, HOSTNAME, OPTERR, SHELLOPTS, GLOBIGNORE, - GROUPS, FUNCNAME, histchars, auto_resume - prompt expansion with backslash escapes and command substitution - redirection: &> (stdout and stderr), <<<, [n]<&word-, [n]>&word- - more extensive and extensible editing and programmable completion - builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, - exec -l/-c/-a, fc -s, export -n/-f/-p, hash, help, history, - jobs -x/-r/-s, kill -s/-n/-l, local, logout, popd, pushd, - read -e/-p/-a/-t/-n/-d/-s, readonly -a/-n/-f/-p, - set -o braceexpand/-o histexpand/-o interactive-comments/ - -o notify/-o physical/-o posix/-o hashall/-o onecmd/ - -h/-B/-C/-b/-H/-P, set +o, suspend, trap -l, type, - typeset -a/-F/-p, ulimit -i/-q/-u/-x, umask -S, alias -p, - shopt, disown, printf, complete, compgen - `!' csh-style history expansion - POSIX.2-style globbing character classes - POSIX.2-style globbing equivalence classes - POSIX.2-style globbing collating symbols - egrep-like extended pattern matching operators - case-insensitive pattern matching and globbing - `**' arithmetic operator to do exponentiation - redirection to /dev/fd/N, /dev/stdin, /dev/stdout, /dev/stderr - arrays of unlimited size - TMOUT is default timeout for `read' and `select' - debugger support, including the `caller' builtin - RETURN trap - Timestamps in history entries - {x..y} brace expansion - The `+=' assignment operator - -Things ksh88 has or uses that bash does not: - tracked aliases (alias -t) - variables: ERRNO, FPATH, EDITOR, VISUAL - co-processes (|&, >&p, <&p) - weirdly-scoped functions - typeset +f to list all function names without definitions - text of command history kept in a file, not memory - builtins: alias -x, cd old new, newgrp, print, - read -p/-s/var?prompt, set -A/-o gmacs/ - -o bgnice/-o markdirs/-o trackall/-o viraw/-s, - typeset -H/-L/-R/-Z/-A/-ft/-fu/-fx/-l/-u/-t, whence - using environment to pass attributes of exported variables - arithmetic evaluation done on arguments to some builtins - reads .profile from $PWD when invoked as login shell - -Implementation differences: - ksh runs last command of a pipeline in parent shell context - bash has brace expansion by default (ksh88 compile-time option) - bash has fixed startup file for all interactive shells; ksh reads $ENV - bash has exported functions - bash command search finds functions before builtins - bash waits for all commands in pipeline to exit before returning status - emacs-mode editing has some slightly different key bindings - -C3) Which new features in ksh-93 are not in bash, and which are? - -New things in ksh-93 not in bash-3.2: - associative arrays - floating point arithmetic and variables - math library functions - ${!name[sub]} name of subscript for associative array - `.' is allowed in variable names to create a hierarchical namespace - more extensive compound assignment syntax - discipline functions - `sleep' and `getconf' builtins (bash has loadable versions) - typeset -n and `nameref' variables - KEYBD trap - variables: .sh.edchar, .sh.edmode, .sh.edcol, .sh.edtext, .sh.version, - .sh.name, .sh.subscript, .sh.value, .sh.match, HISTEDIT - backreferences in pattern matching (\N) - `&' operator in pattern lists for matching - print -f (bash uses printf) - `fc' has been renamed to `hist' - `.' can execute shell functions - exit statuses between 0 and 255 - FPATH and PATH mixing - getopts -a - -I invocation option - printf %H, %P, %T, %Z modifiers, output base for %d - lexical scoping for local variables in `ksh' functions - no scoping for local variables in `POSIX' functions - -New things in ksh-93 present in bash-3.2: - [n]<&word- and [n]>&word- redirections (combination dup and close) - for (( expr1; expr2; expr3 )) ; do list; done - arithmetic for command - ?:, ++, --, `expr1 , expr2' arithmetic operators - expansions: ${!param}, ${param:offset[:len]}, ${param/pat[/str]}, - ${!param*} - compound array assignment - the `!' reserved word - loadable builtins -- but ksh uses `builtin' while bash uses `enable' - `command', `builtin', `disown' builtins - new $'...' and $"..." quoting - FIGNORE (but bash uses GLOBIGNORE), HISTCMD - set -o notify/-C - changes to kill builtin - read -A (bash uses read -a) - read -t/-d - trap -p - exec -c/-a - `.' restores the positional parameters when it completes - POSIX.2 `test' - umask -S - unalias -a - command and arithmetic substitution performed on PS1, PS4, and ENV - command name completion - ENV processed only for interactive shells - set -o pipefail - The `+=' assignment operator - -Section D: Why does bash do some things differently than other Unix shells? - -D1) Why does bash run a different version of `command' than - `which command' says it will? - -On many systems, `which' is actually a csh script that assumes -you're running csh. In tcsh, `which' and its cousin `where' -are builtins. On other Unix systems, `which' is a perl script -that uses the PATH environment variable. Many Linux distributions -use GNU `which', which is a C program that can understand shell -aliases. - -The csh script version reads the csh startup files from your -home directory and uses those to determine which `command' will -be invoked. Since bash doesn't use any of those startup files, -there's a good chance that your bash environment differs from -your csh environment. The bash `type' builtin does everything -`which' does, and will report correct results for the running -shell. If you're really wedded to the name `which', try adding -the following function definition to your .bashrc: - - which() - { - builtin type "$@" - } - -If you're moving from tcsh and would like to bring `where' along -as well, use this function: - - where() - { - builtin type -a "$@" - } - -D2) Why doesn't bash treat brace expansions exactly like csh? - -The only difference between bash and csh brace expansion is that -bash requires a brace expression to contain at least one unquoted -comma if it is to be expanded. Any brace-surrounded word not -containing an unquoted comma is left unchanged by the brace -expansion code. This affords the greatest degree of sh -compatibility. - -Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -D3) Why doesn't bash have csh variable modifiers? - -Posix has specified a more powerful, albeit somewhat more cryptic, -mechanism cribbed from ksh, and bash implements it. - -${parameter%word} - Remove smallest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the suffix matched by the pattern deleted. - - x=file.c - echo ${x%.c}.o - -->file.o - -${parameter%%word} - - Remove largest suffix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the suffix matched by the pattern deleted. - - x=posix/src/std - echo ${x%%/*} - -->posix - -${parameter#word} - Remove smallest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - smallest portion of the prefix matched by the pattern deleted. - - x=$HOME/src/cmd - echo ${x#$HOME} - -->/src/cmd - -${parameter##word} - Remove largest prefix pattern. The WORD is expanded to produce - a pattern. It then expands to the value of PARAMETER, with the - largest portion of the prefix matched by the pattern deleted. - - x=/one/two/three - echo ${x##*/} - -->three - - -Given - a=/a/b/c/d - b=b.xxx - - csh bash result - --- ---- ------ - $a:h ${a%/*} /a/b/c - $a:t ${a##*/} d - $b:r ${b%.*} b - $b:e ${b##*.} xxx - - -D4) How can I make my csh aliases work when I convert to bash? - -Bash uses a different syntax to support aliases than csh does. -The details can be found in the documentation. We have provided -a shell script which does most of the work of conversion for you; -this script can be found in ./examples/misc/aliasconv.sh. Here is -how you use it: - -Start csh in the normal way for you. (e.g., `csh') - -Pipe the output of `alias' through `aliasconv.sh', saving the -results into `bash_aliases': - - alias | bash aliasconv.sh >bash_aliases - -Edit `bash_aliases', carefully reading through any created -functions. You will need to change the names of some csh specific -variables to the bash equivalents. The script converts $cwd to -$PWD, $term to $TERM, $home to $HOME, $user to $USER, and $prompt -to $PS1. You may also have to add quotes to avoid unwanted -expansion. - -For example, the csh alias: - - alias cd 'cd \!*; echo $cwd' - -is converted to the bash function: - - cd () { command cd "$@"; echo $PWD ; } - -The only thing that needs to be done is to quote $PWD: - - cd () { command cd "$@"; echo "$PWD" ; } - -Merge the edited file into your ~/.bashrc. - -There is an additional, more ambitious, script in -examples/misc/cshtobash that attempts to convert your entire csh -environment to its bash equivalent. This script can be run as -simply `cshtobash' to convert your normal interactive -environment, or as `cshtobash ~/.login' to convert your login -environment. - -D5) How can I pipe standard output and standard error from one command to - another, like csh does with `|&'? - -Use - command 2>&1 | command2 - -The key is to remember that piping is performed before redirection, so -file descriptor 1 points to the pipe when it is duplicated onto file -descriptor 2. - -D6) Now that I've converted from ksh to bash, are there equivalents to - ksh features like autoloaded functions and the `whence' command? - -There are features in ksh-88 and ksh-93 that do not have direct bash -equivalents. Most, however, can be emulated with very little trouble. - -ksh-88 feature Bash equivalent --------------- --------------- -compiled-in aliases set up aliases in .bashrc; some ksh aliases are - bash builtins (hash, history, type) -coprocesses named pipe pairs (one for read, one for write) -typeset +f declare -F -cd, print, whence function substitutes in examples/functions/kshenv -autoloaded functions examples/functions/autoload is the same as typeset -fu -read var?prompt read -p prompt var - -ksh-93 feature Bash equivalent --------------- --------------- -sleep, getconf Bash has loadable versions in examples/loadables -${.sh.version} $BASH_VERSION -print -f printf -hist alias hist=fc -$HISTEDIT $FCEDIT - -Section E: How can I get bash to do certain things, and why does bash do - things the way it does? - -E1) Why is the bash builtin `test' slightly different from /bin/test? - -The specific example used here is [ ! x -o x ], which is false. - -Bash's builtin `test' implements the Posix.2 spec, which can be -summarized as follows (the wording is due to David Korn): - -Here is the set of rules for processing test arguments. - - 0 Args: False - 1 Arg: True iff argument is not null. - 2 Args: If first arg is !, True iff second argument is null. - If first argument is unary, then true if unary test is true - Otherwise error. - 3 Args: If second argument is a binary operator, do binary test of $1 $3 - If first argument is !, negate two argument test of $2 $3 - If first argument is `(' and third argument is `)', do the - one-argument test of the second argument. - Otherwise error. - 4 Args: If first argument is !, negate three argument test of $2 $3 $4. - Otherwise unspecified - 5 or more Args: unspecified. (Historical shells would use their - current algorithm). - -The operators -a and -o are considered binary operators for the purpose -of the 3 Arg case. - -As you can see, the test becomes (not (x or x)), which is false. - -E2) Why does bash sometimes say `Broken pipe'? - -If a sequence of commands appears in a pipeline, and one of the -reading commands finishes before the writer has finished, the -writer receives a SIGPIPE signal. Many other shells special-case -SIGPIPE as an exit status in the pipeline and do not report it. -For example, in: - - ps -aux | head - -`head' can finish before `ps' writes all of its output, and ps -will try to write on a pipe without a reader. In that case, bash -will print `Broken pipe' to stderr when ps is killed by a -SIGPIPE. - -As of bash-3.1, bash does not report SIGPIPE errors by default. You -can build a version of bash that will report such errors. - -E3) When I have terminal escape sequences in my prompt, why does bash - wrap lines at the wrong column? - -Readline, the line editing library that bash uses, does not know -that the terminal escape sequences do not take up space on the -screen. The redisplay code assumes, unless told otherwise, that -each character in the prompt is a `printable' character that -takes up one character position on the screen. - -You can use the bash prompt expansion facility (see the PROMPTING -section in the manual page) to tell readline that sequences of -characters in the prompt strings take up no screen space. - -Use the \[ escape to begin a sequence of non-printing characters, -and the \] escape to signal the end of such a sequence. - -E4) If I pipe the output of a command into `read variable', why doesn't - the output show up in $variable when the read command finishes? - -This has to do with the parent-child relationship between Unix -processes. It affects all commands run in pipelines, not just -simple calls to `read'. For example, piping a command's output -into a `while' loop that repeatedly calls `read' will result in -the same behavior. - -Each element of a pipeline, even a builtin or shell function, -runs in a separate process, a child of the shell running the -pipeline. A subprocess cannot affect its parent's environment. -When the `read' command sets the variable to the input, that -variable is set only in the subshell, not the parent shell. When -the subshell exits, the value of the variable is lost. - -Many pipelines that end with `read variable' can be converted -into command substitutions, which will capture the output of -a specified command. The output can then be assigned to a -variable: - - grep ^gnu /usr/lib/news/active | wc -l | read ngroup - -can be converted into - - ngroup=$(grep ^gnu /usr/lib/news/active | wc -l) - -This does not, unfortunately, work to split the text among -multiple variables, as read does when given multiple variable -arguments. If you need to do this, you can either use the -command substitution above to read the output into a variable -and chop up the variable using the bash pattern removal -expansion operators or use some variant of the following -approach. - -Say /usr/local/bin/ipaddr is the following shell script: - -#! /bin/sh -host `hostname` | awk '/address/ {print $NF}' - -Instead of using - - /usr/local/bin/ipaddr | read A B C D - -to break the local machine's IP address into separate octets, use - - OIFS="$IFS" - IFS=. - set -- $(/usr/local/bin/ipaddr) - IFS="$OIFS" - A="$1" B="$2" C="$3" D="$4" - -Beware, however, that this will change the shell's positional -parameters. If you need them, you should save them before doing -this. - -This is the general approach -- in most cases you will not need to -set $IFS to a different value. - -Some other user-supplied alternatives include: - -read A B C D << HERE - $(IFS=.; echo $(/usr/local/bin/ipaddr)) -HERE - -and, where process substitution is available, - -read A B C D < <(IFS=.; echo $(/usr/local/bin/ipaddr)) - -E5) I have a bunch of shell scripts that use backslash-escaped characters - in arguments to `echo'. Bash doesn't interpret these characters. Why - not, and how can I make it understand them? - -This is the behavior of echo on most Unix System V machines. - -The bash builtin `echo' is modeled after the 9th Edition -Research Unix version of `echo'. It does not interpret -backslash-escaped characters in its argument strings by default; -it requires the use of the -e option to enable the -interpretation. The System V echo provides no way to disable the -special characters; the bash echo has a -E option to disable -them. - -There is a configuration option that will make bash behave like -the System V echo and interpret things like `\t' by default. Run -configure with the --enable-xpg-echo-default option to turn this -on. Be aware that this will cause some of the tests run when you -type `make tests' to fail. - -There is a shell option, `xpg_echo', settable with `shopt', that will -change the behavior of echo at runtime. Enabling this option turns -on expansion of backslash-escape sequences. - -E6) Why doesn't a while or for loop get suspended when I type ^Z? - -This is a consequence of how job control works on Unix. The only -thing that can be suspended is the process group. This is a single -command or pipeline of commands that the shell forks and executes. - -When you run a while or for loop, the only thing that the shell forks -and executes are any commands in the while loop test and commands in -the loop bodies. These, therefore, are the only things that can be -suspended when you type ^Z. - -If you want to be able to stop the entire loop, you need to put it -within parentheses, which will force the loop into a subshell that -may be stopped (and subsequently restarted) as a single unit. - -E7) What about empty for loops in Makefiles? - -It's fairly common to see constructs like this in automatically-generated -Makefiles: - -SUBDIRS = @SUBDIRS@ - - ... - -subdirs-clean: - for d in ${SUBDIRS}; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -When SUBDIRS is empty, this results in a command like this being passed to -bash: - - for d in ; do - ( cd $d && ${MAKE} ${MFLAGS} clean ) - done - -In versions of bash before bash-2.05a, this was a syntax error. If the -reserved word `in' was present, a word must follow it before the semicolon -or newline. The language in the manual page referring to the list of words -being empty referred to the list after it is expanded. These versions of -bash required that there be at least one word following the `in' when the -construct was parsed. - -The idiomatic Makefile solution is something like: - -SUBDIRS = @SUBDIRS@ - -subdirs-clean: - subdirs=$SUBDIRS ; for d in $$subdirs; do \ - ( cd $$d && ${MAKE} ${MFLAGS} clean ) \ - done - -The latest updated POSIX standard has changed this: the word list -is no longer required. Bash versions 2.05a and later accept the -new syntax. - -E8) Why does the arithmetic evaluation code complain about `08'? - -The bash arithmetic evaluation code (used for `let', $(()), (()), and in -other places), interprets a leading `0' in numeric constants as denoting -an octal number, and a leading `0x' as denoting hexadecimal. This is -in accordance with the POSIX.2 spec, section 2.9.2.1, which states that -arithmetic constants should be handled as signed long integers as defined -by the ANSI/ISO C standard. - -The POSIX.2 interpretation committee has confirmed this: - -http://www.pasc.org/interps/unofficial/db/p1003.2/pasc-1003.2-173.html - -E9) Why does the pattern matching expression [A-Z]* match files beginning - with every letter except `z'? - -Bash-2.03, Bash-2.05 and later versions honor the current locale setting -when processing ranges within pattern matching bracket expressions ([A-Z]). -This is what POSIX.2 and SUSv3/XPG6 specify. - -The behavior of the matcher in bash-2.05 and later versions depends on the -current LC_COLLATE setting. Setting this variable to `C' or `POSIX' will -result in the traditional behavior ([A-Z] matches all uppercase ASCII -characters). Many other locales, including the en_US locale (the default -on many US versions of Linux) collate the upper and lower case letters like -this: - - AaBb...Zz - -which means that [A-Z] matches every letter except `z'. Others collate like - - aAbBcC...zZ - -which means that [A-Z] matches every letter except `a'. - -The portable way to specify upper case letters is [:upper:] instead of -A-Z; lower case may be specified as [:lower:] instead of a-z. - -Look at the manual pages for setlocale(3), strcoll(3), and, if it is -present, locale(1). If you have locale(1), you can use it to find -your current locale information even if you do not have any of the -LC_ variables set. - -My advice is to put - - export LC_COLLATE=C - -into /etc/profile and inspect any shell scripts run from cron for -constructs like [A-Z]. This will prevent things like - - rm [A-Z]* - -from removing every file in the current directory except those beginning -with `z' and still allow individual users to change the collation order. -Users may put the above command into their own profiles as well, of course. - -E10) Why does `cd //' leave $PWD as `//'? - -POSIX.2, in its description of `cd', says that *three* or more leading -slashes may be replaced with a single slash when canonicalizing the -current working directory. - -This is, I presume, for historical compatibility. Certain versions of -Unix, and early network file systems, used paths of the form -//hostname/path to access `path' on server `hostname'. - -E11) If I resize my xterm while another program is running, why doesn't bash - notice the change? - -This is another issue that deals with job control. - -The kernel maintains a notion of a current terminal process group. Members -of this process group (processes whose process group ID is equal to the -current terminal process group ID) receive terminal-generated signals like -SIGWINCH. (For more details, see the JOB CONTROL section of the bash -man page.) - -If a terminal is resized, the kernel sends SIGWINCH to each member of -the terminal's current process group (the `foreground' process group). - -When bash is running with job control enabled, each pipeline (which may be -a single command) is run in its own process group, different from bash's -process group. This foreground process group receives the SIGWINCH; bash -does not. Bash has no way of knowing that the terminal has been resized. - -There is a `checkwinsize' option, settable with the `shopt' builtin, that -will cause bash to check the window size and adjust its idea of the -terminal's dimensions each time a process stops or exits and returns control -of the terminal to bash. Enable it with `shopt -s checkwinsize'. - -E12) Why don't negative offsets in substring expansion work like I expect? - -When substring expansion of the form ${param:offset[:length} is used, -an `offset' that evaluates to a number less than zero counts back from -the end of the expanded value of $param. - -When a negative `offset' begins with a minus sign, however, unexpected things -can happen. Consider - - a=12345678 - echo ${a:-4} - -intending to print the last four characters of $a. The problem is that -${param:-word} already has a well-defined meaning: expand to word if the -expanded value of param is unset or null, and $param otherwise. - -To use negative offsets that begin with a minus sign, separate the -minus sign and the colon with a space. - -E13) Why does filename completion misbehave if a colon appears in the filename? - -Filename completion (and word completion in general) may appear to behave -improperly if there is a colon in the word to be completed. - -The colon is special to readline's word completion code: it is one of the -characters that breaks words for the completer. Readline uses these characters -in sort of the same way that bash uses $IFS: they break or separate the words -the completion code hands to the application-specific or default word -completion functions. The original intent was to make it easy to edit -colon-separated lists (such as $PATH in bash) in various applications using -readline for input. - -This is complicated by the fact that some versions of the popular -`bash-completion' programmable completion package have problems with the -default completion behavior in the presence of colons. - -The current set of completion word break characters is available in bash as -the value of the COMP_WORDBREAKS variable. Removing `:' from that value is -enough to make the colon not special to completion: - -COMP_WORDBREAKS=${COMP_WORDBREAKS//:} - -You can also quote the colon with a backslash to achieve the same result -temporarily. - -E14) Why does quoting the pattern argument to the regular expression matching - conditional operator (=~) cause regexp matching to stop working? - -In versions of bash prior to bash-3.2, the effect of quoting the regular -expression argument to the [[ command's =~ operator was not specified. -The practical effect was that double-quoting the pattern argument required -backslashes to quote special pattern characters, which interfered with the -backslash processing performed by double-quoted word expansion and was -inconsistent with how the == shell pattern matching operator treated -quoted characters. - -In bash-3.2, the shell was changed to internally quote characters in single- -and double-quoted string arguments to the =~ operator, which suppresses the -special meaning of the characters special to regular expression processing -(`.', `[', `\', `(', `), `*', `+', `?', `{', `|', `^', and `$') and forces -them to be matched literally. This is consistent with how the `==' pattern -matching operator treats quoted portions of its pattern argument. - -Since the treatment of quoted string arguments was changed, several issues -have arisen, chief among them the problem of white space in pattern arguments -and the differing treatment of quoted strings between bash-3.1 and bash-3.2. -Both problems may be solved by using a shell variable to hold the pattern. -Since word splitting is not performed when expanding shell variables in all -operands of the [[ command, this allows users to quote patterns as they wish -when assigning the variable, then expand the values to a single string that -may contain whitespace. The first problem may be solved by using backslashes -or any other quoting mechanism to escape the white space in the patterns. - -Section F: Things to watch out for on certain Unix versions - -F1) Why can't I use command line editing in my `cmdtool'? - -The problem is `cmdtool' and bash fighting over the input. When -scrolling is enabled in a cmdtool window, cmdtool puts the tty in -`raw mode' to permit command-line editing using the mouse for -applications that cannot do it themselves. As a result, bash and -cmdtool each try to read keyboard input immediately, with neither -getting enough of it to be useful. - -This mode also causes cmdtool to not implement many of the -terminal functions and control sequences appearing in the -`sun-cmd' termcap entry. For a more complete explanation, see -that file examples/suncmd.termcap in the bash distribution. - -`xterm' is a better choice, and gets along with bash much more -smoothly. - -If you must use cmdtool, you can use the termcap description in -examples/suncmd.termcap. Set the TERMCAP variable to the terminal -description contained in that file, i.e. - -TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:' - -Then export TERMCAP and start a new cmdtool window from that shell. -The bash command-line editing should behave better in the new -cmdtool. If this works, you can put the assignment to TERMCAP -in your bashrc file. - -F2) I built bash on Solaris 2. Why do globbing expansions and filename - completion chop off the first few characters of each filename? - -This is the consequence of building bash on SunOS 5 and linking -with the libraries in /usr/ucblib, but using the definitions -and structures from files in /usr/include. - -The actual conflict is between the dirent structure in -/usr/include/dirent.h and the struct returned by the version of -`readdir' in libucb.a (a 4.3-BSD style `struct direct'). - -Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH -when configuring and building bash. This will ensure that you -use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you -link with libc before libucb. - -If you have installed the Sun C compiler, you may also need to -put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before -/usr/ucb. - -F3) Why does bash dump core after I interrupt username completion or - `~user' tilde expansion on a machine running NIS? - -This is a famous and long-standing bug in the SunOS YP (sorry, NIS) -client library, which is part of libc. - -The YP library code keeps static state -- a pointer into the data -returned from the server. When YP initializes itself (setpwent), -it looks at this pointer and calls free on it if it's non-null. -So far, so good. - -If one of the YP functions is interrupted during getpwent (the -exact function is interpretwithsave()), and returns NULL, the -pointer is freed without being reset to NULL, and the function -returns. The next time getpwent is called, it sees that this -pointer is non-null, calls free, and the bash free() blows up -because it's being asked to free freed memory. - -The traditional Unix mallocs allow memory to be freed multiple -times; that's probably why this has never been fixed. You can -run configure with the `--without-gnu-malloc' option to use -the C library malloc and avoid the problem. - -F4) I'm running SVR4.2. Why is the line erased every time I type `@'? - -The `@' character is the default `line kill' character in most -versions of System V, including SVR4.2. You can change this -character to whatever you want using `stty'. For example, to -change the line kill character to control-u, type - - stty kill ^U - -where the `^' and `U' can be two separate characters. - -F5) Why does bash report syntax errors when my C News scripts use a - redirection before a subshell command? - -The actual command in question is something like - - < file ( command ) - -According to the grammar given in the POSIX.2 standard, this construct -is, in fact, a syntax error. Redirections may only precede `simple -commands'. A subshell construct such as the above is one of the shell's -`compound commands'. A redirection may only follow a compound command. - -This affects the mechanical transformation of commands that use `cat' -to pipe a file into a command (a favorite Useless-Use-Of-Cat topic on -comp.unix.shell). While most commands of the form - - cat file | command - -can be converted to `< file command', shell control structures such as -loops and subshells require `command < file'. - -The file CWRU/sh-redir-hack in the bash distribution is an -(unofficial) patch to parse.y that will modify the grammar to -support this construct. It will not apply with `patch'; you must -modify parse.y by hand. Note that if you apply this, you must -recompile with -DREDIRECTION_HACK. This introduces a large -number of reduce/reduce conflicts into the shell grammar. - -F6) Why can't I use vi-mode editing on Red Hat Linux 6.1? - -The short answer is that Red Hat screwed up. - -The long answer is that they shipped an /etc/inputrc that only works -for emacs mode editing, and then screwed all the vi users by setting -INPUTRC to /etc/inputrc in /etc/profile. - -The short fix is to do one of the following: remove or rename -/etc/inputrc, set INPUTRC=~/.inputrc in ~/.bashrc (or .bash_profile, -but make sure you export it if you do), remove the assignment to -INPUTRC from /etc/profile, add - - set keymap emacs - -to the beginning of /etc/inputrc, or bracket the key bindings in -/etc/inputrc with these lines - - $if mode=emacs - [...] - $endif - -F7) Why do bash-2.05a and bash-2.05b fail to compile `printf.def' on - HP/UX 11.x? - -HP/UX's support for long double is imperfect at best. - -GCC will support it without problems, but the HP C library functions -like strtold(3) and printf(3) don't actually work with long doubles. -HP implemented a `long_double' type as a 4-element array of 32-bit -ints, and that is what the library functions use. The ANSI C -`long double' type is a 128-bit floating point scalar. - -The easiest fix, until HP fixes things up, is to edit the generated -config.h and #undef the HAVE_LONG_DOUBLE line. After doing that, -the compilation should complete successfully. - -Section G: How can I get bash to do certain common things? - -G1) How can I get bash to read and display eight-bit characters? - -This is a process requiring several steps. - -First, you must ensure that the `physical' data path is a full eight -bits. For xterms, for example, the `vt100' resources `eightBitInput' -and `eightBitOutput' should be set to `true'. - -Once you have set up an eight-bit path, you must tell the kernel and -tty driver to leave the eighth bit of characters alone when processing -keyboard input. Use `stty' to do this: - - stty cs8 -istrip -parenb - -For old BSD-style systems, you can use - - stty pass8 - -You may also need - - stty even odd - -Finally, you need to tell readline that you will be inputting and -displaying eight-bit characters. You use readline variables to do -this. These variables can be set in your .inputrc or using the bash -`bind' builtin. Here's an example using `bind': - - bash$ bind 'set convert-meta off' - bash$ bind 'set meta-flag on' - bash$ bind 'set output-meta on' - -The `set' commands between the single quotes may also be placed -in ~/.inputrc. - -The script examples/scripts.noah/meta.bash encapsulates the bind -commands in a shell function. - -G2) How do I write a function `x' to replace builtin command `x', but - still invoke the command from within the function? - -This is why the `command' and `builtin' builtins exist. The -`command' builtin executes the command supplied as its first -argument, skipping over any function defined with that name. The -`builtin' builtin executes the builtin command given as its first -argument directly. - -For example, to write a function to replace `cd' that writes the -hostname and current directory to an xterm title bar, use -something like the following: - - cd() - { - builtin cd "$@" && xtitle "$HOST: $PWD" - } - -This could also be written using `command' instead of `builtin'; -the version above is marginally more efficient. - -G3) How can I find the value of a shell variable whose name is the value - of another shell variable? - -Versions of Bash newer than Bash-2.0 support this directly. You can use - - ${!var} - -For example, the following sequence of commands will echo `z': - - var1=var2 - var2=z - echo ${!var1} - -For sh compatibility, use the `eval' builtin. The important -thing to remember is that `eval' expands the arguments you give -it again, so you need to quote the parts of the arguments that -you want `eval' to act on. - -For example, this expression prints the value of the last positional -parameter: - - eval echo \"\$\{$#\}\" - -The expansion of the quoted portions of this expression will be -deferred until `eval' runs, while the `$#' will be expanded -before `eval' is executed. In versions of bash later than bash-2.0, - - echo ${!#} - -does the same thing. - -This is not the same thing as ksh93 `nameref' variables, though the syntax -is similar. I may add namerefs in a future bash version. - -G4) How can I make the bash `time' reserved word print timing output that - looks like the output from my system's /usr/bin/time? - -The bash command timing code looks for a variable `TIMEFORMAT' and -uses its value as a format string to decide how to display the -timing statistics. - -The value of TIMEFORMAT is a string with `%' escapes expanded in a -fashion similar in spirit to printf(3). The manual page explains -the meanings of the escape sequences in the format string. - -If TIMEFORMAT is not set, bash acts as if the following assignment had -been performed: - - TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' - -The POSIX.2 default time format (used by `time -p command') is - - TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S' - -The BSD /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\t%1R real\t%1U user\t%1S sys' - -The System V /usr/bin/time format can be emulated with: - - TIMEFORMAT=$'\nreal\t%1R\nuser\t%1U\nsys\t%1S' - -The ksh format can be emulated with: - - TIMEFORMAT=$'\nreal\t%2lR\nuser\t%2lU\nsys\t%2lS' - -G5) How do I get the current directory into my prompt? - -Bash provides a number of backslash-escape sequences which are expanded -when the prompt string (PS1 or PS2) is displayed. The full list is in -the manual page. - -The \w expansion gives the full pathname of the current directory, with -a tilde (`~') substituted for the current value of $HOME. The \W -expansion gives the basename of the current directory. To put the full -pathname of the current directory into the path without any tilde -subsitution, use $PWD. Here are some examples: - - PS1='\w$ ' # current directory with tilde - PS1='\W$ ' # basename of current directory - PS1='$PWD$ ' # full pathname of current directory - -The single quotes are important in the final example to prevent $PWD from -being expanded when the assignment to PS1 is performed. - -G6) How can I rename "*.foo" to "*.bar"? - -Use the pattern removal functionality described in D3. The following `for' -loop will do the trick: - - for f in *.foo; do - mv $f ${f%foo}bar - done - -G7) How can I translate a filename from uppercase to lowercase? - -The script examples/functions/lowercase, originally written by John DuBois, -will do the trick. The converse is left as an exercise. - -G8) How can I write a filename expansion (globbing) pattern that will match - all files in the current directory except "." and ".."? - -You must have set the `extglob' shell option using `shopt -s extglob' to use -this: - - echo .!(.|) * - -A solution that works without extended globbing is given in the Unix Shell -FAQ, posted periodically to comp.unix.shell. - -Section H: Where do I go from here? - -H1) How do I report bugs in bash, and where should I look for fixes and - advice? - -Use the `bashbug' script to report bugs. It is built and -installed at the same time as bash. It provides a standard -template for reporting a problem and automatically includes -information about your configuration and build environment. - -`bashbug' sends its reports to bug-bash@gnu.org, which -is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. - -Bug fixes, answers to questions, and announcements of new releases -are all posted to gnu.bash.bug. Discussions concerning bash features -and problems also take place there. - -To reach the bash maintainers directly, send mail to -bash-maintainers@gnu.org. - -H2) What kind of bash documentation is there? - -First, look in the doc directory in the bash distribution. It should -contain at least the following files: - -bash.1 an extensive, thorough Unix-style manual page -builtins.1 a manual page covering just bash builtin commands -bashref.texi a reference manual in GNU tex`info format -bashref.info an info version of the reference manual -FAQ this file -article.ms text of an article written for The Linux Journal -readline.3 a man page describing readline - -Postscript, HTML, and ASCII files created from the above source are -available in the documentation distribution. - -There is additional documentation available for anonymous FTP from host -ftp.cwru.edu in the `pub/bash' directory. - -Cameron Newham and Bill Rosenblatt have written a book on bash, published -by O'Reilly and Associates. The book is based on Bill Rosenblatt's Korn -Shell book. The title is ``Learning the Bash Shell'', and the ISBN number -of the third edition, published in March, 2005, is 0-596-00965-8. Look for -it in fine bookstores near you. This edition of the book has been updated -to cover bash-3.0. - -The GNU Bash Reference Manual has been published as a printed book by -Network Theory Ltd (Paperback, ISBN: 0-9541617-7-7, Nov. 2006). It covers -bash-3.2 and is available from most online bookstores (see -http://www.network-theory.co.uk/bash/manual/ for details). The publisher -will donate $1 to the Free Software Foundation for each copy sold. - -Arnold Robbins and Nelson Beebe have written ``Classic Shell Scripting'', -published by O'Reilly. The first edition, with ISBN number 0-596-00595-4, -was published in May, 2005. - -Chris F. A. Johnson, a frequent contributor to comp.unix.shell and -gnu.bash.bug, has written ``Shell Scripting Recipes: A Problem-Solution -Approach,'' a new book on shell scripting, concentrating on features of -the POSIX standard helpful to shell script writers. The first edition from -Apress, with ISBN number 1-59059-471-1, was published in May, 2005. - -H3) What's coming in future versions? - -These are features I hope to include in a future version of bash. - -Rocky Bernstein's bash debugger (support is included with bash-3.0) -associative arrays -co-processes, but with a new-style syntax that looks like function declaration - -H4) What's on the bash `wish list' for future versions? - -These are features that may or may not appear in a future version of bash. - -breaking some of the shell functionality into embeddable libraries -a module system like zsh's, using dynamic loading like builtins -a bash programmer's guide with a chapter on creating loadable builtins -a better loadable interface to perl with access to the shell builtins and - variables (contributions gratefully accepted) -ksh93-like `nameref' variables -ksh93-like `xx.yy' variables (including some of the .sh.* variables) and - associated disipline functions -Some of the new ksh93 pattern matching operators, like backreferencing - -H5) When will the next release appear? - -The next version will appear sometime in 2007. Never make predictions. - -This document is Copyright 1995-2006 by Chester Ramey. - -Permission is hereby granted, without written agreement and -without license or royalty fees, to use, copy, and distribute -this document for any purpose, provided that the above copyright -notice appears in all copies of this document and that the -contents of this document remain unaltered. diff --git a/doc/faq.version b/doc/faq.version deleted file mode 100644 index 3788a2f76..000000000 --- a/doc/faq.version +++ /dev/null @@ -1,9 +0,0 @@ -Archive-name: unix-faq/shell/bash -Posting-Frequency: monthly -Submitted-By: chet@po.cwru.edu (Chet Ramey) -Last-Modified: Fri May 11 16:18:55 EDT 2007 -FAQ-Version: 3.36 -Bash-Version: 3.2 -URL: ftp://ftp.cwru.edu/pub/bash/FAQ -Maintainer: chet@po.cwru.edu (Chet Ramey) - diff --git a/doc/foo.html b/doc/foo.html deleted file mode 100644 index 92de12e1e..000000000 --- a/doc/foo.html +++ /dev/null @@ -1,10220 +0,0 @@ - - -Bash Reference Manual - - - - - - - - - - -

Bash Reference Manual

-
-

Table of Contents

- -
- - - -
-


- -Next: , -Previous: (dir), -Up: (dir) - -
- -

Bash Features

- -

This text is a brief description of the features that are present in -the Bash shell (version 3.2, 30 December 2006). - -

This is Edition 3.2, last updated 30 December 2006, -of The GNU Bash Reference Manual, -for Bash, Version 3.2. - -

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

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

- -
-


- -Next: , -Previous: Top, -Up: Top - -
- -

1 Introduction

- - - -
-


- - -Next: , -Up: Introduction - -
- -

1.1 What is Bash?

- -

Bash is the shell, or command language interpreter, -for the gnu operating system. -The name is an acronym for the `Bourne-Again SHell', -a pun on Stephen Bourne, the author of the direct ancestor of -the current Unix shell sh, -which appeared in the Seventh Edition Bell Labs Research version -of Unix. - -

Bash is largely compatible with sh and incorporates useful -features from the Korn shell ksh and the C shell csh. -It is intended to be a conformant implementation of the ieee -posix Shell and Tools portion of the ieee posix -specification (ieee Standard 1003.1). -It offers functional improvements over sh for both interactive and -programming use. - -

While the gnu operating system provides other shells, including -a version of csh, Bash is the default shell. -Like other gnu software, Bash is quite portable. It currently runs -on nearly every version of Unix and a few other operating systems − -independently-supported ports exist for ms-dos, os/2, -and Windows platforms. - -

-


- - -Previous: What is Bash?, -Up: Introduction - -
- -

1.2 What is a shell?

- -

At its base, a shell is simply a macro processor that executes -commands. The term macro processor means functionality where text -and symbols are expanded to create larger expressions. - -

A Unix shell is both a command interpreter and a programming -language. As a command interpreter, the shell provides the user -interface to the rich set of gnu utilities. The programming -language features allow these utilities to be combined. -Files containing commands can be created, and become -commands themselves. These new commands have the same status as -system commands in directories such as /bin, allowing users -or groups to establish custom environments to automate their common -tasks. - -

Shells may be used interactively or non-interactively. In -interactive mode, they accept input typed from the keyboard. -When executing non-interactively, shells execute commands read -from a file. - -

A shell allows execution of gnu commands, both synchronously and -asynchronously. -The shell waits for synchronous commands to complete before accepting -more input; asynchronous commands continue to execute in parallel -with the shell while it reads and executes additional commands. -The redirection constructs permit -fine-grained control of the input and output of those commands. -Moreover, the shell allows control over the contents of commands' -environments. - -

Shells also provide a small set of built-in -commands (builtins) implementing functionality impossible -or inconvenient to obtain via separate utilities. -For example, cd, break, continue, and -exec) cannot be implemented outside of the shell because -they directly manipulate the shell itself. -The history, getopts, kill, or pwd -builtins, among others, could be implemented in separate utilities, -but they are more convenient to use as builtin commands. -All of the shell builtins are described in -subsequent sections. - -

While executing commands is essential, most of the power (and -complexity) of shells is due to their embedded programming -languages. Like any high-level language, the shell provides -variables, flow control constructs, quoting, and functions. - -

Shells offer features geared specifically for -interactive use rather than to augment the programming language. -These interactive features include job control, command line -editing, command history and aliases. Each of these features is -described in this manual. - -

-


- -Next: , -Previous: Introduction, -Up: Top - -
- -

2 Definitions

- -

These definitions are used throughout the remainder of this manual. - -

-
POSIX
A family of open system standards based on Unix. Bash -is primarily concerned with the Shell and Utilities portion of the -posix 1003.1 standard. - -
blank
A space or tab character. - -
builtin
A command that is implemented internally by the shell itself, rather -than by an executable program somewhere in the file system. - -
control operator
A word that performs a control function. It is a newline -or one of the following: -`||', `&&', `&', `;', `;;', -`|', `(', or `)'. - -
exit status
The value returned by a command to its caller. The value is restricted -to eight bits, so the maximum value is 255. - -
field
A unit of text that is the result of one of the shell expansions. After -expansion, when executing a command, the resulting fields are used as -the command name and arguments. - -
filename
A string of characters used to identify a file. - -
job
A set of processes comprising a pipeline, and any processes descended -from it, that are all in the same process group. - -
job control
A mechanism by which users can selectively stop (suspend) and restart -(resume) execution of processes. - -
metacharacter
A character that, when unquoted, separates words. A metacharacter is -a blank or one of the following characters: -`|', `&', `;', `(', `)', `<', or -`>'. - -
name
A word consisting solely of letters, numbers, and underscores, -and beginning with a letter or underscore. Names are used as -shell variable and function names. -Also referred to as an identifier. - -
operator
A control operator or a redirection operator. -See Redirections, for a list of redirection operators. - -
process group
A collection of related processes each having the same process -group id. - -
process group ID
A unique identifier that represents a process group -during its lifetime. - -
reserved word
A word that has a special meaning to the shell. Most reserved -words introduce shell flow control constructs, such as for and -while. - -
return status
A synonym for exit status. - -
signal
A mechanism by which a process may be notified by the kernel -of an event occurring in the system. - -
special builtin
A shell builtin command that has been classified as special by the -posix standard. - -
token
A sequence of characters considered a single unit by the shell. It is -either a word or an operator. - -
word
A token that is not an operator. -
- -
-


- -Next: , -Previous: Definitions, -Up: Top - -
- -

3 Basic Shell Features

- -

-Bash is an acronym for `Bourne-Again SHell'. -The Bourne shell is -the traditional Unix shell originally written by Stephen Bourne. -All of the Bourne shell builtin commands are available in Bash, -The rules for evaluation and quoting are taken from the posix -specification for the `standard' Unix shell. - -

This chapter briefly summarizes the shell's `building blocks': -commands, control structures, shell functions, shell parameters, -shell expansions, -redirections, which are a way to direct input and output from -and to named files, and how the shell executes commands. - -

- -
-


- -Next: , -Up: Basic Shell Features - -
- -

3.1 Shell Syntax

- - - -

When the shell reads input, it proceeds through a -sequence of operations. If the input indicates the beginning of a -comment, the shell ignores the comment symbol (`#'), and the rest -of that line. - -

Otherwise, roughly speaking, the shell reads its input and -divides the input into words and operators, employing the quoting rules -to select which meanings to assign various words and characters. - -

The shell then parses these tokens into commands and other constructs, -removes the special meaning of certain words or characters, expands -others, redirects input and output as needed, executes the specified -command, waits for the command's exit status, and makes that exit status -available for further inspection or processing. - -

-


- -Next: , -Up: Shell Syntax - -
- -

3.1.1 Shell Operation

- -

The following is a brief description of the shell's operation when it -reads and executes a command. Basically, the shell does the -following: - -

    -
  1. Reads its input from a file (see Shell Scripts), from a string -supplied as an argument to the -c invocation option -(see Invoking Bash), or from the user's terminal. - -
  2. Breaks the input into words and operators, obeying the quoting rules -described in Quoting. These tokens are separated by -metacharacters. Alias expansion is performed by this step -(see Aliases). - -
  3. Parses the tokens into simple and compound commands -(see Shell Commands). - -
  4. Performs the various shell expansions (see Shell Expansions), breaking -the expanded tokens into lists of filenames (see Filename Expansion) -and commands and arguments. - -
  5. Performs any necessary redirections (see Redirections) and removes -the redirection operators and their operands from the argument list. - -
  6. Executes the command (see Executing Commands). - -
  7. Optionally waits for the command to complete and collects its exit -status (see Exit Status). - -
- -
-


- -Next: , -Previous: Shell Operation, -Up: Shell Syntax - -
- -

3.1.2 Quoting

- -

- -

- -

Quoting is used to remove the special meaning of certain -characters or words to the shell. Quoting can be used to -disable special treatment for special characters, to prevent -reserved words from being recognized as such, and to prevent -parameter expansion. - -

Each of the shell metacharacters (see Definitions) -has special meaning to the shell and must be quoted if it is to -represent itself. -When the command history expansion facilities are being used -(see History Interaction), the -history expansion character, usually `!', must be quoted -to prevent history expansion. See Bash History Facilities, for -more details concerning history expansion. - -

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

-


- -Next: , -Up: Quoting - -
- -
3.1.2.1 Escape Character
- -

A non-quoted backslash `\' is the Bash escape character. -It preserves the literal value of the next character that follows, -with the exception of newline. If a \newline pair -appears, and the backslash itself is not quoted, the \newline -is treated as a line continuation (that is, it is removed from -the input stream and effectively ignored). - -

-


- -Next: , -Previous: Escape Character, -Up: Quoting - -
- -
3.1.2.2 Single Quotes
- -

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

-


- -Next: , -Previous: Single Quotes, -Up: Quoting - -
- -
3.1.2.3 Double Quotes
- -

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, `!'. -The characters `$' and ``' -retain their special meaning within double quotes (see Shell Expansions). -The backslash retains its special meaning only when followed by one of -the following characters: -`$', ``', `"', `\', or newline. -Within double quotes, backslashes that are followed by one of these -characters are removed. Backslashes preceding characters without a -special meaning are left unmodified. -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 quotes (see Shell Parameter Expansion). - -

-


- - -Next: , -Previous: Double Quotes, -Up: Quoting - -
- -
3.1.2.4 ANSI-C Quoting
- -

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

-
\a
alert (bell) -
\b
backspace -
\e
an escape character (not ANSI C) -
\f
form feed -
\n
newline -
\r
carriage return -
\t
horizontal tab -
\v
vertical tab -
\\
backslash -
\'
single quote -
\nnn
the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
\cx
a control-x character -
- -

The expanded result is single-quoted, as if the dollar sign had not -been present. - -

-


- -Previous: ANSI-C Quoting, -Up: Quoting - -
- -
3.1.2.5 Locale-Specific Translation
- -

-A double-quoted string preceded by a dollar sign (`$') will cause -the string to be translated according to the current locale. -If the current locale is C or POSIX, the dollar sign -is ignored. -If the string is translated and replaced, the replacement is -double-quoted. - -

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

-


- -Previous: Quoting, -Up: Shell Syntax - -
- -

3.1.3 Comments

- -

-In a non-interactive shell, or an interactive shell in which the -interactive_comments option to the shopt -builtin is enabled (see The Shopt Builtin), -a word beginning with `#' -causes that word and all remaining characters on that line to -be ignored. An interactive shell without the interactive_comments -option enabled does not allow comments. The interactive_comments -option is on by default in interactive shells. -See Interactive Shells, for a description of what makes -a shell interactive. - -

-


- -Next: , -Previous: Shell Syntax, -Up: Basic Shell Features - -
- -

3.2 Shell Commands

- -

-A simple shell command such as echo a b c consists of the command -itself followed by arguments, separated by spaces. - -

More complex shell commands are composed of simple commands arranged together -in a variety of ways: in a pipeline in which the output of one command -becomes the input of a second, in a loop or conditional construct, or in -some other grouping. - -

- -
-


- -Next: , -Up: Shell Commands - -
- -

3.2.1 Simple Commands

- -

-A simple command is the kind of command encountered most often. -It's just a sequence of words separated by blanks, terminated -by one of the shell's control operators (see Definitions). The -first word generally specifies a command to be executed, with the -rest of the words being that command's arguments. - -

The return status (see Exit Status) of a simple command is -its exit status as provided -by the posix 1003.1 waitpid function, or 128+n if -the command was terminated by signal n. - -

-


- -Next: , -Previous: Simple Commands, -Up: Shell Commands - -
- -

3.2.2 Pipelines

- -

-A pipeline is a sequence of simple commands separated by -`|'. - -

The format for a pipeline is -

     [time [-p]] [!] command1 [| command2 ...]
-
-

The output of each command in the pipeline is connected via a pipe -to the input of the next command. -That is, each command reads the previous command's output. - -

The reserved word time causes timing statistics -to be printed for the pipeline once it finishes. -The statistics currently consist of elapsed (wall-clock) time and -user and system time consumed by the command's execution. -The -p option changes the output format to that specified -by posix. -The TIMEFORMAT variable may be set to a format string that -specifies how the timing information should be displayed. -See Bash Variables, for a description of the available formats. -The use of time as a reserved word permits the timing of -shell builtins, shell functions, and pipelines. An external -time command cannot time these easily. - -

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 -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). -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. - -

-


- -Next: , -Previous: Pipelines, -Up: Shell Commands - -
- -

3.2.3 Lists of Commands

- -

-A list is a sequence of one or more pipelines separated by one -of the operators `;', `&', `&&', or `||', -and optionally terminated by one of `;', `&', or a -newline. - -

Of these list operators, `&&' and `||' -have equal precedence, followed by `;' and `&', -which have equal precedence. - -

A sequence of one or more newlines may appear in a list -to delimit commands, equivalent to a semicolon. - -

If a command is terminated by the control operator `&', -the shell executes the command asynchronously in a subshell. -This is known as executing the command in the background. -The shell does not wait for the command to finish, and the return -status is 0 (true). -When job control is not active (see Job Control), -the standard input for asynchronous commands, in the absence of any -explicit redirections, is redirected from /dev/null. - -

Commands separated by a `;' are executed sequentially; the shell -waits for each command to terminate in turn. The return status is the -exit status of the last command executed. - -

The control operators `&&' and `||' -denote and lists and or lists, respectively. -An and list has the form -

     command1 && command2
-
-

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

An or list has the form -

     command1 || command2
-
-

command2 is executed if, and only if, command1 -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. - -

-


- -Previous: Lists, -Up: Shell Commands - -
- -

3.2.4 Compound 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 (see Redirections) associated with a compound command -apply to all commands within that compound command unless explicitly overridden. - -

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

- -
3.2.4.1 Looping Constructs
- -

-Bash supports the following looping constructs. - -

Note that wherever a `;' appears in the description of a -command's syntax, it may be replaced with one or more newlines. - -

-
until
The syntax of the until command is: -
          until test-commands; do consequent-commands; done
-     
-

Execute consequent-commands as long as -test-commands has an exit status which is not zero. -The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. - -

while
The syntax of the while command is: -
          while test-commands; do consequent-commands; done
-     
-

Execute consequent-commands as long as -test-commands has an exit status of zero. -The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. - -

for
The syntax of the for command is: - -
          for 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 -(see 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: - -

          for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
-     
-

First, the arithmetic expression expr1 is evaluated according -to the rules described below (see Shell Arithmetic). -The arithmetic expression expr2 is then evaluated repeatedly -until it evaluates to zero. -Each time expr2 evaluates to a non-zero value, commands are -executed and the arithmetic expression expr3 is evaluated. -If any expression is omitted, it behaves as if it evaluates to 1. -The return value is the exit status of the last command in list -that is executed, or false if any of the expressions is invalid. - -

- -

The break and continue builtins (see Bourne Shell Builtins) -may be used to control loop execution. - -

-


- -Next: , -Previous: Looping Constructs, -Up: Compound Commands - -
- -
3.2.4.2 Conditional Constructs
- -

-

-
if
The syntax of the if command is: - -
          if test-commands; then
-            consequent-commands;
-          [elif more-test-commands; then
-            more-consequents;]
-          [else alternate-consequents;]
-          fi
-     
-

The test-commands list is executed, and if its return status is zero, -the consequent-commands list is executed. -If test-commands returns a non-zero status, each elif list -is executed in turn, and if its exit status is zero, -the corresponding more-consequents is executed and the -command completes. -If `else alternate-consequents' is present, and -the final command in the final if or elif clause -has a non-zero exit status, then alternate-consequents is executed. -The return status is the exit status of the last command executed, or -zero if no condition tested true. - -

case
The syntax of the case command is: - -
          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 shell option nocasematch -(see the description of shopt in 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 `;;'. -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. - -

There may be an arbitrary number of case clauses, each terminated -by a `;;'. The first pattern that matches determines the -command-list that is executed. - -

Here is an example using case in a script that could be used to -describe one interesting feature of an animal: - -

          echo -n "Enter the name of an animal: "
-          read ANIMAL
-          echo -n "The $ANIMAL has "
-          case $ANIMAL in
-            horse | dog | cat) echo -n "four";;
-            man | kangaroo ) echo -n "two";;
-            *) echo -n "an unknown number of";;
-          esac
-          echo " legs."
-     
-

The return status is zero if no pattern is matched. Otherwise, the -return status is the exit status of the command-list executed. - -

select
-The select construct allows the easy generation of menus. -It has almost the same syntax as the for command: - -
          select name [in words ...]; do commands; done
-     
-

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

The commands are executed after each selection until a -break command is executed, at which -point the select command completes. - -

Here is an example that allows the user to pick a filename from the -current directory, and displays the name and index of the file -selected. - -

          select fname in *;
-          do
-          	echo you picked $fname \($REPLY\)
-          	break;
-          done
-     
-
((...))
-
          (( expression ))
-     
-

The arithmetic expression is evaluated according to the rules -described below (see Shell Arithmetic). -If the value of the expression is non-zero, the return status is 0; -otherwise the return status is 1. This is exactly equivalent to -

          let "expression"
-     
-

See Bash Builtins, for a full description of the let builtin. - -

[[...]]
-
          [[ expression ]]
-     
-

Return a status of 0 or 1 depending on the evaluation of -the conditional expression expression. -Expressions are composed of the primaries described below in -Bash Conditional Expressions. -Word splitting and filename expansion are not performed on the words -between the `[[' and `]]'; tilde expansion, parameter and -variable expansion, arithmetic expansion, command substitution, process -substitution, and quote removal are performed. -Conditional operators such as `-f' must be unquoted to be recognized -as primaries. - -

When the `==' and `!=' operators are used, the string to the -right of the operator is considered a pattern and matched according -to the rules described below in Pattern Matching. -If the shell option nocasematch -(see the description of shopt in The Shopt Builtin) -is enabled, the match is performed without regard to the case -of alphabetic characters. -The return value is 0 if the string matches (`==') or does not -match (`!=')the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force it to be matched as a -string. - -

An additional binary operator, `=~', is available, with the same -precedence as `==' and `!='. -When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex3)). -The return value is 0 if the string matches -the pattern, and 1 otherwise. -If the regular expression is syntactically incorrect, the conditional -expression's return value is 2. -If the shell option nocasematch -(see the description of shopt in The Shopt Builtin) -is enabled, the match is performed without regard to the case -of alphabetic characters. -Substrings matched by parenthesized subexpressions within the regular -expression are saved in the array variable BASH_REMATCH. -The element of BASH_REMATCH with index 0 is the portion of the string -matching the entire regular expression. -The element of BASH_REMATCH with index n is the portion of the -string matching the nth parenthesized subexpression. - -

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

-
( expression )
Returns the value of expression. -This may be used to override the normal precedence of operators. - -
! expression
True if expression is false. - -
expression1 && expression2
True if both expression1 and expression2 are true. - -
expression1 || expression2
True if either expression1 or expression2 is true. -
- The && and || operators do not evaluate expression2 if the -value of expression1 is sufficient to determine the return -value of the entire conditional expression. - -
- -
-


- -Previous: Conditional Constructs, -Up: Compound Commands - -
- -
3.2.4.3 Grouping Commands
- -

-Bash provides two ways to group a list of commands to be executed -as a unit. When commands are grouped, redirections may be applied -to the entire command list. For example, the output of all the -commands in the list may be redirected to a single stream. - -

-
()
-
          ( list )
-     
-

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

{}
-
          { list; }
-     
-

Placing a list of commands between curly braces causes the list to -be executed in the current shell context. No subshell is created. -The semicolon (or newline) following list is required. -

- -

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

The exit status of both of these constructs is the exit status of -list. - -

-


- -Next: , -Previous: Shell Commands, -Up: Basic Shell Features - -
- -

3.3 Shell Functions

- -

-Shell functions are a way to group commands for later execution -using a single name for the group. They are executed just like -a "regular" command. -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. -Shell functions are executed in the current -shell context; no new process is created to interpret them. - -

Functions are declared using this syntax: - -

     [ function ] name () compound-command [ redirections ]
-
-

This defines a shell function named name. The reserved -word function is optional. -If the function reserved -word is supplied, the parentheses are optional. -The body of the function is the compound command -compound-command (see Compound Commands). -That command is usually a list enclosed between { and }, but -may be any compound command listed above. -compound-command is executed whenever name is specified as the -name of a command. -Any redirections (see Redirections) associated with the shell function -are performed when the function is executed. - -

A function definition may be deleted using the -f option to the -unset builtin (see Bourne Shell Builtins). - -

The exit status of a function definition is zero unless a syntax error -occurs or a readonly function with the same name already exists. -When executed, the exit status of a function is the exit status of the -last command executed in the body. - -

Note that for historical reasons, in the most common usage the curly braces -that surround the body of the function must be separated from the body by -blanks or newlines. -This is because the braces are reserved words and are only recognized -as such when they are separated by whitespace. -Also, when using the braces, the list must be terminated by a semicolon, -a `&', or a newline. - -

When a function is executed, the arguments to the -function become the positional parameters -during its execution (see Positional Parameters). -The special parameter `#' that expands to the number of -positional parameters is updated to reflect the change. -Special parameter 0 is unchanged. -The first element of the FUNCNAME variable is set to the -name of the function while the function is executing. -All other aspects of the shell execution -environment are identical between a function and its caller -with the exception that the DEBUG and RETURN traps -are not inherited unless the function has been given the -trace attribute using the declare builtin or -the -o functrace option has been enabled with -the set builtin, -(in which case all functions inherit the DEBUG and RETURN traps). -See Bourne Shell Builtins, for the description of the -trap builtin. - -

If the builtin command return -is executed in a function, the function completes and -execution resumes with the next command after the function -call. -Any command associated with the RETURN trap is executed -before execution resumes. -When a function completes, the values of the -positional parameters and the special parameter `#' -are restored to the values they had prior to the function's -execution. If a numeric argument is given to return, -that is the function's return status; otherwise the function's -return status is the exit status of the last command executed -before the return. - -

Variables local to the function may be declared with the -local builtin. These variables are visible only to -the function and the commands it invokes. - -

Function names and definitions may be listed with the --f option to the declare or typeset -builtin commands (see Bash Builtins). -The -F option to declare or typeset -will list the function names only -(and optionally the source file and line number, if the extdebug -shell option is enabled). -Functions may be exported so that subshells -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. No limit is placed on the number of -recursive calls. - -

-


- -Next: , -Previous: Shell Functions, -Up: Basic Shell Features - -
- -

3.4 Shell Parameters

- -

- -

- -

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

A parameter is set if it has been assigned a value. The null string is -a valid value. Once a variable is set, it may be unset only by using -the unset builtin command. - -

A variable may be assigned to by a statement of the form -

     name=[value]
-
-

If value -is not given, the variable is assigned the null string. All -values undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote -removal (detailed below). If the variable has its integer -attribute set, then value -is evaluated as an arithmetic expression even if the $((...)) -expansion is not used (see Arithmetic Expansion). -Word splitting is not performed, with the exception -of "$@" as explained below. -Filename expansion is not performed. -Assignment statements may also appear as arguments to the -alias, -declare, typeset, export, readonly, -and local builtin commands. - -

In the context where an assignment statement is assigning a value -to a shell variable or array index (see Arrays), the `+=' -operator can be used to -append to or add to the variable's previous value. -When `+=' is applied to a variable for which the integer attribute -has been set, value is evaluated as an arithmetic expression and -added to the variable's current value, which is also evaluated. -When `+=' is applied to an array variable using compound assignment -(see Arrays), 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. -When applied to a string-valued variable, value is expanded and -appended to the variable's value. - -

-


- -Next: , -Up: Shell Parameters - -
- -

3.4.1 Positional Parameters

- -

-A positional parameter is a parameter denoted by one or more -digits, other than the single digit 0. Positional parameters are -assigned from the shell's arguments when it is invoked, -and may be reassigned using the set builtin command. -Positional parameter N may be referenced as ${N}, or -as $N when N consists of a single digit. -Positional parameters may not be assigned to with assignment statements. -The set and shift builtins are used to set and -unset them (see Shell Builtin Commands). -The positional parameters are -temporarily replaced when a shell function is executed -(see Shell Functions). - -

When a positional parameter consisting of more than a single -digit is expanded, it must be enclosed in braces. - -

-


- -Previous: Positional Parameters, -Up: Shell Parameters - -
- -

3.4.2 Special Parameters

- -

-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 occurs within double quotes, it expands to a single word -with the value of each parameter separated by the first character -of the IFS -special variable. That is, "$*" is equivalent -to "$1c$2c...", where c -is the first character of the value of the IFS -variable. -If IFS is unset, the parameters are separated by spaces. -If IFS is null, the parameters are joined without intervening -separators. - -
@
Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, each parameter expands to a -separate word. That is, "$@" is equivalent to -"$1" "$2" .... -If the double-quoted expansion occurs within a word, the expansion of -the first parameter is joined with the beginning part of the original -word, and the expansion of the last parameter is joined with the last -part of the original word. -When there are no positional parameters, "$@" and -$@ -expand to nothing (i.e., they are removed). - -
#
Expands to the number of positional parameters in decimal. - -
?
Expands to the exit status of the most recently executed foreground -pipeline. - -
-
(A hyphen.) Expands to the current option flags as specified upon -invocation, by the set -builtin command, or those set by the shell itself -(such as the -i option). - -
$
Expands to the process id of the shell. In a () subshell, it -expands to the process id of the invoking shell, not the subshell. - -
!
Expands to the process id of the most recently executed background -(asynchronous) command. - -
0
Expands to the name of the shell or shell script. This is set at -shell initialization. If Bash is invoked with a file of commands -(see Shell Scripts), $0 is set to the name of that file. -If Bash is started with the -c option (see Invoking Bash), -then $0 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 Bash, as given by argument zero. - -
_
(An underscore.) -At shell startup, set to the absolute pathname used to invoke the -shell or shell script being executed as passed in the environment -or argument list. -Subsequently, expands to the last argument to the previous command, -after expansion. -Also set to the full pathname used to invoke each command executed -and placed in the environment exported to that command. -When checking mail, this parameter holds the name of the mail file. -
- -
-


- -Next: , -Previous: Shell Parameters, -Up: Basic Shell Features - -
- -

3.5 Shell Expansions

- -

-Expansion is performed on the command line after it has been split into -tokens. There are seven kinds of expansion performed: -

    -
  • brace expansion -
  • tilde expansion -
  • parameter and variable expansion -
  • command substitution -
  • arithmetic expansion -
  • word splitting -
  • filename expansion -
- - - -

The order of expansions is: brace expansion, tilde expansion, -parameter, variable, and arithmetic expansion and -command substitution -(done in a left-to-right fashion), word splitting, and filename -expansion. - -

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

Only brace expansion, word splitting, and filename 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 -"$@" (see Special Parameters) and "${name[@]}" -(see Arrays). - -

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

-


- -Next: , -Up: Shell Expansions - -
- -

3.5.1 Brace Expansion

- -

-Brace expansion is a mechanism by which arbitrary strings may be generated. -This mechanism is similar to -filename expansion (see Filename Expansion), -but the file names generated need not exist. -Patterns to be brace expanded take the form of an optional preamble, -followed by either a series of comma-separated strings or a seqeunce expression -between a pair of braces, -followed by an optional postscript. -The preamble is prefixed to each string contained within the braces, and -the postscript is then appended to each resulting string, expanding left -to right. - -

Brace expansions may be nested. -The results of each expanded string are not sorted; left to right order -is preserved. -For example, -

     bash$ echo a{d,c,b}e
-     ade ace abe
-
-

A sequence expression takes the form {x..y}, -where x and y are either integers or single characters. -When integers are supplied, the expression expands to each number between -x and y, inclusive. -When characters are supplied, the expression expands to each character -lexicographically between x and y, inclusive. Note that -both x and y must be of the same type. - -

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

A correctly-formed brace expansion must contain unquoted opening -and closing braces, and at least one unquoted comma or a valid -sequence expression. -Any incorrectly formed brace expansion is left unchanged. - -

A { or `,' may be quoted with a backslash to prevent its -being considered part of a brace expression. -To avoid conflicts with parameter expansion, the string `${' -is not considered eligible for brace expansion. - -

This construct is typically used as shorthand when the common -prefix of the strings to be generated is longer than in the -above example: -

     mkdir /usr/local/src/bash/{old,new,dist,bugs}
-
-

or -

     chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
-
-
-


- -Next: , -Previous: Brace Expansion, -Up: Shell Expansions - -
- -

3.5.2 Tilde Expansion

- -

-If a word begins with an unquoted tilde character (`~'), all of the -characters up to the first unquoted slash (or all characters, -if there is no unquoted slash) are considered a tilde-prefix. -If none of the characters in the tilde-prefix are quoted, the -characters in the tilde-prefix following the tilde are treated as a -possible login name. -If this login name is the null string, the tilde is replaced with the -value of the HOME shell variable. -If HOME is unset, the home directory of the user executing the -shell is substituted instead. -Otherwise, the tilde-prefix is replaced with the home directory -associated with the specified login name. - -

If the tilde-prefix is `~+', the value of -the shell variable PWD replaces the tilde-prefix. -If the tilde-prefix is `~-', the value of the shell variable -OLDPWD, if it is set, is substituted. - -

If the characters 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 dirs builtin invoked with the characters following tilde -in the tilde-prefix as an argument (see The Directory Stack). -If the tilde-prefix, sans the tilde, consists of a number without a -leading `+' or `-', `+' is assumed. - -

If the login name is invalid, or the tilde expansion fails, the word is -left unchanged. - -

Each variable assignment is checked for unquoted tilde-prefixes immediately -following a `:' or the first `='. -In these cases, tilde expansion is also performed. -Consequently, one may use file names with tildes in assignments to -PATH, MAILPATH, and CDPATH, -and the shell assigns the expanded value. - -

The following table shows how Bash treats unquoted tilde-prefixes: - -

-
~
The value of $HOME -
~/foo
$HOME/foo - -
~fred/foo
The subdirectory foo of the home directory of the user -fred - -
~+/foo
$PWD/foo - -
~-/foo
${OLDPWD-'~-'}/foo - -
~N
The string that would be displayed by `dirs +N' - -
~+N
The string that would be displayed by `dirs +N' - -
~-N
The string that would be displayed by `dirs -N' - -
- -
-


- -Next: , -Previous: Tilde Expansion, -Up: Shell Expansions - -
- -

3.5.3 Shell Parameter Expansion

- -

-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 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 -embedded arithmetic expansion, command substitution, or parameter -expansion. - -

The basic form of parameter expansion is ${parameter}. -The value of parameter is substituted. The braces are required -when parameter -is a positional parameter with more than one digit, -or when parameter -is followed by a character that is not to be -interpreted as part of its name. - -

If the first character of parameter is an exclamation point, -a level of variable indirection is introduced. -Bash uses the value of the variable formed from the rest of -parameter as the name of the variable; this variable is then -expanded and that value is used in the rest of the substitution, rather -than the value of parameter itself. -This is known as indirect expansion. -The 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. - -

When not performing substring expansion, Bash tests for a parameter -that is unset or null; omitting the colon results in a test only for a -parameter that is unset. Put another way, if the colon is included, -the operator tests for both existence and that the value is not null; -if the colon is omitted, the operator tests only for existence. - -

-
${parameter:−word}
If parameter is unset or null, the expansion of -word is substituted. Otherwise, the value of -parameter is substituted. - -
${parameter:=word}
If parameter -is unset or null, the expansion of word -is assigned to parameter. -The value of parameter is then substituted. -Positional parameters and special parameters may not be assigned to -in this way. - -
${parameter:?word}
If parameter -is null or unset, the expansion of word (or a message -to that effect if word -is not present) is written to the standard error and the shell, if it -is not interactive, exits. Otherwise, the value of parameter is -substituted. - -
${parameter:+word}
If parameter -is null or unset, nothing is substituted, otherwise the expansion of -word is substituted. - -
${parameter:offset}
${parameter:offset:length}
Expands to up to length characters of parameter -starting at the character specified by offset. -If length is omitted, expands to the substring of -parameter starting at the character specified by offset. -length and offset are arithmetic expressions -(see Shell Arithmetic). -This is referred to as Substring Expansion. - -

length must evaluate to a number greater than or equal to zero. -If offset evaluates to a number less than zero, the value -is used as an offset from the end of the value of parameter. -If parameter is `@', the result is length positional -parameters beginning at offset. -If parameter is an array name indexed by `@' or `*', -the result is the length -members of the array beginning with ${parameter[offset]}. -A negative offset is taken relative to one greater than the maximum -index of the specified array. -Note that a negative offset must be separated from the colon by at least -one space to avoid being confused with the `:-' expansion. -Substring indexing is zero-based unless the positional parameters -are used, in which case the indexing starts at 1 by default. -If offset is 0, and the positional parameters are used, $@ is -prefixed to the list. - -

${!prefix*}
${!prefix@}
Expands to the names of variables whose names begin with prefix, -separated by the first character of the IFS special variable. -When `@' is used and the expansion appears within double quotes, each -variable name expands to a separate word. - -
${!name[@]}
${!name[*]}
If name is an array variable, expands to the list of array indices -(keys) assigned in name. -If name is not an array, expands to 0 if name is set and null -otherwise. -When `@' is used and the expansion appears within double quotes, each -key expands to a separate word. - -
${#parameter}
The length in characters of the expanded value of parameter is -substituted. -If parameter is `*' or `@', the value substituted -is the number of positional parameters. -If parameter is an array name subscripted by `*' or `@', -the value substituted is the number of elements in the array. - -
${parameter#word}
${parameter##word}
The word -is expanded to produce a pattern just as in filename -expansion (see 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. - -
${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 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 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/pattern/string}
-The pattern is expanded to produce a pattern just as in -filename expansion. -Parameter is expanded and the longest match of pattern -against its value is replaced with string. -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 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. - -
- - - -

3.5.4 Command Substitution

- -

-Command substitution allows the output of a command to replace -the command itself. -Command substitution occurs when a command is enclosed as follows: -

     $(command)
-
-

or -

     `command`
-
-

Bash performs the expansion by executing command and -replacing the command substitution with the standard output of the -command, with any trailing newlines deleted. -Embedded newlines are not deleted, but they may be removed during -word splitting. -The command substitution $(cat file) can be -replaced by the equivalent but faster $(< file). - -

When the old-style backquote form of substitution is used, -backslash retains its literal meaning except when followed by -`$', ``', or `\'. -The first backquote not preceded by a backslash terminates the -command substitution. -When using the $(command) form, all characters between -the parentheses make up the command; none are treated specially. - -

Command substitutions may be nested. To nest when using the backquoted -form, escape the inner backquotes with backslashes. - -

If the substitution appears within double quotes, word splitting and -filename expansion are not performed on the results. - -

-


- -Next: , -Previous: Command Substitution, -Up: Shell Expansions - -
- -

3.5.5 Arithmetic Expansion

- -

-Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic expansion is: - -

     $(( expression ))
-
-

The expression is treated as if it were within double quotes, but -a double quote inside the parentheses is not treated specially. -All tokens in the expression undergo parameter expansion, command -substitution, and quote removal. -Arithmetic expansions may be nested. - -

The evaluation is performed according to the rules listed below -(see Shell Arithmetic). -If the expression is invalid, Bash prints a message indicating -failure to the standard error and no substitution occurs. - -

-


- -Next: , -Previous: Arithmetic Expansion, -Up: Shell Expansions - -
- -

3.5.6 Process Substitution

- -

-Process substitution is supported on systems that support named -pipes (fifos) or the /dev/fd method of naming open files. -It takes the form of -

     <(list)
-
-

or -

     >(list)
-
-

The process list is run with its input or output connected to a -fifo or some file in /dev/fd. The name of this file is -passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to -the file will provide input for list. If the -<(list) form is used, the file passed as an -argument should be read to obtain the output of list. -Note that no space may appear between the < or > -and the left parenthesis, otherwise the construct would be interpreted -as a redirection. - -

When available, process substitution is performed simultaneously with -parameter and variable expansion, command substitution, and arithmetic -expansion. - -

-


- -Next: , -Previous: Process Substitution, -Up: Shell Expansions - -
- -

3.5.7 Word Splitting

- -

-The shell scans the results of parameter expansion, command substitution, -and arithmetic expansion that did not occur within double quotes for -word splitting. - -

The shell treats each character of $IFS as a delimiter, and splits -the results of the other expansions into words on these characters. -If IFS is unset, or its value is exactly <space><tab><newline>, -the default, then sequences of - <space>, <tab>, and <newline> -at the beginning and end of the results of the previous -expansions are ignored, and any sequence of IFS -characters not at the beginning or end serves to delimit words. -If IFS has a value other than the default, then sequences of -the whitespace characters space and tab -are ignored at the beginning and end of the -word, as long as the whitespace character is in the -value of IFS (an IFS whitespace character). -Any character in IFS that is not IFS -whitespace, along with any adjacent IFS -whitespace characters, delimits a field. A sequence of IFS -whitespace characters is also treated as a delimiter. -If the value of IFS is null, no word splitting occurs. - -

Explicit null arguments ("" or '') are retained. -Unquoted implicit null arguments, resulting from the expansion of -parameters that have no values, are removed. -If a parameter with no value is expanded within double quotes, a -null argument results and is retained. - -

Note that if no expansion occurs, no splitting -is performed. - -

-


- -Next: , -Previous: Word Splitting, -Up: Shell Expansions - -
- -

3.5.8 Filename Expansion

- - - -After word splitting, unless the -f option has been set -(see The Set Builtin), Bash scans each word for the characters -`*', `?', and `['. -If one of these characters appears, then the word is -regarded as a pattern, -and replaced with an alphabetically sorted list of -file names matching the pattern. If no matching file names are found, -and the shell option nullglob is disabled, the word is left -unchanged. -If the nullglob option is set, and no matches are found, the word -is removed. -If the failglob shell option is set, and no matches are found, -an error message is printed and the command is not executed. -If the shell option nocaseglob is enabled, the match is performed -without regard to the case of alphabetic characters. - -

When a pattern is used for filename generation, 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 file name, the slash character must always be -matched explicitly. -In other cases, the `.' character is not treated specially. - -

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 -pattern. If GLOBIGNORE -is set, each matching filename that also matches one of the patterns in -GLOBIGNORE is removed from the list of matches. The filenames -. and .. -are always ignored when GLOBIGNORE -is set and not null. -However, setting GLOBIGNORE to a non-null value has the effect of -enabling the dotglob -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 GLOBIGNORE. -The dotglob option is disabled when GLOBIGNORE -is unset. - -

-


- -Up: Filename Expansion - -
- -
3.5.8.1 Pattern Matching
- -

-Any character that appears in a pattern, other than the special pattern -characters described below, matches itself. -The nul character may not occur in a pattern. -A backslash escapes the following character; the -escaping backslash is discarded when matching. -The special pattern characters must be quoted if they are to be matched -literally. - -

The special pattern characters have the following meanings: -

-
*
Matches any string, including the null string. -
?
Matches any single character. -
[...]
Matches any one of the enclosed characters. A pair of characters -separated by a hyphen denotes a range expression; -any character that sorts between those two characters, inclusive, -using the current locale's collating sequence and character set, -is matched. If the first character following the -`[' is a `!' or a `^' -then any character not enclosed is matched. A `' -may be matched by including it as the first or last character -in the set. A `]' may be matched by including it as the first -character in the set. -The sorting order of characters in range expressions is determined by -the current locale and the value of the LC_COLLATE shell variable, -if set. - -

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

Within `[' and `]', character classes can be specified -using the syntax -[:class:], where class is one of the -following classes defined in the posix standard: -

          alnum   alpha   ascii   blank   cntrl   digit   graph   lower
-          print   punct   space   upper   word    xdigit
-     
-

A character class matches any character belonging to that class. -The word character class matches letters, digits, and the character -`_'. - -

Within `[' and `]', an equivalence class can be -specified using the syntax [=c=], which -matches all characters with the same collation weight (as defined -by the current locale) as the character c. - -

Within `[' and `]', the syntax [.symbol.] -matches the collating symbol symbol. -

- -

If the extglob shell option is enabled using the shopt -builtin, several extended pattern matching operators are recognized. -In the following description, a pattern-list is a list of one -or more patterns separated by a `|'. -Composite patterns may be formed using one or more of the following -sub-patterns: - -

-
?(pattern-list)
Matches zero or one occurrence of the given patterns. - -
*(pattern-list)
Matches zero or more occurrences of the given patterns. - -
+(pattern-list)
Matches one or more occurrences of the given patterns. - -
@(pattern-list)
Matches one of the given patterns. - -
!(pattern-list)
Matches anything except one of the given patterns. -
- -
-


- -Previous: Filename Expansion, -Up: Shell Expansions - -
- -

3.5.9 Quote Removal

- -

After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not -result from one of the above expansions are removed. - -

-


- -Next: , -Previous: Shell Expansions, -Up: Basic Shell Features - -
- -

3.6 Redirections

- -

-Before a command is executed, its input and output -may be redirected -using a special notation interpreted by the shell. -Redirection may also be used to open and close files for the -current shell execution environment. The following redirection -operators may precede or appear anywhere within a -simple command or may follow a command. -Redirections are processed in the order they appear, from -left to right. - -

In the following descriptions, if the file descriptor number is -omitted, and the first character of the redirection operator is -`<', the redirection refers to the standard input (file -descriptor 0). If the first character of the redirection operator -is `>', the redirection refers to the standard output (file -descriptor 1). - -

The word following the redirection operator in the following -descriptions, unless otherwise noted, is subjected to brace expansion, -tilde expansion, parameter expansion, command substitution, arithmetic -expansion, quote removal, filename expansion, and word splitting. -If it expands to more than one word, Bash reports an error. - -

Note that the order of redirections is significant. For example, -the command -

     ls > dirlist 2>&1
-
-

directs both standard output (file descriptor 1) and standard error -(file descriptor 2) to the file dirlist, while the command -

     ls 2>&1 > dirlist
-
-

directs only the standard output to file dirlist, -because the standard error was duplicated as standard output -before the standard output was redirected to dirlist. - -

Bash handles several filenames specially when they are used in -redirections, as described in the following table: - -

-
/dev/fd/fd
If fd is a valid integer, file descriptor fd is duplicated. - -
/dev/stdin
File descriptor 0 is duplicated. - -
/dev/stdout
File descriptor 1 is duplicated. - -
/dev/stderr
File descriptor 2 is duplicated. - -
/dev/tcp/host/port
If host is a valid hostname or Internet address, and port -is an integer port number or service name, Bash attempts to open a TCP -connection to the corresponding socket. - -
/dev/udp/host/port
If host is a valid hostname or Internet address, and port -is an integer port number or service name, Bash attempts to open a UDP -connection to the corresponding socket. - -
- -

A failure to open or create a file causes the redirection to fail. - -

Redirections using file descriptors greater than 9 should be used with -care, as they may conflict with file descriptors the shell uses -internally. - -

3.6.1 Redirecting Input

- -

Redirection of input causes the file whose name results from -the expansion of word -to be opened for reading on file descriptor n, -or the standard input (file descriptor 0) if n -is not specified. - -

The general format for redirecting input is: -

     [n]<word
-
-

3.6.2 Redirecting Output

- -

Redirection of output causes the file whose name results from -the expansion of word -to be opened for writing on file descriptor n, -or the standard output (file descriptor 1) if n -is not specified. If the file does not exist it is created; -if it does exist it is truncated to zero size. - -

The general format for redirecting output is: -

     [n]>[|]word
-
-

If the redirection operator is `>', and the noclobber -option to the set builtin has been enabled, the redirection -will fail if the file whose name results from the expansion of -word exists and is a regular file. -If the redirection operator is `>|', or the redirection operator is -`>' and the noclobber option is not enabled, the redirection -is attempted even if the file named by word exists. - -

3.6.3 Appending Redirected Output

- -

Redirection of output in this fashion -causes the file whose name results from -the expansion of word -to be opened for appending on file descriptor n, -or the standard output (file descriptor 1) if n -is not specified. If the file does not exist it is created. - -

The general format for appending output is: -

     [n]>>word
-
-

3.6.4 Redirecting Standard Output and Standard Error

- -

Bash allows both the -standard output (file descriptor 1) and -the standard error output (file descriptor 2) -to be redirected to the file whose name is the -expansion of word with this construct. - -

There are two formats for redirecting standard output and -standard error: -

     &>word
-
-

and -

     >&word
-
-

Of the two forms, the first is preferred. -This is semantically equivalent to -

     >word 2>&1
-
-

3.6.5 Here Documents

- -

This type of redirection instructs the shell to read input from the -current source until a line containing only word -(with no trailing blanks) is seen. All of -the lines read up to that point are then used as the standard -input for a command. - -

The format of here-documents is: -

     <<[−]word
-             here-document
-     delimiter
-
-

No parameter expansion, command substitution, arithmetic expansion, -or filename expansion is performed on -word. If any characters in word are quoted, the -delimiter is the result of quote removal on word, -and the lines in the here-document are not expanded. -If word is unquoted, -all lines of the here-document are subjected to parameter expansion, -command substitution, and arithmetic expansion. In the latter -case, the character sequence \newline is ignored, and `\' -must be used to quote the characters -`\', `$', and ``'. - -

If the redirection operator is `<<-', -then all leading tab characters are stripped from input lines and the -line containing delimiter. -This allows here-documents within shell scripts to be indented in a -natural fashion. - -

3.6.6 Here Strings

- -

A variant of here documents, the format is: -

     <<< word
-
-

The word is expanded and supplied to the command on its standard -input. - -

3.6.7 Duplicating File Descriptors

- -

The redirection operator -

     [n]<&word
-
-

is used to duplicate input file descriptors. -If word -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 word do not specify a file descriptor open for -input, a redirection error occurs. -If word -evaluates to `-', file descriptor n is closed. If -n is not specified, the standard input (file descriptor 0) is used. - -

The operator -

     [n]>&word
-
-

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 word do not specify a file descriptor open for -output, a redirection error occurs. -As a special case, if n is omitted, and word does not -expand to one or more digits, the standard output and standard -error are redirected as described previously. - -

3.6.8 Moving File Descriptors

- -

The redirection operator -

     [n]<&digit-
-
-

moves the file descriptor digit to file descriptor n, -or the standard input (file descriptor 0) if n is not specified. -digit is closed after being duplicated to n. - -

Similarly, the redirection operator -

     [n]>&digit-
-
-

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

3.6.9 Opening File Descriptors for Reading and Writing

- -

The redirection operator -

     [n]<>word
-
-

causes the file whose name is the expansion of word -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. - -

-


- -Next: , -Previous: Redirections, -Up: Basic Shell Features - -
- -

3.7 Executing Commands

- - - - - -

3.7.1 Simple Command Expansion

- -

-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 for later -processing. - -
  2. The words that are not variable assignments or redirections are -expanded (see Shell Expansions). -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 (see Redirections). - -
  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 variable. -
- -

If no command name results, the variable assignments affect the current -shell environment. Otherwise, the variables are added to the environment -of the executed command and do not affect the current shell environment. -If any of the assignments attempts to assign a value to a readonly variable, -an error occurs, and the command exits with a non-zero status. - -

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 expansions -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. - -

- -

3.7.2 Command Search and Execution

- -

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

    -
  1. 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 in Shell Functions. - -
  2. 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. - -
  3. If the name is neither a shell function nor a builtin, -and contains no slashes, Bash searches each element of -$PATH for a directory containing an executable file -by that name. Bash uses a hash table to remember the full -pathnames of executable files to avoid multiple PATH searches -(see the description of hash in Bourne Shell Builtins). -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 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 execution environment. -Argument 0 is set to the name given, and the remaining arguments -to the command are set to the arguments supplied, if any. - -
  5. If this execution fails because the file is not in executable -format, and the file is not a directory, it is assumed to be a -shell script and the shell executes it as described in -Shell Scripts. - -
  6. If the command was not begun asynchronously, the shell waits for -the command to complete and collects its exit status. - -
- -
-


- -Next: , -Previous: Command Search and Execution, -Up: Executing Commands - -
- -

3.7.3 Command Execution Environment

- -

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

    -
  • open files inherited by the shell at invocation, as modified by -redirections supplied to the exec builtin - -
  • the current working directory as set by cd, pushd, or -popd, or inherited by the shell at invocation - -
  • the file creation mode mask as set by umask or inherited from -the shell's parent - -
  • current traps set by trap - -
  • shell parameters that are set by variable assignment or with set -or inherited from the shell's parent in the environment - -
  • shell functions defined during execution or inherited from the shell's -parent in the environment - -
  • options enabled at invocation (either by default or with command-line -arguments) or by set - -
  • options enabled by shopt (see The Shopt Builtin) - -
  • shell aliases defined with alias (see Aliases) - -
  • various process ids, including those of background jobs -(see Lists), the value of $$, and the value of -$PPID - -
- -

When a simple command other than a builtin or shell function -is to be executed, it -is invoked in a separate execution environment that consists of -the following. Unless otherwise noted, the values are inherited -from the shell. - -

    -
  • the shell's open files, plus any modifications and additions specified -by redirections to the command - -
  • the current working directory - -
  • the file creation mode mask - -
  • shell variables and functions marked for export, along with variables -exported for the command, passed in the environment (see Environment) - -
  • traps caught by the shell are reset to the values inherited from the -shell's parent, and traps ignored by the shell are ignored - -
- -

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

Command substitution, commands grouped with parentheses, -and asynchronous commands are invoked in a -subshell environment that is a duplicate of the shell environment, -except that traps caught by the shell are reset to the values -that the shell inherited from its parent at invocation. Builtin -commands that are invoked as part of a pipeline are also executed -in a subshell environment. Changes made to the subshell environment -cannot affect the shell's execution environment. - -

If a command is followed by a `&' and job control is not active, the -default standard input for the command is the empty file /dev/null. -Otherwise, the invoked command inherits the file descriptors of the calling -shell as modified by redirections. - -

-


- -Next: , -Previous: Command Execution Environment, -Up: Executing Commands - -
- -

3.7.4 Environment

- -

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

Bash provides several ways to manipulate the environment. -On invocation, the shell scans its own environment and -creates a parameter for each name found, automatically marking -it for export -to child processes. Executed commands inherit the environment. -The export and `declare -x' -commands allow parameters and functions to be added to and -deleted from the environment. If the value of a parameter -in the environment is modified, the new value becomes part -of the environment, replacing the old. The environment -inherited by any executed command consists of the shell's -initial environment, whose values may be modified in the shell, -less any pairs removed by the unset and `export -n' -commands, plus any additions via the export and -`declare -x' commands. - -

The environment for any simple command -or function may be augmented temporarily by prefixing it with -parameter assignments, as described in Shell Parameters. -These assignment statements affect only the environment seen -by that command. - -

If the -k option is set (see The Set Builtin), then all -parameter assignments are placed in the environment for a command, -not just those that precede the command name. - -

When Bash invokes an external command, the variable `$_' -is set to the full path name of the command and passed to that -command in its environment. - -

-


- -Next: , -Previous: Environment, -Up: Executing Commands - -
- -

3.7.5 Exit Status

- -

-For the shell's purposes, a command which exits with a -zero exit status has succeeded. -A non-zero exit status indicates failure. -This seemingly counter-intuitive scheme is used so there -is one well-defined way to indicate success and a variety of -ways to indicate various failure modes. -When a command terminates on a fatal signal whose number is N, -Bash uses the value 128+N as the exit status. - -

If a command is not found, the child process created to -execute it returns a status of 127. If a command is found -but is not executable, the return status is 126. - -

If a command fails because of an error during expansion or redirection, -the exit status is greater than zero. - -

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

All of the Bash builtins return an exit status of zero if they succeed -and a non-zero status on failure, so they may be used by the -conditional and list constructs. -All builtins return an exit status of 2 to indicate incorrect usage. - -

-


- -Previous: Exit Status, -Up: Executing Commands - -
- -

3.7.6 Signals

- -

-When Bash is interactive, in the absence of any traps, it ignores -SIGTERM (so that `kill 0' does not kill an interactive shell), -and SIGINT -is caught and handled (so that the wait builtin is interruptible). -When Bash receives a SIGINT, it breaks out of any executing loops. -In all cases, Bash ignores SIGQUIT. -If job control is in effect (see Job Control), Bash -ignores SIGTTIN, SIGTTOU, and SIGTSTP. - -

Non-builtin commands started by Bash have signal handlers set to the -values inherited by the shell from its parent. -When job control is not in effect, asynchronous commands -ignore SIGINT and SIGQUIT in addition to these inherited -handlers. -Commands run as a result of -command substitution ignore the keyboard-generated job control signals -SIGTTIN, SIGTTOU, and SIGTSTP. - -

The shell exits by default upon receipt of a SIGHUP. -Before exiting, an interactive shell resends the SIGHUP to -all jobs, running or stopped. -Stopped jobs are sent SIGCONT to ensure that they receive -the SIGHUP. -To prevent the shell from sending the SIGHUP signal to a -particular job, it should be removed -from the jobs table with the disown -builtin (see Job Control Builtins) or marked -to not receive SIGHUP using disown -h. - -

If the huponexit shell option has been set with shopt -(see The Shopt Builtin), Bash sends a SIGHUP to all jobs when -an interactive login shell exits. - -

If Bash is waiting for a command to complete and receives a signal -for which a trap has been set, the trap will not be executed until -the command completes. -When Bash is waiting for an asynchronous -command via the wait builtin, the reception of a signal for -which a trap has been set will cause the wait builtin to return -immediately with an exit status greater than 128, immediately after -which the trap is executed. - -

-


- -Previous: Executing Commands, -Up: Basic Shell Features - -
- -

3.8 Shell Scripts

- -

-A shell script is a text file containing shell commands. When such -a file is used as the first non-option argument when invoking Bash, -and neither the -c nor -s option is supplied -(see Invoking Bash), -Bash reads and executes commands from the file, then exits. This -mode of operation creates a non-interactive shell. The shell first -searches for the file in the current directory, and looks in the -directories in $PATH if not found there. - -

When Bash runs -a shell script, it sets the special parameter 0 to the name -of the file, rather than the name of the shell, and the positional -parameters are set to the remaining arguments, if any are given. -If no additional arguments are supplied, the positional parameters -are unset. - -

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

     filename arguments
-
-

is equivalent to executing -

     bash filename arguments
-
-

if filename is an executable shell script. -This subshell reinitializes itself, so that the effect is as if a -new shell had been invoked to interpret the script, with the -exception that the locations of commands remembered by the parent -(see the description of hash in Bourne Shell Builtins) -are retained by the child. - -

Most versions of Unix make this a part of the operating system's command -execution mechanism. If the first line of a script begins with -the two characters `#!', the remainder of the line specifies -an interpreter for the program. -Thus, you can specify Bash, awk, Perl, or some other -interpreter and write the rest of the script file in that language. - -

The arguments to the interpreter -consist of a single optional argument following the interpreter -name on the first line of the script file, followed by the name of -the script file, followed by the rest of the arguments. Bash -will perform this action on operating systems that do not handle it -themselves. Note that some older versions of Unix limit the interpreter -name and argument to a maximum of 32 characters. - -

Bash scripts often begin with #! /bin/bash (assuming that -Bash has been installed in /bin), since this ensures that -Bash will be used to interpret the script, even if it is executed -under another shell. - -

-


- -Next: , -Previous: Basic Shell Features, -Up: Top - -
- -

4 Shell Builtin Commands

- - - -

Builtin commands are contained within the shell itself. -When the name of a builtin command is used as the first word of -a simple command (see Simple Commands), the shell executes -the command directly, without invoking another program. -Builtin commands are necessary to implement functionality impossible -or inconvenient to obtain with separate utilities. - -

This section briefly describes the builtins which Bash inherits from -the Bourne Shell, as well as the builtin commands which are unique -to or have been extended in Bash. - -

Several builtin commands are described in other chapters: builtin -commands which provide the Bash interface to the job control -facilities (see Job Control Builtins), the directory stack -(see Directory Stack Builtins), the command history -(see Bash History Builtins), and the programmable completion -facilities (see Programmable Completion Builtins). - -

Many of the builtins have been extended by posix or Bash. - -

Unless otherwise noted, each builtin command documented as accepting -options preceded by `-' accepts `--' -to signify the end of the options. -For example, the :, true, false, and test -builtins do not accept options. - -

-


- -Next: , -Up: Shell Builtin Commands - -
- -

4.1 Bourne Shell Builtins

- -

The following shell builtin commands are inherited from the Bourne Shell. -These commands are implemented as specified by the posix standard. - -

-
: (a colon)
-
          : [arguments]
-     
-

Do nothing beyond expanding arguments and performing redirections. -The return status is zero. - -

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

Read and execute commands from the filename argument in the -current shell context. If filename does not contain a slash, -the PATH variable is used to find filename. -When Bash is not in posix mode, the current directory is searched -if filename is not found in $PATH. -If any arguments are supplied, they become the positional -parameters when filename is executed. Otherwise the positional -parameters are unchanged. -The return status is the exit status of the last command executed, or -zero if no commands are executed. If filename is not found, or -cannot be read, the return status is non-zero. -This builtin is equivalent to source. - -

break
-
          break [n]
-     
-

Exit from a for, while, until, or select loop. -If n is supplied, the nth enclosing loop is exited. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. - -

cd
-
          cd [-L|-P] [directory]
-     
-

Change the current working directory to directory. -If directory is not given, the value of the HOME shell -variable is used. -If the shell variable CDPATH exists, it is used as a search path. -If directory begins with a slash, CDPATH is not used. - -

The -P option means to not follow symbolic links; symbolic -links are followed by default or with the -L option. -If directory is `-', it is equivalent to $OLDPWD. - -

If a non-empty directory name from CDPATH 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 status is zero if the directory is successfully changed, -non-zero otherwise. - -

continue
-
          continue [n]
-     
-

Resume the next iteration of an enclosing for, while, -until, or select loop. -If n is supplied, the execution of the nth enclosing loop -is resumed. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. - -

eval
-
          eval [arguments]
-     
-

The arguments are concatenated together into a single command, which is -then read and executed, and its exit status returned as the exit status -of eval. -If there are no arguments or only empty arguments, the return status is -zero. - -

exec
-
          exec [-cl] [-a name] [command [arguments]]
-     
-

If command -is supplied, it replaces the shell without creating a new process. -If the -l option is supplied, the shell places a dash at the -beginning of the zeroth argument passed to command. -This is what the login program does. -The -c option causes command to be executed with an empty -environment. -If -a is supplied, the shell passes name as the zeroth -argument to command. -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]
-     
-

Exit the shell, returning a status of n to the shell's parent. -If n is omitted, the exit status is that of the last command executed. -Any trap on EXIT is executed before the shell terminates. - -

export
-
          export [-fn] [-p] [name[=value]]
-     
-

Mark each name to be passed to child processes -in the environment. If the -f option is supplied, the names -refer to shell functions; otherwise the names refer to shell variables. -The -n option means to no longer mark each name for export. -If no names are supplied, or if the -p option is given, a -list of exported names is displayed. -The -p option displays output in a form that may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. - -

The return status is zero unless an invalid option is supplied, one of -the names is not a valid shell variable name, or -f is supplied -with a name that is not a shell function. - -

getopts
-
          getopts optstring name [args]
-     
-

getopts is used by shell scripts to parse positional parameters. -optstring contains the option characters to be recognized; 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 (`?') may not be -used as option characters. -Each time it is invoked, getopts -places the next option in the shell variable name, initializing -name if it does not exist, -and the index of the next argument to be processed into the -variable OPTIND. -OPTIND is initialized to 1 each time the shell or a shell script -is invoked. -When an option requires an argument, -getopts places that argument into the variable OPTARG. -The shell does not reset OPTIND automatically; it must be manually -reset between multiple calls to getopts within the same shell -invocation if a new set of parameters is to be used. - -

When the end of options is encountered, getopts exits with a -return value greater than zero. -OPTIND is set to the index of the first non-option argument, -and name is set to `?'. - -

getopts -normally parses the positional parameters, but if more arguments are -given in args, getopts parses those instead. - -

getopts can report errors in two ways. If the first character of -optstring is a colon, silent -error reporting is used. In normal operation diagnostic messages -are printed when invalid options or missing option arguments are -encountered. -If the variable OPTERR -is set to 0, no error messages will be displayed, even if the first -character of optstring is not a colon. - -

If an invalid option is seen, -getopts places `?' into name and, if not silent, -prints an error message and unsets OPTARG. -If getopts is silent, the option character found is placed in -OPTARG and no diagnostic message is printed. - -

If a required argument is not found, and getopts -is not silent, a question mark (`?') is placed in name, -OPTARG is unset, and a diagnostic message is printed. -If getopts is silent, then a colon (`:') is placed in -name and OPTARG is set to the option character found. - -

hash
-
          hash [-r] [-p filename] [-dt] [name]
-     
-

Remember the full pathnames of commands specified as name arguments, -so they need not be searched for on subsequent invocations. -The commands are found by searching through the directories listed in -$PATH. -The -p option inhibits the path search, and filename is -used as the location of name. -The -r option causes the shell to forget all remembered 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 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 remembered commands is printed. -The return status is zero unless a name is not found or an invalid -option is supplied. - -

pwd
-
          pwd [-LP]
-     
-

Print the absolute pathname of the current working directory. -If the -P option is supplied, the pathname printed will not -contain symbolic links. -If the -L option is supplied, the pathname printed may contain -symbolic links. -The return status is zero unless an error is encountered while -determining the name of the current directory or an invalid option -is supplied. - -

readonly
-
          readonly [-apf] [name[=value]] ...
-     
-

Mark each name as readonly. -The values of these names may not be changed by subsequent assignment. -If the -f option is supplied, each name refers to a shell -function. -The -a option means each name refers to an array variable. -If no name arguments are given, or if the -p -option is supplied, a list of all readonly names is printed. -The -p option causes output to be displayed in a format that -may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. -The return status is zero unless an invalid option is supplied, one of -the name arguments is not a valid shell variable or function name, -or the -f option is supplied with a name that is not a shell function. - -

return
-
          return [n]
-     
-

Cause a shell function to exit with the return value n. -If n is not supplied, the return value is the exit status of the -last command executed in the function. -This may also be used to terminate execution of a script being executed -with the . (or source) builtin, returning either n or -the exit status of the last command executed within the script as the exit -status of the script. -Any command associated with the RETURN trap is executed -before execution resumes after the function or script. -The return status is non-zero if return is used outside a function -and not during the execution of a script by . or source. - -

shift
-
          shift [n]
-     
-

Shift the positional parameters to the left by n. -The positional parameters from n+1 ... $# are -renamed to $1 ... $#-n. -Parameters represented by the numbers $# to $#-n+1 -are unset. -n must be a non-negative number less than or equal to $#. -If n is zero or greater than $#, the positional parameters -are not changed. -If n is not supplied, it is assumed to be 1. -The return status is zero unless n is greater than $# or -less than zero, non-zero otherwise. - -

test
[
Evaluate a conditional expression expr. -Each operator and operand must be a separate argument. -Expressions are composed of the primaries described below in -Bash Conditional Expressions. -test does not accept any options, nor does it accept and ignore -an argument of -- as signifying the end of options. - -

When the [ form is used, the last argument to the command must -be a ]. - -

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

-
! expr
True if expr is false. - -
( expr )
Returns the value of expr. -This may be used to override the normal precedence of operators. - -
expr1 -a expr2
True if both expr1 and expr2 are true. - -
expr1 -o expr2
True if either expr1 or expr2 is true. -
- -

The test and [ builtins evaluate conditional -expressions using a set of rules based on the number of arguments. - -

-
0 arguments
The expression is false. - -
1 argument
The expression is true if and only if the argument is not null. - -
2 arguments
If the first argument is `!', the expression is true if and -only if the second argument is null. -If the first argument is one of the unary conditional operators -(see Bash Conditional Expressions), the expression -is true if the unary test is true. -If the first argument is not a valid unary operator, the expression is -false. - -
3 arguments
If the second argument is one of the binary conditional -operators (see Bash Conditional Expressions), the -result of the expression is the result of the binary test using the -first and third arguments as operands. -If the first argument is `!', the value is the negation of -the two-argument test using the second and third arguments. -If the first argument is exactly `(' and the third argument is -exactly `)', the result is the one-argument test of the second -argument. -Otherwise, the expression is false. -The `-a' and `-o' operators are considered binary operators -in this case. - -
4 arguments
If the first argument is `!', the result is the negation of -the three-argument expression composed of the remaining arguments. -Otherwise, the expression is parsed and evaluated according to -precedence using the rules listed above. - -
5 or more arguments
The expression is parsed and evaluated according to precedence -using the rules listed above. -
- -
times
-
          times
-     
-

Print out the user and system times used by the shell and its children. -The return status is zero. - -

trap
-
          trap [-lp] [arg] [sigspec ...]
-     
-

The commands in arg are to be read and executed when the -shell receives signal sigspec. If arg is absent (and -there is a single sigspec) or -equal to `-', each specified signal's disposition is reset -to the value it had when the shell was started. -If arg is the null string, then the signal specified by -each sigspec is ignored by the shell and commands it invokes. -If arg is not present and -p has been supplied, -the shell displays the trap commands associated with each sigspec. -If no arguments are supplied, or -only -p is given, trap prints the list of commands -associated with each signal number in a form that may be reused as -shell input. -The -l option causes the shell to print a list of signal names -and their corresponding numbers. -Each sigspec is either a signal name or a signal number. -Signal names are case insensitive and the SIG prefix is optional. -If a sigspec -is 0 or EXIT, arg is executed when the shell exits. -If a sigspec is DEBUG, the command arg is executed -before every simple command, for command, case command, -select command, every arithmetic for command, and before -the first command executes in a shell function. -Refer to the description of the extglob option to the -shopt builtin (see The Shopt Builtin) for details of its -effect on the DEBUG trap. -If a sigspec is ERR, the command arg -is executed whenever a simple command has a non-zero exit status, -subject to the following conditions. -The ERR trap is not executed if the failed command is part of the -command list immediately following an until or while keyword, -part of the test in an if statement, -part of a && or || list, or if the command's return -status is being inverted using !. -These are the same conditions obeyed by the errexit option. -If a sigspec is RETURN, the command arg is executed -each time a shell function or a script executed with the . or -source builtins finishes executing. - -

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 child process when it is created. - -

The return status is zero unless a sigspec does not specify a -valid signal. - -

umask
-
          umask [-p] [-S] [mode]
-     
-

Set the shell process's file creation mask to mode. If -mode begins with a digit, it is interpreted as an octal number; -if not, it is interpreted as a symbolic mode mask similar -to that accepted by the chmod command. If mode is -omitted, the current value of the mask is printed. If the -S -option is supplied without a mode argument, the mask is printed -in a symbolic format. -If the -p option is supplied, and mode -is omitted, the output is in a form that may be reused as input. -The return status is zero if the mode is successfully changed or if -no mode argument is supplied, and non-zero otherwise. - -

Note that when the mode is interpreted as an octal number, each number -of the umask is subtracted from 7. Thus, a umask of 022 -results in permissions of 755. - -

unset
-
          unset [-fv] [name]
-     
-

Each variable or function name is removed. -If no options are supplied, or the -v option is given, each -name refers to a shell variable. -If the -f option is given, the names refer to shell -functions, and the function definition is removed. -Readonly variables and functions may not be unset. -The return status is zero unless a name is readonly. -

- - - -

4.2 Bash Builtin Commands

- -

This section describes builtin commands which are unique to -or have been extended in Bash. -Some of these commands are specified in the posix standard. - -

-
alias
-
          alias [-p] [name[=value] ...]
-     
-

Without arguments or with the -p option, alias prints -the list of aliases on the standard output in a form that allows -them to be reused as input. -If arguments are supplied, an alias is defined for each name -whose value is given. If no value is given, the name -and value of the alias is printed. -Aliases are described in Aliases. - -

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

Display current Readline (see Command Line Editing) -key and function bindings, -bind a key sequence to a Readline function or macro, -or set a Readline variable. -Each non-option argument is a command as it would appear in a -Readline initialization file (see Readline Init File), -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: - -

-
-m keymap
Use keymap as the keymap to be affected by -the subsequent bindings. Acceptable keymap -names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; -emacs is equivalent to emacs-standard. - -
-l
List the names of all Readline functions. - -
-p
Display Readline function names and bindings in such a way that they -can be used as input or in a Readline initialization file. - -
-P
List current Readline function names and bindings. - -
-v
Display Readline variable names and values in such a way that they -can be used as input or in a Readline initialization file. - -
-V
List current Readline variable names and values. - -
-s
Display Readline key sequences bound to macros and the strings they output -in such a way that they can be used as input or in a Readline -initialization file. - -
-S
Display Readline key sequences bound to macros and the strings they output. - -
-f filename
Read key bindings from filename. - -
-q function
Query about which keys invoke the named function. - -
-u function
Unbind all keys bound to the named function. - -
-r keyseq
Remove any current binding for keyseq. - -
-x keyseq:shell-command
Cause shell-command to be executed whenever keyseq is -entered. - -
- -

The return status is zero unless an invalid option is supplied or an -error occurs. - -

builtin
-
          builtin [shell-builtin [args]]
-     
-

Run a shell builtin, passing it args, and return its exit status. -This is useful when defining a shell function with the same -name as a shell builtin, retaining the functionality of the builtin within -the function. -The return status is non-zero if shell-builtin is not a shell -builtin command. - -

caller
-
          caller [expr]
-     
-

Returns the context of any active subroutine call (a shell function or -a script executed with the . or source builtins). - -

Without expr, caller displays the line number and source -filename of the current subroutine call. -If a non-negative integer is supplied as expr, caller -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 subroutine -call or expr does not correspond to a valid position in the -call stack. - -

command
-
          command [-pVv] command [arguments ...]
-     
-

Runs command with arguments ignoring any shell function -named command. -Only shell builtin commands or commands found by searching the -PATH are executed. -If there is a shell function named ls, running `command ls' -within the function will execute the external command ls -instead of calling the function recursively. -The -p option means to use a default value for PATH -that is guaranteed to find all of the standard utilities. -The return status in this case is 127 if command cannot be -found or an error occurred, and the exit status of command -otherwise. - -

If either the -V or -v option is supplied, a -description of command is printed. The -v option -causes a single word indicating the command or file name used to -invoke command to be displayed; the -V option produces -a more verbose description. In this case, the return status is -zero if command is found, and non-zero if not. - -

declare
-
          declare [-afFirtx] [-p] [name[=value] ...]
-     
-

Declare variables and give them attributes. If no names -are given, then display the values of variables instead. - -

The -p option will display the attributes and values of each -name. -When -p is used, additional options are ignored. -The -F option inhibits the display of function definitions; -only the function name and attributes are printed. -If the extdebug shell option is enabled using shopt -(see The Shopt Builtin), the source file name and line number where -the function is defined are displayed as well. --F implies -f. -The following options can be used to restrict output to variables with -the specified attributes or to give variables attributes: - -

-
-a
Each name is an array variable (see Arrays). - -
-f
Use function names only. - -
-i
The variable is to be treated as -an integer; arithmetic evaluation (see Shell Arithmetic) is -performed when the variable is assigned a value. - -
-r
Make names readonly. These names cannot then be assigned values -by subsequent assignment statements or unset. - -
-t
Give each name the trace attribute. -Traced functions inherit the DEBUG and RETURN traps from -the calling shell. -The trace attribute has no special meaning for variables. - -
-x
Mark each name for export to subsequent commands via -the environment. -
- -

Using `+' instead of `-' turns off the attribute instead, -with the exceptions that `+a' -may not be used to destroy an array variable and `+r' will not -remove the readonly attribute. -When used in a function, declare makes each name local, -as with the local command. If a variable name is followed by -=value, the value of the variable is set to value. - -

The return status is zero 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 Arrays), -one of the names is not a valid shell variable name, -an attempt is made to turn off readonly status for a readonly variable, -an attempt is made to turn off array status for an array variable, -or an attempt is made to display a non-existent function with -f. - -

echo
-
          echo [-neE] [arg ...]
-     
-

Output the args, separated by spaces, terminated with a -newline. -The return status is always 0. -If -n is specified, the trailing newline is suppressed. -If the -e option is given, interpretation of the following -backslash-escaped characters is enabled. -The -E option disables the interpretation of these escape characters, -even on systems where they are interpreted by default. -The xpg_echo shell option may be used to -dynamically determine whether or not echo expands these -escape characters by default. -echo does not interpret -- to mean the end of options. - -

echo interprets the following escape sequences: -

-
\a
alert (bell) -
\b
backspace -
\c
suppress trailing newline -
\e
escape -
\f
form feed -
\n
new line -
\r
carriage return -
\t
horizontal tab -
\v
vertical tab -
\\
backslash -
\0nnn
the eight-bit character whose value is the octal value nnn -(zero to three octal digits) -
\xHH
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
- -
enable
-
          enable [-a] [-dnps] [-f filename] [name ...]
-     
-

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 -n is used, the names become disabled. Otherwise -names are enabled. For example, to use the test binary -found via $PATH instead of the shell builtin version, type -`enable -n test'. - -

If the -p option is supplied, or no name arguments appear, -a list of shell builtins is printed. With no other arguments, the list -consists of all enabled shell builtins. -The -a option means to list -each builtin with an indication of whether or not it is enabled. - -

The -f option means to load the new builtin command name -from shared object filename, on systems that support dynamic loading. -The -d option will delete a builtin loaded with -f. - -

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

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

help
-
          help [-s] [pattern]
-     
-

Display helpful information about builtin commands. -If pattern is specified, help gives detailed help -on all commands matching pattern, otherwise a list of -the builtins is printed. -The -s option restricts the information displayed to a short -usage synopsis. -The return status is zero unless no command matches pattern. - -

let
-
          let expression [expression]
-     
-

The let builtin allows arithmetic to be performed on shell -variables. Each expression is evaluated according to the -rules given below in Shell Arithmetic. If the -last expression evaluates to 0, let returns 1; -otherwise 0 is returned. - -

local
-
          local [option] name[=value] ...
-     
-

For each argument, a local variable named name is created, -and assigned value. -The option can be any of the options accepted by declare. -local can only be used within a function; it makes the variable -name have a visible scope restricted to that function and its -children. The return status is zero unless local is used outside -a function, an invalid name is supplied, or name is a -readonly variable. - -

logout
-
          logout [n]
-     
-

Exit a login shell, returning a status of n to the shell's -parent. - -

printf
-
          printf [-v var] format [arguments]
-     
-

Write the formatted arguments to the standard output under the -control of the format. -The format 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 -argument. -In addition to the standard printf(1) formats, `%b' causes -printf to expand backslash escape sequences in the corresponding -argument, -(except that `\c' terminates output, backslashes in -`\'', `\"', and `\?' are not removed, and octal escapes -beginning with `\0' may contain up to four digits), -and `%q' causes printf to output the -corresponding argument in a format that can be reused as shell input. - -

The -v option causes the output to be assigned to the variable -var rather than being printed to the standard output. - -

The format is reused as necessary to consume all of the arguments. -If the format requires more arguments than are supplied, 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. - -

read
-
          read [-ers] [-a aname] [-d delim] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-     
-

One line is read from the standard input, or from the file descriptor -fd supplied as an argument to the -u option, and the first word -is assigned to the first name, the second word to the second name, -and so on, with leftover words and their intervening separators assigned -to the last name. -If there are fewer words read from the input stream than names, -the remaining names are assigned empty values. -The characters in the value of the IFS variable -are used to split the line into words. -The backslash character `\' may be used to remove any special -meaning for the next character read and for line continuation. -If no names are supplied, the line read is assigned to the -variable REPLY. -The return code is zero, unless end-of-file is encountered, read -times out, or an invalid file descriptor is supplied as the argument to --u. -Options, if supplied, have the following meanings: - -

-
-a aname
The words are assigned to sequential indices of the array variable -aname, starting at 0. -All elements are removed from aname before the assignment. -Other name arguments are ignored. - -
-d delim
The first character of delim is used to terminate the input line, -rather than newline. - -
-e
Readline (see Command Line Editing) is used to obtain the line. - -
-n nchars
read returns after reading nchars characters rather than -waiting for a complete line of input. - -
-p prompt
Display prompt, without a trailing newline, before attempting -to read any input. -The prompt is displayed only if input is coming from a terminal. - -
-r
If this option is given, backslash does not act as an escape character. -The backslash is considered to be part of the line. -In particular, a backslash-newline pair may not be used as a line -continuation. - -
-s
Silent mode. If input is coming from a terminal, characters are -not echoed. - -
-t timeout
Cause read to time out and return failure if a complete line of -input is not read within timeout seconds. -This option has no effect if read is not reading input from the -terminal or a pipe. - -
-u fd
Read input from file descriptor fd. - -
- -
source
-
          source filename
-     
-

A synonym for . (see Bourne Shell Builtins). - -

type
-
          type [-afptP] [name ...]
-     
-

For each name, indicate how it would be interpreted if used as a -command name. - -

If the -t option is used, type prints a single word -which is one of `alias', `function', `builtin', -`file' or `keyword', -if name is an alias, shell function, shell builtin, -disk file, or shell reserved word, respectively. -If the name is not found, then nothing is printed, and -type returns a failure status. - -

If the -p option is used, type either returns the name -of the disk file that would be executed, or nothing if -t -would not return `file'. - -

The -P option forces a path search for each name, even if --t would not return `file'. - -

If a command is hashed, -p and -P print the hashed value, -not necessarily the file that appears first in $PATH. - -

If the -a option is used, type returns all of the places -that contain an executable named file. -This includes aliases and functions, if and only if the -p option -is not also used. - -

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

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

typeset
-
          typeset [-afFrxi] [-p] [name[=value] ...]
-     
-

The typeset command is supplied for compatibility with the Korn -shell; however, it has been deprecated in favor of the declare -builtin command. - -

ulimit
-
          ulimit [-acdefilmnpqrstuvxSH] [limit]
-     
-

ulimit provides control over the resources available to processes -started by the shell, on systems that allow such control. If an -option is given, it is interpreted as follows: -

-
-S
Change and report the soft limit associated with a resource. - -
-H
Change and report the hard limit associated with a resource. - -
-a
All current limits are reported. - -
-c
The maximum size of core files created. - -
-d
The maximum size of a process's data segment. - -
-e
The maximum scheduling priority ("nice"). - -
-f
The maximum size of files written by the shell and its children. - -
-i
The maximum number of pending signals. - -
-l
The maximum size that may be locked into memory. - -
-m
The maximum resident set size. - -
-n
The maximum number of open file descriptors. - -
-p
The pipe buffer size. - -
-q
The maximum number of bytes in POSIX message queues. - -
-r
The maximum real-time scheduling priority. - -
-s
The maximum stack size. - -
-t
The maximum amount of cpu time in seconds. - -
-u
The maximum number of processes available to a single user. - -
-v
The maximum amount of virtual memory available to the process. - -
-x
The maximum number of file locks. - -
- -

If limit is given, it is the new value of the specified resource; -the special limit values hard, soft, and -unlimited stand for the current hard limit, the current soft limit, -and no limit, respectively. -Otherwise, the current value of the soft limit for the specified resource -is printed, unless the -H option is supplied. -When setting new limits, if neither -H nor -S is supplied, -both the hard and soft limits are set. -If no option is given, then -f is assumed. Values are in 1024-byte -increments, except for -t, which is in seconds, -p, -which is in units of 512-byte blocks, and -n and -u, which -are unscaled values. - -

The return status is zero unless an invalid option or argument is supplied, -or an error occurs while setting a new limit. - -

unalias
-
          unalias [-a] [name ... ]
-     
-

Remove each name from the list of aliases. If -a is -supplied, all aliases are removed. -Aliases are described in Aliases. - -

- -
-


- -Next: , -Previous: Bash Builtins, -Up: Shell Builtin Commands - -
- -

4.3 Modifying Shell Behavior

- - - - - -

4.3.1 The Set Builtin

- -

This builtin is so complicated that it deserves its own section. set -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. - -

-
set
-
          set [--abefhkmnptuvxBCEHPT] [-o option] [argument ...]
-          set [+abefhkmnptuvxBCEHPT] [+o option] [argument ...]
-     
-

If no options or arguments are supplied, set displays the names -and values of all shell variables and functions, sorted according to the -current locale, in a format that may be reused as input -for setting or resetting the currently-set variables. -Read-only variables cannot be reset. -In posix mode, only shell variables are listed. - -

When options are supplied, they set or unset shell attributes. -Options, if specified, have the following meanings: - -

-
-a
Mark variables and function which are modified or created for export -to the environment of subsequent commands. - -
-b
Cause the status of terminated background jobs to be reported -immediately, rather than before printing the next primary prompt. - -
-e
Exit immediately if a simple command (see Simple Commands) exits -with a non-zero status, unless the command that fails is part of the -command list immediately following a while or until keyword, -part of the test in an if statement, -part of a && or || list, -any command in a pipeline but the last, -or if the command's return status is being inverted using !. -A trap on ERR, if set, is executed before the shell exits. - -
-f
Disable file name generation (globbing). - -
-h
Locate and remember (hash) commands as they are looked up for execution. -This option is enabled by default. - -
-k
All arguments in the form of assignment statements are placed -in the environment for a command, not just those that precede -the command name. - -
-m
Job control is enabled (see Job Control). - -
-n
Read commands but do not execute them; this may be used to check a -script for syntax errors. -This option is ignored by interactive shells. - -
-o option-name
-Set the option corresponding to option-name: - -
-
allexport
Same as -a. - -
braceexpand
Same as -B. - -
emacs
Use an emacs-style line editing interface (see Command Line Editing). - -
errexit
Same as -e. - -
errtrace
Same as -E. - -
functrace
Same as -T. - -
hashall
Same as -h. - -
histexpand
Same as -H. - -
history
Enable command history, as described in Bash History Facilities. -This option is on by default in interactive shells. - -
ignoreeof
An interactive shell will not exit upon reading EOF. - -
keyword
Same as -k. - -
monitor
Same as -m. - -
noclobber
Same as -C. - -
noexec
Same as -n. - -
noglob
Same as -f. - -
nolog
Currently ignored. - -
notify
Same as -b. - -
nounset
Same as -u. - -
onecmd
Same as -t. - -
physical
Same as -P. - -
pipefail
If set, the return value of a pipeline is the value of the last -(rightmost) command to exit with a non-zero status, or zero if all -commands in the pipeline exit successfully. -This option is disabled by default. - -
posix
Change the behavior of Bash where the default operation differs -from the posix standard to match the standard -(see Bash POSIX Mode). -This is intended to make Bash behave as a strict superset of that -standard. - -
privileged
Same as -p. - -
verbose
Same as -v. - -
vi
Use a vi-style line editing interface. - -
xtrace
Same as -x. -
- -
-p
Turn on privileged mode. -In this mode, the $BASH_ENV and $ENV files are not -processed, shell functions are not inherited from the environment, -and the SHELLOPTS variable, if it appears in the environment, -is ignored. -If the shell is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, these actions -are taken and the effective user id is set to the real user id. -If the -p option is supplied at startup, the effective user id is -not reset. -Turning this option off causes the effective user -and group ids to be set to the real user and group ids. - -
-t
Exit after reading and executing one command. - -
-u
Treat unset variables as an error when performing parameter expansion. -An error message will be written to the standard error, and a non-interactive -shell will exit. - -
-v
Print shell input lines as they are read. - -
-x
Print a trace of simple commands, for commands, case -commands, select commands, and arithmetic for commands -and their arguments or associated word lists after they are -expanded and before they are executed. The value of the PS4 -variable is expanded and the resultant value is printed before -the command and its expanded arguments. - -
-B
The shell will perform brace expansion (see Brace Expansion). -This option is on by default. - -
-C
Prevent output redirection using `>', `>&', and `<>' -from overwriting existing files. - -
-E
If set, any trap on ERR is inherited by shell functions, command -substitutions, and commands executed in a subshell environment. -The ERR trap is normally not inherited in such cases. - -
-H
Enable `!' style history substitution (see History Interaction). -This option is on by default for interactive shells. - -
-P
If set, do not follow symbolic links when performing commands such as -cd which change the current directory. The physical directory -is used instead. By default, Bash follows -the logical chain of directories when performing commands -which change the current directory. - -

For example, if /usr/sys is a symbolic link to /usr/local/sys -then: -

               $ cd /usr/sys; echo $PWD
-               /usr/sys
-               $ cd ..; pwd
-               /usr
-          
-

If set -P is on, then: -

               $ cd /usr/sys; echo $PWD
-               /usr/local/sys
-               $ cd ..; pwd
-               /usr/local
-          
-
-T
If set, any trap on DEBUG and RETURN are inherited by -shell functions, command substitutions, and commands executed -in a subshell environment. -The DEBUG and RETURN traps are normally not inherited -in such cases. - -
--
If no arguments follow this option, then the positional parameters are -unset. Otherwise, the positional parameters are set to the -arguments, even if some of them begin with a `-'. - -
-
Signal the end of options, cause all remaining arguments -to be assigned to the positional parameters. The -x -and -v options are turned off. -If there are no arguments, the positional parameters remain unchanged. -
- -

Using `+' rather than `-' causes these options to be -turned off. The options can also be used upon invocation of the -shell. The current set of options may be found in $-. - -

The remaining N arguments are positional parameters and are -assigned, in order, to $1, $2, ... $N. -The special parameter # is set to N. - -

The return status is always zero unless an invalid option is supplied. -

- -
-


- -Previous: The Set Builtin, -Up: Modifying Shell Behavior - -
- -

4.3.2 The Shopt Builtin

- -

This builtin allows you to change additional shell optional behavior. - -

-
shopt
-
          shopt [-pqsu] [-o] [optname ...]
-     
-

Toggle the values of variables controlling optional shell behavior. -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: - -

-
-s
Enable (set) each optname. - -
-u
Disable (unset) each optname. - -
-q
Suppresses normal output; the return status -indicates whether the optname is set or unset. -If multiple optname arguments are given with -q, -the return status is zero if all optnames are enabled; -non-zero otherwise. - -
-o
Restricts the values of -optname to be those defined for the -o option to the -set builtin (see The Set Builtin). -
- -

If either -s or -u -is used with no optname arguments, the display is limited to -those options which are set or unset, respectively. - -

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

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

The list of shopt options is: -

-
autocd
If set, a command name that is the name of a directory is executed as if -it were the argument to the cd command. -This option is only used by interactive shells. - -
cdable_vars
If this is set, an argument to the cd builtin command that -is not a directory is assumed to be the name of a variable whose -value is the directory to change to. - -
cdspell
If set, minor errors in the spelling of a directory component in a -cd command will be corrected. -The errors checked for are transposed characters, -a missing character, and a character too many. -If a correction is found, the corrected path is printed, -and the command proceeds. -This option is only used by interactive shells. - -
checkhash
If this is set, Bash checks that a command found in the hash -table exists before trying to execute it. If a hashed command no -longer exists, a normal path search is performed. - -
checkjobs
If set, Bash lists the status of any stopped and running jobs before -exiting an interactive shell. If any jobs are running, this causes -the exit to be deferred until a second exit is attempted without an -intervening command (see Job Control). -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 -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. - -
dotglob
If set, Bash includes filenames beginning with a `.' in -the results of filename expansion. - -
execfail
If this is set, a non-interactive shell will not exit if -it cannot execute the file specified as an argument to the exec -builtin command. An interactive shell does not exit if exec -fails. - -
expand_aliases
If set, aliases are expanded as described below under Aliases, -Aliases. -This option is enabled by default for interactive shells. - -
extdebug
If set, behavior intended for use by debuggers is enabled: - -
    -
  1. The -F option to the declare builtin (see Bash Builtins) -displays the source file name and line number corresponding to each function -name supplied as an argument. - -
  2. If the command run by the DEBUG trap returns a non-zero value, the -next command is skipped and not executed. - -
  3. If the command run by the DEBUG trap returns a value of 2, and the -shell is executing in a subroutine (a shell function or a shell script -executed by the . or source builtins), a call to -return is simulated. - -
  4. BASH_ARGC and BASH_ARGV are updated as described in their -descriptions (see Bash Variables). - -
  5. Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. - -
  6. Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERROR trap. -
- -
extglob
If set, the extended pattern matching features described above -(see Pattern Matching) are enabled. - -
extquote
If set, $'string' and $"string" quoting is -performed within ${parameter} expansions -enclosed in double quotes. This option is enabled by default. - -
failglob
If set, patterns which fail to match filenames during pathname expansion -result in an expansion error. - -
force_fignore
If set, the suffixes specified by the FIGNORE shell variable -cause words to be ignored when performing word completion even if -the ignored words are the only possible completions. -See Bash Variables, for a description of FIGNORE. -This option is enabled by default. - -
gnu_errfmt
If set, shell error messages are written in the standard gnu error -message format. - -
histappend
If set, the history list is appended to the file named by the value -of the HISTFILE -variable when the shell exits, rather than overwriting the file. - -
histreedit
If set, and Readline -is being used, a user is given the opportunity to re-edit a -failed history substitution. - -
histverify
If set, and Readline -is being used, the results of history substitution are not immediately -passed to the shell parser. Instead, the resulting line is loaded into -the Readline editing buffer, allowing further modification. - -
hostcomplete
If set, and Readline is being used, Bash will attempt to perform -hostname completion when a word containing a `@' is being -completed (see Commands For Completion). This option is enabled -by default. - -
huponexit
If set, Bash will send SIGHUP to all jobs when an interactive -login shell exits (see Signals). - -
interactive_comments
Allow a word beginning with `#' -to cause that word and all remaining characters on that -line to be ignored in an interactive shell. -This option is enabled by default. - -
lithist
If enabled, and the cmdhist -option is enabled, multi-line commands are saved to the history with -embedded newlines rather than using semicolon separators where possible. - -
login_shell
The shell sets this option if it is started as a login shell -(see Invoking Bash). -The value may not be changed. - -
mailwarn
If set, and a file that Bash is checking for mail has been -accessed since the last time it was checked, the message -"The mail in mailfile has been read" is displayed. - -
no_empty_cmd_completion
If set, and Readline is being used, Bash will not attempt to search -the PATH for possible completions when completion is attempted -on an empty line. - -
nocaseglob
If set, Bash matches filenames in a case-insensitive fashion when -performing filename expansion. - -
nocasematch
If set, Bash matches patterns in a case-insensitive fashion when -performing matching while executing case or [[ -conditional commands. - -
nullglob
If set, Bash allows filename patterns which match no -files to expand to a null string, rather than themselves. - -
progcomp
If set, the programmable completion facilities -(see Programmable Completion) are enabled. -This option is enabled by default. - -
promptvars
If set, prompt strings undergo -parameter expansion, command substitution, arithmetic -expansion, and quote removal after being expanded -as described below (see Printing a Prompt). -This option is enabled by default. - -
restricted_shell
The shell sets this option if it is started in restricted mode -(see The Restricted Shell). -The value may not be changed. -This is not reset when the startup files are executed, allowing -the startup files to discover whether or not a shell is restricted. - -
shift_verbose
If this is set, the shift -builtin prints an error message when the shift count exceeds the -number of positional parameters. - -
sourcepath
If set, the source builtin uses the value of PATH -to find the directory containing the file supplied as an argument. -This option is enabled by default. - -
xpg_echo
If set, the echo builtin expands backslash-escape sequences -by default. - -
- -

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

- - - -

4.4 Special Builtins

- -

-For historical reasons, the posix standard has classified -several builtin commands as special. -When Bash is executing in posix mode, the special builtins -differ from other builtin commands in three respects: - -

    -
  1. Special builtins are found before shell functions during command lookup. - -
  2. If a special builtin returns an error status, a non-interactive shell exits. - -
  3. Assignment statements preceding the command stay in effect in the shell -environment after the command completes. -
- -

When Bash is not executing in posix mode, these builtins behave no -differently than the rest of the Bash builtin commands. -The Bash posix mode is described in Bash POSIX Mode. - -

These are the posix special builtins: -

     break : . continue eval exec exit export readonly return set
-     shift trap unset
-
-
-


- -Next: , -Previous: Shell Builtin Commands, -Up: Top - -
- -

5 Shell Variables

- - - -

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

-


- -Next: , -Up: Shell Variables - -
- -

5.1 Bourne Shell Variables

- -

Bash uses certain shell variables in the same way as the Bourne shell. -In some cases, Bash assigns a default value to the variable. - -

-
CDPATH
A colon-separated list of directories used as a search path for -the cd builtin command. - -
HOME
The current user's home directory; the default for the cd builtin -command. -The value of this variable is also used by tilde expansion -(see Tilde Expansion). - -
IFS
A list of characters that separate fields; used when the shell splits -words as part of expansion. - -
MAIL
If this parameter is set to a filename and the MAILPATH variable -is not set, Bash informs the user of the arrival of mail in -the specified file. - -
MAILPATH
A colon-separated list of filenames which the shell periodically checks -for new mail. -Each list entry can specify the message that is printed when new mail -arrives in the mail file by separating the file name from the message with -a `?'. -When used in the text of the message, $_ expands to the name of -the current mail file. - -
OPTARG
The value of the last option argument processed by the getopts builtin. - -
OPTIND
The index of the last option argument processed by the getopts builtin. - -
PATH
A colon-separated list of directories in which the shell looks for -commands. -A zero-length (null) directory name in the value of PATH indicates the -current directory. -A null directory name may appear as two adjacent colons, or as an initial -or trailing colon. - -
PS1
The primary prompt string. The default value is `\s-\v\$ '. -See Printing a Prompt, for the complete list of escape -sequences that are expanded before PS1 is displayed. - -
PS2
The secondary prompt string. The default value is `> '. - -
- -
-


- -Previous: Bourne Shell Variables, -Up: Shell Variables - -
- -

5.2 Bash Variables

- -

These variables are set or used by Bash, but other shells -do not normally treat them specially. - -

A few variables used by Bash are described in different chapters: -variables for controlling the job control facilities -(see Job Control Variables). - -

-
BASH
The full pathname used to execute the current instance of Bash. - -
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. - -
BASH_ARGC
An array variable whose values are the number of parameters in each -frame of the current bash execution call stack. The number of -parameters to the current subroutine (shell function or script executed -with . or source) is at the top of the stack. When a -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 The Shopt Builtin -for a description of the extdebug option to the shopt -builtin). - -
BASH_ARGV
An array variable containing all of the parameters in the current bash -execution call stack. The final parameter of the last subroutine call -is at the top of the stack; the first parameter of the initial call is -at the bottom. When a subroutine is executed, the parameters supplied -are pushed onto BASH_ARGV. -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). - -
BASH_COMMAND
The command currently being executed or about to be executed, unless the -shell is executing a command as the result of a trap, -in which case it is the command executing at the time of the trap. - -
BASH_ENV
If this variable is set when Bash is invoked to execute a shell -script, its value is expanded and used as the name of a startup file -to read before executing the script. See Bash Startup Files. - -
BASH_EXECUTION_STRING
The command argument to the -c invocation option. - -
BASH_LINENO
An array variable whose members are the line numbers in source files -corresponding to each member of FUNCNAME. -${BASH_LINENO[$i]} is the line number in the source file where -${FUNCNAME[$i]} was called. -The corresponding source file name is ${BASH_SOURCE[$i]}. -Use LINENO to obtain the current line number. - -
BASH_REMATCH
An array variable whose members are assigned by the `=~' binary -operator to the [[ conditional command -(see Conditional Constructs). -The element with index 0 is the portion of the string -matching the entire regular expression. -The element with index n is the portion of the -string matching the nth parenthesized subexpression. -This variable is read-only. - -
BASH_SOURCE
An array variable whose members are the source filenames corresponding -to the elements in the FUNCNAME array variable. - -
BASH_SUBSHELL
Incremented by one each time a subshell or subshell environment is spawned. -The initial value is 0. - -
BASH_VERSINFO
A readonly array variable (see Arrays) -whose members hold version information for this instance of Bash. -The values assigned to the array members are as follows: - -
-
BASH_VERSINFO[0]
The major version number (the release). - -
BASH_VERSINFO[1]
The minor version number (the version). - -
BASH_VERSINFO[2]
The patch level. - -
BASH_VERSINFO[3]
The build version. - -
BASH_VERSINFO[4]
The release status (e.g., beta1). - -
BASH_VERSINFO[5]
The value of MACHTYPE. - -
- -
BASH_VERSION
The version number of the current instance of Bash. - -
COLUMNS
Used by the select builtin command to determine the terminal width -when printing selection lists. Automatically set upon receipt of a -SIGWINCH. - -
COMP_CWORD
An index into ${COMP_WORDS} of the word containing the current -cursor position. -This variable is available only in shell functions invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_LINE
The current command line. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_POINT
The index of the current cursor position relative to the beginning of -the current command. -If the current cursor position is at the end of the current command, -the value of this variable is equal to ${#COMP_LINE}. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_TYPE
Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -TAB, for normal completion, -`?', for listing completions after successive tabs, -`!', for listing alternatives on partial word completion, -`@', to list completions if the word is not unmodified, -or -`%', for menu completion. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_KEY
The key (or final key of a key sequence) used to invoke the current -completion function. - -
COMP_WORDBREAKS
The set of characters that the Readline library treats as word -separators when performing word completion. -If COMP_WORDBREAKS is unset, it loses its special properties, -even if it is subsequently reset. - -
COMP_WORDS
An array variable consisting of the individual -words in the current command line. -The words are split on shell metacharacters as the shell parser would -separate them. -This variable is available only in shell functions invoked by the -programmable completion facilities (see Programmable Completion). - -
COMPREPLY
An array variable from which Bash reads the possible completions -generated by a shell function invoked by the programmable completion -facility (see Programmable Completion). - -
DIRSTACK
An array variable containing the current contents of the directory stack. -Directories appear in the stack in the order they are displayed by the -dirs builtin. -Assigning to members of this array variable may be used to modify -directories already in the stack, but the pushd and popd -builtins must be used to add and remove directories. -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. - -
EMACS
If Bash finds this variable in the environment when the shell -starts with value `t', it assumes that the shell is running in an -emacs shell buffer and disables line editing. - -
EUID
The numeric effective user id of the current user. This variable -is readonly. - -
FCEDIT
The editor used as a default by the -e option to the fc -builtin command. - -
FIGNORE
A colon-separated list of suffixes to ignore when performing -filename completion. -A file name whose suffix matches one of the entries in -FIGNORE -is excluded from the list of matched file names. A sample -value is `.o:~' - -
FUNCNAME
An array variable containing the names of all shell functions -currently in the execution call stack. -The element with index 0 is the name of any currently-executing -shell function. -The bottom-most element is "main". -This variable exists only when a shell function is executing. -Assignments to FUNCNAME have no effect and return an error status. -If FUNCNAME is unset, it loses its special properties, even if -it is subsequently reset. - -
GLOBIGNORE
A colon-separated list of patterns defining the set of filenames to -be ignored by filename expansion. -If a filename matched by a filename expansion pattern also matches one -of the patterns in GLOBIGNORE, it is removed from the list -of matches. - -
GROUPS
An array variable containing the list of groups of which the current -user is a member. -Assignments to GROUPS have no effect and return an error status. -If GROUPS is unset, it loses its special properties, even if it is -subsequently reset. - -
histchars
Up to three characters which control history expansion, quick -substitution, and tokenization (see History Interaction). -The first character is the -history expansion character, that is, the character which signifies the -start of a history expansion, normally `!'. The second character is the -character which signifies `quick substitution' when seen as the first -character on a line, normally `^'. The optional third character is the -character which indicates that the remainder of the line is a comment when -found as the first character of a word, usually `#'. The history -comment character causes history substitution to be skipped for the -remaining words on the line. It does not necessarily cause the shell -parser to treat the rest of the line as a comment. - -
HISTCMD
The history number, or index in the history list, of the current -command. If HISTCMD is unset, it loses its special properties, -even if it is subsequently reset. - -
HISTCONTROL
A colon-separated list of values controlling how commands are saved on -the history list. -If the list of values includes `ignorespace', lines which begin -with a space character are not saved in the history list. -A value of `ignoredups' causes lines which match the previous -history entry to not be saved. -A value of `ignoreboth' is shorthand for -`ignorespace' and `ignoredups'. -A value of `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. -If HISTCONTROL 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 HISTIGNORE. -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 -HISTCONTROL. - -
HISTFILE
The name of the file to which the command history is saved. The -default value is ~/.bash_history. - -
HISTFILESIZE
The maximum number of lines contained in the history file. When this -variable is assigned a value, the history file is truncated, if -necessary, by removing the oldest entries, -to contain no more than that number of lines. -The history file is also truncated to this size after -writing it when an interactive shell exits. -The default value is 500. - -
HISTIGNORE
A colon-separated list of patterns used to decide which command -lines should be saved on the history list. Each pattern is -anchored at the beginning of the line and must match the complete -line (no implicit `*' is appended). Each pattern is tested -against the line after the checks specified by HISTCONTROL -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 -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 -HISTIGNORE. - -

HISTIGNORE subsumes the function of HISTCONTROL. A -pattern of `&' is identical to ignoredups, and a -pattern of `[ ]*' is identical to ignorespace. -Combining these two patterns, separating them with a colon, -provides the functionality of ignoreboth. - -

HISTSIZE
The maximum number of commands to remember on the history list. -The default value is 500. - -
HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string -for strftime to print the time stamp associated with each history -entry displayed by the history builtin. -If this variable is set, time stamps are written to the history file so -they may be preserved across shell sessions. - -
HOSTFILE
Contains the name of a file in the same format as /etc/hosts that -should be read when the shell needs to complete a hostname. -The list of possible hostname completions may be changed while the shell -is running; -the next time hostname completion is attempted after the -value is changed, Bash adds the contents of the new file to the -existing list. -If HOSTFILE is set, but has no value, Bash attempts to read -/etc/hosts to obtain the list of possible hostname completions. -When HOSTFILE is unset, the hostname list is cleared. - -
HOSTNAME
The name of the current host. - -
HOSTTYPE
A string describing the machine Bash is running on. - -
IGNOREEOF
Controls the action of the shell on receipt of an EOF character -as the sole input. If set, the value denotes the number -of consecutive EOF characters that can be read as the -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. -If the variable does not exist, then EOF signifies the end of -input to the shell. This is only in effect for interactive shells. - -
INPUTRC
The name of the Readline initialization file, overriding the default -of ~/.inputrc. - -
LANG
Used to determine the locale category for any category not specifically -selected with a variable starting with LC_. - -
LC_ALL
This variable overrides the value of LANG and any other -LC_ variable specifying a locale category. - -
LC_COLLATE
This variable determines the collation order used when sorting the -results of filename expansion, and -determines the behavior of range expressions, equivalence classes, -and collating sequences within filename expansion and pattern matching -(see Filename Expansion). - -
LC_CTYPE
This variable determines the interpretation of characters and the -behavior of character classes within filename expansion and pattern -matching (see Filename Expansion). - -
LC_MESSAGES
This variable determines the locale used to translate double-quoted -strings preceded by a `$' (see Locale Translation). - -
LC_NUMERIC
This variable determines the locale category used for number formatting. - -
LINENO
The line number in the script or shell function currently executing. - -
LINES
Used by the select builtin command to determine the column length -for printing selection lists. Automatically set upon receipt of a -SIGWINCH. - -
MACHTYPE
A string that fully describes the system type on which Bash -is executing, in the standard gnu cpu-company-system format. - -
MAILCHECK
How often (in seconds) that the shell should check for mail in the -files specified in the MAILPATH or MAIL variables. -The default is 60 seconds. When it is time to check -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. - -
OLDPWD
The previous working directory as set by the cd builtin. - -
OPTERR
If set to the value 1, Bash displays error messages -generated by the getopts builtin command. - -
OSTYPE
A string describing the operating system Bash is running on. - -
PIPESTATUS
An array variable (see Arrays) -containing a list of exit status values from the processes -in the most-recently-executed foreground pipeline (which may -contain only a single command). - -
POSIXLY_CORRECT
If this variable is in the environment when bash starts, the shell -enters posix mode (see Bash POSIX Mode) before reading the -startup files, as if the --posix invocation option had been supplied. -If it is set while the shell is running, bash enables posix mode, -as if the command -
          set -o posix
-     
-

had been executed. - -

PPID
The process id of the shell's parent process. This variable -is readonly. - -
PROMPT_COMMAND
If set, the value is interpreted as a command to execute -before the printing of each primary prompt ($PS1). - -
PS3
The value of this variable is used as the prompt for the -select command. If this variable is not set, the -select command prompts with `#? ' - -
PS4
The value 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 default is `+ '. - -
PWD
The current working directory as set by the cd builtin. - -
RANDOM
Each time this parameter is referenced, a random integer -between 0 and 32767 is generated. Assigning a value to this -variable seeds the random number generator. - -
REPLY
The default variable for the read builtin. - -
SECONDS
This variable expands to the number of seconds since the -shell was started. Assignment to this variable resets -the count to the value assigned, and the expanded value -becomes the value assigned plus the number of seconds -since the assignment. - -
SHELL
The full pathname to the shell is kept in this environment variable. -If it is not set when the shell starts, -Bash assigns to it the full pathname of the current user's login shell. - -
SHELLOPTS
A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the -o option to the -set builtin command (see The Set Builtin). -The options appearing in SHELLOPTS are those reported -as `on' by `set -o'. -If this variable is in the environment when Bash -starts up, each shell option in the list will be enabled before -reading any startup files. This variable is readonly. - -
SHLVL
Incremented by one each time a new instance of Bash is started. This is -intended to be a count of how deeply your Bash shells are nested. - -
TIMEFORMAT
The value of this parameter is used as a format string specifying -how the timing information for pipelines prefixed with the time -reserved word should be displayed. -The `%' character introduces 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][l]R
The elapsed time in seconds. - -
%[p][l]U
The number of CPU seconds spent in user mode. - -
%[p][l]S
The number of CPU seconds spent in system mode. - -
%P
The CPU percentage, computed as (%U + %S) / %R. -
- -

The optional p is a digit specifying the precision, 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 used. - -

The optional l specifies a longer format, including minutes, of -the form MMmSS.FFs. -The value of p determines whether or not the fraction is included. - -

If this variable is not set, Bash acts as if it had the value -

          $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-     
-

If the value is null, no timing information is displayed. -A trailing newline is added when the format string is displayed. - -

TMOUT
If set to a value greater than zero, TMOUT is treated as the -default timeout for the read builtin (see Bash Builtins). -The select command (see Conditional Constructs) terminates -if input does not arrive after TMOUT seconds when input is coming -from a terminal. - -

In an interactive shell, the value is interpreted as -the number of seconds to wait for input after issuing the primary -prompt when the shell is interactive. -Bash terminates after that number of seconds if input does -not arrive. - -

TMPDIR
If set, Bash uses its value as the name of a directory in which -Bash creates temporary files for the shell's use. - -
UID
The numeric real user id of the current user. This variable is readonly. - -
- -
-


- -Next: , -Previous: Shell Variables, -Up: Top - -
- -

6 Bash Features

- -

This section describes features unique to Bash. - -

- -
-


- -Next: , -Up: Bash Features - -
- -

6.1 Invoking Bash

- -
     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
-     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument ...]
-     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
-
-

In addition to the single-character shell command-line options -(see The Set Builtin), there are several multi-character -options that you can use. These options must appear on the command -line before the single-character options to be recognized. - -

-
--debugger
Arrange for the debugger profile to be executed before the shell -starts. Turns on extended debugging mode (see The Shopt Builtin -for a description of the extdebug option to the shopt -builtin) and shell function tracing -(see The Set Builtin for a description of the -o functrace -option). - -
--dump-po-strings
A list of all double-quoted strings preceded by `$' -is printed on the standard output -in the gnu gettext PO (portable object) file format. -Equivalent to -D except for the output format. - -
--dump-strings
Equivalent to -D. - -
--help
Display a usage message on standard output and exit successfully. - -
--init-file filename
--rcfile filename
Execute commands from filename (instead of ~/.bashrc) -in an interactive shell. - -
--login
Equivalent to -l. - -
--noediting
Do not use the gnu Readline library (see Command Line Editing) -to read command lines when the shell is interactive. - -
--noprofile
Don't load the system-wide startup file /etc/profile -or any of the personal initialization files -~/.bash_profile, ~/.bash_login, or ~/.profile -when Bash is invoked as a login shell. - -
--norc
Don't read the ~/.bashrc initialization file in an -interactive shell. This is on by default if the shell is -invoked as sh. - -
--posix
Change the behavior of Bash where the default operation differs -from the posix standard to match the standard. This -is intended to make Bash behave as a strict superset of that -standard. See Bash POSIX Mode, for a description of the Bash -posix mode. - -
--restricted
Make the shell a restricted shell (see The Restricted Shell). - -
--verbose
Equivalent to -v. Print shell input lines as they're read. - -
--version
Show version information for this instance of -Bash on the standard output and exit successfully. - -
- -

There are several single-character options that may be supplied at -invocation which are not available with the set builtin. - -

-
-c string
Read and execute commands from string after processing the -options, then exit. Any remaining arguments are assigned to the -positional parameters, starting with $0. - -
-i
Force the shell to run interactively. Interactive shells are -described in Interactive Shells. - -
-l
Make this shell act as if it had been directly invoked by login. -When the shell is interactive, this is equivalent to starting a -login shell with `exec -l bash'. -When the shell is not interactive, the login shell startup files will -be executed. -`exec bash -l' or `exec bash --login' -will replace the current shell with a Bash login shell. -See Bash Startup Files, for a description of the special behavior -of a login shell. - -
-r
Make the shell a restricted shell (see The Restricted Shell). - -
-s
If this option is present, or if no arguments remain after option -processing, then commands are read from the standard input. -This option allows the positional parameters to be set -when invoking an interactive shell. - -
-D
A list of all double-quoted strings preceded by `$' -is printed on the standard output. -These are the strings that -are subject to language translation when the current locale -is not C or POSIX (see Locale Translation). -This implies the -n option; no commands will be executed. - -
[-+]O [shopt_option]
shopt_option is one of the shell options accepted by the -shopt builtin (see The Shopt Builtin). -If shopt_option is present, -O sets the value of that option; -+O unsets it. -If shopt_option is not supplied, the names and values of the shell -options accepted by shopt are printed on the standard output. -If the invocation option is +O, the output is displayed in a format -that may be reused as input. - -
--
A -- signals the end of options and disables further option -processing. -Any arguments after the -- are treated as filenames and arguments. - -
- -

A login shell is one whose first character of argument zero is -`-', or one invoked with the --login option. - -

An interactive shell is one started without non-option arguments, -unless -s is specified, -without specifying the -c option, and whose input and output are both -connected to terminals (as determined by isatty(3)), or one -started with the -i option. See Interactive Shells, for more -information. - -

If arguments remain after option processing, and neither the --c nor the -s -option has been supplied, the first argument is assumed to -be the name of a file containing shell commands (see Shell Scripts). -When Bash is invoked in this fashion, $0 -is set to the name of the file, and the positional parameters -are set to the remaining arguments. -Bash reads and executes commands from this file, then exits. -Bash's exit status is the exit status of the last command executed -in the script. If no commands are executed, the exit status is 0. - -

-


- -Next: , -Previous: Invoking Bash, -Up: Bash Features - -
- -

6.2 Bash Startup Files

- -

-This section describes how Bash executes its startup files. -If any of the files exist but cannot be read, Bash reports an error. -Tildes are expanded in file names as described above under -Tilde Expansion (see Tilde Expansion). - -

Interactive shells are described in Interactive Shells. - -

Invoked as an interactive login shell, or with --login
- -

When Bash is invoked as an interactive login shell, or as a -non-interactive shell with the --login option, it first reads and -executes commands from the file /etc/profile, if that file exists. -After reading that file, it looks for ~/.bash_profile, -~/.bash_login, and ~/.profile, in that order, and reads -and executes commands from the first one that exists and is readable. -The --noprofile option may be used when the shell is started to -inhibit this behavior. - -

When a login shell exits, Bash reads and executes commands from -the file ~/.bash_logout, if it exists. - -

Invoked as an interactive non-login shell
- -

When an interactive shell that is not a login shell is started, Bash -reads and executes commands from ~/.bashrc, if that file exists. -This may be inhibited by using the --norc option. -The --rcfile file option will force Bash to read and -execute commands from file instead of ~/.bashrc. - -

So, typically, your ~/.bash_profile contains the line -

     if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
-
-

after (or before) any login-specific initializations. - -

Invoked non-interactively
- -

When Bash is started non-interactively, to run a shell script, -for example, it looks for the variable BASH_ENV 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. Bash behaves as if the -following command were executed: -

     if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
-
-

but the value of the PATH variable is not used to search for the -file name. - -

As noted above, if a non-interactive shell is invoked with the ---login option, Bash attempts to read and execute commands from the -login shell startup files. - -

Invoked with name sh
- -

If Bash is invoked with the name sh, it tries to mimic the -startup behavior of historical versions of sh as closely as -possible, while conforming to the posix standard as well. - -

When invoked as an interactive login shell, or as a non-interactive -shell with the --login option, it first attempts to read -and execute commands from /etc/profile and ~/.profile, in -that order. -The --noprofile option may be used to inhibit this behavior. -When invoked as an interactive shell with the name sh, Bash -looks for the variable ENV, 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 sh does not attempt to read and execute -commands from any other startup files, the --rcfile option has -no effect. -A non-interactive shell invoked with the name sh does not attempt -to read any other startup files. - -

When invoked as sh, Bash enters posix mode after -the startup files are read. - -

Invoked in posix mode
- -

When Bash is started in posix mode, as with the ---posix command line option, it follows the posix standard -for startup files. -In this mode, interactive shells expand the ENV variable -and commands are read and executed from the file whose name is the -expanded value. -No other startup files are read. - -

Invoked by remote shell daemon
- -

Bash attempts to determine when it is being run by the remote shell -daemon, usually rshd. If Bash determines it is being run by -rshd, it reads and executes commands from ~/.bashrc, if that -file exists and is readable. -It will not do this if invoked as sh. -The --norc option may be used to inhibit this behavior, and the ---rcfile option may be used to force another file to be read, but -rshd does not generally invoke the shell with those options or -allow them to be specified. - -

Invoked with unequal effective and real uid/gids
- -

If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, no startup -files are read, shell functions are not inherited from the environment, -the SHELLOPTS variable, if it appears in the environment, is ignored, -and the effective user id is set to the real user id. -If the -p option is supplied at invocation, the startup behavior is -the same, but the effective user id is not reset. - -

- -

6.3 Interactive Shells

- -

- -

- - - -

6.3.1 What is an Interactive Shell?

- -

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

An interactive shell generally reads from and writes to a user's -terminal. - -

The -s invocation option may be used to set the positional parameters -when an interactive shell is started. - -

- -

6.3.2 Is this Shell Interactive?

- -

To determine within a startup script whether or not Bash is -running interactively, -test the value of the `-' special parameter. -It contains i when the shell is interactive. For example: - -

     case "$-" in
-     *i*)	echo This shell is interactive ;;
-     *)	echo This shell is not interactive ;;
-     esac
-
-

Alternatively, startup scripts may examine the variable -PS1; it is unset in non-interactive shells, and set in -interactive shells. Thus: - -

     if [ -z "$PS1" ]; then
-             echo This shell is not interactive
-     else
-             echo This shell is interactive
-     fi
-
- - -

6.3.3 Interactive Shell Behavior

- -

When the shell is running interactively, it changes its behavior in -several ways. - -

    -
  1. Startup files are read and executed as described in Bash Startup Files. - -
  2. Job Control (see Job Control) is enabled by default. When job -control is in effect, Bash ignores the keyboard-generated job control -signals SIGTTIN, SIGTTOU, and SIGTSTP. - -
  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. - -
  4. Bash executes the value of the PROMPT_COMMAND variable as a command -before printing the primary prompt, $PS1 -(see Bash Variables). - -
  5. Readline (see Command Line Editing) is used to read commands from -the user's terminal. - -
  6. Bash inspects the value of the ignoreeof option to set -o -instead of exiting immediately when it receives an EOF on its -standard input when reading a command (see The Set Builtin). - -
  7. Command history (see Bash History Facilities) -and history expansion (see History Interaction) -are enabled by default. -Bash will save the command history to the file named by $HISTFILE -when an interactive shell exits. - -
  8. Alias expansion (see Aliases) is performed by default. - -
  9. In the absence of any traps, Bash ignores SIGTERM -(see Signals). - -
  10. In the absence of any traps, SIGINT is caught and handled -((see Signals). -SIGINT will interrupt some shell builtins. - -
  11. An interactive login shell sends a SIGHUP to all jobs on exit -if the huponexit shell option has been enabled (see Signals). - -
  12. The -n invocation option is ignored, and `set -n' has -no effect (see The Set Builtin). - -
  13. Bash will check for mail periodically, depending on the values of the -MAIL, MAILPATH, and MAILCHECK shell variables -(see Bash Variables). - -
  14. Expansion errors due to references to unbound shell variables after -`set -u' has been enabled will not cause the shell to exit -(see The Set Builtin). - -
  15. The shell will not exit on expansion errors caused by var being unset -or null in ${var:?word} expansions -(see Shell Parameter Expansion). - -
  16. Redirection errors encountered by shell builtins will not cause the -shell to exit. - -
  17. When running in posix mode, a special builtin returning an error -status will not cause the shell to exit (see Bash POSIX Mode). - -
  18. A failed exec will not cause the shell to exit -(see Bourne Shell Builtins). - -
  19. Parser syntax errors will not cause the shell to exit. - -
  20. Simple spelling correction for directory arguments to the cd -builtin is enabled by default (see the description of the cdspell -option to the shopt builtin in The Shopt Builtin). - -
  21. The shell will check the value of the TMOUT variable and exit -if a command is not read within the specified number of seconds after -printing $PS1 (see Bash Variables). - -
- -
-


- -Next: , -Previous: Interactive Shells, -Up: Bash Features - -
- -

6.4 Bash Conditional Expressions

- -

-Conditional expressions are used by the [[ compound command -and the test and [ builtin commands. - -

Expressions may be unary or binary. -Unary expressions are often used to examine the status of a file. -There are string operators and numeric comparison operators as well. -If the file argument to one of the primaries is of the form -/dev/fd/N, then file descriptor N is checked. -If the file argument to one of the primaries is one of -/dev/stdin, /dev/stdout, or /dev/stderr, file -descriptor 0, 1, or 2, respectively, is checked. - -

Unless otherwise specified, primaries that operate on files follow symbolic -links and operate on the target of the link, rather than the link itself. - -

-
-a file
True if file exists. - -
-b file
True if file exists and is a block special file. - -
-c file
True if file exists and is a character special file. - -
-d file
True if file exists and is a directory. - -
-e file
True if file exists. - -
-f file
True if file exists and is a regular file. - -
-g file
True if file exists and its set-group-id bit is set. - -
-h file
True if file exists and is a symbolic link. - -
-k file
True if file exists and its "sticky" bit is set. - -
-p file
True if file exists and is a named pipe (FIFO). - -
-r file
True if file exists and is readable. - -
-s file
True if file exists and has a size greater than zero. - -
-t fd
True if file descriptor fd is open and refers to a terminal. - -
-u file
True if file exists and its set-user-id bit is set. - -
-w file
True if file exists and is writable. - -
-x file
True if file exists and is executable. - -
-O file
True if file exists and is owned by the effective user id. - -
-G file
True if file exists and is owned by the effective group id. - -
-L file
True if file exists and is a symbolic link. - -
-S file
True if file exists and is a socket. - -
-N file
True if file exists and has been modified since it was last read. - -
file1 -nt file2
True if file1 is newer (according to modification date) -than file2, or if file1 exists and file2 does not. - -
file1 -ot file2
True if file1 is older than file2, -or if file2 exists and file1 does not. - -
file1 -ef file2
True if file1 and file2 refer to the same device and -inode numbers. - -
-o optname
True if shell option optname is enabled. -The list of options appears in the description of the -o -option to the set builtin (see The Set Builtin). - -
-z string
True if the length of string is zero. - -
-n string
string
True if the length of string is non-zero. - -
string1 == string2
True if the strings are equal. -`=' may be used in place of `==' for strict posix compliance. - -
string1 != string2
True if the strings are not equal. - -
string1 < string2
True if string1 sorts before string2 lexicographically -in the current locale. - -
string1 > string2
True if string1 sorts after string2 lexicographically -in the current locale. - -
arg1 OP arg2
OP is one of -`-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. -These 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. - -
- -
-


- -Next: , -Previous: Bash Conditional Expressions, -Up: Bash Features - -
- -

6.5 Shell Arithmetic

- -

-The shell allows arithmetic expressions to be evaluated, as one of -the shell expansions or by the let and the -i option -to the declare builtins. - -

Evaluation is done in fixed-width integers with no check for overflow, -though division by 0 is trapped and flagged as an error. -The operators and their precedence, associativity, and values -are the same as in the C language. -The following list of operators is grouped into levels of -equal-precedence operators. -The levels are listed in order of decreasing precedence. - -

-
id++ id--
variable post-increment and post-decrement - -
++id --id
variable pre-increment and pre-decrement - -
- +
unary minus and plus - -
! ~
logical and bitwise negation - -
**
exponentiation - -
* / %
multiplication, division, remainder - -
+ -
addition, subtraction - -
<< >>
left and right bitwise shifts - -
<= >= < >
comparison - -
== !=
equality and inequality - -
&
bitwise AND - -
^
bitwise exclusive OR - -
|
bitwise OR - -
&&
logical AND - -
||
logical OR - -
expr ? expr : expr
conditional operator - -
= *= /= %= += -= <<= >>= &= ^= |=
assignment - -
expr1 , expr2
comma -
- -

Shell variables are allowed as operands; parameter expansion is -performed 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 0 when referenced -by name without using the parameter expansion syntax. -The value of a variable is evaluated as an arithmetic expression -when it is referenced, or when a variable which has been given the -integer attribute using `declare -i' is assigned a value. -A null value evaluates to 0. -A shell variable need not have its integer 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 [base#]n, where base -is a decimal number between 2 and 64 representing the arithmetic -base, and n is a number in that base. If base# is -omitted, then base 10 is used. -The digits greater than 9 are represented by the lowercase letters, -the uppercase letters, `@', and `_', in that order. -If base is less than or equal to 36, lowercase and uppercase -letters may be used interchangeably to represent numbers between 10 -and 35. - -

Operators are evaluated in order of precedence. Sub-expressions in -parentheses are evaluated first and may override the precedence -rules above. - -

-


- -Next: , -Previous: Shell Arithmetic, -Up: Bash Features - -
- -

6.6 Aliases

- -

-Aliases allow a string to be substituted for a word when it is used -as the first word of a simple command. -The shell maintains a list of aliases that may be set and unset with -the alias and unalias builtin commands. - -

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 any of the -shell metacharacters 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 ls to "ls -F", -for instance, and Bash does not try to recursively expand the -replacement text. If the last character of the alias value is a -space or tab character, then the next command word following the -alias is also checked for alias expansion. - -

Aliases are created and listed with the alias -command, and removed with the unalias command. - -

There is no mechanism for using arguments in the replacement text, -as in csh. -If arguments are needed, a shell function should be used -(see Shell Functions). - -

Aliases are not expanded when the shell is not interactive, -unless the expand_aliases shell option is set using -shopt (see The Shopt Builtin). - -

The rules concerning the definition and use of aliases are -somewhat confusing. Bash -always reads at least one complete line -of input before executing any -of the commands on that line. Aliases are expanded when a -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 compound command. As a consequence, aliases -defined in a function are not available until after that -function is executed. To be safe, always put -alias definitions on a separate line, and do not use alias -in compound commands. - -

For almost every purpose, shell functions are preferred over aliases. - -

-


- -Next: , -Previous: Aliases, -Up: Bash Features - -
- -

6.7 Arrays

- -

-Bash provides one-dimensional array variables. Any variable may be used as -an array; the declare 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 contiguously. Arrays are zero-based. - -

An array is created automatically if any variable is assigned to using -the syntax -

     name[subscript]=value
-
-

The subscript -is treated as an arithmetic expression that must evaluate to a number -greater than or equal to zero. To explicitly declare an array, use -

     declare -a name
-
-

The syntax -

     declare -a name[subscript]
-
-

is also accepted; the subscript is ignored. Attributes may be -specified for an array variable using the declare and -readonly builtins. Each attribute applies to all members of -an array. - -

Arrays are assigned to using compound assignments of the form -

     name=(value1 ... valuen)
-
-

where each -value is of the form [[subscript]=]string. If -the optional subscript is 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. -This syntax is also accepted by the declare -builtin. Individual array elements may be assigned to using the -name[subscript]=value syntax introduced above. - -

Any element of an array may be referenced using -${name[subscript]}. -The braces are required to avoid -conflicts with the shell's filename expansion operators. If the -subscript is `@' or `*', the word expands to all members -of the array name. These subscripts differ only when the word -appears within double quotes. -If the word is double-quoted, -${name[*]} expands to a single word with -the value of each array member separated by the first character of the -IFS variable, and ${name[@]} expands each element of -name to a separate word. When there are no array members, -${name[@]} 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 `*'. -${#name[subscript]} expands to the length of -${name[subscript]}. -If subscript is `@' or -`*', the expansion is the number of elements in the array. -Referencing an array variable without a subscript is equivalent to -referencing element zero. - -

The unset builtin is used to destroy arrays. -unset name[subscript] -destroys the array element at index subscript. -Care must be taken to avoid unwanted side effects caused by filename -generation. -unset name, where name is an array, removes the -entire array. A subscript of `*' or `@' also removes the -entire array. - -

The declare, local, and readonly -builtins each accept a -a -option to specify an array. The read -builtin accepts a -a -option to assign a list of words read from the standard input -to an array, and can read values from the standard input into -individual array elements. The set and declare -builtins display array values in a way that allows them to be -reused as input. - -

-


- -Next: , -Previous: Arrays, -Up: Bash Features - -
- -

6.8 The Directory Stack

- -

- -

- -

The directory stack is a list of recently-visited directories. The -pushd builtin adds directories to the stack as it changes -the current directory, and the popd builtin removes specified -directories from the stack and changes the current directory to -the directory removed. The dirs builtin displays the contents -of the directory stack. - -

The contents of the directory stack are also visible -as the value of the DIRSTACK shell variable. - -

-


- -Up: The Directory Stack - -
- -

6.8.1 Directory Stack Builtins

- -
-
dirs
-
          dirs [+N | -N] [-clpv]
-     
-

Display the list of currently remembered directories. Directories -are added to the list with the pushd command; the -popd command removes directories from the list. -

-
+N
Displays the Nth directory (counting from the left of the -list printed by dirs when invoked without options), starting -with zero. -
-N
Displays the Nth directory (counting from the right of the -list printed by dirs when invoked without options), starting -with zero. -
-c
Clears the directory stack by deleting all of the elements. -
-l
Produces a longer listing; the default listing format uses a -tilde to denote the home directory. -
-p
Causes dirs to print the directory stack with one entry per -line. -
-v
Causes dirs to print the directory stack with one entry per -line, prefixing each entry with its index in the stack. -
- -
popd
-
          popd [+N | -N] [-n]
-     
-

Remove the top entry from the directory stack, and cd -to the new top directory. -When no arguments are given, popd -removes the top directory from the stack and -performs a cd to the new top directory. The -elements are numbered from 0 starting at the first directory listed with -dirs; i.e., popd is equivalent to popd +0. -

-
+N
Removes the Nth directory (counting from the left of the -list printed by dirs), starting with zero. -
-N
Removes the Nth directory (counting from the right of the -list printed by dirs), starting with zero. -
-n
Suppresses the normal change of directory when removing directories -from the stack, so that only the stack is manipulated. -
- -


pushd
-
          pushd [-n] [+N | -N | dir ]
-     
-

Save the current directory on the top of the directory stack -and then cd to dir. -With no arguments, pushd exchanges the top two directories. - -

-
-n
Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. -
+N
Brings the Nth directory (counting from the left of the -list printed by dirs, starting with zero) to the top of -the list by rotating the stack. -
-N
Brings the Nth directory (counting from the right of the -list printed by dirs, starting with zero) to the top of -the list by rotating the stack. -
dir
Makes the current working directory be the top of the stack, and then -executes the equivalent of `cd dir'. -cds to dir. -
- -
- -
-


- -Next: , -Previous: The Directory Stack, -Up: Bash Features - -
- -

6.9 Controlling the Prompt

- -

-The value of the variable PROMPT_COMMAND is examined just before -Bash prints each primary prompt. If PROMPT_COMMAND is set and -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: - -

-
\a
A bell character. -
\d
The date, in "Weekday Month Date" format (e.g., "Tue May 26"). -
\D{format}
The format is passed to strftime(3) and the result is inserted -into the prompt string; an empty format results in a locale-specific -time representation. The braces are required. -
\e
An escape character. -
\h
The hostname, up to the first `.'. -
\H
The hostname. -
\j
The number of jobs currently managed by the shell. -
\l
The basename of the shell's terminal device name. -
\n
A newline. -
\r
A carriage return. -
\s
The name of the shell, the basename of $0 (the portion -following the final slash). -
\t
The time, in 24-hour HH:MM:SS format. -
\T
The time, in 12-hour HH:MM:SS format. -
\@
The time, in 12-hour am/pm format. -
\A
The time, in 24-hour HH:MM format. -
\u
The username of the current user. -
\v
The version of Bash (e.g., 2.00) -
\V
The release of Bash, version + patchlevel (e.g., 2.00.0) -
\w
The current working directory, with $HOME abbreviated with a tilde. -
\W
The basename of $PWD, with $HOME abbreviated with a tilde. -
\!
The history number of this command. -
\#
The command number of this command. -
\$
If the effective uid is 0, #, otherwise $. -
\nnn
The character whose ASCII code is the octal value nnn. -
\\
A backslash. -
\[
Begin a sequence of non-printing characters. This could be used to -embed a terminal control sequence into the prompt. -
\]
End a sequence of non-printing characters. -
- -

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 Bash History Facilities), 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 substitution, arithmetic -expansion, and quote removal, subject to the value of the -promptvars shell option (see Bash Builtins). - -

-


- -Next: , -Previous: Printing a Prompt, -Up: Bash Features - -
- -

6.10 The Restricted Shell

- -

-If Bash is started with the name rbash, or the ---restricted -or --r -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. -A restricted shell behaves identically to bash -with the exception that the following are disallowed or not performed: - -

    -
  • Changing directories with the cd builtin. -
  • Setting or unsetting the values of the SHELL, PATH, -ENV, or BASH_ENV variables. -
  • Specifying command names containing slashes. -
  • Specifying a filename containing a slash as an argument to the . -builtin command. -
  • Specifying a filename containing a slash as an argument to the -p -option to the hash builtin command. -
  • Importing function definitions from the shell environment at startup. -
  • Parsing the value of SHELLOPTS from the shell environment at startup. -
  • Redirecting output using the `>', `>|', `<>', `>&', -`&>', and `>>' redirection operators. -
  • Using the exec builtin to replace the shell with another command. -
  • Adding or deleting builtin commands with the --f and -d options to the enable builtin. -
  • Using the enable builtin command to enable disabled shell builtins. -
  • Specifying the -p option to the command builtin. -
  • Turning off restricted mode with `set +r' or `set +o restricted'. -
- -

These restrictions are enforced after any startup files are read. - -

When a command that is found to be a shell script is executed -(see Shell Scripts), rbash turns off any restrictions in -the shell spawned to execute the script. - -

-


- -Previous: The Restricted Shell, -Up: Bash Features - -
- -

6.11 Bash POSIX Mode

- -

-Starting Bash with the --posix command-line option or executing -`set -o posix' while Bash is running will cause Bash to conform more -closely to the posix standard by changing the behavior to -match that specified by posix in areas where the Bash default differs. - -

When invoked as sh, Bash enters posix mode after reading the -startup files. - -

The following list is what's changed when `posix mode' is in effect: - -

    -
  1. When a command in the hash table no longer exists, Bash will re-search -$PATH to find the new location. This is also available with -`shopt -s checkhash'. - -
  2. The message printed by the job control code and builtins when a job -exits with a non-zero status is `Done(status)'. - -
  3. The message printed by the job control code and builtins when a job -is stopped is `Stopped(signame)', where signame is, for -example, SIGTSTP. - -
  4. 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. - -
  5. Reserved words appearing in a context where reserved words are recognized -do not undergo alias expansion. - -
  6. The posix PS1 and PS2 expansions of `!' to -the history number and `!!' to `!' are enabled, -and parameter expansion is performed on the values of PS1 and -PS2 regardless of the setting of the promptvars option. - -
  7. The posix startup files are executed ($ENV) rather than -the normal Bash files. - -
  8. Tilde expansion is only performed on assignments preceding a command -name, rather than on all assignment statements on the line. - -
  9. The default history file is ~/.sh_history (this is the -default value of $HISTFILE). - -
  10. The output of `kill -l' prints all the signal names on a single line, -separated by spaces, without the `SIG' prefix. - -
  11. The kill builtin does not accept signal names with a `SIG' -prefix. - -
  12. Non-interactive shells exit if filename in . filename -is not found. - -
  13. Non-interactive shells exit if a syntax error in an arithmetic expansion -results in an invalid expression. - -
  14. Redirection operators do not perform filename expansion on the word -in the redirection unless the shell is interactive. - -
  15. Redirection operators do not perform word splitting on the word in the -redirection. - -
  16. Function names must be valid shell names. That is, they may not -contain characters other than letters, digits, and underscores, and -may not start with a digit. Declaring a function with an invalid name -causes a fatal syntax error in non-interactive shells. - -
  17. posix special builtins are found before shell functions -during command lookup. - -
  18. 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. - -
  19. If CDPATH is set, the cd builtin will not implicitly -append the current directory to it. This means that cd will -fail if no valid directory name can be constructed from -any of the entries in $CDPATH, even if the a directory with -the same name as the name given as an argument to cd exists -in the current directory. - -
  20. 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. - -
  21. 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. - -
  22. Process substitution is not available. - -
  23. Assignment statements preceding posix special builtins -persist in the shell environment after the builtin completes. - -
  24. 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. - -
  25. The export and readonly builtin commands display their -output in the format required by posix. - -
  26. The trap builtin displays signal names without the leading -SIG. - -
  27. 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. - -
  28. The . and source builtins do not search the current directory -for the filename argument if it is not found by searching PATH. - -
  29. Subshells spawned to execute command substitutions inherit the value of -the -e option from the parent shell. When not in posix mode, -Bash clears the -e option in such subshells. - -
  30. Alias expansion is always enabled, even in non-interactive shells. - -
  31. When the alias builtin displays alias definitions, it does not -display them with a leading `alias ' unless the -p option -is supplied. - -
  32. When the set builtin is invoked without options, it does not display -shell function names and definitions. - -
  33. 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. - -
  34. 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. - -
  35. When the pwd builtin is supplied the -P option, it resets -$PWD to a pathname containing no symlinks. - -
  36. 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. - -
  37. When listing the history, the fc builtin does not include an -indication of whether or not a history entry has been modified. - -
  38. The default editor used by fc is ed. - -
  39. 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. - -
  40. The vi editing mode will invoke the vi editor directly when -the `v' command is run, instead of checking $FCEDIT and -$EDITOR. - -
  41. 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. - -
- -

There is other posix behavior that Bash does not implement by -default even when in posix mode. -Specifically: - -

    - -
  1. The fc builtin checks $EDITOR as a program to edit history -entries if FCEDIT is unset, rather than defaulting directly to -ed. fc uses ed if EDITOR is unset. - -
  2. As noted above, Bash requires the xpg_echo option to be enabled for -the echo builtin to be fully conformant. - -
- -

Bash can be configured to be posix-conformant by default, by specifying -the --enable-strict-posix-default to configure when building -(see Optional Features). - -

-


- -Next: , -Previous: Bash Features, -Up: Top - -
- -

7 Job Control

- -

This chapter discusses what job control is, how it works, and how -Bash allows you to access its facilities. - -

- -
-


- -Next: , -Up: Job Control - -
- -

7.1 Job Control Basics

- -

-Job control -refers to the ability to selectively stop (suspend) -the execution of processes and continue (resume) -their execution at a later point. A user typically employs -this facility via an interactive interface supplied jointly -by the system's terminal driver and Bash. - -

The shell associates a job with each pipeline. It keeps a -table of currently executing jobs, which may be listed with the -jobs command. When Bash starts a job -asynchronously, it prints a line that looks -like: -

     [1] 25647
-
-

indicating that this job is job number 1 and that the process id -of the last process in the pipeline associated with this job is -25647. All of the processes in a single pipeline are members of -the same job. Bash uses the job abstraction as the -basis for job control. - -

To facilitate the implementation of the user interface to job -control, the operating system maintains the notion of a current terminal -process group id. Members of this process group (processes whose -process group id is equal to the current terminal process group -id) receive keyboard-generated signals such as SIGINT. -These processes are said to be in the foreground. Background -processes are those whose process group id differs from the -terminal's; such processes are immune to keyboard-generated -signals. Only foreground processes are allowed to read from or -write to the terminal. Background processes which attempt to -read from (write to) the terminal are sent a SIGTTIN -(SIGTTOU) signal by the terminal driver, which, unless -caught, suspends the process. - -

If the operating system on which Bash is running supports -job control, Bash contains facilities to use it. Typing the -suspend character (typically `^Z', Control-Z) while a -process is running causes that process to be stopped and returns -control to Bash. Typing the delayed suspend character -(typically `^Y', Control-Y) causes the process to be stopped -when it attempts to read input from the terminal, and control to -be returned to Bash. The user then manipulates the state of -this job, using the bg command to continue it in the -background, the fg command to continue it in the -foreground, or the kill command to kill it. A `^Z' -takes effect immediately, and has the additional side effect of -causing pending output and typeahead to be discarded. - -

There are a number of ways to refer to a job in the shell. The -character `%' introduces a job name. - -

Job number n may be referred to as `%n'. -The symbols `%%' and `%+' refer to the shell's notion of the -current job, which is the last job stopped while it was in the foreground -or started in the background. -A single `%' (with no accompanying job specification) also refers -to the current job. -The previous job may be referenced using `%-'. In output -pertaining to jobs (e.g., the output of the jobs command), -the current job is always flagged with a `+', and the -previous job with a `-'. - -

A job may also be referred to -using a prefix of the name used to start it, or using a substring -that appears in its command line. For example, `%ce' refers -to a stopped ce job. Using `%?ce', on the -other hand, refers to any job containing the string `ce' in -its command line. If the prefix or substring matches more than one job, -Bash reports an error. - -

Simply naming a job can be used to bring it into the foreground: -`%1' is a synonym for `fg %1', bringing job 1 from the -background into the foreground. Similarly, `%1 &' resumes -job 1 in the background, equivalent to `bg %1' - -

The shell learns immediately whenever a job changes state. -Normally, Bash waits until it is about to print a prompt -before reporting changes in a job's status so as to not interrupt -any other output. -If the -b option to the set builtin is enabled, -Bash reports such changes immediately (see The Set Builtin). -Any trap on SIGCHLD is executed for each child process -that exits. - -

If an attempt to exit Bash is made while jobs are stopped, (or running, if -the checkjobs option is enabled – see The Shopt Builtin), the -shell prints a warning message, and if the checkjobs option is -enabled, lists the jobs and their statuses. -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. - -

-


- -Next: , -Previous: Job Control Basics, -Up: Job Control - -
- -

7.2 Job Control Builtins

- -
-
bg
-
          bg [jobspec ...]
-     
-

Resume each suspended job jobspec in the background, as if it -had been started with `&'. -If jobspec is not supplied, the current job is used. -The return status is zero unless it is run when job control is not -enabled, or, when run with job control enabled, any -jobspec was not found or specifies a job -that was started without job control. - -

fg
-
          fg [jobspec]
-     
-

Resume the job jobspec in the foreground and make it the current job. -If jobspec is not supplied, the current job is used. -The return status is that of the command placed into the foreground, -or non-zero if run when job control is disabled or, when run with -job control enabled, jobspec does not specify a valid job or -jobspec specifies a job that was started without job control. - -

jobs
-
          jobs [-lnprs] [jobspec]
-          jobs -x command [arguments]
-     
-

The first form lists the active jobs. The options have the -following meanings: - -

-
-l
List process ids in addition to the normal information. - -
-n
Display information only about jobs that have changed status since -the user was last notified of their status. - -
-p
List only the process id of the job's process group leader. - -
-r
Restrict output to running jobs. - -
-s
Restrict output to stopped jobs. -
- -

If jobspec is given, -output is restricted to information about that job. -If jobspec is not supplied, the status of all jobs is -listed. - -

If the -x option is supplied, jobs replaces any -jobspec found in command or arguments with the -corresponding process group id, and executes command, -passing it arguments, returning its exit status. - -

kill
-
          kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
-          kill -l [exit_status]
-     
-

Send a signal specified by sigspec or signum to the process -named by job specification jobspec or process id pid. -sigspec is either a case-insensitive signal name such as -SIGINT (with or without the SIG prefix) -or a signal number; signum is a signal number. -If sigspec and signum are not present, SIGTERM is used. -The -l option lists the signal names. -If any arguments are supplied when -l is given, the names of the -signals corresponding to the arguments are listed, and the return status -is zero. -exit_status is a number specifying a signal number or the exit -status of a process terminated by a signal. -The return status is zero if at least one signal was successfully sent, -or non-zero if an error occurs or an invalid option is encountered. - -

wait
-
          wait [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 -last command waited for. -If a job spec is given, all processes in 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 neither jobspec nor pid specifies an active child process -of the shell, the return status is 127. - -

disown
-
          disown [-ar] [-h] [jobspec ...]
-     
-

Without options, each jobspec is removed from the table of -active jobs. -If the -h option is given, the job is not removed from the table, -but is marked so that SIGHUP is not sent to the job if the shell -receives a SIGHUP. -If jobspec is not present, and neither the -a nor -r -option is supplied, the current job is used. -If no jobspec is supplied, the -a option means to remove or -mark all jobs; the -r option without a jobspec -argument restricts operation to running jobs. - -

suspend
-
          suspend [-f]
-     
-

Suspend the execution of this shell until it receives a -SIGCONT signal. The -f option means to suspend -even if the shell is a login shell. - -

- -

When job control is not active, the kill and wait -builtins do not accept jobspec arguments. They must be -supplied process ids. - -

-


- -Previous: Job Control Builtins, -Up: Job Control - -
- -

7.3 Job Control Variables

- -
-
auto_resume
This variable controls how the shell interacts with the user and -job control. If this variable exists then single word simple -commands without redirections are treated as candidates for resumption -of an existing job. There is no ambiguity allowed; if there is -more than one job beginning with the string typed, then -the most recently accessed job will be selected. -The name of a stopped job, in this context, is the command line -used to start it. If this variable is set to the value `exact', -the string supplied must match the name of a stopped job exactly; -if set to `substring', -the string supplied needs to match a substring of the name of a -stopped job. The `substring' value provides functionality -analogous to the `%?' job id (see Job Control Basics). -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 `%' job id. - -
- -

- - - - - -

-


- -Next: , -Previous: Using History Interactively, -Up: Top - -
- -

8 Command Line Editing

- -

This chapter describes the basic features of the gnu -command line editing interface. -Command line editing is provided by the Readline library, which is -used by several different programs, including Bash. - -

- - - -

8.1 Introduction to Line Editing

- -

The following paragraphs describe the notation used to represent -keystrokes. - -

The text C-k is read as `Control-K' and describes the character -produced when the <k> key is pressed while the Control key -is depressed. - -

The text M-k is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the <k> -key is pressed. -The Meta key is labeled <ALT> on many keyboards. -On keyboards with two keys labeled <ALT> (usually to either side of -the space bar), the <ALT> on the left side is generally set to -work as a Meta key. -The <ALT> key on the right may also be configured to work as a -Meta key or may be configured as some other modifier, such as a -Compose key for typing accented characters. - -

If you do not have a Meta or <ALT> key, or another key working as -a Meta key, the identical keystroke can be generated by typing <ESC> -first, and then typing <k>. -Either process is known as metafying the <k> key. - -

The text M-C-k is read as `Meta-Control-k' and describes the -character produced by metafying C-k. - -

In addition, several keys have their own names. Specifically, -<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all -stand for themselves when seen in this text, or in an init file -(see Readline Init File). -If your keyboard lacks a <LFD> key, typing <C-j> will -produce the desired character. -The <RET> key may be labeled <Return> or <Enter> on -some keyboards. - -

- -

8.2 Readline Interaction

- -

-Often during an interactive session you type in a long line of text, -only to notice that the first word on the line is misspelled. The -Readline library gives you a set of commands for manipulating the text -as you type it in, allowing you to just fix your typo, and not forcing -you to retype the majority of the line. Using these editing commands, -you move the cursor to the place that needs correction, and delete or -insert the text of the corrections. Then, when you are satisfied with -the line, you simply press <RET>. You do not have to be at the -end of the line to press <RET>; the entire line is accepted -regardless of the location of the cursor within the line. - -

- - - -

8.2.1 Readline Bare Essentials

- -

-In order to enter characters into the line, simply type them. The typed -character appears where the cursor was, and then the cursor moves one -space to the right. If you mistype a character, you can use your -erase character to back up and delete the mistyped character. - -

Sometimes you may mistype a character, and -not notice the error until you have typed several other characters. In -that case, you can type C-b to move the cursor to the left, and then -correct your mistake. Afterwards, you can move the cursor to the right -with C-f. - -

When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text -that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the -blank space created by the removal of the text. A list of the bare -essentials for editing the text of an input line follows. - -

-
C-b
Move back one character. -
C-f
Move forward one character. -
<DEL> or <Backspace>
Delete the character to the left of the cursor. -
C-d
Delete the character underneath the cursor. -
Printing characters
Insert the character into the line at the cursor. -
C-_ or C-x C-u
Undo the last editing command. You can undo all the way back to an -empty line. -
- -

(Depending on your configuration, the <Backspace> key be set to -delete the character to the left of the cursor and the <DEL> key set -to delete the character underneath the cursor, like C-d, rather -than the character to the left of the cursor.) - -

- -

8.2.2 Readline Movement Commands

- -

The above table describes the most basic keystrokes that you need -in order to do editing of the input line. For your convenience, many -other commands have been added in addition to C-b, C-f, -C-d, and <DEL>. Here are some commands for moving more rapidly -about the line. - -

-
C-a
Move to the start of the line. -
C-e
Move to the end of the line. -
M-f
Move forward a word, where a word is composed of letters and digits. -
M-b
Move backward a word. -
C-l
Clear the screen, reprinting the current line at the top. -
- -

Notice how C-f moves forward a character, while M-f moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. - -

- -

8.2.3 Readline Killing Commands

- -

-Killing text means to delete the text from the line, but to save -it away for later use, usually by yanking (re-inserting) -it back into the line. -(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) - -

If the description for a command says that it `kills' text, then you can -be sure that you can get the text back in a different (or the same) -place later. - -

When you use a kill command, the text is saved in a kill-ring. -Any number of consecutive kills save all of the killed text together, so -that when you yank it back, you get it all. The kill -ring is not line specific; the text that you killed on a previously -typed line is available to be yanked back later, when you are typing -another line. - -Here is the list of commands for killing text. - -

-
C-k
Kill the text from the current cursor position to the end of the line. - -
M-d
Kill from the cursor to the end of the current word, or, if between -words, to the end of the next word. -Word boundaries are the same as those used by M-f. - -
M-<DEL>
Kill from the cursor the start of the current word, or, if between -words, to the start of the previous word. -Word boundaries are the same as those used by M-b. - -
C-w
Kill from the cursor to the previous whitespace. This is different than -M-<DEL> because the word boundaries differ. - -
- -

Here is how to yank the text back into the line. Yanking -means to copy the most-recently-killed text from the kill buffer. - -

-
C-y
Yank the most recently killed text back into the buffer at the cursor. - -
M-y
Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is C-y or M-y. -
- -
-


- -Next: , -Previous: Readline Killing Commands, -Up: Readline Interaction - -
- -

8.2.4 Readline Arguments

- -

You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign of the -argument that is significant. If you pass a negative argument to a -command which normally acts in a forward direction, that command will -act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. - -

The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once -you have typed one meta digit to get the argument started, you can type -the remainder of the digits, and then the command. For example, to give -the C-d command an argument of 10, you could type `M-1 0 C-d', -which will delete the next ten characters on the input line. - -

-


- -Previous: Readline Arguments, -Up: Readline Interaction - -
- -

8.2.5 Searching for Commands in the History

- -

Readline provides commands for searching through the command history -(see Bash History Facilities) -for lines containing a specified string. -There are two search modes: incremental and non-incremental. - -

Incremental searches begin before the user has finished typing the -search string. -As each character of the search string is typed, Readline displays -the next entry from the history matching the string typed so far. -An incremental search requires only as many characters as needed to -find the desired history entry. -To search backward in the history for a particular string, type -C-r. Typing C-s searches forward through the history. -The characters present in the value of the isearch-terminators variable -are used to terminate an incremental search. -If that variable has not been assigned a value, the <ESC> and -C-J characters will terminate an incremental search. -C-g will abort an incremental search and restore the original line. -When the search is terminated, the history entry containing the -search string becomes the current line. - -

To find other matching entries in the history list, type C-r or -C-s as appropriate. -This will search backward or forward in the history for the next -entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate -the search and execute that command. -For instance, a <RET> will terminate the search and accept -the line, thereby executing the command from the history list. -A movement command will terminate the search, make the last line found -the current line, and begin editing. - -

Readline remembers the last incremental search string. If two -C-rs are typed without any intervening characters defining a new -search string, any remembered search string is used. - -

Non-incremental searches read the entire search string before starting -to search for matching history lines. The search string may be -typed by the user or be part of the contents of the current line. - -

- -

8.3 Readline Init File

- -

-Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. -Any user can customize programs that use Readline by putting -commands in an inputrc file, conventionally in his home directory. -The name of this -file is taken from the value of the shell variable INPUTRC. If -that variable is unset, the default is ~/.inputrc. If that -file does not exist or cannot be read, the ultimate default is -/etc/inputrc. - -

When a program which uses the Readline library starts up, the -init file is read, and the key bindings are set. - -

In addition, the C-x C-r command re-reads this init file, thus -incorporating any changes that you might have made to it. - -

- - - -

8.3.1 Readline Init File Syntax

- -

There are only a few basic constructs allowed in the -Readline init file. Blank lines are ignored. -Lines beginning with a `#' are comments. -Lines beginning with a `$' indicate conditional -constructs (see Conditional Init Constructs). Other lines -denote variable settings and key bindings. - -

-
Variable Settings
You can modify the run-time behavior of Readline by -altering the values of variables in Readline -using the set command within the init file. -The syntax is simple: - -
          set variable value
-     
-

Here, for example, is how to -change from the default Emacs-like key binding to use -vi line editing commands: - -

          set editing-mode vi
-     
-

Variable names and values, where appropriate, are recognized without regard -to case. Unrecognized variable names are ignored. - -

Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, on (case-insensitive), or 1. Any other -value results in the variable being set to off. - -

The bind -V command lists the current Readline variable names -and values. See Bash Builtins. - -

A great deal of run-time behavior is changeable with the following -variables. - -

-

-
bell-style
Controls what happens when Readline wants to ring the terminal bell. -If set to `none', Readline never rings the bell. If set to -`visible', Readline uses a visible bell if one is available. -If set to `audible' (the default), Readline attempts to ring -the terminal's bell. - -
bind-tty-special-chars
If set to `on', Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. - -
comment-begin
The string to insert at the beginning of the line when the -insert-comment command is executed. The default value -is "#". - -
completion-ignore-case
If set to `on', Readline performs filename matching and completion -in a case-insensitive fashion. -The default value is `off'. - -
completion-query-items
The number of possible completions that determines when the user is -asked whether the list of possibilities should be displayed. -If the number of possible completions is greater than this value, -Readline will ask the user whether or not he wishes to view -them; otherwise, they are simply listed. -This variable must be set to an integer value greater than or equal to 0. -A negative value means Readline should never ask. -The default limit is 100. - -
convert-meta
If set to `on', Readline will convert characters with the -eighth bit set to an ascii key sequence by stripping the eighth -bit and prefixing an <ESC> character, converting them to a -meta-prefixed key sequence. The default value is `on'. - -
disable-completion
If set to `On', Readline will inhibit word completion. -Completion characters will be inserted into the line as if they had -been mapped to self-insert. The default is `off'. - -
editing-mode
The editing-mode variable controls which default set of -key bindings is used. By default, Readline starts up in Emacs editing -mode, where the keystrokes are most similar to Emacs. This variable can be -set to either `emacs' or `vi'. - -
enable-keypad
When set to `on', Readline will try to enable the application -keypad when it is called. Some systems need this to enable the -arrow keys. The default is `off'. - -
expand-tilde
If set to `on', tilde expansion is performed when Readline -attempts word completion. The default is `off'. - -
history-preserve-point
If set to `on', the history code attempts to place point at the -same location on each history line retrieved with previous-history -or next-history. The default is `off'. - -
horizontal-scroll-mode
This variable can be set to either `on' or `off'. Setting it -to `on' means that the text of the lines being edited will scroll -horizontally on a single screen line when they are longer than the width -of the screen, instead of wrapping onto a new screen line. By default, -this variable is set to `off'. - -
input-meta
If set to `on', Readline will enable eight-bit input (it -will not clear the eighth bit in the characters it reads), -regardless of what the terminal claims it can support. The -default value is `off'. The name meta-flag is a -synonym for this variable. - -
isearch-terminators
The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see Searching). -If this variable has not been given a value, the characters <ESC> and -C-J will terminate an incremental search. - -
keymap
Sets Readline's idea of the current keymap for key binding commands. -Acceptable keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; emacs is -equivalent to emacs-standard. The default value is emacs. -The value of the editing-mode variable also affects the -default keymap. - -
mark-directories
If set to `on', completed directory names have a slash -appended. The default is `on'. - -
mark-modified-lines
This variable, when set to `on', causes Readline to display an -asterisk (`*') at the start of history lines which have been modified. -This variable is `off' by default. - -
mark-symlinked-directories
If set to `on', completed names which are symbolic links -to directories have a slash appended (subject to the value of -mark-directories). -The default is `off'. - -
match-hidden-files
This variable, when set to `on', causes Readline to match files whose -names begin with a `.' (hidden files) when performing filename -completion, unless the leading `.' is -supplied by the user in the filename to be completed. -This variable is `on' by default. - -
output-meta
If set to `on', Readline will display characters with the -eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is `off'. - -
page-completions
If set to `on', Readline uses an internal more-like pager -to display a screenful of possible completions at a time. -This variable is `on' by default. - -
print-completions-horizontally
If set to `on', Readline will display completions with matches -sorted horizontally in alphabetical order, rather than down the screen. -The default is `off'. - -
show-all-if-ambiguous
This alters the default behavior of the completion functions. If -set to `on', -words which have more than one possible completion cause the -matches to be listed immediately instead of ringing the bell. -The default value is `off'. - -
show-all-if-unmodified
This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to `on', -words which have more than one possible completion without any -possible partial completion (the possible completions don't share -a common prefix) cause the matches to be listed immediately instead -of ringing the bell. -The default value is `off'. - -
visible-stats
If set to `on', a character denoting a file's type -is appended to the filename when listing possible -completions. The default is `off'. - -
- -
Key Bindings
The syntax for controlling key bindings in the init file is -simple. First you need to find the name of the command that you -want to change. The following sections contain tables of the command -name, the default keybinding, if any, and a short description of what -the command does. - -

Once you know the name of the command, simply place on a line -in the init file the name of the key -you wish to bind the command to, a colon, and then the name of the -command. -There can be no space between the key name and the colon – that will be -interpreted as part of the key name. -The name of the key can be expressed in different ways, depending on -what you find most comfortable. - -

In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). - -

The bind -p command displays Readline function names and -bindings in a format that can put directly into an initialization file. -See Bash Builtins. - -

-
keynamefunction-name or macro
keyname is the name of a key spelled out in English. For example: -
               Control-u: universal-argument
-               Meta-Rubout: backward-kill-word
-               Control-o: "> output"
-          
-

In the above example, C-u is bound to the function -universal-argument, -M-DEL is bound to the function backward-kill-word, and -C-o is bound to run the macro -expressed on the right hand side (that is, to insert the text -`> output' into the line). - -

A number of symbolic character names are recognized while -processing this key binding syntax: -DEL, -ESC, -ESCAPE, -LFD, -NEWLINE, -RET, -RETURN, -RUBOUT, -SPACE, -SPC, -and -TAB. - -

"keyseq": function-name or macro
keyseq differs from keyname above in that strings -denoting an entire key sequence can be specified, by placing -the key sequence in double quotes. Some gnu Emacs style key -escapes can be used, as in the following example, but the -special character names are not recognized. - -
               "\C-u": universal-argument
-               "\C-x\C-r": re-read-init-file
-               "\e[11~": "Function Key 1"
-          
-

In the above example, C-u is again bound to the function -universal-argument (just as it was in the first example), -`C-x C-r' is bound to the function re-read-init-file, -and `<ESC> <[> <1> <1> <~>' is bound to insert -the text `Function Key 1'. - -

- -

The following gnu Emacs style escape sequences are available when -specifying key sequences: - -

-
\C-
control prefix -
\M-
meta prefix -
\e
an escape character -
\\
backslash -
\"
<">, a double quotation mark -
\'
<'>, a single quote or apostrophe -
- -

In addition to the gnu Emacs style escape sequences, a second -set of backslash escapes is available: - -

-
\a
alert (bell) -
\b
backspace -
\d
delete -
\f
form feed -
\n
newline -
\r
carriage return -
\t
horizontal tab -
\v
vertical tab -
\nnn
the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH
the eight-bit character whose value is the hexadecimal value HH -(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 function name. -In the macro body, the backslash escapes described above are expanded. -Backslash will quote any other character in the macro text, -including `"' and `''. -For example, the following binding will make `C-x \' -insert a single `\' into the line: -

          "\C-x\\": "\\"
-     
-
- - - -

8.3.2 Conditional Init Constructs

- -

Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key -bindings and variable settings to be performed as the result -of tests. There are four parser directives used. - -

-
$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. - -
-
mode
The mode= form of the $if directive is used to test -whether Readline is in emacs or vi mode. -This may be used in conjunction -with the `set keymap' command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -Readline is starting out in emacs mode. - -
term
The term= form may be used to include terminal-specific -key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -`=' is tested against both the full name of the terminal and -the portion of the terminal name before the first `-'. This -allows sun to match both sun and sun-cmd, -for instance. - -
application
The application construct is used to include -application-specific settings. Each program using the Readline -library sets the application name, and you can test for -a particular value. -This could be used to bind key sequences to functions useful for -a specific program. For instance, the following command adds a -key sequence that quotes the current or previous word in Bash: -
               $if Bash
-               # Quote the current or previous word
-               "\C-xq": "\eb\"\ef\""
-               $endif
-          
-
- -
$endif
This command, as seen in the previous example, terminates an -$if command. - -
$else
Commands in this branch of the $if directive are executed if -the test fails. - -
$include
This directive takes a single filename as an argument and reads commands -and bindings from that file. -For example, the following directive reads from /etc/inputrc: -
          $include /etc/inputrc
-     
-
- - - -

8.3.3 Sample Init File

- -

Here is an example of an inputrc file. This illustrates key -binding, variable assignment, and conditional syntax. - -

     
-     # This file controls the behaviour of line input editing for
-     # programs that use the GNU Readline library.  Existing
-     # programs include FTP, Bash, and GDB.
-     #
-     # You can re-read the inputrc file with C-x C-r.
-     # Lines beginning with '#' are comments.
-     #
-     # First, include any systemwide bindings and variable
-     # assignments from /etc/Inputrc
-     $include /etc/Inputrc
-     
-     #
-     # Set various bindings for emacs mode.
-     
-     set editing-mode emacs
-     
-     $if mode=emacs
-     
-     Meta-Control-h:	backward-kill-word	Text after the function name is ignored
-     
-     #
-     # Arrow keys in keypad mode
-     #
-     #"\M-OD":        backward-char
-     #"\M-OC":        forward-char
-     #"\M-OA":        previous-history
-     #"\M-OB":        next-history
-     #
-     # Arrow keys in ANSI mode
-     #
-     "\M-[D":        backward-char
-     "\M-[C":        forward-char
-     "\M-[A":        previous-history
-     "\M-[B":        next-history
-     #
-     # Arrow keys in 8 bit keypad mode
-     #
-     #"\M-\C-OD":       backward-char
-     #"\M-\C-OC":       forward-char
-     #"\M-\C-OA":       previous-history
-     #"\M-\C-OB":       next-history
-     #
-     # Arrow keys in 8 bit ANSI mode
-     #
-     #"\M-\C-[D":       backward-char
-     #"\M-\C-[C":       forward-char
-     #"\M-\C-[A":       previous-history
-     #"\M-\C-[B":       next-history
-     
-     C-q: quoted-insert
-     
-     $endif
-     
-     # An old-style binding.  This happens to be the default.
-     TAB: complete
-     
-     # Macros that are convenient for shell interaction
-     $if Bash
-     # edit the path
-     "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
-     # prepare to type a quoted word --
-     # insert open and close double quotes
-     # and move to just after the open quote
-     "\C-x\"": "\"\"\C-b"
-     # insert a backslash (testing backslash escapes
-     # in sequences and macros)
-     "\C-x\\": "\\"
-     # Quote the current or previous word
-     "\C-xq": "\eb\"\ef\""
-     # Add a binding to refresh the line, which is unbound
-     "\C-xr": redraw-current-line
-     # Edit variable on current line.
-     "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
-     $endif
-     
-     # use a visible bell if one is available
-     set bell-style visible
-     
-     # don't strip characters to 7 bits when reading
-     set input-meta on
-     
-     # allow iso-latin1 characters to be inserted rather
-     # than converted to prefix-meta sequences
-     set convert-meta off
-     
-     # display characters with the eighth bit set directly
-     # rather than as meta-prefixed characters
-     set output-meta on
-     
-     # if there are more than 150 possible completions for
-     # a word, ask the user if he wants to see all of them
-     set completion-query-items 150
-     
-     # For FTP
-     $if Ftp
-     "\C-xg": "get \M-?"
-     "\C-xt": "put \M-?"
-     "\M-.": yank-last-arg
-     $endif
-
-
-


- -Next: , -Previous: Readline Init File, -Up: Command Line Editing - -
- -

8.4 Bindable Readline Commands

- - - -

This section describes Readline commands that may be bound to key -sequences. -You can list your key bindings by executing -bind -P or, for a more terse format, suitable for an -inputrc file, bind -p. (See Bash Builtins.) -Command names without an accompanying key sequence are unbound by default. - -

In the following descriptions, point refers to the current cursor -position, and mark refers to a cursor position saved by the -set-mark command. -The text between the point and mark is referred to as the region. - -

- -

8.4.1 Commands For Moving

- -
-
beginning-of-line (C-a)
Move to the start of the current line. - -
end-of-line (C-e)
Move to the end of the line. - -
forward-char (C-f)
Move forward a character. - -
backward-char (C-b)
Move back a character. - -
forward-word (M-f)
Move forward to the end of the next word. Words are composed of -letters and digits. - -
backward-word (M-b)
Move back to the start of the current or previous word. Words are -composed of letters and digits. - -
clear-screen (C-l)
Clear the screen and redraw the current line, -leaving the current line at the top of the screen. - -
redraw-current-line ()
Refresh the current line. By default, this is unbound. - -
- - - -

8.4.2 Commands For Manipulating The History

- -
-
accept-line (Newline or Return)
Accept the line regardless of where the cursor is. -If this line is -non-empty, add it to the history list according to the setting of -the HISTCONTROL and HISTIGNORE variables. -If this line is a modified history line, then restore the history line -to its original state. - -
previous-history (C-p)
Move `back' through the history list, fetching the previous command. - -
next-history (C-n)
Move `forward' through the history list, fetching the next command. - -
beginning-of-history (M-<)
Move to the first line in the history. - -
end-of-history (M->)
Move to the end of the input history, i.e., the line currently -being entered. - -
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through -the history as necessary. This is an incremental search. - -
forward-search-history (C-s)
Search forward starting at the current line and moving `down' through -the the history as necessary. This is an incremental search. - -
non-incremental-reverse-search-history (M-p)
Search backward starting at the current line and moving `up' -through the history as necessary using a non-incremental search -for a string supplied by the user. - -
non-incremental-forward-search-history (M-n)
Search forward starting at the current line and moving `down' -through the the history as necessary using a non-incremental search -for a string supplied by the user. - -
history-search-forward ()
Search forward through the history for the string of characters -between the start of the current line and the point. -This is a non-incremental search. -By default, this command is unbound. - -
history-search-backward ()
Search backward through the history for the string of characters -between the start of the current line and the point. This -is a non-incremental search. By default, this command is unbound. - -
yank-nth-arg (M-C-y)
Insert the first argument to the previous command (usually -the second word on the previous line) at point. -With an argument n, -insert the nth word from the previous command (the words -in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the `!n' history expansion had been specified. - -
yank-last-arg (M-. or M-_)
Insert last argument to the previous command (the last word of the -previous history entry). With an -argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg move back through the history -list, inserting the last argument of each line in turn. -The history expansion facilities are used to extract the last argument, -as if the `!$' history expansion had been specified. - -
- - - -

8.4.3 Commands For Changing Text

- -
-
delete-char (C-d)
Delete the character at point. If point is at the -beginning of the line, there are no characters in the line, and -the last character typed was not bound to delete-char, then -return eof. - -
backward-delete-char (Rubout)
Delete the character behind the cursor. A numeric argument means -to kill the characters instead of deleting them. - -
forward-backward-delete-char ()
Delete the character under the cursor, unless the cursor is at the -end of the line, in which case the character behind the cursor is -deleted. By default, this is not bound to a key. - -
quoted-insert (C-q or C-v)
Add the next character typed to the line verbatim. This is -how to insert key sequences like C-q, for example. - -
self-insert (a, b, A, 1, !, ...)
Insert yourself. - -
transpose-chars (C-t)
Drag the character before the cursor forward over -the character at the cursor, moving the -cursor forward as well. If the insertion point -is at the end of the line, then this -transposes the last two characters of the line. -Negative arguments have no effect. - -
transpose-words (M-t)
Drag the word before point past the word after point, -moving point past that word as well. -If the insertion point is at the end of the line, this transposes -the last two words on the line. - -
upcase-word (M-u)
Uppercase the current (or following) word. With a negative argument, -uppercase the previous word, but do not move the cursor. - -
downcase-word (M-l)
Lowercase the current (or following) word. With a negative argument, -lowercase the previous word, but do not move the cursor. - -
capitalize-word (M-c)
Capitalize the current (or following) word. With a negative argument, -capitalize the previous word, but do not move the cursor. - -
overwrite-mode ()
Toggle overwrite mode. With an explicit positive numeric argument, -switches to overwrite mode. With an explicit non-positive numeric -argument, switches to insert mode. This command affects only -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. - -

In overwrite mode, characters bound to self-insert replace -the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character -before point with a space. - -

By default, this command is unbound. - -

- - - -

8.4.4 Killing And Yanking

- -
-
kill-line (C-k)
Kill the text from point to the end of the line. - -
backward-kill-line (C-x Rubout)
Kill backward to the beginning of the line. - -
unix-line-discard (C-u)
Kill backward from the cursor to the beginning of the current line. - -
kill-whole-line ()
Kill all characters on the current line, no matter where point is. -By default, this is unbound. - -
kill-word (M-d)
Kill from point to the end of the current word, or if between -words, to the end of the next word. -Word boundaries are the same as forward-word. - -
backward-kill-word (M-<DEL>)
Kill the word behind point. -Word boundaries are the same as backward-word. - -
unix-word-rubout (C-w)
Kill the word behind point, using white space as a word boundary. -The killed text is saved on the kill-ring. - -
unix-filename-rubout ()
Kill the word behind point, using white space and the slash character -as the word boundaries. -The killed text is saved on the kill-ring. - -
delete-horizontal-space ()
Delete all spaces and tabs around point. By default, this is unbound. - -
kill-region ()
Kill the text in the current region. -By default, this command is unbound. - -
copy-region-as-kill ()
Copy the text in the region to the kill buffer, so it can be yanked -right away. By default, this command is unbound. - -
copy-backward-word ()
Copy the word before point to the kill buffer. -The word boundaries are the same as backward-word. -By default, this command is unbound. - -
copy-forward-word ()
Copy the word following point to the kill buffer. -The word boundaries are the same as forward-word. -By default, this command is unbound. - -
yank (C-y)
Yank the top of the kill ring into the buffer at point. - -
yank-pop (M-y)
Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is yank or yank-pop. -
- - - -

8.4.5 Specifying Numeric Arguments

- -
-
digit-argument (M-0, M-1, ... M--)
Add this digit to the argument already accumulating, or start a new -argument. M-- starts a negative argument. - -
universal-argument ()
This is another way to specify an argument. -If this command is followed by one or more digits, optionally with a -leading minus sign, those digits define the argument. -If the command is followed by digits, executing universal-argument -again ends the numeric argument, but is otherwise ignored. -As a special case, if this command is immediately followed by a -character that is neither a digit or minus sign, the argument count -for the next command is multiplied by four. -The argument count is initially one, so executing this function the -first time makes the argument count four, a second time makes the -argument count sixteen, and so on. -By default, this is not bound to a key. -
- -
-


- -Next: , -Previous: Numeric Arguments, -Up: Bindable Readline Commands - -
- -

8.4.6 Letting Readline Type For You

- -
-
complete (<TAB>)
Attempt to perform completion on the text before point. -The actual completion performed is application-specific. -Bash attempts completion treating the text as a variable (if the -text 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. - -
possible-completions (M-?)
List the possible completions of the text before point. - -
insert-completions (M-*)
Insert all completions of the text before point that would have -been generated by possible-completions. - -
menu-complete ()
Similar to complete, but replaces the word to be completed -with a single match from the list of possible completions. -Repeated execution of menu-complete steps through the list -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 bell-style) -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 <TAB>, but is unbound -by default. - -
delete-char-or-list ()
Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). -If at the end of the line, behaves identically to -possible-completions. -This command is unbound by default. - -
complete-filename (M-/)
Attempt filename completion on the text before point. - -
possible-filename-completions (C-x /)
List the possible completions of the text before point, -treating it as a filename. - -
complete-username (M-~)
Attempt completion on the text before point, treating -it as a username. - -
possible-username-completions (C-x ~)
List the possible completions of the text before point, -treating it as a username. - -
complete-variable (M-$)
Attempt completion on the text before point, treating -it as a shell variable. - -
possible-variable-completions (C-x $)
List the possible completions of the text before point, -treating it as a shell variable. - -
complete-hostname (M-@)
Attempt completion on the text before point, treating -it as a hostname. - -
possible-hostname-completions (C-x @)
List the possible completions of the text before point, -treating it as a hostname. - -
complete-command (M-!)
Attempt completion on the text before point, treating -it as a command name. Command completion attempts to -match the text against aliases, reserved words, shell -functions, shell builtins, and finally executable filenames, -in that order. - -
possible-command-completions (C-x !)
List the possible completions of the text before point, -treating it as a command name. - -
dynamic-complete-history (M-<TAB>)
Attempt completion on the text before point, comparing -the text against lines from the history list for possible -completion matches. - -
complete-into-braces (M-{)
Perform filename completion and insert the list of possible completions -enclosed within braces so the list is available to the shell -(see Brace Expansion). - -
- - - -

8.4.7 Keyboard Macros

- -
-
start-kbd-macro (C-x ()
Begin saving the characters typed into the current keyboard macro. - -
end-kbd-macro (C-x ))
Stop saving the characters typed into the current keyboard macro -and save the definition. - -
call-last-kbd-macro (C-x e)
Re-execute the last keyboard macro defined, by making the characters -in the macro appear as if typed at the keyboard. - -
- -
-


- -Previous: Keyboard Macros, -Up: Bindable Readline Commands - -
- -

8.4.8 Some Miscellaneous Commands

- -
-
re-read-init-file (C-x C-r)
Read in the contents of the inputrc file, and incorporate -any bindings or variable assignments found there. - -
abort (C-g)
Abort 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. - -
prefix-meta (<ESC>)
Metafy the next character typed. This is for keyboards -without a meta key. Typing `<ESC> f' is equivalent to typing -M-f. - -
undo (C-_ or C-x C-u)
Incremental undo, separately remembered for each line. - -
revert-line (M-r)
Undo all changes made to this line. This is like executing the undo -command enough times to get back to the beginning. - -
tilde-expand (M-&)
Perform tilde expansion on the current word. - -
set-mark (C-@)
Set the mark to the point. If a -numeric argument is supplied, the mark is set to that position. - -
exchange-point-and-mark (C-x C-x)
Swap the point with the mark. The current cursor position is set to -the saved position, and the old cursor position is saved as the mark. - -
character-search (C-])
A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. - -
character-search-backward (M-C-])
A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent -occurrences. - -
insert-comment (M-#)
Without a numeric argument, the value of the comment-begin -variable is inserted at the beginning of the current line. -If a numeric argument is supplied, this command acts as a toggle: if -the characters at the beginning of the line do not match the value -of comment-begin, the value is inserted, otherwise -the characters in comment-begin are deleted from the beginning of -the line. -In either case, the line is accepted as if a newline had been typed. -The default value of comment-begin causes this command -to make the current line a shell comment. -If a numeric argument causes the comment character to be removed, the line -will be executed by the shell. - -
dump-functions ()
Print all of the functions and their key bindings to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. - -
dump-variables ()
Print all of the settable variables and their values to the -Readline output stream. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. - -
dump-macros ()
Print all of the Readline key sequences bound to macros and the -strings they output. If a numeric argument is supplied, -the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. - -
glob-complete-word (M-g)
The word before point is treated as a pattern for pathname expansion, -with an asterisk implicitly appended. This pattern is used to -generate a list of matching file names for possible completions. - -
glob-expand-word (C-x *)
The word before point is treated as a pattern for pathname expansion, -and the list of matching file names is inserted, replacing the word. -If a numeric argument is supplied, a `*' is appended before -pathname expansion. - -
glob-list-expansions (C-x g)
The list of expansions that would have been generated by -glob-expand-word is displayed, and the line is redrawn. -If a numeric argument is supplied, a `*' is appended before -pathname expansion. - -
display-shell-version (C-x C-v)
Display version information about the current instance of Bash. - -
shell-expand-line (M-C-e)
Expand the line as the shell does. -This performs alias and history expansion as well as all of the shell -word expansions (see Shell Expansions). - -
history-expand-line (M-^)
Perform history expansion on the current line. - -
magic-space ()
Perform history expansion on the current line and insert a space -(see History Interaction). - -
alias-expand-line ()
Perform alias expansion on the current line (see Aliases). - -
history-and-alias-expand-line ()
Perform history and alias expansion on the current line. - -
insert-last-argument (M-. or M-_)
A synonym for yank-last-arg. - -
operate-and-get-next (C-o)
Accept the current line for execution and fetch the next line -relative to the current line from the history for editing. Any -argument is ignored. - -
edit-and-execute-command (C-xC-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. - -
- - - -

8.5 Readline vi Mode

- -

While the Readline library does not have a full set of vi -editing functions, it does contain enough to allow simple editing -of the line. The Readline vi mode behaves as specified in -the posix 1003.2 standard. - -

In order to switch interactively between emacs and vi -editing modes, use the `set -o emacs' and `set -o vi' -commands (see The Set Builtin). -The Readline default is emacs mode. - -

When you enter a line in vi mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing <ESC> -switches you into `command' mode, where you can edit the text of the -line with the standard vi movement keys, move to previous -history lines with `k' and subsequent lines with `j', and -so forth. - -

- -

8.6 Programmable Completion

- -

-When word completion is attempted for an argument to a command for -which a completion specification (a compspec) has been defined -using the complete builtin (see Programmable Completion Builtins), -the programmable completion facilities are invoked. - -

First, the command name is identified. -If a compspec has been defined for that command, the -compspec is used to generate the list of possible completions for the word. -If the command word is a full pathname, a compspec for the full -pathname is searched for first. -If no compspec is found for the full pathname, an attempt is made to -find a compspec for the portion following the final slash. - -

Once a compspec has been found, it is used to generate the list of -matching words. -If a compspec is not found, the default Bash completion -described above (see Commands For Completion) is performed. - -

First, the actions specified by the compspec are used. -Only matches which are prefixed by the word being completed are -returned. -When the -f or -d option is used for filename or -directory name completion, the shell variable FIGNORE is -used to filter the matches. -See Bash Variables, for a description of FIGNORE. - -

Any completions specified by a filename expansion pattern to the --G option are generated next. -The words generated by the pattern need not match the word being completed. -The GLOBIGNORE shell variable is not 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 (see Shell Expansions). -The results are split using the rules described above -(see 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 command or function is invoked, the COMP_LINE, -COMP_POINT, COMP_KEY, and COMP_TYPE variables are -assigned values as described above (see Bash Variables). -If a shell function is being invoked, the COMP_WORDS and -COMP_CWORD variables are also set. -When the function or command is invoked, the first argument is the -name of the command whose arguments are being completed, the -second argument is the word being completed, and the third argument -is the word preceding the word being completed on the current command line. -No filtering of the generated completions against the word being completed -is performed; the function or command has complete freedom in generating -the matches. - -

Any function specified with -F is invoked first. -The function may use any of the shell facilities, including the -compgen builtin described below -(see Programmable Completion Builtins), to generate the matches. -It must put the possible completions in the COMPREPLY array -variable. - -

Next, any command specified with the -C option is invoked -in an environment equivalent to command substitution. -It should print a list of completions, one per line, to -the standard output. -Backslash may be used to escape a newline, if necessary. - -

After all of the possible completions are generated, any filter -specified with the -X option is applied to the list. -The filter is a pattern as used for pathname expansion; a `&' -in the pattern is replaced with the text of the word being completed. -A literal `&' may be escaped with a backslash; the backslash -is removed before attempting a match. -Any completion that matches the pattern will be removed from the list. -A leading `!' negates the pattern; in this case any completion -not matching the pattern will be removed. - -

Finally, any prefix and suffix specified with the -P and -S -options are added to each member of the completion list, and the result is -returned to the Readline completion code as the list of possible -completions. - -

If the previously-applied actions do not generate any matches, and the --o dirnames option was supplied to complete when the -compspec was defined, directory name completion is attempted. - -

If the -o plusdirs option was supplied to complete when -the compspec was defined, directory name completion is attempted and any -matches are added to the results of the other actions. - -

By default, if a compspec is found, whatever it generates is returned to -the completion code as the full set of possible completions. -The default Bash completions are not attempted, and the Readline default -of filename completion is disabled. -If the -o bashdefault option was supplied to complete when -the compspec was defined, the default Bash completions are attempted -if the compspec generates no matches. -If the -o default option was supplied to complete when the -compspec was defined, Readline's default completion will be performed -if the compspec (and, if attempted, the default Bash completions) -generate no matches. - -

When a compspec indicates that directory name completion is desired, -the programmable completion functions force Readline to append a slash -to completed names which are symbolic links to directories, subject to -the value of the mark-directories Readline variable, regardless -of the setting of the mark-symlinked-directories Readline variable. - -

-


- -Previous: Programmable Completion, -Up: Command Line Editing - -
- -

8.7 Programmable Completion Builtins

- -

-Two builtin commands are available to manipulate the programmable completion -facilities. - -

-
compgen
-
          compgen [option] [word]
-     
-

Generate possible completion matches for word according to -the options, which may be any option accepted by the -complete -builtin with the exception of -p and -r, and write -the matches to the standard output. -When using the -F or -C 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 programmable -completion code had generated them directly from a completion specification -with the same flags. -If word is specified, only those completions matching word -will be displayed. - -

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

complete
-
          complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist]
-          [-F function] [-C command] [-X filterpat]
-          [-P prefix] [-S suffix] name [name ...]
-          complete -pr [name ...]
-     
-

Specify how arguments to each name should be completed. -If the -p option is supplied, or if no options are supplied, existing -completion specifications are printed in a way that allows them to be -reused as input. -The -r option removes a completion specification for -each name, or, if no names are supplied, all -completion specifications. - -

The process of applying these completion specifications when word completion -is attempted is described above (see Programmable Completion). - -

Other options, if specified, have the following meanings. -The arguments to the -G, -W, and -X options -(and, if necessary, the -P and -S options) -should be quoted to protect them from expansion before the -complete builtin is invoked. - -

-
-o comp-option
The comp-option controls several aspects of the compspec's behavior -beyond the simple generation of completions. -comp-option may be one of: - -
-
bashdefault
Perform the rest of the default Bash completions if the compspec -generates no matches. - -
default
Use Readline's default filename completion if the compspec generates -no matches. - -
dirnames
Perform directory name completion if the compspec generates no matches. - -
filenames
Tell Readline that the compspec generates filenames, so it can perform any -filename-specific processing (like adding a slash to directory names or -suppressing trailing spaces). This option is intended to be used with -shell functions specified with -F. - -
nospace
Tell Readline not to append a space (the default) to words completed at -the end of the line. - -
plusdirs
After any matches defined by the compspec are generated, -directory name completion is attempted and any -matches are added to the results of the other actions. - -
- -
-A action
The action may be one of the following to generate a list of possible -completions: - -
-
alias
Alias names. May also be specified as -a. - -
arrayvar
Array variable names. - -
binding
Readline key binding names (see Bindable Readline Commands). - -
builtin
Names of shell builtin commands. May also be specified as -b. - -
command
Command names. May also be specified as -c. - -
directory
Directory names. May also be specified as -d. - -
disabled
Names of disabled shell builtins. - -
enabled
Names of enabled shell builtins. - -
export
Names of exported shell variables. May also be specified as -e. - -
file
File names. May also be specified as -f. - -
function
Names of shell functions. - -
group
Group names. May also be specified as -g. - -
helptopic
Help topics as accepted by the help builtin (see Bash Builtins). - -
hostname
Hostnames, as taken from the file specified by the -HOSTFILE shell variable (see Bash Variables). - -
job
Job names, if job control is active. May also be specified as -j. - -
keyword
Shell reserved words. May also be specified as -k. - -
running
Names of running jobs, if job control is active. - -
service
Service names. May also be specified as -s. - -
setopt
Valid arguments for the -o option to the set builtin -(see The Set Builtin). - -
shopt
Shell option names as accepted by the shopt builtin -(see Bash Builtins). - -
signal
Signal names. - -
stopped
Names of stopped jobs, if job control is active. - -
user
User names. May also be specified as -u. - -
variable
Names of all shell variables. May also be specified as -v. -
- -
-G globpat
The filename expansion pattern globpat is expanded to generate -the possible completions. - -
-W wordlist
The wordlist is split using the characters in the -IFS 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 completed. - -
-C command
command is executed in a subshell environment, and its output is -used as the possible completions. - -
-F function
The shell function function is executed in the current shell -environment. -When it finishes, the possible completions are retrieved from the value -of the COMPREPLY array variable. - -
-X filterpat
filterpat is a pattern as used for filename expansion. -It is applied to the list of possible completions generated by the -preceding options and arguments, and each completion matching -filterpat is removed from the list. -A leading `!' in filterpat negates the pattern; in this -case, any completion not matching filterpat is removed. - -
-P prefix
prefix is added at the beginning of each possible completion -after all other options have been applied. - -
-S suffix
suffix is appended to each possible completion -after all other options have been applied. -
- -

The return value is true unless an invalid option is supplied, an option -other than -p or -r is supplied without a name -argument, an attempt is made to remove a completion specification for -a name for which no specification exists, or -an error occurs adding a completion specification. - -

- - -
-


- -Next: , -Previous: Job Control, -Up: Top - -
- -

9 Using History Interactively

- -

This chapter describes how to use the gnu History Library -interactively, from a user's standpoint. -It should be considered a user's guide. -For information on using the gnu History Library in other programs, -see the gnu Readline Library Manual. - -

- - - -

9.1 Bash History Facilities

- -

-When the -o history option to the set builtin -is enabled (see The Set Builtin), -the shell provides access to the command history, -the list of commands previously typed. -The value of the HISTSIZE shell variable is used as the -number of commands to save in a history list. -The text of the last $HISTSIZE -commands (default 500) is saved. -The shell stores each command in the history list prior to -parameter and variable expansion -but after history expansion is performed, subject to the -values of the shell variables -HISTIGNORE and HISTCONTROL. - -

When the shell starts up, the history is initialized from the -file named by the HISTFILE variable (default ~/.bash_history). -The file named by the value of HISTFILE is truncated, if -necessary, to contain no more than the number of lines specified by -the value of the HISTFILESIZE variable. -When an interactive shell exits, the last -$HISTSIZE lines are copied from the history list to the file -named by $HISTFILE. -If the histappend shell option is set (see Bash Builtins), -the lines are appended to the history file, -otherwise the history file is overwritten. -If HISTFILE -is unset, or if the history file is unwritable, the history is -not saved. After saving the history, the history file is truncated -to contain no more than $HISTFILESIZE -lines. If HISTFILESIZE is not set, no truncation is performed. - -

If the HISTTIMEFORMAT is set, the time stamp information -associated with each history entry is written to the history file. - -

The builtin command fc may be used to list or edit and re-execute -a portion of the history list. -The history builtin may be used to display or modify the history -list and manipulate the history file. -When using command-line editing, search commands -are available in each editing mode that provide access to the -history list (see Commands For History). - -

The shell allows control over which commands are saved on the history -list. The HISTCONTROL and HISTIGNORE -variables may be set to cause the shell to save only a subset of the -commands entered. -The cmdhist -shell option, if enabled, causes the shell to attempt to save each -line of a multi-line command in the same history entry, adding -semicolons where necessary to preserve syntactic correctness. -The 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. - -

- -

9.2 Bash History Builtins

- -

-Bash provides two builtin commands which manipulate the -history list and history file. - -

-
fc
-
          fc [-e ename] [-lnr] [first] [last]
-          fc -s [pat=rep] [command]
-     
-

Fix Command. In the first form, a range of commands from first to -last is selected from the history list. 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 -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 -reverses the order of the listing. Otherwise, the editor given by -ename is invoked on a file containing those commands. If -ename is not given, the value of the following variable expansion -is used: ${FCEDIT:-${EDITOR:-vi}}. This says to use the -value of the FCEDIT variable if set, or the value of the -EDITOR variable if that is set, or vi if neither is set. -When editing is complete, the edited commands are echoed and executed. - -

In the second form, command is re-executed after each instance -of pat in the selected command is replaced by rep. - -

A useful alias to use with the fc command is r='fc -s', so -that typing `r cc' runs the last command beginning with cc -and typing `r' re-executes the last command (see Aliases). - -

history
-
          history [n]
-          history -c
-          history -d offset
-          history [-anrw] [filename]
-          history -ps arg
-     
-

With no options, display the history list with line numbers. -Lines prefixed with a `*' have been modified. -An argument of n lists only the last n lines. -If the shell variable HISTTIMEFORMAT is set and not null, -it is used as a format string for strftime to display -the time stamp associated with each displayed history entry. -No intervening blank is printed between the formatted time stamp -and the history line. - -

Options, if supplied, have the following meanings: - -

-
-c
Clear the history list. This may be combined -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. - -
-a
Append the new -history lines (history lines entered since the beginning of the -current Bash session) to the history file. - -
-n
Append the history lines not already read from the history file -to the current history list. These are lines appended to the history -file since the beginning of the current Bash session. - -
-r
Read the current history file and append its contents to -the history list. - -
-w
Write out the current history to the history file. - -
-p
Perform history substitution on the args and display the result -on the standard output, without storing the results in the history list. - -
-s
The args are added to the end of -the history list as a single entry. - -
- -

When any of the -w, -r, -a, or -n options is -used, if filename -is given, then it is used as the history file. If not, then -the value of the HISTFILE variable is used. - -

- - - -

9.3 History Expansion

- -

-The History library provides a history expansion feature that is similar -to the history expansion provided by csh. This section -describes the syntax used to manipulate the history information. - -

History expansions introduce words from the history list into -the input stream, making it easy to repeat commands, insert the -arguments to a previous command into the current input line, or -fix errors in previous commands quickly. - -

History expansion takes place in two parts. The first is to determine -which line from the history list should be used during substitution. -The second is to select portions of that line for inclusion into the -current one. The line selected from the history is called the -event, and the portions of that line that are acted upon are -called words. Various modifiers are available to manipulate -the selected words. The line is broken into words in the same fashion -that Bash does, so that several words -surrounded by quotes are considered one word. -History expansions are introduced by the appearance of the -history expansion character, which is `!' by default. -Only `\' and `'' may be used to escape the history expansion -character. - -

Several shell options settable with the shopt -builtin (see Bash Builtins) may be used to tailor -the behavior of history expansion. If the -histverify shell option is enabled, and Readline -is being used, history substitutions are not immediately passed to -the shell parser. -Instead, the expanded line is reloaded into the Readline -editing buffer for further modification. -If Readline is being used, and the histreedit -shell option is enabled, a failed history expansion will be -reloaded into the Readline editing buffer for correction. -The -p option to the history builtin command -may be used to see what a history expansion 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 subsequent recall. -This is most useful in conjunction with Readline. - -

The shell allows control of the various characters used by the -history expansion mechanism with the histchars variable. - -

- -
-


- -Next: , -Up: History Interaction - -
- -

9.3.1 Event Designators

- -

-An event designator is a reference to a command line entry in the -history list. - -

-
!
Start a history substitution, except when followed by a space, tab, -the end of the line, `=' or `(' (when the -extglob shell option is enabled using the shopt builtin). - -
!n
Refer to command line n. - -
!-n
Refer to the command n lines back. - -
!!
Refer to the previous command. This is a synonym for `!-1'. - -
!string
Refer to the most recent command starting with string. - -
!?string[?]
Refer to the most recent command containing string. The trailing -`?' may be omitted if the string is followed immediately by -a newline. - -
^string1^string2^
Quick Substitution. Repeat the last command, replacing string1 -with string2. Equivalent to -!!:s/string1/string2/. - -
!#
The entire command line typed so far. - -
- -
-


- -Next: , -Previous: Event Designators, -Up: History Interaction - -
- -

9.3.2 Word Designators

- -

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 separated by single spaces. - -

For example, - -

-
!!
designates the preceding command. When you type this, the preceding -command is repeated in toto. - -
!!:$
designates the last argument of the preceding command. This may be -shortened to !$. - -
!fi:2
designates the second argument of the most recent command starting with -the letters fi. -
- -

Here are the word designators: - -

-
0 (zero)
The 0th word. For many applications, this is the command word. - -
n
The nth word. - -
^
The first argument; that is, word 1. - -
$
The last argument. - -
%
The word matched by the most recent `?string?' search. - -
x-y
A range of words; `-y' abbreviates `0-y'. - -
*
All of the words, except the 0th. This is a synonym for `1-$'. -It is not an error to use `*' if there is just one word in the event; -the empty string is returned in that case. - -
x*
Abbreviates `x-$' - -
x-
Abbreviates `x-$' like `x*', but omits the last word. - -
- -

If a word designator is supplied without an event specification, the -previous command is used as the event. - -

-


- -Previous: Word Designators, -Up: History Interaction - -
- -

9.3.3 Modifiers

- -

After the optional word designator, you can add a sequence of one or more -of the following modifiers, each preceded by a `:'. - -

-
h
Remove a trailing pathname component, leaving only the head. - -
t
Remove all leading pathname components, leaving the tail. - -
r
Remove a trailing suffix of the form `.suffix', leaving -the basename. - -
e
Remove all but the trailing suffix. - -
p
Print the new command but do not execute it. - -
q
Quote the substituted words, escaping further substitutions. - -
x
Quote the substituted words as with `q', -but break into words at spaces, tabs, and newlines. - -
s/old/new/
Substitute new for the first occurrence of old in the -event line. Any delimiter may be used in place of `/'. -The delimiter may be quoted in old and new -with a single backslash. If `&' appears in new, -it is replaced by old. A single backslash will quote -the `&'. The final delimiter is optional if it is the last -character on the input line. - -
&
Repeat the previous substitution. - -
g
a
Cause changes to be applied over the entire event line. Used in -conjunction with `s', as in gs/old/new/, -or with `&'. - -
G
Apply the following `s' modifier once to each word in the event. - -
- -
-


- -Next: , -Previous: Command Line Editing, -Up: Top - -
- -

10 Installing Bash

- -

This chapter provides basic instructions for installing Bash on -the various supported platforms. The distribution supports the -gnu operating systems, nearly every version of Unix, and several -non-Unix systems such as BeOS and Interix. -Other independent ports exist for -ms-dos, os/2, and Windows platforms. - -

- -
-


- -Next: , -Up: Installing Bash - -
- -

10.1 Basic Installation

- -

-These are installation instructions for Bash. - -

The simplest way to compile Bash is: - -

    -
  1. cd to the directory containing the source code and type -`./configure' to configure Bash for your system. If you're -using csh on an old version of System V, you might need to -type `sh ./configure' instead to prevent csh from trying -to execute configure itself. - -

    Running configure takes some time. -While running, it prints messages telling which features it is -checking for. - -

  2. Type `make' to compile Bash and build the bashbug bug -reporting script. - -
  3. Optionally, type `make tests' to run the Bash test suite. - -
  4. Type `make install' to install bash and bashbug. -This will also install the manual pages and Info file. - -
- -

The configure shell script attempts to guess correct -values for various system-dependent variables used during -compilation. It uses those values to create a Makefile in -each directory of the package (the top directory, the -builtins, doc, and support directories, -each directory under lib, and several others). It also creates a -config.h file containing system-dependent definitions. -Finally, it creates a shell script named config.status that you -can run in the future to recreate the current configuration, a -file config.cache that saves the results of its tests to -speed up reconfiguring, and a file config.log containing -compiler output (useful mainly for debugging configure). -If at some point -config.cache contains results you don't want to keep, you -may remove or edit it. - -

To find out more about the options and arguments that the -configure script understands, type - -

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

at the Bash prompt in your Bash source directory. - -

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 -bash-maintainers@gnu.org so they can be -considered for the next release. - -

The file configure.in is used to create configure -by a program called Autoconf. You only need -configure.in if you want to change it or regenerate -configure using a newer version of Autoconf. If -you do this, make sure you are using Autoconf version 2.50 or -newer. - -

You can remove the program binaries and object files from the -source 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'. - -

- -

10.2 Compilers and Options

- -

Some systems require unusual options for compilation or linking -that the configure script does not know about. You can -give configure initial values for variables by setting -them in the environment. Using a Bourne-compatible shell, you -can do that on the command line like this: - -

     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-

On systems that have the env program, you can do it like this: - -

     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-

The configuration process uses GCC to build Bash if it -is available. - -

-


- -Next: , -Previous: Compilers and Options, -Up: Installing Bash - -
- -

10.3 Compiling For Multiple Architectures

- -

You can compile Bash for more than one kind of computer at the -same 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 `..'. - -

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 directory. After you have installed -Bash for one architecture, use `make distclean' before -reconfiguring for another architecture. - -

Alternatively, if your system supports symbolic links, you can use the -support/mkclone script to create a build tree which has -symbolic links back to each file in the source directory. Here's an -example that creates a build directory in the current directory from a -source directory /usr/gnu/src/bash-2.0: - -

     bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
-
-

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

- -

10.4 Installation Names

- -

By default, `make install' will install into -/usr/local/bin, /usr/local/man, etc. You can -specify an installation prefix other than /usr/local by -giving configure the option --prefix=PATH, -or by specifying a value for the DESTDIR `make' -variable when running `make install'. - -

You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. -If you give configure the option ---exec-prefix=PATH, `make install' will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - -

-


- -Next: , -Previous: Installation Names, -Up: Installing Bash - -
- -

10.5 Specifying the System Type

- -

There may be some features configure can not figure out -automatically, but need to determine by the type of host Bash -will run on. Usually configure can figure that -out, but if it prints a message saying it can not guess the host -type, give it the --host=TYPE option. `TYPE' can -either be a short name for the system type, such as `sun4', -or a canonical name with three fields: `CPU-COMPANY-SYSTEM' -(e.g., `i386-unknown-freebsd4.2'). - -

See the file support/config.sub for the possible -values of each field. - -

- -

10.6 Sharing Defaults

- -

If you want to set default values for configure scripts to -share, you can create a site shell script called -config.site that gives default values for variables like -CC, cache_file, and prefix. configure -looks for PREFIX/share/config.site if it exists, then -PREFIX/etc/config.site if it exists. Or, you can set the -CONFIG_SITE environment variable to the location of the site -script. A warning: the Bash configure looks for a site script, -but not all configure scripts do. - -

-


- -Next: , -Previous: Sharing Defaults, -Up: Installing Bash - -
- -

10.7 Operation Controls

- -

configure recognizes the following options to control how it -operates. - -

-
--cache-file=file
Use and save the results of the tests in -file instead of ./config.cache. Set file to -/dev/null to disable caching, for debugging -configure. - -
--help
Print a summary of the options to configure, and exit. - -
--quiet
--silent
-q
Do not print messages saying which checks are being made. - -
--srcdir=dir
Look for the Bash source code in directory dir. Usually -configure can determine that directory automatically. - -
--version
Print the version of Autoconf used to generate the configure -script, and exit. -
- -

configure also accepts some other, not widely used, boilerplate -options. `configure --help' prints the complete list. - -

-


- -Previous: Operation Controls, -Up: Installing Bash - -
- -

10.8 Optional Features

- -

The Bash configure has a number of --enable-feature -options, where feature indicates an optional part of Bash. -There are also several --with-package options, -where package is something like `bash-malloc' or `purify'. -To turn off the default use of a package, use ---without-package. To configure Bash without a feature -that is enabled by default, use --disable-feature. - -

Here is a complete list of the --enable- and ---with- options that the Bash configure recognizes. - -

-
--with-afs
Define if you are using the Andrew File System from Transarc. - -
--with-bash-malloc
Use the Bash version of -malloc in the directory lib/malloc. This is not the same -malloc that appears in gnu libc, but an older version -originally derived from the 4.2 bsd malloc. This malloc -is very fast, but wastes some space on each allocation. -This option is enabled by default. -The NOTES file contains a list of systems for -which this should be turned off, and configure disables this -option automatically for a number of systems. - -
--with-curses
Use the curses library instead of the termcap library. This should -be supplied if your system has an inadequate or incomplete termcap -database. - -
--with-gnu-malloc
A synonym for --with-bash-malloc. - -
--with-installed-readline[=PREFIX]
Define this to make Bash link with a locally-installed version of Readline -rather than the version in lib/readline. This works only with -Readline 5.0 and later versions. If PREFIX is yes or not -supplied, configure uses the values of the make variables -includedir and libdir, which are subdirectories of prefix -by default, to find the installed version of Readline if it is not in -the standard system include and library directories. -If PREFIX is no, Bash links with the version in -lib/readline. -If PREFIX is set to any other value, configure treats it as -a directory pathname and looks for -the installed version of Readline in subdirectories of that directory -(include files in PREFIX/include and the library in -PREFIX/lib). - -
--with-purify
Define this to use the Purify memory allocation checker from Rational -Software. - -
--enable-minimal-config
This produces a shell with minimal features, close to the historical -Bourne shell. -
- -

There are several --enable- options that alter how Bash is -compiled and linked, rather than changing run-time features. - -

-
--enable-largefile
Enable support for large files if the operating system requires special compiler options -to build programs which can access large files. This is enabled by -default, if the operating system provides large file support. - -
--enable-profiling
This builds a Bash binary that produces profiling information to be -processed by gprof each time it is executed. - -
--enable-static-link
This causes Bash to be linked statically, if gcc is being used. -This could be used to build a version to use as root's shell. -
- -

The `minimal-config' option can be used to disable all of -the following options, but it is processed first, so individual -options may be enabled using `enable-feature'. - -

All of the following options except for `disabled-builtins' and -`xpg-echo-default' are -enabled by default, unless the operating system does not provide the -necessary support. - -

-
--enable-alias
Allow alias expansion and include the alias and unalias -builtins (see Aliases). - -
--enable-arith-for-command
Include support for the alternate form of the for command -that behaves like the C language for statement -(see Looping Constructs). - -
--enable-array-variables
Include support for one-dimensional array shell variables -(see Arrays). - -
--enable-bang-history
Include support for csh-like history substitution -(see History Interaction). - -
--enable-brace-expansion
Include csh-like brace expansion -( b{a,b}c ==> bac bbc ). -See Brace Expansion, for a complete description. - -
--enable-command-timing
Include support for recognizing time as a reserved word and for -displaying timing statistics for the pipeline following time -(see Pipelines). -This allows pipelines as well as shell builtins and functions to be timed. - -
--enable-cond-command
Include support for the [[ conditional command. -(see Conditional Constructs). - -
--enable-cond-regexp
Include support for matching POSIX regular expressions using the -`=~' binary operator in the [[ conditional command. -(see Conditional Constructs). - -
--enable-debugger
Include support for the bash debugger (distributed separately). - -
--enable-directory-stack
Include support for a csh-like directory stack and the -pushd, popd, and dirs builtins -(see The Directory Stack). - -
--enable-disabled-builtins
Allow builtin commands to be invoked via `builtin xxx' -even after xxx has been disabled using `enable -n xxx'. -See Bash Builtins, for details of the builtin and -enable builtin commands. - -
--enable-dparen-arithmetic
Include support for the ((...)) command -(see Conditional Constructs). - -
--enable-extended-glob
Include support for the extended pattern matching features described -above under Pattern Matching. - -
--enable-help-builtin
Include the help builtin, which displays help on shell builtins and -variables (see Bash Builtins). - -
--enable-history
Include command history and the fc and history -builtin commands (see Bash History Facilities). - -
--enable-job-control
This enables the job control features (see Job Control), -if the operating system supports them. - -
--enable-multibyte
This enables support for multibyte characters if the operating -system provides the necessary support. - -
--enable-net-redirections
This enables the special handling of filenames of the form -/dev/tcp/host/port and -/dev/udp/host/port -when used in redirections (see Redirections). - -
--enable-process-substitution
This enables process substitution (see Process Substitution) if -the operating system provides the necessary support. - -
--enable-progcomp
Enable the programmable completion facilities -(see Programmable Completion). -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 -strings. See Printing a Prompt, for a complete list of prompt -string escape sequences. - -
--enable-readline
Include support for command-line editing and history with the Bash -version of the Readline library (see Command Line Editing). - -
--enable-restricted
Include support for a restricted shell. If this is enabled, Bash, -when called as rbash, enters a restricted mode. See -The Restricted Shell, for a description of restricted mode. - -
--enable-select
Include the select builtin, which allows the generation of simple -menus (see Conditional Constructs). - -
--enable-separate-helpfiles
Use external files for the documentation displayed by the help builtin -instead of storing the text internally. - -
--enable-single-help-strings
Store the text displayed by the help builtin as a single string for -each help topic. This aids in translating the text to different languages. -You may need to disable this if your compiler cannot handle very long string -literals. - -
--enable-strict-posix-default
Make Bash posix-conformant by default (see Bash POSIX Mode). - -
--enable-usg-echo-default
A synonym for --enable-xpg-echo-default. - -
--enable-xpg-echo-default
Make the echo builtin expand backslash-escaped characters by default, -without requiring the -e option. -This sets the default value of the xpg_echo shell option to on, -which makes the Bash echo behave more like the version specified in -the Single Unix Specification, version 3. -See Bash Builtins, for a description of the escape sequences that -echo recognizes. - -
- -

The file config-top.h contains C Preprocessor -`#define' statements for options which are not settable from -configure. -Some of these are not meant to be changed; beware of the consequences if -you do. -Read the comments associated with each definition for more -information about its effect. - -

-


- -Next: , -Previous: Installing Bash, -Up: Top - -
- -

Appendix A Reporting Bugs

- -

Please report all bugs you find in Bash. -But first, you should -make sure that it really is a bug, and that it appears in the latest -version of Bash. -The latest version of Bash is always available for FTP from -ftp://ftp.gnu.org/pub/bash/. - -

Once you have determined that a bug actually exists, use the -bashbug command to submit a bug report. -If you have a fix, you are encouraged to mail that as well! -Suggestions and `philosophical' bug reports may be mailed -to bug-bash@gnu.org or posted to the Usenet -newsgroup gnu.bash.bug. - -

All bug reports should include: -

    -
  • The version number of Bash. -
  • The hardware and operating system. -
  • The compiler used to compile Bash. -
  • A description of the bug behaviour. -
  • A short script or `recipe' which exercises the bug and may be used -to reproduce it. -
- -

bashbug inserts the first three items automatically into -the template it provides for filing a bug report. - -

Please send all reports concerning this manual to -chet@po.CWRU.Edu. - -

-


- -Next: , -Previous: Reporting Bugs, -Up: Top - -
- -

Appendix B Major Differences From The Bourne Shell

- -

Bash implements essentially the same grammar, parameter and -variable expansion, redirection, and quoting as the Bourne Shell. -Bash uses the posix standard as the specification of -how these features are to be implemented. There are some -differences between the traditional Bourne shell and Bash; this -section quickly details the differences of significance. A -number of these differences are explained in greater depth in -previous sections. -This section uses the version of sh included in SVR4.2 (the -last version of the historical Bourne shell) as the baseline reference. - -

    -
  • Bash is posix-conformant, even where the posix specification -differs from traditional sh behavior (see Bash POSIX Mode). - -
  • Bash has multi-character invocation options (see Invoking Bash). - -
  • Bash has command-line editing (see Command Line Editing) and -the bind builtin. - -
  • Bash provides a programmable word completion mechanism -(see Programmable Completion), and two builtin commands, -complete and compgen, to manipulate it. - -
  • Bash has command history (see Bash History Facilities) and the -history and fc builtins to manipulate it. -The Bash history list maintains timestamp information and uses the -value of the HISTTIMEFORMAT variable to display it. - -
  • Bash implements csh-like history expansion -(see History Interaction). - -
  • Bash has one-dimensional array variables (see Arrays), and the -appropriate variable expansions and assignment syntax to use them. -Several of the Bash builtins take options to act on arrays. -Bash provides a number of built-in array variables. - -
  • The $'...' quoting syntax, which expands ANSI-C -backslash-escaped characters in the text between the single quotes, -is supported (see ANSI-C Quoting). - -
  • Bash supports the $"..." quoting syntax to do -locale-specific translation of the characters between the double -quotes. The -D, --dump-strings, and --dump-po-strings -invocation options list the translatable strings found in a script -(see Locale Translation). - -
  • Bash implements the ! keyword to negate the return value of -a pipeline (see Pipelines). -Very useful when an if statement needs to act only if a test fails. -The Bash `-o pipefail' option to set will cause a pipeline to -return a failure status if any command fails. - -
  • Bash has the time reserved word and command timing (see Pipelines). -The display of the timing statistics may be controlled with the -TIMEFORMAT variable. - -
  • Bash implements the for (( expr1 ; expr2 ; expr3 )) -arithmetic for command, similar to the C language (see Looping Constructs). - -
  • Bash includes the select compound command, which allows the -generation of simple menus (see Conditional Constructs). - -
  • Bash includes the [[ compound command, which makes conditional -testing part of the shell grammar (see Conditional Constructs), including -optional regular expression matching. - -
  • Bash provides optional case-insensitive matching for the case and -[[ constructs. - -
  • Bash includes brace expansion (see Brace Expansion) and tilde -expansion (see Tilde Expansion). - -
  • Bash implements command aliases and the alias and unalias -builtins (see Aliases). - -
  • Bash provides shell arithmetic, the (( compound command -(see Conditional Constructs), -and arithmetic expansion (see Shell Arithmetic). - -
  • Variables present in the shell's initial environment are automatically -exported to child processes. The Bourne shell does not normally do -this unless the variables are explicitly marked using the export -command. - -
  • Bash supports the `+=' assignment operator, which appends to the value -of the variable named on the left hand side. - -
  • Bash includes the posix pattern removal `%', `#', `%%' -and `##' expansions to remove leading or trailing substrings from -variable values (see Shell Parameter Expansion). - -
  • The expansion ${#xx}, which returns the length of ${xx}, -is supported (see Shell Parameter Expansion). - -
  • The expansion ${var:offset[:length]}, -which expands to the substring of var's value of length -length, beginning at offset, is present -(see Shell Parameter Expansion). - -
  • The expansion -${var/[/]pattern[/replacement]}, -which matches pattern and replaces it with replacement in -the value of var, is available (see Shell Parameter Expansion). - -
  • The expansion ${!prefix}* expansion, which expands to -the names of all shell variables whose names begin with prefix, -is available (see Shell Parameter Expansion). - -
  • Bash has indirect variable expansion using ${!word} -(see Shell Parameter Expansion). - -
  • Bash can expand positional parameters beyond $9 using -${num}. - -
  • The posix $() form of command substitution -is implemented (see Command Substitution), -and preferred to the Bourne shell's `` (which -is also implemented for backwards compatibility). - -
  • Bash has process substitution (see Process Substitution). - -
  • Bash automatically assigns variables that provide information about the -current user (UID, EUID, and GROUPS), the current host -(HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), -and the instance of Bash that is running (BASH, -BASH_VERSION, and BASH_VERSINFO). See Bash Variables, -for details. - -
  • The IFS variable is used to split only the results of expansion, -not all words (see Word Splitting). -This closes a longstanding shell security hole. - -
  • Bash implements the full set of posix filename expansion operators, -including character classes, equivalence classes, and -collating symbols (see Filename Expansion). - -
  • Bash implements extended pattern matching features when the extglob -shell option is enabled (see Pattern Matching). - -
  • It is possible to have a variable and a function with the same name; -sh does not separate the two name spaces. - -
  • Bash functions are permitted to have local variables using the -local builtin, and thus useful recursive functions may be written -(see Bash Builtins). - -
  • Variable assignments preceding commands affect only that command, even -builtins and functions (see Environment). -In sh, all variable assignments -preceding commands are global unless the command is executed from the -file system. - -
  • Bash performs filename expansion on filenames specified as operands -to input and output redirection operators (see Redirections). - -
  • Bash contains the `<>' redirection operator, allowing a file to be -opened for both reading and writing, and the `&>' redirection -operator, for directing standard output and standard error to the same -file (see Redirections). - -
  • Bash includes the `<<<' redirection operator, allowing a string to -be used as the standard input to a command. - -
  • Bash implements the `[n]<&word' and `[n]>&word' -redirection operators, which move one file descriptor to another. - -
  • Bash treats a number of filenames specially when they are -used in redirection operators (see Redirections). - -
  • Bash can open network connections to arbitrary machines and services -with the redirection operators (see Redirections). - -
  • The noclobber option is available to avoid overwriting existing -files with output redirection (see The Set Builtin). -The `>|' redirection operator may be used to override noclobber. - -
  • The Bash cd and pwd builtins (see Bourne Shell Builtins) -each take -L and -P options to switch between logical and -physical modes. - -
  • Bash allows a function to override a builtin with the same name, and provides -access to that builtin's functionality within the function via the -builtin and command builtins (see Bash Builtins). - -
  • The command builtin allows selective disabling of functions -when command lookup is performed (see Bash Builtins). - -
  • Individual builtins may be enabled or disabled using the enable -builtin (see Bash Builtins). - -
  • The Bash exec builtin takes additional options that allow users -to control the contents of the environment passed to the executed -command, and what the zeroth argument to the command is to be -(see Bourne Shell Builtins). - -
  • Shell functions may be exported to children via the environment -using export -f (see Shell Functions). - -
  • The Bash export, readonly, and declare builtins can -take a -f option to act on shell functions, a -p option to -display variables with various attributes set in a format that can be -used as shell input, a -n option to remove various variable -attributes, and `name=value' arguments to set variable attributes -and values simultaneously. - -
  • The Bash hash builtin allows a name to be associated with -an arbitrary filename, even when that filename cannot be found by -searching the $PATH, using `hash -p' -(see Bourne Shell Builtins). - -
  • Bash includes a help builtin for quick reference to shell -facilities (see Bash Builtins). - -
  • The printf builtin is available to display formatted output -(see Bash Builtins). - -
  • The Bash read builtin (see Bash Builtins) -will read a line ending in `\' with -the -r option, and will use the REPLY variable as a -default if no non-option arguments are supplied. -The Bash read builtin -also accepts a prompt string with the -p option and will use -Readline to obtain the line when given the -e option. -The read builtin also has additional options to control input: -the -s option will turn off echoing of input characters as -they are read, the -t option will allow read to time out -if input does not arrive within a specified number of seconds, the --n option will allow reading only a specified number of -characters rather than a full line, and the -d option will read -until a particular character rather than newline. - -
  • The return builtin may be used to abort execution of scripts -executed with the . or source builtins -(see Bourne Shell Builtins). - -
  • Bash includes the shopt builtin, for finer control of shell -optional capabilities (see The Shopt Builtin), and allows these options -to be set and unset at shell invocation (see Invoking Bash). - -
  • Bash has much more optional behavior controllable with the set -builtin (see The Set Builtin). - -
  • The `-x' (xtrace) option displays commands other than -simple commands when performing an execution trace -(see The Set Builtin). - -
  • The test builtin (see Bourne Shell Builtins) -is slightly different, as it implements the posix algorithm, -which specifies the behavior based on the number of arguments. - -
  • Bash includes the caller builtin, which displays the context of -any active subroutine call (a shell function or a script executed with -the . or source builtins). This supports the bash -debugger. - -
  • The trap builtin (see Bourne Shell Builtins) allows a -DEBUG pseudo-signal specification, similar to EXIT. -Commands specified with a DEBUG trap are executed before every -simple command, for command, case command, -select command, every arithmetic for command, and before -the first command executes in a shell function. -The DEBUG trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. -The extdebug shell option has additional effects on the -DEBUG trap. - -

    The trap builtin (see Bourne Shell Builtins) allows an -ERR pseudo-signal specification, similar to EXIT and DEBUG. -Commands specified with an ERR trap are executed after a simple -command fails, with a few exceptions. -The ERR trap is not inherited by shell functions unless the --o errtrace option to the set builtin is enabled. - -

    The trap builtin (see Bourne Shell Builtins) allows a -RETURN pseudo-signal specification, similar to -EXIT and DEBUG. -Commands specified with an RETURN trap are executed before -execution resumes after a shell function or a shell script executed with -. or source returns. -The RETURN trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. - -

  • The Bash type builtin is more extensive and gives more information -about the names it finds (see Bash Builtins). - -
  • The Bash umask builtin permits a -p option to cause -the output to be displayed in the form of a umask command -that may be reused as input (see Bourne Shell Builtins). - -
  • Bash implements a csh-like directory stack, and provides the -pushd, popd, and dirs builtins to manipulate it -(see The Directory Stack). -Bash also makes the directory stack visible as the value of the -DIRSTACK shell variable. - -
  • Bash interprets special backslash-escaped characters in the prompt -strings when interactive (see Printing a Prompt). - -
  • The Bash restricted mode is more useful (see The Restricted Shell); -the SVR4.2 shell restricted mode is too limited. - -
  • The disown builtin can remove a job from the internal shell -job table (see Job Control Builtins) or suppress the sending -of SIGHUP to a job when the shell exits as the result of a -SIGHUP. - -
  • Bash includes a number of features to support a separate debugger for -shell scripts. - -
  • The SVR4.2 shell has two privilege-related builtins -(mldmode and priv) not present in Bash. - -
  • Bash does not have the stop or newgrp builtins. - -
  • Bash does not use the SHACCT variable or perform shell accounting. - -
  • The SVR4.2 sh uses a TIMEOUT variable like Bash uses -TMOUT. - -
- -

More features unique to Bash may be found in Bash Features. - -

B.1 Implementation Differences From The SVR4.2 Shell

- -

Since Bash is a completely new implementation, it does not suffer from -many of the limitations of the SVR4.2 shell. For instance: - -

    -
  • Bash does not fork a subshell when redirecting into or out of -a shell control structure such as an if or while -statement. - -
  • Bash does not allow unbalanced quotes. The SVR4.2 shell will silently -insert a needed closing quote at EOF under certain circumstances. -This can be the cause of some hard-to-find errors. - -
  • The SVR4.2 shell uses a baroque memory management scheme based on -trapping SIGSEGV. If the shell is started from a process with -SIGSEGV blocked (e.g., by using the system() C library -function call), it misbehaves badly. - -
  • In a questionable attempt at security, the SVR4.2 shell, -when invoked without the -p option, will alter its real -and effective uid and gid if they are less than some -magic threshold value, commonly 100. -This can lead to unexpected results. - -
  • The SVR4.2 shell does not allow users to trap SIGSEGV, -SIGALRM, or SIGCHLD. - -
  • The SVR4.2 shell does not allow the IFS, MAILCHECK, -PATH, PS1, or PS2 variables to be unset. - -
  • The SVR4.2 shell treats `^' as the undocumented equivalent of -`|'. - -
  • Bash allows multiple option arguments when it is invoked (-x -v); -the SVR4.2 shell allows only one option argument (-xv). In -fact, some versions of the shell dump core if the second argument begins -with a `-'. - -
  • The SVR4.2 shell exits a script if any builtin fails; Bash exits -a script only if one of the posix special builtins fails, and -only for certain failures, as enumerated in the posix standard. - -
  • The SVR4.2 shell behaves differently when invoked as jsh -(it turns on job control). -
- -
-


- -Next: , -Previous: Major Differences From The Bourne Shell, -Up: Top - -
- -

Appendix C Copying This Manual

- - - -
-


- -Up: Copying This Manual - -
- -

C.1 GNU Free Documentation License

- -

Version 1.2, November 2002
- -
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
-     
-     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 -functional and useful document free in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -

    This License is a kind of “copyleft”, which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -

    We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -

  2. APPLICABILITY AND DEFINITIONS - -

    This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The “Document”, below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as “you”. You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -

    A “Modified Version” of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -

    A “Secondary Section” is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -

    The “Invariant Sections” are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -

    The “Cover Texts” are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -

    A “Transparent” copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not “Transparent” is called “Opaque”. - -

    Examples of suitable formats for Transparent copies include plain -ascii without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for -output purposes only. - -

    The “Title Page” means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, “Title Page” means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -

    A section “Entitled XYZ” means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as “Acknowledgements”, -“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” -of such a section when you modify the Document means that it remains a -section “Entitled XYZ” according to this definition. - -

    The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - -

  3. VERBATIM COPYING - -

    You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -

    You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - -

  4. COPYING IN QUANTITY - -

    If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -

    If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -

    If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -

    It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - -

  5. MODIFICATIONS - -

    You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -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 -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. - -
    2. List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. - -
    3. State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -
    4. Preserve all the copyright notices of the Document. - -
    5. Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -
    6. Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. - -
    7. Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. - -
    8. Include an unaltered copy of this License. - -
    9. Preserve the section Entitled “History”, Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled “History” in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. - -
    10. Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the “History” section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. - -
    11. For any section Entitled “Acknowledgements” or “Dedications”, Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. - -
    12. Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. - -
    13. Delete any section Entitled “Endorsements”. Such a section -may not be included in the Modified Version. - -
    14. Do not retitle any existing section to be Entitled “Endorsements” or -to conflict in title with any Invariant Section. - -
    15. Preserve any Warranty Disclaimers. -
    - -

    If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -

    You may add a section Entitled “Endorsements”, provided it contains -nothing but endorsements of your Modified Version by various -parties—for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -

    You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -

    The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - -

  6. COMBINING DOCUMENTS - -

    You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -

    The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -

    In the combination, you must combine any sections Entitled “History” -in the various original documents, forming one section Entitled -“History”; likewise combine any sections Entitled “Acknowledgements”, -and any sections Entitled “Dedications”. You must delete all -sections Entitled “Endorsements.” - -

  7. COLLECTIONS OF DOCUMENTS - -

    You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -

    You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - -

  8. AGGREGATION WITH INDEPENDENT WORKS - -

    A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an “aggregate” if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -

    If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - -

  9. TRANSLATION - -

    Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -

    If a section in the Document is Entitled “Acknowledgements”, -“Dedications”, or “History”, the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - -

  10. TERMINATION - -

    You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - -

  11. FUTURE REVISIONS OF THIS LICENSE - -

    The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -

    Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License “or any later version” applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -

- -

C.1.1 ADDENDUM: How to use this License for your documents

- -

To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -

       Copyright (C)  year  your name.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.2
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-       A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the “with...Texts.” line with this: - -

         with the Invariant Sections being list their titles, with
-         the Front-Cover Texts being list, and with the Back-Cover Texts
-         being list.
-
-

If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -

If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - - - - -

-


- -Next: , -Previous: Copying This Manual, -Up: Top - -
- -

Index of Shell Builtin Commands

- -
-


- -Next: , -Previous: Builtin Index, -Up: Top - -
- -

Index of Shell Reserved Words

- - - -
-


- -Next: , -Previous: Reserved Word Index, -Up: Top - -
- -

Parameter and Variable Index

- - - -
-


- -Next: , -Previous: Variable Index, -Up: Top - -
- -

Function Index

- - - -
-


- -Previous: Function Index, -Up: Top - -
- -

Concept Index

- - - - - diff --git a/doc/index.html b/doc/index.html deleted file mode 100644 index d527b298b..000000000 --- a/doc/index.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - help.case.edu - - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
-
- -
- -
-
- - -
-
- -
-
- -
-
-
- help.case.edu -
-
-
-
-
-
-
-
help_by_phone
- -
-
-

In-Person Assistance

-

Bellflower Care Center

-

11424 Bellflower Rd.
Monday-Friday: 9am-10pm
Saturday: 10am-4pm (August 15-May 15 only)

-

Sears Care Center

-

Sears (Quad)
Room 340 (Hallway between Sears & Nord)
Monday-Friday: 9am - 5pm

- -
-
-
NAVIGATE
- - - - - - -
-
TRAINING
- -
OTHER RESOURCES
-
Lynda.com
-
Blackboard
-
coursesmart.com
-
mdotcase
- -
- -
- - -
- - -
- -
-
-
- -
-
-
-
© 2011 Case Western Reserve University
-
Cleveland, OH 44106
-
216.368.2000
-
 
-
Information Technology Services
(legal notice)
-
 
- -
 
- -
-
-
ITS Information
- - - - -
 
-
ITS Resources
- - - -
-
-
CWRU ITS Social Networks
- - - - - - -
- -
- - -
-
Translate this page
-
- - - - -
- - -
- Share - | - - - - - -
- - - -
- - - - - - -
-
-
- - - - - - - - \ No newline at end of file diff --git a/doc/mkfaqvers b/doc/mkfaqvers deleted file mode 100755 index 84bd0d003..000000000 --- a/doc/mkfaqvers +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -DATE=`date` -VERS=`sed -n 's:^.*Bash FAQ, version \([^,]*\),.*$:\1:p' < FAQ` -BVERS=` sed -n 's:^.*Bash version \(.*\)\.$:\1:p' < FAQ` - -sed -e "s!@VERSION@!$VERS!" -e "s!@UPDATED@!$DATE!" -e "s!@BASH_VERSION@!$BVERS!" < $1 -echo "" diff --git a/doc/mkinstall b/doc/mkinstall deleted file mode 100755 index f6b6ccf78..000000000 --- a/doc/mkinstall +++ /dev/null @@ -1,43 +0,0 @@ -#! /bin/sh -# -# mkinstall - make the INSTALL file from the `Installing Bash' node of the -# texinfo manual -# - -NODE="Installing Bash" -SUBNODE="Basic Installation" -TEXI=bashref.texi -TMPINFO=temp.info -TMPOUT=INSTALL.tmp - -OUT=${1:-INSTALL} - -trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15 -trap 'rm -f $TMPOUT $TMPINFO' 0 - -# create an info file without paragraph indentation -makeinfo --no-split --no-number-sections -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI - -# write out the text from the `Installing Bash' node to INSTALL.tmp -info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT - -# remove the info traversal information and the initial menu, and squeeze -# out multiple consecutive blank lines like `cat -s' -awk 'BEGIN { printline = 0; newlines = 0; } - -/^File: '$TMPINFO'/ { next; } - -/^'"$SUBNODE"'/ { printline = 1; } - -/^$/ { if (printline) newlines = 1; next; } - -/$/ { if (printline) { - if (newlines) { - printf "\n"; - newlines = 0; - } - print $0; - } - }' < $TMPOUT > $OUT - -exit 0 diff --git a/doc/mkinstall-tmp b/doc/mkinstall-tmp deleted file mode 100755 index 37d786311..000000000 --- a/doc/mkinstall-tmp +++ /dev/null @@ -1,44 +0,0 @@ -#! /bin/sh -# -# mkinstall - make the INSTALL file from the `Installing Bash' node of the -# texinfo manual -# - -NODE="Installing Bash" -SUBNODE="Basic Installation" -TEXI=bashref.texi -TMPINFO=temp.info -TMPOUT=INSTALL.tmp - -OUT=${1:-INSTALL} - -trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15 -#trap 'rm -f $TMPOUT $TMPINFO' 0 - -# create an info file without paragraph indentation -makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI - -# write out the text from the `Installing Bash' node to INSTALL.tmp -info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT - -exit 0 -# remove the info traversal information and the initial menu, and squeeze -# out multiple consecutive blank lines like `cat -s' -awk 'BEGIN { printline = 0; newlines = 0; } - -/^File: '$TMPINFO'/ { next; } - -/^'"$SUBNODE"'/ { printline = 1; } - -/^$/ { if (printline) newlines = 1; next; } - -/$/ { if (printline) { - if (newlines) { - printf "\n"; - newlines = 0; - } - print $0; - } - }' < $TMPOUT > $OUT - -exit 0 diff --git a/doc/mkposix b/doc/mkposix deleted file mode 100755 index 7b6a58f92..000000000 --- a/doc/mkposix +++ /dev/null @@ -1,25 +0,0 @@ -#! /bin/sh -# -# mkposix - make the POSIX.NOTES file from the `Bash POSIX Mode' node -# of the texinfo manual -# - -NODE="Bash POSIX Mode" -TEXI=bashref.texi -TMPINFO=temp.info -TMPOUT=POSIX.tmp - -OUT=${1:-POSIX} - -trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15 -trap 'rm -f $TMPOUT $TMPINFO' 0 - -# create an info file without paragraph indentation -makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI - -# write out the text from the `Bash POSIX Mode' node to $TMPOUT -info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT - -sed 1,2d < $TMPOUT > $OUT - -exit 0 diff --git a/doc/mkrbash b/doc/mkrbash deleted file mode 100755 index 4304e63fe..000000000 --- a/doc/mkrbash +++ /dev/null @@ -1,25 +0,0 @@ -#! /bin/sh -# -# mkrbash - make the RBASH file from the `The Restricted Shell' node -# of the texinfo manual -# - -NODE="The Restricted Shell" -TEXI=bashref.texi -TMPINFO=temp.info -TMPOUT=RBASH.tmp - -OUT=${1:-RBASH} - -trap 'rm -f $TMPOUT $TMPINFO $OUT; trap '' 0; exit 1' 1 2 3 6 15 -trap 'rm -f $TMPOUT $TMPINFO' 0 - -# create an info file without paragraph indentation -makeinfo --no-split -I../lib/readline/doc --paragraph-indent 0 -o $TMPINFO $TEXI - -# write out the text from the `The Restricted Shell' node to $TMPOUT -info --file $TMPINFO --node "$NODE" --subnodes --output $TMPOUT - -sed 1,2d < $TMPOUT > $OUT - -exit 0 diff --git a/doc/newbash.texi b/doc/newbash.texi deleted file mode 100644 index 4757c8d4b..000000000 --- a/doc/newbash.texi +++ /dev/null @@ -1,127 +0,0 @@ -1\input texinfo @c -*- texinfo -*- -@c %**start of header -@setfilename bash.info -@settitle GNU Bourne Again SHell -@setchapternewpage odd -@c %**end of header - -@c DON'T RUN FINALOUT YET UNTIL FINAL STAGES -@ignore -@iftex -@finalout -@end iftex -@end ignore - -@ifinfo -This file documents the GNU Bourne Again SHell. - -Copyright @copyright{} 1992 Free Software Foundation, Inc. -@end ifinfo - -@titlepage -@sp 10 -@center @titlefont{GNU Bash, the Bourne Again SHell} -@center Unproofed Draft -@sp 10 -@center Brian Fox, Chet Ramey -@center @today{} - -@page -This document describes GNU Bash, a Bourne shell compatible -command language interpreter which executes commands read from the -standard input or from a file. - -Published by the Free Software Foundation @* -675 Massachusetts Avenue, @* -Cambridge, MA 02139 USA - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the Foundation. - -@vskip 0pt plus 1filll -Copyright @copyright{} 1992 Free Software Foundation, Inc. -@end titlepage - -@ifinfo -This document describes GNU Bash, a Bourne shell compatible -command language interpreter which executes commands read from the -standard input or from a file. - -Published by the Free Software Foundation @* -675 Massachusetts Avenue, @* -Cambridge, MA 02139 USA - -@ignore -Permission is granted to process this file through TeX and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). -@end ignore - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the Foundation. -@end ifinfo - -I Tutorial - i Describe what Bash does. - 1) What a shell is for. - 2) How Bash is different from other shells. - - ii Superficial description of how the shell works. - 1) Parts of a command. - a) Command words. - b) Command separators. - c) Redirection words. - - iii Hands on Experience. - 1) Starting a shell. - a) startup files. - b) switching from Csh. - Using alias.conv - - 2) The Environment. - a) Description of "environment". - b) Some important environment variables. - c) Other common environment variables. - - 3) Issuing command lines. - a) Example -II Reference - i Shell Syntax - 1) Parts of "speech". - a) Command Words. - b) Command Seprators. - c) Redirection Words. - - 2) Quoting Syntax. - 3) Common Idioms. - - ii Guide by feature. - 1) Builtins. - 2) Variables. - ii Guide by task. - -III Indices - i diff --git a/doc/old-faq.html b/doc/old-faq.html deleted file mode 100644 index a069ca2aa..000000000 --- a/doc/old-faq.html +++ /dev/null @@ -1,778 +0,0 @@ -From J.J.Troup@dcsun7.comp.brad.ac.uk Tue Jul 9 11:54:33 1996 -Flags: 10 -Return-Path: J.J.Troup@dcsun7.comp.brad.ac.uk -Received: from babar.INS.CWRU.Edu (root@babar.INS.CWRU.Edu [129.22.8.213]) by odin.INS.CWRU.Edu with ESMTP (8.6.12+cwru/CWRU-2.2-ins) - id LAA05781; Tue, 9 Jul 1996 11:54:32 -0400 (from J.J.Troup@dcsun7.comp.brad.ac.uk for ) -Received: from dcsun7.comp.brad.ac.uk (dcsun7.comp.brad.ac.uk [143.53.28.202]) by babar.INS.CWRU.Edu with ESMTP (8.6.13+cwru/CWRU-2.4) - id LAA12069; Tue, 9 Jul 1996 11:54:03 -0400 (from J.J.Troup@dcsun7.comp.brad.ac.uk for ) -Received: from dcsun4.comp.brad.ac.uk (jjtroup@dcsun4.comp.brad.ac.uk [143.53.28.201]) by dcsun7.comp.brad.ac.uk (8.7.5/8.7.3) with ESMTP id QAA29654 for ; Tue, 9 Jul 1996 16:54:06 +0100 (BST) -Received: (from jjtroup@localhost) by dcsun4.comp.brad.ac.uk (8.7.5/8.7.3) id QAA22933; Tue, 9 Jul 1996 16:53:52 +0100 (BST) -Date: Tue, 9 Jul 1996 16:53:52 +0100 (BST) -Message-Id: <199607091553.QAA22933@dcsun4.comp.brad.ac.uk> -From: JJ TROUP -To: chet@po.CWRU.Edu -Subject: Re: Bash FAQ in HTML? -In-Reply-To: <9607091537.AA05105.SM@odin.INS.CWRU.Edu> -References: <199607091532.QAA22766@dcsun4.comp.brad.ac.uk> - <9607091537.AA05105.SM@odin.INS.CWRU.Edu> - -Chet Ramey writes: - -> > Is there a HTML version of the Bash FAQ? If not do you want one? I -> > have converted it to HTML and if there isn't already a HTML-ised FAQ, -> > I wondered if you wanted one? -> -> Sure, send it along. Thanks. - - Here it is. It is (with the exception of the
tags -at the beginning) clean HTML 2.0. Although there were a couple of -places which really warranted tables, I opted for
 instead as
-there is still no text based browser that I know of which fully
-supports tables.
-  If you like it, I would be happy to update as and when the FAQ
-is. If there are bits you don't like please do tell me.  If you don't
-like it at all, that's cool too... :)
-
-
-Regards
-
-Cajun
-
--------------------------------------------------------------
-              http://www.brad.ac.uk/~jjtroup/
--------------------------------------------------------------
-
---++Begin Include++--
-
-
-
-
-The Bash FAQ
-
-
- 
-

Bash FAQ

- -

-This is the Bash FAQ, version 1.5, for Bash version 1.14.6. -

-This document contains a set of frequently-asked questions concerning Bash, the GNU Bourne-Again Shell. Bash is a freely-available command interpreter with advanced features for both interactive use and shell programming. -

-Another good source of basic information about shells is the collection of FAQ articles periodically posted to comp.unix.shell. -

-Questions and comments concerning this document should be sent to chet@po.cwru.edu. -

-

Contents:

-

-

    -
  1. What is it?
    -
  2. What's the latest version?
    -
  3. Where can I get it?
    -
  4. What's the `Posix 1003.2 standard'?
    -
  5. On what machines will bash run?
    -
  6. How does bash differ from sh, the Bourne shell?
    -
  7. How does bash differ from the Korn shell, version ksh88?
    -
  8. What is the bash `posix mode'?
    -
  9. How can I build bash with gcc?
    -
  10. Why does bash run a different version of `command' than `which command' says it will?
    -
  11. How can I make my csh aliases work when I convert to bash?
    -
  12. Now that I've converted from ksh to bash, are there equivalents to ksh features like autoloaded functions and the `whence' command?
    -
  13. Why is the bash builtin `test' slightly different from /bin/test?
    -
  14. Why does bash sometimes say `Broken pipe'?
    -
  15. How can I get bash to read and display eight-bit characters?
    -
  16. Why can't I use command line editing in my `cmdtool'?
    -
  17. How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function?
    -
  18. When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column?
    -
  19. I built bash on Solaris 2. Why do globbing expansions and filename completion chop off the first few characters of each filename?
    -
  20. Why doesn't bash treat brace expansions exactly like csh?
    -
  21. Why does bash dump core after I interrupt username completion or `~user' tilde expansion on a machine running NIS?
    -
  22. I'm running SVR4.2. Why is the line erased every time I type `@'?
    -
  23. How can I find the value of a shell variable whose name is the value of another shell variable?
    -
  24. If I pipe the output of a command into `read variable', why doesn't the output show up in $variable when the read command finishes?
    -
  25. I just changed my shell to bash, and now I can't FTP into my machine. Why not?
    -
  26. I have a bunch of shell scripts that use backslash-escaped characters in arguments to `echo'. Bash doesn't interpret these characters. Why not, and how can I make it understand them?
    -
  27. Why doesn't bash have csh variable modifiers?
    -
  28. Why does bash report syntax errors when my C News scripts use a redirection before a subshell command?
    -
  29. How can I pipe standard output and standard error from one command to another, like csh does with `|&'?
    -
  30. How do I report bugs in bash, and where should I look for fixes and advice?
    -
  31. What kind of bash documentation is there?
    -
  32. What's coming in future versions?
    -
  33. What's on the bash `wish list'?
    -
  34. When will the next release appear?
    -
- -

1) What is it?

- -

-Bash is a Unix command interpreter (shell). It is an implementation of the Posix 1003.2 shell standard, and resembles the Korn and System V shells. -

-Bash contains a number of enhancements over those shells, both for interactive use and shell programming. Features geared toward interactive use include command line editing, command history, job control, aliases, and prompt expansion. Programming features include additional variable expansions, shell arithmetic, and a number of variables and options to control shell behavior. -

-Bash was originally written by Brian Fox of the Free Software Foundation. The current developer and maintainer is Chet Ramey of Case Western Reserve University. - -

2) What's the latest version?

- -

-The latest version is 1.14.6, first made available on December 19, 1995. - -

3) Where can I get it?

- -

-Bash is the GNU project's shell, and so is available from the master GNU archive site, prep.ai.mit.edu, and its mirrors. The latest version is also available for FTP from slc2.ins.cwru.edu, the maintainer's machine. The following URLs tell how to get version 1.14.6: -

- -

- -

4) What's the `Posix 1003.2 standard'?

- -

-POSIX is a name originally coined by Richard Stallman for a family of open system standards based on UNIX. There are a number of aspects of UNIX under consideration for standardization, from the basic system services at the system call and C library level to applications and tools to system administration and management. Each area of standardization is assigned to a working group in the 1003 series. -

-The POSIX Shell and Utilities standard has been developed by IEEE Working Group 1003.2 (POSIX.2). It concentrates on the command interpreter interface and utility programs commonly executed from the command line or by other programs. An initial version of the standard has been approved and published by the IEEE, and work is currently underway to update it. -

-Bash is concerned with the aspects of the shell's behavior defined by POSIX.2. The shell command language has of course been standardized, including the basic flow control and program execution constructs, I/O redirection and pipelining, argument handling, variable expansion, and quoting. -

-The `special' builtins, which must be implemented as part of the shell to provide the desired functionality, are specified as being part of the shell; examples of these are `eval' and `export'. Other utilities appear in the sections of POSIX.2 not devoted to the shell which are commonly (and in some cases must be) implemented as builtin commands, such as `read' and `test'. POSIX.2 also specifies aspects of the shell's interactive behavior as part of the UPE, including job control and command line editing. Only vi-style line editing commands have been standardized; emacs editing commands were left out due to objections. - -

5) On what machines will bash run?

- -

-Bash has been ported to nearly every version of UNIX. All you should have to do to build it on a machine for which a port exists is to type `make'. The build process will attempt to discover the version of UNIX you have and tailor itself accordingly, using a combination of saved definitions in the file `machines.h' and a file `sysdefs.h' created by inspecting the environment for various things. -

-More information appears in the file `INSTALL' in the distribution. - -

6) How does bash differ from sh, the Bourne shell?

- -

-This is a non-comprehensive list of features that differentiate bash -from the SVR4 shell. The bash manual page explains these completely. -

- -

Things bash has that sh does not:

- -
    -
  • long invocation options -
  • `!' reserved word to invert pipeline return value -
  • the select compound command -
  • the $(...) form of command substitution -
  • the ${#param} parameter value length operator -
  • expansions to perform substring removal (${p%[%]w}, ${p#[#]w}) -
  • variables: BASH, BASH_VERSION, UID, EUID, REPLY, PPID, PWD, OLDPWD, SHLVL, RANDOM, SECONDS, LINENO, HISTCMD, HOSTTYPE, OSTYPE, ENV, MAIL_WARNING, PS3, PS4, HISTSIZE, HISTFILE, HISTFILESIZE, PROMPT_COMMAND, FCEDIT, FIGNORE, IGNOREEOF, INPUTRC, HISTCONTROL, command_oriented_history, allow_null_glob_expansion, glob_dot_filenames, histchars, nolinks, auto_resume, HOSTFILE, noclobber, TMOUT, no_exit_on_failed_exec, cdable_vars, notify, OPTERR -
  • redirections: <>, &>, >| -
  • prompt string special char translation and variable expansion -
  • auto-export of modified values of variables in initial environment -
  • command search finds functions before builtins -
  • bash return builtin will exit a file sourced with `.' -
  • builtins: cd -, exec -, echo -e/-E, export -n/-f/-p/name=value, pwd -P, read -r, readonly -f, trap -l, ulimit -n/-p/-u, set -b/-m/-o option/-p/-l/-d/-C/-H/-P, unset -f/-v, umask -S, type -all/-path/-type, suspend -f, kill -s -
  • bash reads ~/.bashrc for interactive shells, $ENV for non-interactive -
  • bash restricted shell mode is more extensive -
  • bash allows functions and variables with the same name -
  • brace expansion -
  • tilde expansion -
  • arithmetic expansion and `let' builtin -
  • process substitution -
  • aliases and alias/unalias builtins -
  • local variables in functions and `local' builtin -
  • readline and command-line editing -
  • history and history/fc builtins -
  • csh-like history expansion -
  • other new bash builtins: bind, command, builtin, declare/typeset, dirs, enable, fc, help, history, logout, popd, pushd -
  • exported functions -
  • filename generation when using output redirection (command >a*) -
- -

Things sh has that bash does not:

- -
    -
  • uses variable SHACCT to do shell accounting -
  • includes `stop' builtin (bash can use alias stop='kill -s STOP') -
  • `newgrp' builtin -
  • turns on job control if called as `jsh' -
  • ulimit attempts to set both soft & hard limits if -S/-H not given -
- -

New things in the SVR4.2 sh:

- -
    -
  • internationalization: $LANG, $LC_CTYPE, $LC_MESSAGES, setlocale, etc. -
  • $TIMEOUT (like bash $TMOUT) -
  • new builtins: mldmode, priv -
  • `read' builtin has -r -
  • kill -s is present -
- -

Implementation differences:

- -
    -
  • redirection to/from compound commands causes sh to create a subshell -
  • bash does not allow unbalanced quotes; sh silently inserts them at EOF -
  • bash does not mess with signal 11 -
  • sh sets (euid, egid) to (uid, gid) if -p not supplied and uid < 100 -
  • bash splits only the results of expansions on IFS -
  • sh does not allow MAILCHECK to be unset (?) -
  • sh does not allow traps on SIGALRM or SIGCHLD -
- -

7) How does bash differ from the Korn shell, version ksh88?

- -

Things bash has or uses that ksh88 does not:

- -
    -
  • long invocation options -
  • `!' reserved word -
  • posix mode and posix conformance -
  • command hashing -
  • tilde expansion for assignment statements that look like $PATH -
  • process substitution with named pipes if /dev/fd is not available -
  • variables: BASH, BASH_VERSION, UID, EUID, SHLVL, HISTCMD, HOSTTYPE, OSTYPE, MAIL_WARNING, HISTFILESIZE, OPTERR, PROMPT_COMMAND, IGNOREEOF, FIGNORE, INPUTRC, HISTCONTROL, notify, command_oriented_history, glob_dot_filenames, allow_null_glob_expansion, histchars, nolinks, HOSTFILE, noclobber, auto_resume, no_exit_on_failed_exec, cdable_vars -
  • prompt expansion with backslash escapes and command substitution -
  • redirection: &> (stdout and stderr) -
  • more extensive and extensible editing and completion -
  • builtins: bind, builtin, command, declare, dirs, echo -e/-E, enable, exec -, fc -s, export -n/-f/-p, hash, help, history, jobs -x, kill -s, local, logout, popd, pushd, readonly -n/-f/-p, set -o braceexpand/-o histexpand/-o interactive-comments/-o notify/-o physical/-o posix/-l/-d/-C/-b/-H/-P, suspend, trap -l, type, ulimit -u, umask -S -
  • $[...] synonym for $((...)) -
  • `!' csh-style history expansion -
- -

Things ksh88 has or uses that bash does not:

- -
    -
  • new version of test: [[...]] -
  • ((...)) equivalent to let "..." -
  • time keyword to let pipelines be timed -
  • tracked aliases -
  • $(<file) -
  • one-dimensional arrays and appropriate expansions -
  • variables: ERRNO, FPATH, COLUMNS, LINES, EDITOR, VISUAL -
  • extended pattern matching with egrep-style pattern lists -
  • co-processes (|&, >&p, <&p) -
  • weirdly-scoped functions -
  • typeset +f to list all function names without definitions -
  • text of command history kept in a file, not memory -
  • builtins: alias -x, cd old new, fc -e -, newgrp, print, read -p/-s/u/var?prompt, set -A/-o gmacs/-o keyword/-o bgnice/-o markdirs/-o nolog/-o trackall/-o viraw/-s, typeset -H/-L/-R/-A/-ft/-fu/-fx/-l/-u/-t, whence -
- -

Implementation differences:

- -
    -
  • ksh runs last command of a pipeline in parent shell context -
  • ksh ulimit sets hard and soft limits by default -
  • bash has brace expansion by default -
  • bash has fixed startup file for all interactive shells; ksh reads $ENV -
  • bash has exported functions -
  • bash command search finds functions before builtins -
- -

8) What is the bash `posix mode'?

- -

-Although bash is an implementation of the Posix.2 shell specification, there are areas where the bash default behavior differs from that spec. The bash `posix mode' changes the bash behavior in these areas so that it obeys the spec more closely. -

-Posix mode is entered by starting bash with the -posix option or executing `set -o posix' after bash is running. -

-The specific aspects of bash which change when posix mode is active are listed in the file CWRU/POSIX.NOTES in the bash distribution. - -

9) How can I build bash with gcc?

- -

-Type -
-

-	make CC=gcc CPPNAME='$(CC) -E'
-
- -

10) Why does bash run a different version of `command' than `which command' says it will?

- -

-`which' is actually a csh script that assumes you're running csh. It reads the csh startup files from your home directory and uses those to determine which `command' will be invoked. Since bash doesn't use any of those startup files, there's a good chance that your bash environment differs from your csh environment. - -

11) How can I make my csh aliases work when I convert to bash?

- -

-Bash uses a different syntax to support aliases than csh does. The details can be found in the documentation. We have provided a shell script which does most of the work of conversion for you; this script can be found in ./examples/alias-conv.sh. Here is how you use it: -

-Start csh in the normal way for you. (e.g., `csh') -

-Pipe the output of `alias' through `alias-conv.sh', saving the results into `bash_aliases': -
-

-	alias | alias-conv.sh >bash_aliases
-
-

-Edit `bash_aliases', carefully reading through any created functions. You will need to change the names of csh specific variables (like $cwd) to the bash equivalents (like $PWD). You will also need to remove recursive references to commands which are defined as functions. For example, the csh alias: -
-

-	alias cd 'cd \!*;echo $cwd'
-
-

-is converted to the bash function: -
-

-	cd () 
-	{ 
-		cd $*;
-		echo $cwd
-	}
-
-

-This function contains a self-pointing reference to `cd', which should be changed to use the `builtin' version. It also uses the csh variable `$cwd' which has an equivalent in bash. You should also change $* to "$@" to correctly process directory names with embedded spaces. Precede the recursive reference with the word `builtin', change the name of the variable to the one bash uses, and quote it to avoid any unwanted expansion: -
-

-	cd () { builtin cd "$@"; echo "$PWD"; }
-
-

-Merge the edited file into your ~/.bashrc. - -

12) Now that I've converted from ksh to bash, are there equivalents to ksh features like autoloaded functions and the `whence' command?

- -

-There are features in ksh-88 that do not have direct bash equivalents. Most, however, can be emulated with very little trouble. -
-

-ksh-88 feature		Bash equivalent
---------------		---------------
-[[...]]			can usually use [...]; minor differences
-compiled-in aliases	set up aliases in .bashrc; some ksh aliases are
-			bash builtins (hash, history, type)
-$(<file)		$(cat file)
-arrays			no good subsitute yet
-((...))			let "..."
-time			use external command; GNU time is particularly useful
-			use time bash -c '...' for complicated constructs
-extended patterns	no good substitute
-coprocesses		named pipe pairs (one for read, one for write)
-typeset +f		declare -f |
-			     sed -n 's:^declare -[a-z]* \([^ ]*\).*$:\1:p'
-cd, print, whence	function subsitutes in examples/functions/kshenv
-autoloaded functions	examples/functions/autoload is the same as typeset -fu
-read var?prompt		[ -t 0 ] && echo -n prompt >&2; read var
-
- -

13) Why is the bash builtin `test' slightly different from /bin/test?

- -

-The specific example used here is [ ! x -o x ], which is false. -

-Bash's builtin `test' implements the Posix.2 spec, which can be summarized as follows (the wording is due to David Korn): -

-Here is the set of rules for processing test arguments. -
-

-    0 Args: False
-    1 Arg:  True iff argument is not null.
-    2 Args: If first arg is !, True iff second argument is null.
-	    If first argument is unary, then true if unary test is true
-	    Otherwise error.
-    3 Args: If second argument is a binary operator, do binary test of $1 $3
-	    If first argument is !, negate two argument test of $2 $3
-	    Otherwise error.
-    4 Args: If first argument is !, negate three argument test of $2 $3 $4.
-	    Otherwise unspecified
-    5 or more Args: unspecified.  (Historical shells would use their
-    current algorithm).
-
-

-The operators -a and -o are considered binary operators for the purpose of the 3 Arg case. -

-As you can see, the test becomes (not (x or x)), which is false. - -

14) Why does bash sometimes say `Broken pipe'?

- -

-If a sequence of commands appears in a pipeline, and one of the reading commands finishes before the writer has finished, the writer receives a SIGPIPE signal. Many other shells special-case SIGPIPE as an exit status in the pipeline and do not report it. For example, in: -
-

-      ps -aux | head
-
-

-`head' can finish before `ps' writes all of its output, and ps will try to write on a pipe without a reader. In that case, bash will print `Broken pipe' to stderr when ps is killed by a SIGPIPE. - -

15) How can I get bash to read and display eight-bit characters?

- -

-This is a process requiring several steps. -

-First, you must ensure that the `physical' data path is a full eight bits. For xterms, for example, the `vt100' resources `eightBitInput' and `eightBitOutput' should be set to `true'. -

-Once you have set up an eight-bit path, you must tell the kernel and tty driver to leave the eigth bit of characters alone when processing keyboard input. Use `stty' to do this: -
-

-	stty cs8 -istrip -parenb
-
-

-For old BSD-style systems, you can use -
-

-        stty pass8
-
-

-You may also need -
-

-	stty even odd
-
-

-Finally, you need to tell readline that you will be inputting and displaying eight-bit characters. You use readline variables to do this. These variables can be set in your .inputrc or using the bash `bind' builtin. Here's an example using `bind': -
-

-	bash$ bind 'set convert-meta off'
-	bash$ bind 'set meta-flag on'
-	bash$ bind 'set output-meta on'
-
-

-The `set' commands between the single quotes may also be placed in ~/.inputrc. - -

16) Why can't I use command line editing in my `cmdtool'?

- -

-The problem is `cmdtool' and bash fighting over the input. When scrolling is enabled in a cmdtool window, cmdtool puts the tty in `raw mode' to permit command-line editing using the mouse for applications that cannot do it themselves. As a result, bash and cmdtool each try to read keyboard input immediately, with neither getting enough of it to be useful. -

-This mode also causes cmdtool to not implement many of the terminal functions and control sequences appearing in the `sun-cmd' termcap entry. For a more complete explanation, see that file examples/suncmd.termcap in the bash distribution. -

-`xterm' is a better choice, and gets along with bash much more smoothly. -

-If you must use cmdtool, you can use the termcap description in examples/suncmd.termcap. Set the TERMCAP variable to the terminal description contained in that file, i.e. -
-

-TERMCAP='Mu|sun-cmd:am:bs:km:pt:li#34:co#80:cl=^L:ce=\E[K:cd=\E[J:rs=\E[s:'
-
-

-Then export TERMCAP and start a new cmdtool window from that shell. The bash command-line editing should behave better in the new cmdtool. If this works, you can put the assignment to TERMCAP in your bashrc file. - -

17) How do I write a function `x' to replace builtin command `x', but still invoke the command from within the function?

- -

-This is what the `command' and `builtin' builtins are for. The `command' builtin executes the command supplied as its first argument, skipping over any function defined with that name. The `builtin' builtin executes the builtin command given as its first argument directly. -

-For example, to write a function to replace `cd' that writes the hostname and current directory to an xterm title bar, use something like the following: -
-

-	cd()
-	{
-		builtin cd "$@" && xtitle "$HOST: $PWD"
-	}
-
-

-This could also be written using `command' instead of `builtin'; the version above is marginally more efficient. - -

18) When I have terminal escape sequences in my prompt, why does bash wrap lines at the wrong column?

- -

-Bash does not know that the terminal escape sequences do not take up space on the screen. The redisplay code assumes, unless told otherwise, that each character in the prompt is a `printable' character that takes up one character position on the screen. -

-You can use the bash prompt expansion facility (see the PROMPTING section in the manual page) to tell readline that sequences of characters in the prompt strings take up no screen space. -

-Use the \[ escape to begin a sequence of non-printing characters, and the \] escape to signal the end of such a sequence. - -

19) I built bash on Solaris 2. Why do globbing expansions and filename completion chop off the first few characters of each filename?

- -

-This is the consequence of building bash on SunOS 5 and linking with the libraries in /usr/ucblib, but using the definitions and structures from files in /usr/include. -

-The actual conflict is between the dirent structure in /usr/include/dirent.h and the struct returned by the version of `readdir' in libucb.a (a 4.3-BSD style `struct direct'). -

-Make sure you've got /usr/ccs/bin ahead of /usr/ucb in your $PATH when building bash. This will ensure that you use /usr/ccs/bin/cc or acc instead of /usr/ucb/cc and that you link with libc before libucb. -

-If you have installed the Sun C compiler, you may also need to put /usr/ccs/bin and /opt/SUNWspro/bin into your $PATH before /usr/ucb. - -

20) Why doesn't bash treat brace expansions exactly like csh?

- -

-The only difference between bash and csh brace expansion is that bash requires a brace expression to contain at least one unquoted comma if it is to be expanded. Any brace-surrounded word not containing an unquoted comma is left unchanged by the brace expansion code. This affords the greatest degree of sh compatibility. -

-Bash, ksh, zsh, and pd-ksh all implement brace expansion this way. - -

21) Why does bash dump core after I interrupt username completion or `~user' tilde expansion on a machine running NIS?

- -

-This is a famous and long-standing bug in the SunOS YP (sorry, NIS) client library, which is part of libc. -

-The YP library code keeps static state -- a pointer into the data returned from the server. When YP initializes itself (setpwent), it looks at this pointer and calls free on it if it's non-null. So far, so good. -

-If one of the YP functions is interrupted during getpwent (the exact function is interpretwithsave()), and returns NULL, the pointer is freed without being reset to NULL, and the function returns. The next time getpwent is called, it sees that this pointer is non-null, calls free, and the bash free() blows up because it's being asked to free freed memory. -

-The traditional Unix mallocs allow memory to be freed multiple times; that's probably why this has never been fixed. You can probably stop it by adding an #undef USE_GNU_MALLOC to the appropriate machine description in machines.h. - -

22) I'm running SVR4.2. Why is the line erased every time I type `@'?

- -

The `@' character is the default `line kill' character in most versions of System V, including SVR4.2. You can change this character to whatever you want using `stty'. For example, to change the line kill character to control-u, type -
-

-	stty kill ^U
-
-

-where the `^' and `U' can be two separate characters. - -

23) How can I find the value of a shell variable whose name is the value of another shell variable?

- -

-Use the `eval' builtin. The important thing to remember is that `eval' expands the arguments you give it again, so you need to quote the parts of the arguments that you want `eval' to act on. -

-For example, this expression prints the value of the last positional parameter: -
-

-	eval echo \"\$\{$#\}\"
-
-

-The expansion of the quoted portions of this expression will be deferred until `eval' runs, while the `$#' will be expanded before `eval' is executed. - -

24) If I pipe the output of a command into `read variable', why doesn't the output show up in $variable when the read command finishes?

- -

-This has to do with the parent-child relationship between Unix processes. -

-Each element of a pipeline runs in a separate process, a child of the shell running the pipeline. A subprocess cannot affect its parent's environment. When the `read' command sets the variable to the input, that variable is set only in the subshell, not the parent shell. When the subshell exits, the value of the variable is lost. -

-Many pipelines that end with `read variable' can be converted into command substitutions, which will capture the output of a specified command. The output can then be assigned to a variable: -
-

-	grep ^gnu /usr/lib/news/active | wc -l | read ngroup
-
-

-can be converted into -
-

-	ngroup=$(grep ^gnu /usr/lib/news/active | wc -l)
-
-

-This does not, unfortunately, work to split the text among multiple variables, as read does when given multiple variable arguments. If you need to do this, you can either use the command substitution above to read the output into a variable and chop up the variable using the bash pattern removal expansion operators or use some variant of the following approach. -

-Say /usr/local/bin/ipaddr is the following shell script: -
-

-#! /bin/sh
-host `hostname` | awk '/address/ {print $NF}'
-
-

-Instead of using -
-

-	/usr/local/bin/ipaddr | read A B C D
-
-

-to break the local machine's IP address into separate octets, use -
-

-	OIFS="$IFS"
-	IFS=.
-	set -- $(/usr/local/bin/ipaddr)
-	IFS="$OIFS"
-	A="$1" B="$2" C="$3" D="$4"
-
-

-Beware, however, that this will change the shell's positional parameters. If you need them, you should save them before doing this. -

-This is the general approach -- in most cases you will not need to set $IFS to a different value. - -

25) I just changed my shell to bash, and now I can't FTP into my machine. Why not?

- -

-You must add the full pathname to bash to the file /etc/shells. Many versions of ftpd use this file to prohibit `special' users such as `uucp' and `news' from using FTP. - -

26) I have a bunch of shell scripts that use backslash-escaped characters in arguments to `echo'. Bash doesn't interpret these characters. Why not, and how can I make it understand them?

- -

-This is the behavior of echo on most Unix System V machines. -

-The bash builtin `echo' is modelled after the 9th Edition Research Unix version of `echo'. It does not interpret backslash-escaped characters in its argument strings by default; it requires the use of the -e option to enable the interpretation. The System V echo provides no way to disable the special characters; the bash echo has a -E option to disable them. -

-There is a compile-time option that will make bash behave like the System V echo and interpret things like \t by default. Change config.h so that DEFAULT_ECHO_TO_USG is defined, remove builtins/libbuiltins.a and builtins/echo.o, and rebuild. - -

27) Why doesn't bash have csh variable modifiers?

- -

-Posix has specified a more powerful, albeit somewhat more confusing, mechanism cribbed from ksh, and bash implements it. - -

-
${parameter%word} -
Remove smallest suffix pattern. The WORD is expanded to produce a pattern. It then expands to the value of PARAMETER, with the smallest portion of the suffix matched by the pattern deleted. -
-        x=file.c
-        echo ${x%.c}.o
-        -->file.o
-
-
- -
${parameter%%word} -
Remove largest suffix pattern. The WORD is expanded to produce a pattern. It then expands to the value of PARAMETER, with the largest portion of the suffix matched by the pattern deleted. -
-        x=posix/src/std
-        echo ${x%%/*}
-        -->posix
-
-
- -
${parameter#word} -
Remove smallest prefix pattern. The WORD is expanded to produce a pattern. It then expands to the value of PARAMETER, with the smallest portion of the prefix matched by the pattern deleted. -
-        x=$HOME/src/cmd
-        echo ${x#$HOME}
-        -->/src/cmd
-
-
- -
${parameter##word} -
Remove largest prefix pattern. The WORD is expanded to produce a pattern. It then expands to the value of PARAMETER, with the largest portion of the prefix matched by the pattern deleted. -
-
-        x=/one/two/three
-        echo ${x##*/}
-        -->three
-
-
-
-

-Given -
-

-        a=/a/b/c/d
-	b=b.xxx
-
-	csh			bash		result
-	---			----		------
-	$a:h			${a%/*}		   /a/b/c
-	$a:t			${a##*/}	   d
-	$b:r			${b%.*}		   b
-	$b:e			${b##*.}	   xxx
-
- -

28) Why does bash report syntax errors when my C News scripts use a redirection before a subshell command?

- -

-The actual command in question is something like -
-

-	< file ( command )
-
-

-According to the grammar given in the Posix.2 standard, this construct is, in fact, a syntax error. Redirections may only precede `simple commands'. A subshell construct such as the above is one of the shell's `compound commands'. A redirection may only follow a compound command. -

-The file CWRU/sh-redir-hack in the 1.14.6 distribution is an (unofficial) patch to parse.y that will modify the grammar to support this construct. It will not apply with `patch'; you must modify parse.y by hand. Note that if you apply this, you must recompile with -DREDIRECTION_HACK. This introduces a large number of reduce/reduce conflicts into the shell grammar. - -

29) How can I pipe standard output and standard error from one command to another, like csh does with `|&'?

- -

-Use -
-

-	command 2>&1 | command2
-
-

-The key is to remember that piping is performed before redirection, so file descriptor 1 points to the pipe when it is duplicated onto file descriptor 2. - -

30) How do I report bugs in bash, and where should I look for fixes and advice?

- -

-Use the `bashbug' script to report bugs. It is built and installed at the same time as bash. It provides a standard template for reporting a problem and automatically includes information about your configuration and build environment. -

-`bashbug' sends its reports to bug-bash@prep.ai.mit.edu, which is a large mailing list gatewayed to the usenet newsgroup gnu.bash.bug. -

-Bug fixes, answers to questions, and announcements of new releases are all posted to gnu.bash.bug. Discussions concerning bash features and problems also take place there. -

-To reach the bash maintainers directly, send mail to bash-maintainers@prep.ai.mit.edu. - -

31) What kind of bash documentation is there?

- -

First, look in the documentation directory in the bash distribution. It should contain the following files: -

- -

    -
  • bash.1 - an extensive, thorough Unix-style manual page -
  • builtins.1 - a manual page covering just bash builtin commands -
  • features.texi - a Gnu-style info file overview -
  • FAQ - this file -
  • article.ms - text of an article written for The Linux Journal -
  • readline.3 - a man page describing readline -
- -

-Postscript files created from the above source are also present in the distribution. -

-There is additional documentation available for anonymous FTP from host slc2.ins.cwru.edu in the `pub/bash' directory. -

-Cameron Newham has written a book on bash, published by O'Reilly and Associates. The title is ``Learning the Bash Shell''. The ISBN number s 1-56592-147-X. Look for it in fine bookstores near you. - -

32) What's coming in future versions?

- -

-There will be no new features in future releases of version 1.14. -

-The next major release, bash-2.0, will contain extensive changes and new features. Here's a short list: -

- -

    -
  • one-dimensional arrays with a new compound assignment statement, appropriate expansion constructs and modifications to some of the builtins (read, declare, etc.) to use them -
  • new expansions to do ANSI-C string expansion, locale-specific string translation, substring extraction, pattern replacement, and indirect variable expansion -
  • new builtins: `disown' and `shopt' -
  • new variables: HISTIGNORE, SHELLOPTS, PIPESTATUS, DIRSTACK, GLOBIGNORE -
  • special handling of many unused or redundant variables removed (e.g., $notify, $glob_dot_filenames, $no_exit_on_failed_exec) -
  • dynamic loading of new builtin commands; many loadable examples provided -
  • new prompt expansions: \e, \n, \H, \T, \@, \v, \V -
  • history and aliases available in shell scripts -
  • new readline variables: enable-keypad, mark-directories, input-meta, visible-stats -
  • new readline commands to manipulate the mark and operate on the region -
  • new readline emacs mode commands and bindings for ksh-88 compatibility -
  • updated and extended builtins -
  • new DEBUG trap -
  • expanded (and now documented) restricted shell mode -
  • the `time' reserved word to time pipelines, shell builtins, and shell functions -
- -

implementation stuff:

- -
    -
  • autoconf-based configuration -
  • nearly all of the bugs reported since version 1.14 have been fixed -
  • most builtins converted to use builtin `getopt' for consistency -
  • most builtins use -p option to display output in a reusable form (for consistency) -
  • grammar tighter and smaller (66 reduce-reduce conflicts gone) -
  • lots of code now smaller and faster -
  • test suite greatly expanded -
- -

33) What's on the bash `wish list' for future versions?

- -
    -
  • Programmable completion a la zsh -
  • menu completion a la tcsh -
  • the ksh egrep-style extended pattern matching operators -
  • associative arrays (not really all that hard) -
  • breaking some of the shell functionality into embeddable libraries -
  • better internationalization using GNU `gettext' -
  • an option to use external files for the long `help' text -
  • a bash debugger -
- -

-Much of this will not be in bash-2.0. - -

34) When will the next release appear?

- -

-Version 1.14.6 will probably be the last release for version 1.14. -

-The next version will appear sometime in 1996. Never make predictions. -

- -


-
- -This document is Copyright 1995, 1996 by Chester Ramey. -

-Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, and distribute this document for any purpose, provided that the above copyright notice appears in all copies of this document and that the contents of this document remain unaltered. -

--- -
-``The lyf so short, the craft so long to lerne.'' - Chaucer -
-Chet Ramey, Case Western Reserve University - Internet: chet@po.CWRU.Edu - - - - - - ---++ End Include ++-- - diff --git a/doc/oldbash.texi b/doc/oldbash.texi deleted file mode 100644 index b8e9a8669..000000000 --- a/doc/oldbash.texi +++ /dev/null @@ -1,9291 +0,0 @@ -\input texinfo @c -*- texinfo -*- -@c %**start of header -@setfilename bash.info -@settitle GNU Bourne Again SHell -@setchapternewpage odd -@c %**end of header - -@ignore -**EXPLANATION OF COMMENTS IN FILE** -All comments, which start with @c, are by Julie Sussman -(jems@zurich.ai.mit.edu). -If a comment has someone else's name or initials in it, it is still -by me (Julie), but is a note on something that person told me. -@end ignore - -@ignore -**TO DO** -Update all nodes -Update all menus for Info. They don't match current manual. -Fix the cross references -- too many have abbreviated node names. -Fix/redo/complete the indexing. - Separate index for commands, vars, etc. (separate from concepts) -Use group/end group around examples to prevent bad page breaks. -@end ignore - -@ignore -JEFF KELLEM'S MISC. COMMENTS -* add a glossary -* below are some additions/changes that are being considered for final - 1.06 release -- there are probably others; these are off the top of my - head - * check on `-' arg to cd to swap $PWD and $OLDPWD - * `+' option to `set' to list all var names w/o their values (`set +') - * `set --' will unset the positional params if no other args are given ? - * -r option to read - * -p flag of jobs to list PIDs only (posix.2a) - * job_spec args to jobs (posix.2a) - * shell error msgs may now have `bash: ' as a prefix (will have to chk - if Brian decided to bless it) -@end ignore - -@c DON'T RUN FINALOUT YET UNTIL FINAL STAGES -@ignore -@iftex -@finalout -@end iftex -@end ignore - -@ifinfo -This file documents the GNU Bourne Again SHell. - -Copyright @copyright{} 1989, 1990 Free Software Foundation, Inc. -@end ifinfo - -@titlepage -@sp 10 -@center @titlefont{Bourne Again SHell} -@center Unproofed Draft -@sp 10 -@center Brian Fox, Diane Barlow Close, -@center Julie Sussman, Chet Ramey, -@center Richard Stallman -@center @today{} - -@page -This document describes GNU Bash, a Bourne shell compatible command -language interpreter which executes commands read from standard input -or from a file. - -Published by the Free Software Foundation @* -675 Massachusetts Avenue, @* -Cambridge, MA 02139 USA - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the Foundation. - -@vskip 0pt plus 1filll -Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc. -@end titlepage - -@node Top, Thanks, (dir), (dir) -@unnumbered Preface - -This manual introduces the GNU Bourne Again SHell (BASH) and explains -its role in the operating system. This manual does not explain the -fundamentals of using operating system commands such as @code{ls}, -@code{cd}, and others, nor does it explain how to log into your system. - -BASH is a command language interpreter that executes commands read from -the standard input or from a file. BASH is compatible with the Bourne -shell (@code{sh}), and also incorporates useful features of the Korn -shell (@code{ksh}) and the C shell (@code{csh}). The intention is that -BASH be a superset of the desirable features found in other shells. - -BASH is POSIX compliant. - -If you read this manual sequentially, you'll find it leads you through -the concepts of a shell from its simple beginnings to more complex -shell features. If you are familiar with your machine's operating -system and have some experience with shells, then this manual makes a -handy reference. -@c A nice goal would be to make the above paragraph come true - -@menu -* Thanks:: Acknowledgement of those who made it possible. - -* License:: GNU licensing information. - -* Introduction:: Introduction to shells. - -* I/O:: Redirection. Pipes. - -* Line:: Command line syntax. - -* File Names:: How the shell interprets your input before - it arrives at other commands. Wildcard - characters. - -* Job Control:: Controlling when commands are run. - -* Editing:: Editing lines that you type, and how to - get at previously typed lines. - -* History:: History substitution. - -* Aliases:: Substitution of command words. - -* Functions:: How to generalize a group of related - commands. - -* Programming:: An overview of programming using BASH. - -* Scripts:: Writing shell programs with BASH. - -* Variables:: Shell variables. - -* Environment:: Discovering your shell's environment. - -* Conditionals:: Programming using conditional statements. - -* Looping:: Programming using looping statements. - -* Built-in:: Description of commands that are built into - the shell. - -* Install:: Installing BASH. - -* Invoke:: Invoking BASH. Details on signal control in BASH. - Customizing BASH prompts. - -* Start-up:: A sample start-up files for BASH. - -* Advanced Scripts:: Samples of writing more advanced shell scripts. - -* Tools:: Related and useful operating system commands. - -* Authors:: Who's responsible for all this. - -* Concept Index:: Index of shell concepts. - -@end menu - -@node Thanks, , Top, Top -@unnumberedsec Acknowledgements - -Many people need to be thanked for their assistance in producing this -manual. Brian and Diane would like to thank Chet Ramey for his -production of the BASH man page. It made the job of writing this -manual infinitely easier. - -Robert Chassell gave helpful comments on the drafts of this manual. -Allan Painter contributed beginning-user examples. Bennett Todd -and Bill Trost contributed very useful samples of shell scripts. Many -thanks to all those who submitted scripts for consideration. It -was difficult to choose only two for inclusion in this manual; all were -of very high quality and usefulness. - -@node License, Introduction, Top, Top -@unnumbered License - -@node Introduction, Typing Commands, License, Top -@chapter Introduction to Shells -@c This chapter needs to be rewritten/replaced -@ignore -Some topics: - built-in cmds, other cmds, use in examples and doc in manual -@end ignore - -The shell is a program that the operating system automatically starts -up when you log in, so that the system can understand your commands. -@cindex shell, what is a -@cindex BASH, what is -@cindex Bourne Again SHell, what is - -Here is a brief listing of some of the things that the Bourne Again SHell -(BASH) provides: - -@itemize @bullet -@item -a built-in language for writing shell programs - -@item -compatibility with shell programs written for the Bourne shell - -@item -Emacs and vi style command editing - -@item -process and job control - -@item -command aliases - -@item -shell @emph{functions} - -@item -completion of file names, user names, and variable names -@c "and other types of completion" ?? such as what?? -@end itemize - -@menu -* Interpretation:: The Shell as a Command Interpreter. - -* Language:: The Shell as a Programming Language. - -@end menu - -@node Interpretation, Language, Introduction, Introduction -@section The Shell as a Command Interpreter - -When you log on to your system a shell is automatically started for you. -Think of the shell as a layer of software between you and the operating -system's internal workings, as shown below: -@cindex command interpreter -@cindex shell, as a command interpreter - -@example -@var{commands} (@r{typed by you}) <------> @var{shell} <-------> @var{operating system} -@end example - -@noindent -The shell interacts with you, the user, to interpret your commands and -tell the operating system to take appropriate action. The shell stays -with you until you log out. - -The input and execution of a simple shell command involves the following -steps: - -@enumerate -@item -The shell displays a prompt (@samp{bash$}, unless you have -specified a different prompt) and waits for you to type a command. - -@item -You type a command line, ending with a carriage return. - -@item -The shell analyzes that command line, and extracts the command name -and arguments. Here is a template for a simple shell command, with -the optional parts between square brackets, @samp{@r{[}@dots{}@r{]}}: - -@example -@var{command} @r{[}@var{arguments}@r{]} @r{[}&@r{]} @key{RET}@refill -@end example - -@noindent -A simple command line consists of a sequence of words -separated by blanks (a blank is a space or a tab). The first word of -the command line specifies the name of the command to be executed, and the -remaining words are passed as arguments to that command. - -@item -The shell tries to locate the specified command as a program in the -directories specified in your path. - -@item -If the shell can't find the command program you requested, it gives you -an error message and provides a new prompt. - -If the shell is successful in locating the requested program, it tells -the operating system to execute that program using the rest of the -command line as arguments for that program. - -@item -If you did not end your command line with @samp{&}, the program is run -in the @dfn{foreground}. When the program is -finished, the operating system returns control to the shell and the -shell gives you another prompt. - -If you ended your command line with @samp{&}, the program is run in the -@dfn{background}.While the program is executing the shell waits. -The shell doesn't wait for the operating system to -finish running the program; rather, the shell immediately gives you a prompt so -you can continue typing commands. (Running a program in the background -is useful if the program takes a long time to execute and doesn't need -supervision.) - -@item -At the new prompt you type in the next command line to be processed -and run. These steps are repeated until you log out. -@end enumerate - -@node Language, , Interpretation, Introduction -@section The Shell as a Programming Language - -BASH has its own built-in, interpreted programming language. -@cindex shell, as a programming language -@cindex programming language, features - -Some of the programming features available to you are: - -@itemize @bullet -@item -storage of values in variables - -@item -conditional execution statements - -@item -user-defined functions - -@item -looping and other ways of executing commands repeatedly -@end itemize - -@node Notation -@section Notation - -To indicate special keys or key combinations, this documentation -uses the following notations: -@c also explain RET, CTL, DEL, etc. - -@table @kbd -@item C-k -The text @kbd{C-k} is read as ``Control-K'' and describes the character -produced when you hold the Control key (@key{CTL}) down and strike the @kbd{k} key. - -@item M-k -The text @kbd{M-k} is read as ``Meta-K'' and describes the character -produced in either of two ways: -@itemize @bullet -Either hold the @key{META} key (if you have one) down and strike the @kbd{k} key - -or type @key{ESC} @i{first} and then type @kbd{k}. -@end itemize -Either process is known as @dfn{metafying} the @kbd{k} key. - -@item M-C-k -The text @kbd{M-C-k} is read as ``Meta-Control-k'' and describes the -character produced by metafying @kbd{C-k} (see @kbd{C-k} and @kbd{M-k} -just above). -@end table - -@node Typing Commands, I/O, Introduction, Top -@chapter Typing Commands - -@c !! forgot to cover case sensitivity! - -This chapter deals with the mechanics of typing commands. - -Normally, to give a command you type a line and end it with a newline -character (usually referred to as @key{RET} in this documentation). - -In the following example, BASH displayed its prompt (@samp{bash$ }), -we typed the command @samp{who} (terminated by a @key{RET}, which is -not explictly shown in the example), the output of @code{who} (a listing -of users logged into the system) was displayed, and BASH displayed -another prompt. - -@example -bash$ who -glassw ttyq0 Apr 15 15:09 (worker-8) -glassw ttyq1 Apr 15 20:50 (worker-7) -cqc ttyq2 Apr 15 18:15 (worker-9) -zvona ttyq5 Apr 15 14:13 (nico) -painter ttyd0 Apr 15 21:00 -stf ttyh4 Apr 15 11:58 -sandiway ttyh9 Apr 13 23:05 -pwu ttyhc Apr 15 15:19 -bash$ -@end example - -The following sections explain more about typing commands, including how -to correct mistakes as you type a command and how to type a command that -is too long to fit on one line. - -@node Typeahead -@section Typeahead - -Your typing is echoed (displayed on the screen) as you type. -If you start to type a command before the prompt is displayed, -your typeahead, which echoes immediately, appears before the -prompt. It may even be mixed up with output from the command -that was executing when you typed it. -In order that you can see the actual command you have -typed, BASH redisplays your typeahead after the prompt. -Don't worry -- though some characters appear on your screen twice, -BASH has kept only one copy of them. - -The following shows the appearance of my screen when I -typed @samp{date} to find out the current date and time, -then typed @samp{who} to find out who was logged in. -I didn't wait for @code{date}'s output before I started to type, -so the @samp{wh} from @samp{who} appears in that output. -The next prompt is followed by a redisplay of the @samp{wh} -I already typed, followed by the final @samp{o}. - -@example -bash$ date -whFri Jan 04 13:47:49 EST 1991 -bash$ who -gjs console Dec 19 15:53 -wisdom pty/ttyu0 Dec 27 16:11 -jems pty/ttyu1 Jan 4 10:56 -bash$ -@end example - -@node Editing, Continuation, Typing Commands, Typing Commands -@section Editing the Command Line - -@cindex editing command lines, basic - -To correct an error in the line you are typing, you can type @key{DEL} -repeatedly to delete one character at a time until you are back to the -spot that needs fixing, then continue typing. Or you can type @kbd{C-u} -to delete the whole current line and start over. - -However, it is also possible to move the cursor to the place you want to -change and correct the error without deleting and retyping everything -you've typed after the error. - -You can edit the current line as long as you have not typed the -@key{RET} that terminates it. - -Using the editing keys described below, you move the cursor to the -place that needs correction and delete or insert the text of the -correction. Then, when you are satisfied with the line, you simply -press @key{RET}. The cursor doesn't have to be at the end of the line -when you press @key{RET}; the entire line will be accepted in any case. - -As you type text into the line, you'll notice that characters to the -right of the cursor get pushed over to make room for the -characters you are typing. Likewise, when you delete a character -behind the cursor, characters to the right of the cursor get pulled -back to fill in the blank space created by the removal of those -characters. - -The rest of this section describes basic command-line editing. -@xref{Readline Commands}, for a list of all the editing commands. - -If you are an Emacs user, you may already be familiar with most of the -editing keys described below: All but @kbd{C-u} are the same ones used -in Emacs. - -Note: If you don't like any of the editing keys, you can change them -to be whatever you want (@pxref{Customizing Readline}). - -@heading Moving the Cursor - -Here are the basic ways to move the cursor within the line you are typing: - -@table @kbd -@item C-b -Move cursor back (left) one character. - -@item C-f -Move cursor forward (right) one character. - -@item M-b -Move cursor backward (left) one word. - -@item M-f -Move cursor forward (right) one word. - -@item C-a -Move cursor to the start of the line. - -@item C-e -Move cursor to the end of the line. -@end table - -Notice that @kbd{C-f} moves forward a character, while @kbd{M-f} -moves forward a word. It is usually the case that Control keystrokes -act on characters, while Meta keystrokes act on words. - -@heading Deleting Text - -Here are the basic ways to delete text once you have positioned the cursor: - -@table @kbd -@item C-d -Delete the character underneath the cursor. - -@item @key{DEL} -Delete the character to the left of the cursor. - -@item C-k -Kill the text from the current cursor position to the end of the line. - -@item C-u -Kill the text from the beginning of the line to the current cursor position. -(Note that if the cursor is at the end of the line, this kills the whole line.) -@end table -@c maybe add M-d, M-DEL (corresponding to C-d, DEL) - -@heading Inserting Text - -To insert text into the line, just position the cursor and type -the text as you normally do at the end of a line. -No special keystroke is needed to indicate that you want to insert. - -@heading Clearing the Display - -If the screen is cluttered, you may wish to: - -@table @kbd -@item C-l -Clear the screen, reprinting the current line at the top. -@end table - -@node Typos -@subsection Failing to Correct a Command Line - -If you notice an error while typing a command, it is better to -fix it (or delete the command and start over) than to let the command -execute as is, especially if the command contains any punctuation -characters (many of which have special meaning to the shell). -Although many sorts of errors will result in perfectly harmless -(and sometimes even comprehensible) error messages, other erroneous -commands may do things you didn't intend or give you error messages that only -a shell wizard can understand. -For example, if you accidentally hit @samp{*} while typing a file -name in a command to delete a file, you may end up deleting more -than one file (@pxref{File Names}). - -@node History Use -@section Repeating Earlier Commands - -You can sometimes save typing by retrieving an earlier command. -You can reexecute the command as is, or you can edit it before -executing it. -This is particularly useful if a command gets an error. -Instead of retyping it with the error corrected, you can -retrieve the command and just fix the erroneous part. - -If you are an Emacs user, you may recognize the following commands -as the same ones that move to the previous or next line -or to the beginning or end of an Emacs buffer. -Think of BASH as maintaining an Emacs buffer of your command -lines, in which you can see only one line at a time. -Each time you end a line (by typing @key{RET}), BASH adds -that line to the end of the buffer and positions its cursor -at the start of the next line. - -@xref{History List}, for a more complete description of what -commands BASH remembers in its history list. - -The rest of this section describes the basic commands for accessing -previous command lines. -@xref{History Commands}, for the complete set of commands. -@c note: the stored line contains the result of history substitutions. -@c If you typed a ! history reference, the resulting cmd is stored. -@c because: history subst is before shell sees input - -@c Following edited from readline chapter -- may need to change that to -@c match this. - -@table @kbd -@item C-p -Get the previous line from the history list. -(Opposite of @kbd{C-n}.) -The line is displayed after the prompt as if you had just typed it. - -@item C-n -Get the next line from the history list. -(Opposite of @kbd{C-p}.) -The line is displayed after the prompt as if you had just typed it. - -@item M-< -Get the oldest line in the history list. -(Opposite of @kbd{M->}.) -The line is displayed after the prompt as if you had just typed it. - -@item M-> -Get the most recent line in the history list. -(Opposite of @kbd{M-<}.) -This is the line you are typing at the current prompt. -Unless you type something after the prompt, this line is blank. -@end table - -If you're a BASH novice, it is probably best to start by using -just @kbd{C-p} and @kbd{C-n}. -Type @kbd{C-p} repeatedly to move back as far as you want. -If you overshoot, use @kbd{C-n} to go forward again. - -@node Continuation, , Editing, Typing Commands -@section Continuing a Command on the Next Line - -If you don't have room on the line to finish typing your command, -type a backslash, @samp{\}, then @key{RET}. -A @samp{\} at the @emph{end} of a command -line tells the shell that the command hasn't ended, but is to be -continued on the next line. -The shell will give you a secondary prompt (different from the ordinary -prompt, so you can tell that this is a continuation line), and you can -continue typing the rest of the command. -In this way, you can continue a command over any number of lines. -The command is not executed until the final @key{RET} (that is, a @key{RET} -not preceded by a @samp{\}) is typed. -@c But: expansion/substitution take place after each RET -- e.g. !, *, ... -@c rms: ! is during input processing by history library, * is done by shell -@c bfox: ! done on each line -@c can avoid \ if know what's incomplete -@c e.g. things in quotes -@c usually only use \ for shell script, don't need interactively -@c a) usually type shorter cmds, b) line will wrap -@c consider moving this? or recommending really for scripts and describing -@c the default long-line wraparound (with pointer to inputrc for -@c changing it) -@cindex long commands -@cindex continuing command lines -@cindex command lines, continuing -@cindex commands longer than 1 line - -@c lousy example -For example, both of the following commands concatenate the files -@file{file1} through @file{file6} together into a single file -@file{file1to6}. In the first sequence, the command is split into two -lines by ending the first line with a @samp{\}. BASH prints a secondary -prompt (@samp{bash>}, unless you have specified a different prompt) to -signal that it awaits further input for the current command. - -@example -bash$ cat file1 file2 file3 \@key{RET} -bash>file4 file5 file6 > file1to6@key{RET} -bash$ -@end example - -@noindent -is equivalent to: - -@example -bash$ cat file1 file2 file3 file4 file5 file6 > file1to6@key{RET} -bash$ -@end example - -Warning: -@itemize @bullet -@item -The @samp{\} must be the last thing on the line that is to be -continued. If you accidentally type a space after the @samp{\}, your -screen will not look any different, but the command line will be -terminated by the @key{RET} rather than continued. - -@item -The multiple command lines are simply concatenated, with no -space inserted. If a space is needed between the last thing you type -on one line and the first thing you type on the next line, you must -be sure to include the space yourself (either before the @samp{\} -that ends the first line or at the start of the next line). -@end itemize - -@heading Editing Earlier Lines - -Command-editing (@pxref{Editing}) only works on the current line. -If you notice while typing a continuation line that you need to correct -an earlier line of the command, you will need to abort the command -entry and start over (though you needn't retype everything, if you -follow the instructions below): - -@enumerate -@item -To avoid losing the line you are in the midst of typing, end it with -@kbd{\@key{RET}}. - -@item -Type @kbd{C-c} to abort command entry and get back to the top level of -BASH. - -@item -The lines you typed but never executed were nonetheless stored -in the command history list. Use @kbd{C-p} (@pxref{History Use}) -to retrieve the lines of your multi-line command one at a time. -Type @key{RET} after each correct line, but when you come to the bad -line, edit it before typing @key{RET}. -@end enumerate - -@node I/O, File Names, Typing Commands, Top -@chapter Redirecting Input and Output (Basic) - -@cindex redirecting input and output -You may want to send a program's output to a printer instead -of to your screen. Or you may want to use a data file for -input, instead of typing input at your keyboard. - -@cindex redirection operators, versus command arguments -Many commands -allow input files and output files to be specified as arguments. -For commands that don't take such arguments (or whose arguments you -don't remember), you can use redirection operators, as -explained in this chapter, to @dfn{redirect} input or output to come -from or go to a file. -You can also redirect input or output to come from or go to another -program, by using @dfn{pipes}. - -Redirection is performed by the shell, not by individual command programs. -The action of the command itself is unchanged by redirection; in -general, commands are unaware that their input or output has been redirected. -The command reads its input and writes its output as usual, and that -input and output automatically come from and go to whatever places the shell has set up. -This is accomplished as follows. - -@cindex standard input -@cindex standard output -@cindex standard error -Most programs that read from or write to the terminal actually -read their input from an imaginary place called -@dfn{standard input}, write their ordinary output to an imaginary -place called @dfn{standard output}, and write their error messages -to an imaginary place called @dfn{standard error}. -Before the shell runs the program in a command, it hooks up the -standard input, standard output, and standard error to real places, -such as your terminal, a file, or another program's input or output. - -The following sections tell you how to specify how these standard -input and outputs should be hooked up. - -@c add a diagram showing standard I/O as sockets with things plugged in? - -@heading Redirection versus file arguments - -@cindex redirection operators, versus command arguments -Consult the documentation of the specific command you wish to use to -see whether you have to use redirection operators in order to make it -use files. -File Names as -arguments are often preferable to redirection operators because they enable -the command to know the name of the file it is reading. (A command can -know its arguments, but is not aware of redirection.) Also, -some commands (such as @code{sort}) -can read more than one input file when the files are -specified as arguments, whereas redirection can only specify a single input -file. -@c If file args to cmd are preferable, isn't it bad to use such cmds as -@c redirection examples? -@ignore -rms: better examples: cat, compress -compress file - replaces file with file.Z and deletes original file - option to not delete file - If want to redirect output, must redirect input too. - compress < f1 > f2 - Because if there's an arg (file name), compress - opens the arg file itself, so redirection is useless. - With no arg, it uses streams it's given (by < and >) -@end ignore - -For example, here are two ways to sort the file @file{unsorted} -to produce the file @file{sorted-file}. -The first command gives the file names as arguments, with @samp{-o} -flagging the output file name. -The second command uses @samp{<} to redirect the input and @samp{>} -to redirect the output. - -@example -bash$ sort -o sorted-file unsorted - -bash$ sort < unsorted > sorted-file -@end example - -@noindent -However, if you want to combine two input files @file{unsorted-1} -and @file{unsorted-2} into one sorted output file, you'll have -to give the input files as arguments, because only one input file -could be supplied by redirection. You still have a choice of how to -specify the output file. - -@example -bash$ sort -o sorted-file unsorted-1 unsorted-2 - -bash$ sort unsorted-1 unsorted-2 > sorted-file -@end example - -@menu -* Redirection:: How to redirect standard input and standard - output. - -* Other Redirections:: Redirecting standard input and standard output - simultaneously. Redirecting background - processes. Redirecting standard error. - -* Pipes:: Connecting commands together. - -@end menu - -@node Redirection, Here-documents, I/O, I/O -@section Basic Redirection to Files - -@c posix 3.7 n op word -@c op is: < > >| >> << <& >& <> -@c special cases for <&-, >&-, <<- - -@cindex redirection operators -@cindex standard input, redirecting -@cindex standard output, redirecting -@cindex standard error, redirecting -This section shows the basic method for redirecting the standard input, -standard output, and standard error to files. -@xref{Advanced Redirection}, for more complicated forms of redirection. -@c may want appendix that has 1 unified table of operators - -In general, a simple redirection of input or output to a file looks like this: -@c rms: redir op can be among or before args (even before cmd?) [see posix] - -@ignore -@c They were each shown with args, but it's probably better to consider -@c those as part of the command. E.g. it was: -@var{command} @r{[}@var{arguments}@r{]} > @var{file} -@end ignore -@example -@var{command} @var{redirection-operator} @var{file} -@end example -@c show syntax for more than 1 redir op in a cmd?? - -@noindent -The @var{file} is the file or device you want to use, -@c note: "file" includes "devices" (such as printers). Explain somewhere? -@c Nice thing in Unix is devices are simply files in directory /dev -and the @var{redirection-operator} is @samp{<} for input; @samp{>}, @samp{>|}, -or @samp{>>} for output; or @samp{>&} for output and error. -Spaces surrounding the operator are optional, but it is a good idea -to leave a space before the operator. -(Otherwise you might accidentally specify one of the redirections -with a file descriptor -- @ref{Advanced Redirection}.) -@c Space needed after arg if it is a # and could look like file-descr. -@c rms: spaces optional around the REDIRECTION, but required to avoid ambig. - -@ignore -In this section, with no file descriptor before operator (i.e. file -descriptor defaulted) and file name required after each operator, the -operators are as follows: - > >| >> < posix - >& bash extension (from csh) - (posix doesn't define >& with file name) -Anything involving a file descriptor or no file name is considered advanced. -@end ignore - -@table @code -@item > -@itemx >| -@itemx >> -instruct the shell to send the command's standard -output to the specified @var{file} instead of to your terminal. -@cindex @code{>} operator, redirecting output -@cindex @code{>>} operator, redirecting output - -@c copy of following itemize is in advanced chapter -@itemize @bullet -@item -If @var{file} doesn't yet exist, it is created. - -@item -If @var{file} already exists: -@itemize @bullet -@item -With @samp{>} and @samp{>|}, @var{file} is erased before the -first output is written to it. Be careful: -If a file of the same name already exists, -its contents are deleted before your command's output is -written to that file. -If you don't want @samp{>} to erase existing files, set the -shell's @code{noclobber} variable; then -@samp{>} with an existing file will generate an error message and leave -the file alone. (But note that @samp{>|} will clobber existing files -regardless of the setting of the @code{noclobber} variable.) -@c Note: alternative 'set -o noclobber...' for noclobber var -- where -@c should cover this? which is preferable? - -@item -With @samp{>>}, the output is appended to the end of an existing @var{file}. -@end itemize -@end itemize - -Note that @samp{>}, @samp{>|} and @samp{>>} redirect only the standard -output; error messages printed by @var{command}, which go to standard -error, still appear on the terminal and not in the file @var{file}. To -redirect error messages along with other output, see @samp{>&}, below. - -Here's an example of output redirection: - -@example -bash$ who -glassw ttyq0 Apr 15 15:09 (worker-8) -glassw ttyq1 Apr 15 20:50 (worker-7) -cqc ttyq2 Apr 15 18:15 (worker-9) -zvona ttyq5 Apr 15 14:13 (nico) -painter ttyd0 Apr 15 21:00 -stf ttyh4 Apr 15 11:58 -sandiway ttyh9 Apr 13 23:05 -pwu ttyhc Apr 15 15:19 -bash$ who > users-file -bash$ -@end example - -@noindent -The command @code{who} prints onto standard output a list of -the users currently logged into a computer system. -The simple command @samp{who} -prints onto your screen (the default standard output). The -command @samp{who > users-file} redirects @code{who}'s -standard output to -the file @file{users-file}, so that the output of the @code{who} -command goes into @file{users-file} -instead of appearing on the screen.@refill - -The following command sequence creates a file containing the current -date followed by the list of users currently logged onto the system: - -@example -bash$ date > date-who-file -bash$ who >> date-who-file -bash$ cat date-who-file -Sat Aug 04 11:27:05 EDT 1990 -glassw ttyq0 Apr 15 15:09 (worker-8) -cqc ttyq2 Apr 15 18:15 (worker-9) -zvona ttyq5 Apr 15 14:13 (nico) -painter ttyd0 Apr 15 21:00 -stf ttyh4 Apr 15 11:58 -pwu ttyhc Apr 15 15:19 -bash$ -@end example - -@noindent -The command @code{date} prints the system date on standard output. -In this example, the output of @code{date} becomes the first line of the file -@file{date-who-file} created with the @samp{>} redirection operator. -The output of the @code{who} command is @emph{appended} to the file -@file{date-who-file}, because we used the @samp{>>} redirection -operator. @code{cat} simply shows the file's contents on the terminal.@refill - -@item &> -@itemx >& -both instruct the shell to send the command's -standard output @emph{and} standard error to the file @var{file}, -instead of to your terminal. Both ordinary output and any error -messages are written to @var{file}, interspersed, in the order they -are generated. Of the two forms, the second (@code{>&}) is preferred, -because it conforms to the convention that output redirection operators start -with @samp{>}. -@cindex @code{>&} operator, redirecting output -@cindex @code{&>} operator, redirecting output - -As with @samp{>}, @var{file} is erased before the first output is written to -it. Be careful: -If a file of the same name already exists, its contents are deleted -before your command's output is written to that file. -If you don't want @samp{>&} to erase existing files, set the -shell's @code{noclobber} variable; then -@samp{>&} with an existing file will generate an error message and leave -the file alone. -@c no appending version of >& analogous to >> -- suggested it to bfox - -The example at the end of this section shows how to redirect -standard error and standard output to different places. - -@item < -instructs the shell to get the command's standard input from the -specified file @var{file} instead of from your terminal. -@cindex @code{<} operator, redirecting input - -Here's an example of this type of redirection: - -@example -bash$ wc < date-who-file - 7 39 244 -bash$ -@end example - -@noindent -The command @code{wc} counts the number of lines, words, and -characters it reads from standard input. Using the standard input -redirection operator, @samp{<}, we made @code{wc} read a file as its -standard input. In this example, @code{wc} prints the line, word, and -character counts for the file @file{date-who-file} that was created in the -example for @samp{>>} above using the @code{date} and @code{who} commands. - -Actually, redirection was not necessary for the above command, -since @code{wc} accepts the name of an input file as an argument: - -@example -bash$ wc date-who-file - 7 39 244 -bash$ -@end example -@end table - -@cindex redirection operators, using more than one -More than one redirection operator can appear in a command. -Here's an example that redirects both standard input and standard output: - -@example -bash$ sort < users-file > sorted-list -@end example - -@noindent -This example reads the input for the command @code{sort} from the file -@file{users-file} and writes the sorted output to the file -@file{sorted-list}. Any error messages are still written to the -default standard error, which is your terminal screen. - -You cannot redirect a single I/O stream to more than one file: -If you specify more than one redirection of the same I/O stream, -only the rightmost takes effect. -(The shell evaluates redirection operators in the order encountered, from -left to right.) For example, the output of @code{sort} in the following -goes only to @file{out-file}, not to @file{sorted-list}. -@example -bash$ sort < users-file > sorted-list > out-file -@end example - -In the next example, the output of @code{sort} goes to @file{out-file} -and the error messages go to @file{error-file}. The @samp{>&} redirects -both standard output and standard error, then the @samp{>} redirects -standard output to @file{out-file}, overriding the @samp{>&}. -@example -bash$ sort < users-file >& error-file > out-file -@end example - - -@node Pipes, Pipes, Other Redirections, I/O -@section Pipes -- ``Mix-and-Match'' Commands -@c pipes are what connect processes, pipeline is whole thing -@c check terminology throughout - -@cindex pipe -@cindex pipeline -@cindex pipes -@cindex @code{|}, use in piping -@cindex intermedate file, using pipe to avoid -@cindex combining commands with pipes -@cindex connecting commands together with pipes - -@c a picture of boxes piped together would be nice -One of the shell's most powerful features is the way it lets you ``mix -and match'' commands. By feeding the output of one command into another -command, you can get a combination of behaviors that no predefined -command provides. - -A @dfn{pipe} connects the standard output of one command to the standard -input of another. -This has the same effect as redirecting the standard output of the first -command to a file, then redirecting the standard input of the second -command to come from that file; but the pipe does this with a single -command, and stores no intermediate files on disk. -@c also: separate processes means output produced before 1st cmd finishes - -For example, let's say you want to see an alphabetical list of the -users logged into the system. -There is no command that does this, but there is a command -@code{who} that produces a list of the logged-in users and -a command @code{sort} that sorts its input lines. -By piping these commands together -(making the output of @code{who} become the input to @code{sort}), -you can get the desired sorted list: -@c contrast with who > file; sort < file - -@ignore -@c the raw data before sorted -@example -bash$ who - -glassw ttyq0 Apr 15 15:09 (worker-8) -glassw ttyq1 Apr 15 20:50 (worker-7) -cqc ttyq2 Apr 15 18:15 (worker-9) -zvona ttyq5 Apr 15 14:13 (nico) -painter ttyd0 Apr 15 21:00 -stf ttyh4 Apr 15 11:58 -sandiway ttyh9 Apr 13 23:05 -pwu ttyhc Apr 15 15:19 -@end example -@end ignore -@example -bash$ who | sort - -cqc ttyq2 Apr 15 18:15 (worker-9) -glassw ttyq0 Apr 15 15:09 (worker-8) -glassw ttyq1 Apr 15 20:50 (worker-7) -painter ttyd0 Apr 15 21:00 -pwu ttyhc Apr 15 15:19 -sandiway ttyh9 Apr 13 23:05 -stf ttyh4 Apr 15 11:58 -zvona ttyq5 Apr 15 14:13 (nico) -bash$ -@end example - -@heading Viewing Output by the Screenful - -@cindex @code{more}, with pipes -@cindex pipe, used to view output by the screenful -An extremely important use for pipes is to view the output of a command -one screenful at a time, by piping the command's output into the -@code{more} command. - -Let's say you want to see a detailed listing -of a directory that contains a large number of files. If you just -type @samp{ls -l}, the listing will scroll by faster than you can read it. -But if you use a pipe to attach the standard -output of @samp{ls -l} to the standard input of the @code{more} -command, you can page through the directory listing at your leisure: - -@example -bash$ ls -l | more -@end example - -@node How to pipe -@subsection How to Pipe Commands - -@cindex pipeline, general format -To pipe the output of one command into the input of another, place a -vertical bar, @kbd{|}, between them. The general format for a -@dfn{pipeline} is: - -@example -@var{command} | @var{command2} @r{[}| @dots{} @r{]} -@end example - -@noindent -That is, any number of commands are given, separated by vertical bars, -@kbd{|}. -The standard output of @var{command1} is connected to the standard -input of @var{command2}, and so on. - -In order for a pipeline to work, the first command in the pipeline -must generate output to the standard output, -the last command must accept input from the standard input, and -any intermediate commands must both read from standard input -and write to standard output. - -@c rms: "filter" terminology good to know, standard terminology -@c for program designed to be used in a pipeline. -@c Many unix cmds designed so CAN be used as filter (i.e.they use -@c standard input and standard output) -Commands used between pipe operators are called @dfn{filters}. They -accept input from the standard input and generate output to -the standard output. -Examples of commands that can be used as filters -include @code{sort} (which sorts its input lines) and -@code{pr} (which formats text for printing). - -@menu -* tee:: Using the @code{tee} command to preserve the - contents of intermediate files. -@end menu - -@node tee, tee, Pipes, Pipes -@subsection Saving Intermediate Pipeline Data with @code{tee} - -@cindex pipeline, @code{tee} in -@cindex @code{tee} command for pipelines -@cindex pipeline, saving intermediate data -Normally, any data generated by commands in a pipeline exists only -momentarily within the pipeline, because the output of each command -simply flows into the next command. - -The command in the following example outputs the five lines of -the file @file{list-files} that come first alphabetically: - -@example -bash$ sort list-files | head -5 -@end example - -@noindent -This works as follows: -The command @code{sort list-files} sorts the file, sending the sorted -data to the command @code{head -5}, which outputs the first five -lines in its input. The sorted data is discarded. - -If you want to preserve the sorted data, you could first @code{sort} the -original data into a new file, then look at the @code{head} of that file: - -@example -bash$ sort list-files > sort-saved -bash$ head -5 < sort-saved -@end example - -@c pipe vs. redirection -- any pros or cons? - -On some systems, -there is also a way to preserved the sorted data while using a pipeline. -To preserve intermediate pipeline data, such as the sorted data -in the above example, insert the @code{tee} command into your pipeline. -(Note: @code{tee} is not built into BASH. It comes with GNU, and may -or may not exist on other operating systems.) -@c bfox says: tee doesn't belong here (no non-shell cmds do) -@c including tee vs. including ps: -@c ps comes with unix, behavior varies from system to system -@c not all systems have tee -- though gnu will -@c jems thinks tee should be kept here -The @code{tee} command takes a file name as its argument and does two things: -@itemize @bullet -@item -It copies its standard input to the standard output. - -@item -It copies its standard input into the specified file. -If the file doesn't exist, @code{tee} creates it. -If the file already exists, @code{tee} overwrites it, -unless you give @code{tee} the @code{-a} option, in which case -it appends to the file. -@c If tee arg omitted: It's a NOP: no err msg, no tee output -@c bfox: reason is so following will ``work'' even if var has no value -@c cmd 1 | tee $var | cmd2 -@end itemize - -@noindent -(The name @code{tee} stands for the T shape of a pipe used in plumbing -to split the flow into two parts.) - -Thus @code{tee} can be used to copy the data passing through a pipeline -into a file for later use. For example, we can insert a @code{tee} into -the pipeline shown above: - -@example -bash$ sort list-files | tee sort-saved | head -5 -@end example - -@noindent -Now the output of @code{sort} is sent to the @code{tee} command, which -stores the sorted data in a file called -@file{sort-saved} and also passes that data on to the next -program in the pipeline, @code{head} -@c diagram of example would be nice -@c list_files -> sort -> sorted data -> head -> lines on terminal -@c where sort and wc are in boxes - -@node Pipes and redirection -@subsection Redirection in Pipelines - -You may redirect the standard input of the first command in a pipeline -and the standard output and standard error of the last command in a pipeline -by using redirection operators (@pxref{Redirection}) in those commands. - -The following example sorts the file @code{list-files} -(given to @code{sort} on its standard input by redirection with @code{<}), -gives the sorted output to @code{head} -(by connecting the standard output of @code{sort} to the standard input -of @code{head} with a pipe, @code{|}), -and stores the first five lines of the sorted output in the file @file{5lines} -(by redirecting the standard output of @code{head} to that file with @code{>}): -@example -bash$ sort < list-files | head -5 > 5lines -@end example - - -@node Pipeline processes -@subsection Processes in a Pipeline - -@c new concepts: process, exit status - -Each command in a pipeline is run as a separate process. -That is, the commands run simultaneously, in parallel. - -The shell waits for all commands in the pipeline to terminate before -returning control to you. - -The exit status of the pipeline is the exit status of the last command. - -@node File Names, Customization, I/O, Top -@chapter File Names: Shorthands and Special Characters -@c need better title -@c need intro to material in chapter - -@c new topic for bash 1.07 will go here: filename expansion -@c 'foo{a,b}' ==> 'fooa foob' - -@node Wildcards -@section Wildcards - -@c Wildcards also show up in Case statement patterns -@c rms: right to think of wildcards as being for file names -@c (case statement is strange additional use) - -The shell allows you to specify sets of file names using @dfn{filename -patterns} containing @dfn{wildcard characters}, so that you don't have -to type all of the file names directly. -@cindex file names, wildcards in -@cindex wildcard characters in file names - -For example, if you want information about the five files in the -current directory that end with @samp{.c}, you don't have to type -the five file names: - -@example -ls -l foo.c bar.c fred.c card.c game2.c -@end example - -@noindent -Instead you can type: - -@example -ls -l *.c -@end example - -@noindent -The shell interprets the filename pattern @samp{*.c} as matching all -existing file names ending in @samp{.c}. The character @samp{*}, which -can match almost any substring of a file name, is -called a wildcard character. -@xref{Wildcard Constructs}, for an explanation of @samp{*} and the other -wildcard constructs. - -A single pattern may contain more than one wildcard. -For example, @samp{*.c*} would match all file names that contain -@samp{.c}. - -@c document 'set -o noglob...' for disabling wildcards -- disables all -@c of them? - -@node Wildcard Constructs -@subsection Wildcard Constructs - -Here are the wildcard constructs and their meanings: - -@table @code -@item * -The asterisk matches any sequence of zero or more characters, except -that it does not match a period at the beginning of a file name. -(If you want @samp{*} to include initial periods, set the variable -@code{glob_dot_filenames}.) - -For example: @samp{foo*} matches any file name whose first three -characters are @samp{foo}, including the name @file{foo} itself; -@samp{*foo} matches any file name not starting with @samp{.} whose last -three characters are @samp{foo}, including the name @file{foo} itself; -and @samp{.*foo} matches any file name starting with @samp{.} whose last -three characters are @samp{foo}, including the name @file{.foo} itself; -@c Beware! .* can behave unexpectedly -@c ls .* expands to ls . .. .emacs (and so on) -@c but ls . and ls .. list those directories! -@c by contrast, *. behaves as expected (* can't match initial .) - -@item ? -The question mark matches any single character, except -that it does not match a period at the beginning of a file name. -(If you want @samp{?} to match initial periods, set the variable -@code{glob_dot_filenames}.) - -For example, @samp{foo?} matches any four-character file name -whose first three characters are @samp{foo}. (Note that @samp{foo?} -does not match @samp{foo} because @samp{foo} has only three characters.) - -@item [@var{char-set}] -This @dfn{character set} matches any @emph{one} character specified by -the @var{char-set}. -Like a @samp{?}, a character set matches a single character. Unlike the -@samp{?}, the character set is selective about which characters it will match. - -The @var{char-set} consists of a sequence of any number of characters -and/or any number of ranges of characters. -The character set matches any of the single characters listed or any of -the characters included in the specified ranges. - -For example, @samp{[123abcdq]} will match any one character from -the set @samp{123abcdq}; -@samp{[1-3a-dq]} matches exactly the same characters, but it uses -hyphens to indicate the ranges of characters from @samp{1} to @samp{3} -(inclusive) and from @samp{a} to @samp{d}. - -Thus, @samp{foo[12]} matches @samp{foo1} and @samp{foo2} and nothing else; -@samp{foo[a-z]} matches any four-character file name whose -first three characters are @samp{foo} and whose fourth -character is any lower-case letter; and -@samp{foo[a-z12]} matches any four-character file name whose -first three characters are @samp{foo} and whose fourth -character is @samp{1}, @samp{2}, or any lower-case letter. - -@c KELLEM added ^ item (as synonym for !) -@item [^@var{char-set}] -This matches any @emph{one} character @emph{not} included in the given -@var{char-set}, where the @var{char-set} is as specified above for -the @code{[@var{char-set}]} case. -For example, @samp{foo[^a-z12]} matches any four-character file name whose -first three characters are @samp{foo} and whose last character is not -@samp{1}, @samp{2}, or a lower-case letter. - -@item [!@var{char-set}] -This is the same as @code{[^@var{char-set}]} if history substitution -is disabled. -Otherwise the @samp{!} invokes history substitution (@pxref{History}). -@c 12/90, Bash 1.06.25: 'ls b[!a]*' --> 'a]*: Event not found' -@c in particular, ! does history subst and [, ]*, are not interpreted here -@c because ! done before shell sees line -@c Tried quoting the ! -- ls fo[\!a] -- but it just said fo[!a] not found. -@c (didn't find my file 'foo') -@c Works with history disabled -@end table - -@node Wildcard implementation -@subsection How Wildcards Work - -Each command word that contains a wildcard character is @dfn{expanded}, -which means it is replaced by a sequence of words, one for each -file that matches the pattern. -If @samp{*.c} in the command @samp{ls -l *.c} expands to -@samp{foo.c bar.c fred.c card.c game2.c}, -the @code{ls} command sees these five file names as its arguments; -it never sees the @samp{*.c}. - -Normally, a filename pattern that doesn't match any files is left in the -command as is (it expands to itself). For example, @samp{*.foo} is left -as is if there are no files ending in @samp{.foo}, so in the following -example the @code{ls} command gets @samp{*.foo} as its argument -and reports that there is no such file (which is what you want to know). - -@example -bash$ ls -l *.foo -*.foo not found -bash$ -@end example - -@noindent -If for some reason you don't like this behavior, you can set the -variable @code{allow_null_glob_expansion}. When that variable is set, a -pattern that doesn't match anything is removed from the command (expands -to a null file name). In the above example, the @samp{*.foo} would -disappear, and @code{ls} would get no arguments, so it would report -on all files in the current directory. - -Warning: A command word containing a wildcard construct is expanded -to a sequence of file names @emph{whether or not you intended it to be -a file name}. At the time the expansion takes place, the system does -not know or care whether it makes sense to treat the word as a file name. - -@node echo, Quotation, File Names, File Names -@section Using @code{echo} to Preview Wildcard Expansion - -If you are going to use wildcards for something dangerous, like deleting -a group of files, it is a good idea to be sure you know what files the -pattern will match. - -@cindex @code{echo} command -@cindex command lines, previewing -To find out how wildcard characters will be expanded without actually -executing your command, use the @code{echo} command to preview the -expansion of a filename pattern. The @code{echo} command -simply displays its arguments fully expanded, with -any pattern that doesn't match anything left as is -(or deleted, if you have set @code{allow_null_glob_expansion} -- -@ref{Wildcard implementation}). -@c rms: expand = replacing text with other text (!, *, ...) -@c interp may be part of expand, -@c e.g. substituting result of cmd into enclosing cmd -@c NB: $(...) is new version of `. Nice because it nests - -For example, - -@example -bash$ echo rm *.log *.foo -rm bash.log *.foo -bash$ -@end example -@noindent -shows that if I ask to delete (with the @code{rm} command) all files -ending in @samp{.log} or @samp{.foo}, I will be deleting only -@file{bash.log}. -The pattern@samp{*.log} was expanded to the single file name that matched, namely -@samp{bash.log}, and @samp{*.foo} was not expanded because it did not -match any existing file names. - -@c what is echo for besides wildcards & variable substitution? -@c rms: in shell scripts to print output -@c Not so good for ! expansion: -@c I tried 'echo !n' where n is a command # -@c It echoed with the ! expanded, namely it display 'echo ...' -@c Then it went on to execute that last 'echo ...' ??? -@c Ah: the 'echoing' of the expansion is just the normal ! expansion, -@c not the execution of the 'echo !n' command. First the shell displays -@c the expanded command, then it executes it. So echo is a confusing -@c way to preview ! expansion. - -@node Wildcard Quotation -@section File Names Containing Special Characters - -@cindex wildcards, quoting -@cindex quoting, special characters in file names - -Normally, file names are made up of ``ordinary'' characters -- -alphanumeric characters (letters and numbers), periods (@samp{.}), and a -few other characters (such as @samp{_} or @samp{~}) that have no special -meaning to the shell. For example: the file containing this documentation is -named @file{bash.texinfo}; a backup version of this file saved for me by -Emacs is called @file{bash.texinfo.~1~}; and the file in which BASH -keeps track of commands I have issued (@pxref{History List}) is called -@file{.bash_history}. - -If a file name contains a `special'' character -- a character that -has special meaning to BASH, you must @dfn{quote} it to prevent -BASH from giving the character its special interpretation. -In particular, you must quote the following characters if you need -to include them in a file name: - -@example - ! | & ; < > ( ) $ ` ' " \ * ? [ ] # -@end example -@c above is all special chars? what about : { } (others?) -@c rms: colon not special, braces are -@c bfox: should quote the braces in file ames -@c I tried it 1/31/91: foo} was not special, foo{ gave message about -@c missing } but then went on to process foo{ -@c bfox: braces recognized as special only if separated from surrounding text -@c bourne:if not delimited, brace is regular char -@c bfox 2/8/91 -@c New bash feature (stole from csh): foo{a,b} ==> fooa foob -@c Will fix to not treat { as brace expansion unless see a comma - -@xref{Quotation}, for information on how to quote. - -@node Tilde -@section Tilde Expansion - -You can avoid having to type long directory pathnames by using a -shorthand for your home directory (and even other users' home -directories) and for the directory you were last connected to. -All of these directory abbreviations start with @kbd{~}. - -You may also see this home-directory shorthand in program output. -For example, when you ask Emacs to find a file, -it uses @kbd{~} instead of spelling out your home directory -in the default pathname in the file-name prompt. - -@cindex expansion, tilde -@cindex tilde expansion -@c terminology: tilde substitution vs. tilde expansion (title) -@c bfox: usually =, but sometimes a precedence issue -When a tilde character (@kbd{~}) appears at the beginning of a word -in a command, it is treated as follows: - -@table @code -@item ~ -@itemx ~/@dots{} -Tilde alone (or followed by a slash) is replaced by the value of the -variable @code{HOME}, or by your home directory if @code{HOME} is unset. - -@item ~@var{login-name} -@itemx ~@var{login-name}/@dots{} -Tilde followed by someone's login name is replaced by that person's home -directory. - -@item ~+ -@itemx ~+/@dots{} -Tilde followed by a plus sign is replaced by the value of the variable -@code{PWD}, which is the directory you are connected to. -(Thus @samp{~+} is the same as @samp{.}.) -@c ? where are ., .. etc covered? Operating system rather than shell? - -@item ~- -@itemx ~-/@dots{} -Tilde followed by a minus sign is replaced by the value of the variable -@code{OLDPWD}, which is the directory you were previously connected to. -@end table -@c ? what happens if there is stuff other than / after the ~+ or the ~- - -In the following example, I change directories and copy a file -from the first directory to the second: -@example -bash$ cd /top/next/a-subdirectory -bash$ cp ~-/file-to-copy . -bash$ -@end example - -Note for advanced users: -The above @samp{~} constructs can -also be used in pathnames that are stored in variables. -For example, you can use pathnames -with tildes in the @code{PATH}, @code{MAILPATH}, and @code{CDPATH} variables. -In such variables, any pathname (not just the first) can start with -@samp{~}. That is, @samp{~} can appear after a @samp{:}, which -separates pathnames. - -@node History List -@chapter The Command History List - -BASH maintains a list of the commands you have given it most recently, -so that you can reuse earlier commands or just review what you did. - -This section explains what is actually remembered and how you can -influence that by changing the values of shell variables. -The following sections explain how to make use of the command history. -@xref{Basic Variable Mechanics}, for general information on shell variables. - -@cindex history list, size of -@cindex history list, changing size of -The length of the history list is controlled by the @code{HISTSIZE} -shell variable. By default, the value of this -variable is 500; that is, the shell saves the last 500 command lines. -You can make the length of the history list bigger or smaller by -changing the value of the @code{HISTSIZE} variable. A value of zero means -no lines are saved. - -In this example, we check the value of @code{HISTSIZE} and find that -it has the default value of 500, then we reduce the value to 128: - -@example -bash$ echo $HISTSIZE -500 -bash$ HISTSIZE=128 -bash$ -@end example - -The command history does not start out empty whenever you log in. -Rather, commands are saved from session to session. Old commands -are erased from the list only when the length of the list exceeds -@code{HISTSIZE}. - -The way BASH remembers commands between sessions is to store them -in a file. -By default, the file is @file{~/.bash_history} in your login directory. -You can change this file name, if you want, by setting the -@code{HISTFILE} variable. - -Normally, all commands are remembered in the history list. -You can stop the recording of command lines beginning with a space -or of consecutive identical command lines by setting the -@code{history_control} variable, which is not set by default. -@table @code -@item history_control=ignorespace -stops lines beginning with a space from being recorded. - -@item history_control=ignoredups -stops a line identical to the last one in the history list from being recorded. -@end table -@noindent -(Sorry, but there is to way to stop both kinds of command recording at once.) - -To see the history list, use the @code{history} command (@pxref{History}). -You could also look at the file in which BASH saves history, -but that is normally updated only when you exit from BASH, so it -will contain the history as of the end of your last session -rather than the current history. - -To reuse earlier commands (or portions of earlier commands), -use Emacs-style keystrokes (@pxref{History Use}) or -history substitution (@pxref{History}). - -@node Customization, Job Control, File Names, Top -@chapter Customizing Shell Behavior - -@cindex customizing shell behavior -@cindex controlling shell behavior -@cindex changing shell behavior -You can control some aspects of the shell's behavior, by changing -values (such as how often the shell checks whether you have new mail) -or by enabling or disabling features (such as whether -@samp{!} invokes history substitution -- if you don't know what that is, -you should probably disable it). - -Many parts of this manual include information on how to customize -the behavior being described. -This chapter covers some basic customizations that don't fit naturally -into other topics or that are especially recommended for BASH novices. -@c what to include here? -@c Decision: Only include customization that doesn't fit in another -@c chapter. Customization of particular features will be in those -@c chapters -- e.g. history vars with history stuff - -To try out a customization command, you can simply type it -and see if you like the changed behavior. -But you should not waste time retyping your favorite customization -commands each time you log in. -Instead, the commands you always want in effect should be put into a -startup file that BASH automatically executes whenever you log in -(@pxref{Login script}). - -@node Variables -@section Shell Variables - -@cindex variables, controlling shell behavior -@cindex shell variables, to control behavior - -One way to affect shell behavior is to set @dfn{variables} used by the -shell. - -@xref{Basic Variables}, for documentation of some of the more basic -variables. Other variables are covered where appropriate throughout -this manual. -@c how should those sections help you manipulate the vars? -@c repeat the how-to info? point to {Variable Mechanics}? -@xref{Shell Vars}, for documentation -of all the variables set or used by the shell. - -Some of the mechanics of manipulating shell variables are given here -(@pxref{Basic Variable Mechanics}). -@xref{Variable Mechanics}, for more complete information. - -@node Basic Variable Mechanics -@subsection Manipulating Shell Variables - -To find out the value of a variable, type @samp{echo $@var{name}}, where -@var{name} is the variable of interest. (Be sure to include the @samp{$}; if -you omit it, @code{echo} just repeats the @var{name} itself.) - -To change the value of a variable, type @samp{@var{name}=@var{new-value}}, -where @var{name} is the variable you want to change and @var{new-value} is -the new value you want it to have. Don't leave any blank space around the -@kbd{=}. - -@emph{Warning:} Be careful to type variable names exactly as they are shown -here, matching uppercase and lowercase letter exactly. If you type a name -wrong before an @samp{=}, you will either change the wrong variable or create -a new variable; if you type a name wrong after @samp{echo $}, you will examine -the wrong variable. - -In the following example, we ask for the value of the @code{MAILCHECK} -variable, which is 600, then change it to 0 and verify our change. -@example -bash$ echo $MAILCHECK -600 -bash$ MAILCHECK=0 -bash$ echo $MAILCHECK -0 -bash$ -@end example - - -@node Basic Variables -@subsection Basic Shell Variables - -This section documents some basic shell variables whose values you might want -to change. For example, if you use more than one computer, you might want to -change the shell prompt to be the name of the computer you are using instead -of @samp{bash$ }. @xref{Shell Vars}, for documentation of all the variables -set or used by the shell. - -@c include any other vars? -@c recommend (point to) other vars? noclobber (for safety) - -@heading Directories - -@table @code -@item HOME -This holds the default argument for the @code{cd} command. @code{HOME} is set -to your login directory when you log in, so that a simple @samp{cd} command -will return you to your login directory at any time. - -For example, I may want to frequently return to the directory where -I work on GNU projects: -@example -bash$ HOME=/usr/jems/gnu -bash$ -@end example - -@noindent -Now a simple @samp{cd} command will return me to @code{/usr/jems/gnu} instead -of to @code{/usr/jems}. - -@item PATH -This is the search path the shell uses when looking for program files -referenced in commands. It holds a sequence of directory names separated by -colons, to be searched from left to right. - -For example: - -@example -/usr/gnu/bin:/usr/local/bin:.:/usr/ucb:/bin:/usr/bin/X11:/usr/bin -@end example - -@c simplify or explain the PATH example -@c :.: is especially opaque - -@end table - -@heading Mail - -@table @code -@item MAILCHECK -This specifies the amount of time that must pass before the shell will check -whether your mail file (the file named by the @code{MAIL} variable) has -changed. The default is 60 seconds (1 minute). An interval of 0 causes the -shell to look for mail before printing each prompt. - -For example, - -@example -MAILCHECK=600 -@end example - -@noindent -causes the shell to check for mail before printing a prompt if 600 seconds -have passed since the last check. -@end table - -@heading Prompts - -@cindex customizing your prompt -@cindex prompt, customizing -When executing interactively, BASH displays the primary prompt (stored in the -variable @code{PS1}) when it is ready to read a command, and the secondary -prompt (stored in the variable @code{PS2}) when it needs more input to -complete a command. - -@table @code -@item PS1 -This is the primary prompt string. By default it is @samp{bash$ }. -(Actually, the value in PS1 is @samp{bash\$ }, which prints as @samp{bash$ } -unless you are a superuser.) - -The following example sets the primary prompt string to be your login name, -followed by an @samp{@@} and the name of the computer, followed by a dollar -sign and a space (for example, @samp{jems@@zurich$ }). The variable value is -enclosed in quotes (either double quotes, as shown here, or single quotes) so -that it can include a space. The special codes @samp{\u} and @samp{\h} for -the user name and host name, as well as other codes useful in prompts, are -explained below. -@c ? apparently \u etc. must be within double quotes, otherwise they are -@c used literally -- 1.06, 2/22/91 - -@example -PS1="\u@@\h$ " -@c same as "$(whoami)@@$(hostname)$ " -@c better example would be host & directory? -@c single quotes -- deferred eval of $ things till expanded -@c double quotes: $ things eval'ed when ps1 assigned (bfox) -@c should use single if $ things in prompt should change -- e.g. your pwd -@c not relevant to \ methods below, since they're special to prompts, -@c not expanded as more fundamental mechanism -@end example - -@item PS2 -This is the secondary prompt string, which is printed whenever bash needs more -input to complete a command. -@c what's an example of needing more input? when does it happen? -@c whenever syntax demands more -- e.g. 'if' statement without -@c the closing 'fi' -@c Also, the secondary prompt is printed after some errors. (which?) - -By default it is @samp{bash>}. -For example, we can change the secondary prompt string to @samp{more>}: - -@example -PS2="more>" -@end example - -Note that the secondary prompt, unlike the primary prompt, normally doesn't -end in a space. A space might fool you into thinking the lines of a -multi-line command were automatically separated by a space, whereas they are -actually run together exactly as typed (@pxref{Continuation}). -@end table - -The values of @code{PS1} and @code{PS2} can contain special character -sequences beginning with @samp{\} that are decoded as follows. (That is, the -@samp{\} and the following character are replaced by what they stand for when -the prompt is printed.) - -@table @code -@item \t -The time. - -@item \d -The date. - -@item \n -Carriage return and line feed (@sc{CRLF}). -@c notation/terminology: call it newline? - -@item \w -The full pathname of the current working directory (the value of the variable -@code{PWD}). - -@itemx \W -The last element of the current working directory (the last directory in the -value of the variable @code{PWD}). - -@item \u -Your username. - -@item \h -Your machine's hostname. - -@item \# -The command number of this command (consecutively numbered since login, -starting with 1). - -@item \! -The history number of this command (the position of this command in the -history list -- @ref{History List}). - -@item \\ -A backslash. Since @samp{\} in a prompt normally isn't printed, but rather -gives the next character a special meaning, if you want a @samp{\} in your -prompt you must put @samp{\\} in the prompt string. - -@c next is too obscure for ordinary user -@item \s -The name of the shell (the basename of the positional parameter @code{$0}). -@c basename = last element of path name - normally bash -@c $0 is name of prog you're running -@c if execute shell script foo directly (typing name of executable file), -@c inside foo, $0 is foo - -@c next is too obscure for ordinary user -@item \$ -@samp{$} unless you are the superuser, in which case it is @samp{#}. -@c actual criterion is: if the effective user @sc{id} is 0 -@c bfox: when log in, get a non-0 uid: if su to become root, get eff uid=0 - -@c next is too obscure for ordinary user -@item \@var{nnn} -The character that has the given octal code. -@end table - -For example, if for some reason you did -@example -PS1="\d \t\n\u@@\h\n\w \#$ " -@end example -you would have a ridiculously long, multiline prompt, consisting of: -@enumerate -@item -the date and time (separated by a space); - -@item -your user name and host name (separated by an @samp{@@}); - -@item -your working directory, a space, the number of this command -(numbered from 1 since you logged in), a @samp{$}, and a space. -@end enumerate - -@example -bash$ PS1="\d \t\n\u@@\h\n\w \#$ " -Sat Feb 9 14:03:58 -jems@@zohar -~/gnu 4$ who -jems pty/ttyu0 Feb 9 11:38 -gjs pty/ttyu1 Feb 8 15:16 -Sat Feb 9 14:04:01 -jems@@zohar -~/gnu 4$ -@end example - -@c following needs explaining -- is this about what happens -@c at prompt-printing time after \'s are processed? -@noindent -Note for advanced users: - -After the prompt string is decoded, it is expanded via parameter expansion -and command substitution unless the variable @code{NO_PROMPT_VARS} is set, - -@node set -@section The @code{set} Command - -You can use the shell's built-in @code{set} command to turn shell options on -and off (@pxref{Built-in}). Here are some option settings you might want to -use: - -@c recommend any other features for beginners? -@c 'set -u' (or set -o nounseft...) to make unset vars different from null vars -@c 2/8/91,bfox: 'set -o' is now for options, not history. -@c plain 'set -o' gives list of options - -@table @code -@c following set is according to bfox -- must try it -@item set -o histexpand off -disables history substitution (@pxref{History}). -If you don't know what history substitution is, it is a good idea to -disable it. - -@end table - -@c anything else besides set from builtin chapter? enable? - -@node Job Control, Combining commands, Customization, Top -@chapter Background and Foreground Processes - -This chapter explains how to run commands in the @dfn{background}, -so that you can do more than one thing at a time, and how to -interrupt commands that are running. - -First we present a short scenario that illustrates most of -the facilities covered in this chapter. The rest of the chapter -provides full explanations of these facilities. - -@c ideas for following scenario: -@c bfox often does: -@c start ftp, c-z it, bg, stops when needs tty input, fg, talk to it -@c find (see other example) -@c **need output lines in following scenario, where marked by ** -@example -bash$ monthly-accounting -C-z -bash$ bg -**is job & proc # printed here as for & ? -bash$ make >& log & -[1] 18432 -bash$ emacs -@c another good example would be 'mail' -C-z -bash$ jobs -**show both background jobs running & suspended foreground job -bash$ fg -@dots{} -bash$ **a done notice for one of the background jobs -bash$ wait -**done notice for other background job -bash$ -@end example -@c bfox: silly to WAIT for 1 job. Should just FG it, and will get -@c prompt when it finishes. Not all systems have job control. (Have -@c backgrounding, but can't interact with the bg job except to send -@c it kill it.) GNU does. But Bash could run on a system V machine, -@c no job control. Wait useful when no job control -@c bfox: can log out & bg jobs keep going! -@c downplay wait -- don't expect users to use it -@c users only need fg, bg, %, auto_resume -@c Fix whole chapter to separate out what have with/without job control -@c INTTERUPT IS NOT THE SAME AS STOP - -In this example, we gave the command @samp{monthly-accounting}, which started -our @code{monthly-accounting} program (in the foreground). We didn't want to -sit there waiting for it to finish, so we interrupted it (@kbd{C-z}) and -continued it running (@code{bg}) in the background. -@c Beware: if we didn't have the foresight to redirect output originally -@c it's too late now -We then started a program compilation (@code{make@dots{}}) in the background -(@code{&}). While those background jobs ran, we started up @code{emacs}. -After a while we wanted to see how the background jobs were coming along, so -we interrupted the foreground job (@kbd{C-z}) and asked about our jobs. The -@code{jobs} command reported on our two background jobs and also told us about -our suspended @code{emacs} job. We resumed the @code{emacs} program -(@code{fg}). When we exited from @code{emacs}, BASH reported that our -@code{make} job had finished. We decided to wait for the -@code{monthly-accounting} job to finish also (@code{wait}). - - -@node Start job -@section Starting a Job - -@cindex foreground -Commands such as those shown in most of our examples are run in the -@dfn{foreground}. That is, the command runs and you do not get another BASH -prompt (and the opportunity to run another command) until it finishes. This -is appropriate for short or interactive tasks. - -@cindex background -If a program will be running a long time and does not require supervision or -input from the terminal, it may be best run in the @dfn{background}. This -leaves your terminal free for other tasks. - -@node Background -@subsection Starting a Background Job - -@cindex background processes -@cindex background, placing things in the -@cindex background (&) -@cindex command lines, putting in the background - -To run a command in the background, place an ampersand, @samp{&}, at the end -of the command line. For example, the following command runs @code{make} -(which recompiles a program as specified by a data base in the current -directory) in the background (@samp{&}), redirecting @code{make}'s standard -output and error messages to the file @file{log}: - -@example -bash$ make >& log & -@end example - -@cindex background job's standard input and output -In this example, the command does not read from the standard input, so we had -no reason to redirect standard input. If a background command uses its -standard input, you should normally redirect it, because the command cannot -read from the terminal (which you are using for other things). If a -background task needs input from the standard input and you have not -redirected the standard input: -@c new concept: job control -- what is it? Not defined in this manual -@itemize @bullet -@item -On a system with job control (such as GNU), the background task is suspended -if it needs input from the standard input. You can then bring the task to the -foreground (@pxref{Resuming}) and type the input. -@c add an xref? - -@item -On a system without job control (such as @sc{System V}), the background task -is given a null string if it needs input from the standard input. -@end itemize - -You should usually redirect the background command's standard output as well -(as shown in the above example), unless you want the output to be interspersed -with your other work on the terminal. If your background task sends output to -the standard output and you did not redirect the standard output, this output -appears on your terminal, @emph{even if you are running another program}. - -When you run a background command, the shell prints out its job number and the -@sc{pid} of the last process in the pipeline (@pxref{Numbers}). In the -following example, BASH assigns our background command a job number of 1. It -assigns a @sc{pid} of 18449 to the last process in the pipeline, @samp{wc > -count-file}. - -@example -bash$ ls -l | wc > count-file & -[1] 18449 -bash$ -@end example - -@node notify -@subsection Notification of Background Job Termination - -@cindex background, the @code{notify} variable -@cindex @code{notify} variable, for background jobs - -When a background job is finished, BASH reports its job number, the word -@samp{Done}, and the command line itself: - -@example -[1]+ Done ls -l | wc >count-file -@end example - -@noindent - -@c also reports when a job becomes suspended (by a signal) -Normally the shell reports on jobs only when it issues a prompt, so it doesn't -interrupt what you are doing. If you wish to be told of changes in job status -immediately (not just when you get the next shell prompt), set the -@code{notify} variable, as follows: - -@example -bash$ notify= -@end example -@c create a var = set a var; how uncreate it if change your mind? - -@node wait -@subsection Waiting for Background Jobs to Terminate - -@cindex background, the @code{wait} command -@cindex @code{wait} command -If you want to wait for some or all of your background jobs to finish before -issuing any more commands, you can save yourself the trouble of keeping track -of the termination notices (@pxref{notify}) or repeatedly typing the -@code{jobs} command (@pxref{Jobs command}) by using the @code{wait} command to -wait for the background jobs to finish. - -@table @code -@item wait -@itemx wait @var{job_spec} -@c next item added by KELLEM -@itemx wait @var{pid} -The @code{wait} command waits for active background processes to finish. It -suspends operation of your terminal until the specified background job -(@var{job_spec}) or background process (@var{pid}) is finished. If no job or -process is specified, @code{wait} waits for all currently active jobs to -finish. -@c presumably wait finishes immediately if the job is suspended - -@var{job_spec} is any job specification -and @var{pid} is a @sc{pid} (@pxref{Numbers}). - -Let's assume that you want to start three lengthy jobs running concurrently -and then want to wait for all three jobs to finish before continuing. Here's -how you'd do it: - -@c bfox: searches starting with / for files named core -@c & prints to standard out (whole path name) -@example -bash$ find / -name core -print >& core_list & -[1] 2240 -bash$ grep "Experience" /home/* >& exper_list & -[2] 2241 -bash$ ls -lR / >& dir_list & -[3] 2242 -bash$ wait -[1] Done find / -name resume -print >& resume_list -[2]- Done grep "Experience" /home/* >& exper_list -[3]+ Done ls -lR / >& dir_list -bash$ -@end example - -@noindent -In this example, three long jobs are performed simultaneously: each job is -performed in background by the @code{&} operator at the end of the command. -Notice that each job has its standard output and standard error redirected to -a file with the @code{>&} operator so that the jobs do not write output or -error messages to the screen while they are running in the background. The -@code{wait} command waits for all three commands to finish before allowing -BASH to continue. -@end table - -@menu -* Numbers:: Job numbers and process identification - numbers. - -* Stopping:: Stopping and suspending jobs. - -* Job Specs:: Stopping, restarting, and otherwise - modifying the state of a job. - -* fg:: Resuming stopped or suspended jobs. - -* bg:: Placing stopped jobs in the background. - -* kill:: Terminating Processes. - -* nice:: Running processes at a low priority - using the @code{nice} command. - -* nohup:: Preventing jobs from stopping using - the @code{nohup} command. -@end menu - -@node Numbers, Stopping, Job Control, Job Control -@section Jobs, Processes, and their Identifiers - -Each pipeline run by the shell is considered a separate @dfn{job}. (A -pipeline is a set of commands joined by pipes (@pxref{Pipes}), or a command -without pipes -- which can be though of as the simplest possible pipeline, -with only 1 command and 0 pipes.) Each command in the pipeline is run in its -own process (that is, they run simultaneously). Hence a job consists of one -or more processes. - -There are a number of commands that act on jobs or processes. (For example, -there are commands to suspend a job or kill a process.) If you give a command -for a job (for example, killing the job), this applies to all the processes in -the job. If you give a command for a process, only that process is affected. - -To specify the desired job or process in a command, you may need to refer to -it by number. - -@itemize @bullet -@item -Every process has an identifying number, called a @dfn{@sc{pid}} (@sc{p}rocess -@sc{id}entifier). @sc{pid}s, which are assigned by the operating system, are -unique throughout the entire system: No two processes, even belonging to -different users, can have the same @sc{pid} at the same time. - -@item -Jobs are identified by small @dfn{job numbers}, which are assigned by BASH. -Unlike @sc{pid}s, these are not unique throughout the system: Any number of -users may have a job 1 at a given time. However, at any moment, all your jobs -have numbers that are different from each other, which is all you need to -uniquely identify them in commands. -@end itemize - -When you run a background command, the shell prints out its job number and the -@sc{pid} of the last process in the pipeline (@pxref{Background}). In -addition, you can find out these numbers by using the @code{jobs} command or -the @code{ps} command (@pxref{Jobs command}). - -To refer to a process in a command, use its @sc{pid}. To refer to a job in a -command, use a @dfn{job specification} having one of the following forms: - -@c Unclear whether to include % as part of job spec. -@c %... can be cmd by self -@c Cmd with job spec as arg may allow omit % if no other arg. -@c (1) job spec starts w %, bt sometimes can leave it out if want to -@c e.g. in fg or bg: fg 4 = fg %4 -@c or -@c (2) job spec has no %, sometimes precede with % -@c RMS prefers view (1) - -@table @code -@item %@var{number} -refers to the job whose number is @var{number}. For example, @samp{%1} refers -to job number 1. - -@c bfox: both %strings require unambiguous match, and look in whole job list -@item %@var{string} -refers to the job whose command line (the command that started the job) starts -with @var{string}. For example, @samp{%emacs} refers to an @code{emacs} job. -If there is more than one job whose name begins with the string, you'll be -given an error message. - -@item %?@var{string} -refers to the job whose command line (the command that started the job) -contains @var{string}. For example, @samp{%?mac} may refer to an @code{emacs} -job. If there is more than one job whose name contains the string, you'll be -given an error message. - -@item % -@itemx %+ -@itemx %% -all refer to the current job (the last job stopped or placed in the -background, @pxref{current job}). - -@item %- -refers to the previous job (the second-to-last job stopped or placed in the -background, @pxref{current job}). -@c 1/7/91, 1.06 -- there was only 1 stopped job -- %- got it (same as %+) -@end table - -Note that a job specification starts with a @samp{%} character. In certain -contexts, however, where it is clear that a job is being referred to, it is -possible to omit the @samp{%}. -@c I didn't show any examples where could omit it -- e.g. fg cmd - -@node Jobs command -@section Finding Out Out What Jobs and Processes You Have - -To find out what stopped (suspended) and background jobs you have, you can use -the @code{jobs} command. The following example shows that we have three -suspended jobs. - -@c must fix following examples so all based on same set of jobs - -@example -bash$ jobs -[1] Stopped rn -[2]- Stopped vi file -[3]+ Stopped emacs file2 -bash$ -@end example - -Use the @code{-l} flag with @code{jobs} to see the jobs' processes as well: - -@example -bash$ jobs -l -[1]+ 18448 Done ls -l - 18449 | wc >count-file -bash$ -@end example - -@cindex @code{ps} command -@cindex monitoring active processes -@cindex processes, monitoring -@cindex background, monitoring processes -@c define 'active'? -The @code{ps} command reports more detail about your active processes than -@code{jobs} does, but it treats the processes as individuals and doesn't group -them into jobs. When typed without options, @code{ps} gives you the following -information. (Note that @code{ps} is not built into BASH, so its output is -different from system to system; however, the basics remain the same.) - -@table @code -@item PID -The process identification number. - -@item TTY -The terminal from which the process was started. - -@item TIME -The amount of computer time the process has used so far. - -@item COMMAND -The name of the process. -@end table - -Here's an example of the output of @code{ps}: - -@example -bash$ jobs -[1]+ Stopped emacs -bash$ ps - PID TTY TIME COMMAND - 2249 ttyp0 0:00 ps - 2184 ttyp0 0:00 emacs - 2170 ttyp0 0:00 bash -bash$ -@end example - -@noindent -This @code{ps} command shows that we have three processes: the @code{ps} -process itself, an @code{emacs} process (which we presumably suspended -earlier), and the @code{bash} process itself. (@code{ps}, unlike @code{jobs}, -reports on foreground as well as background processes.) BASH has assigned job -number 1 and process number 2184 to @code{emacs}. - -@xref{ps, , @code{ps}, utilities, The GNU Utilities Manual}, -for more information. - -@node current job -@subsection Current Job and Previous Job - -The @samp{+} and @samp{-} in the output of @code{jobs} identify the ``current -job'' and ``previous job'' respectively. The job most recently stopped -(suspended) or put in the background is called the @dfn{current job}. -@c last sentence unclear -@c In particular, why is a Done job marked + ? bfox: May fix later -@c Current job concept is useless for it, since you can't act on it -@c Remains + until it's reported to you and removed from list -It is marked with a plus sign, @samp{+}, in the jobs listing. The -second-to-last job stopped or put in the background is called the -@dfn{previous job}. It is marked with a minus sign, @samp{-}, in the jobs -listing. When the current job is terminates or is moved to the foreground, -the previous job becomes the new current job. - -The concept of ``current job'' is used for defaulting arguments -to the @code{fg} and @code{bg} commands (@pxref{Resuming}). - -@c need examples - -@node Stopping, Job Specs, Numbers, Job Control -@section Interrupting a Job - -@c How kill a stopped job? -@c bfox: kill job-spec (shell continues & signals the process -- you -@c don't have to continue it yourself) -@c Shell tells op sys start process, processes can communicate by signals -@c Kill exists as ordinary disk-file cmd -@c Shell has separate built-in kill cmd so can do jobs, which are -@c shell (not op sys) concept. -@c If program doesn't disable TERM, it will definitely kill you -@c rms: program handles signal if wants, otherwise unix does it -@c kill -9 (9=SIGKILL) is signal no one can ask to handle, thus kills anything - -@c confusion in this section between Job, Process, Program -@c confused terminology: stop, kill, suspend -@c rms: stop=suspend, terminate=kill (gone) - -@node Interrupt foreground -@subsection Interrupting the Foreground Job - -@cindex stopping jobs -@cindex jobs, stopping -@cindex suspending jobs -@cindex jobs, suspending - -You may want to abort the program you are currently running (in the -foreground), or you may want to interrupt it temporarily in order to do -something else. - -The following keys stop the foreground job, placing it in a type of -``suspended animation'' so that it can be resumed if desired -(@pxref{Resuming}). - -@c none of these interrupts worked while running vi under bash -@c rms: interactive editors turn things off -@table @code -@item @kbd{C-z} -This stops (suspends) the foreground job immediately. -@c but SIGTSTP says programs may ignore C-z? (bfox: can ignore if enabled) - -@item @kbd{C-y} -This is similar to @kbd{C-z} except it causes the process to be stopped -(suspended) only when that process attempts to read input from the terminal. -@c KELLEM: note that C-y (by default in readline lib) is bound to `yank' -@c thus fine when readline not running -@c bfox: normally type C-y ahead of time (if at prompt, you would type C-z) -@c op sys buffers it & prepares to send signal later -@c same true of C-z (op sys cmd, not bash) -@end table - -@noindent -Note for advanced users: -@kbd{C-z} and @kbd{C-y} will not suspend the shell itself. -@c Does this belong here? There's lots of other stuff it won't suspend, too. -To suspend a shell, such as one started with the @code{su} command, -use the @code{suspend} command (@pxref{Built-in}). - -The following keys kill the foreground job. -The job cannot be resumed. - -@table @code -@item @kbd{C-c} -This kills the foreground job immediately. - -@item @kbd{C-\} -This kills the foreground job immediately and it is much harsher than @kbd{C-c}. -@c harsher in what way - just core dump? is core dump the purpose of C-\ ? -@c bfox: C-c is SIGINT, which usually kills -@c but C-\ is SIGKILL, which can't be ignored -This method usually produces a core (memory) dump for later analysis. -@c why 'usually'? bfox: core dump happens if not disabled with ulimit -@c by setting core dump size to 0 -@c He normally has dumps disabled, enables to reproduce a bug -@c rms: if program handles signal, it may not produce dump -- otherwise produced -@c what is the core dump useful for? rms: debugging -@end table - -All of the above keystrokes can be reassigned to other keys, -by using @code{stty}. -@c need ref for stty -We are just covering the most common keyboard methods of stopping jobs. -Your operating system manual will tell you about other -keyboard interrupts and how to remap your keyboard. - -No matter which method you use (except @kbd{C-c}), the shell tells you -when your program, or job, has been ``Stopped'', and prints another prompt. -@c really does it for C-\ but not C-c ? -@c be clearer what shell tells you - -@node kill, nice, bg, Job Control -@subsection Interrupting a Background Job - -@cindex stopping jobs -@cindex jobs, stopping -@cindex suspending jobs -@cindex jobs, suspending -@cindex background, stopping jobs -@cindex background, suspending jobs -@cindex background, terminating processes -@cindex processes, terminating -@cindex terminating processes or jobs - -You cannot use the keyboard interrupts (@pxref{Interrupt foreground}) -to interrupt a background job, since background jobs do not listen to -the terminal. - -To suspend or terminate a background job, you can do either of the following: -@itemize @bullet -@item -Use the @code{kill} command (described below). - -@item -Move the job to the foreground (@pxref{fg<>bg}) then use one of the -keyboard interrupts for foreground jobs (@pxref{Interrupt foreground}). -@end itemize - -@cindex @code{kill} command -@cindex background, the kill command and -@cindex jobs, the kill command and -@cindex signals, for the @code{kill} command - -@c new concept: signal -@table @code -@item kill @r{[}-@var{sigspec}@r{]} @var{pid} -@itemx kill @r{[}-@var{sigspec}@r{]} @var{job_spec} -Send the process identified by @var{pid} or all processes in the -job identified by @var{job_spec} -the terminate signal, -@c SIGTERM -or the signal specified by @var{sigspec}, if given. -@var{pid} is a process identification number and -@var{job_spec} is a job specification (@pxref{Numbers}). -Signals are specified either by number or by name, as explained below. -@c where are the numbers defined? document here? (appendix) - -@item kill -l -This lists all the possible signal names (and numbers). -It does not affect any jobs or processes. -@end table - -Here's a summary of the most common and useful signals. -In the @code{kill} command, you can use any of the following: -@itemize @bullet -@item -the name shown -- e.g. @code{SIGKILL} - -@item -the part of the name after @samp{SIG} -- e.g. @code{KILL} - -@item -the lowercase version of the part of the name after @samp{SIG} -- e.g. -@code{kill} -@end itemize - - -@c compare to appendix -- don't want same table in both places -@table @code -@item SIGHUP -This is a gentle signal you can send to processes that you want to -kill when you want to allow them to clean up after themselves (for -example, delete temporary files, kill subprocesses, etc.). It is a -good practice to try to kill jobs with this signal first, before trying -any of the harsher signals. Some programs see this signal as a request -for them to re-initialize some internal state or re-read a startup file, -so this signal is not always used strictly for killing a process. - -@item SIGINT -This is the signal generated (normally) by @kbd{C-c} on the keyboard. -This signal will kill most processes, although a program may choose to -ignore @code{SIGINT}. @code{SIGINT} also allows a process to clean up -after itself before dying. -@c how differs from SIGHUP? rms: SIGHUP means terminal is disconnected. -@c prog might die from hup but not c-c - -@item SIGQUIT -This is the signal generated (normally) by @kbd{C-\} on the keyboard. -@c normally = if not remapped -@code{SIGQUIT} is identical to @code{SIGINT} except that it requests that the -operating system produce a diagnostics file called a @dfn{core dump}, -which is placed into a file named @file{core}. -This can be useful for debugging. - -@item SIGTERM -@code{SIGTERM} is similar to @code{SIGINT} except that it is normally produced by a -program and not from the @kbd{C-c} on the keyboard. Note that -some programs treat @code{SIGTERM} differently from @code{SIGINT}. - -@item SIGKILL -@code{SIGKILL} is the harshest ``kill'' signal. It kills a process -without warning -and without allowing the process to clean up after -itself. -@c rms: i.e. doesn't signal process, just kills it -@code{SIGKILL} should be used as a last resort, if -@code{SIGHUP}, @code{SIGTERM}, @code{SIGINT}, and @code{SIGQUIT} don't -work. - -@item SIGTSTP -@code{SIGTSTP} is the signal sent (normally) by the @kbd{C-z} key on the -keyboard. -@c normally = modulo remapping -Some programs may ignore this signal. This signal does not -kill the process but instead @emph{stops} the process, putting the -program into a suspended state. - -@item SIGSTOP -@code{SIGSTOP} is identical to @code{SIGTSTP} except it is not generated from -the keyboard by @kbd{C-z}; it is must be sent with @code{kill} or from within -a program. - -@item SIGCONT -@code{SIGCONT} causes a @emph{stopped} process to continue running. A stopped -process is sent this signal by BASH when the @code{fg} and @code{bg} -commands are used. -@end table - -The following example terminates a @code{tip} process that has -been stopped earlier: -@c tip is for: communicate over serial port to log into another machine -@c replace example -- don't use tip or HUP (HUP normally due to hangup, not sent by you) -@c rms: normally do kill, or kill -stop, or kill -kill -@c bfox: either kind of name can be lower case -@c replace example - -@example -bash$ jobs -l -[1]+ 29854 Stopped tip -bash$ kill -HUP 29854 -[1]+ Hangup tip -bash$ jobs -bash$ -@end example - -@noindent -For a @code{tip} process, it is especially useful to use the @code{-HUP} -signal so that @code{tip} cleans up the @sc{UUCP} lock files that it leaves -around. - - -@node Stopped jobs -@subsection Logging Out With Stopped Jobs - -@cindex logging off, with stopped jobs -@cindex jobs, logging off with stopped -@cindex stopped jobs, logging off with -If you have stopped jobs that you have forgotten about and you try to -log off, you will be given a warning that you have ``Stopped jobs'' and -will not be allowed to log off. If you continue to try to log off, you -will eventually be successful, but the operating system will kill -(terminate) all your stopped jobs. -@c what if you have running (background) jobs? -@c ? bfox: they just keep silently running ? -@c csh sends hup to children when logs up, bash currently doesn't -@c might change it -- if so, add nohup biltin - -It is much better to bring the stopped jobs to the foreground -(@pxref{Resuming}) and terminate them properly, so that can clean up -after themselves (save files, etc.). - -You can also prevent jobs from being killed -when you log off by using the @code{nohup} command (@pxref{nohup}). - -@node Resuming -@section Resuming a Suspended Job - -A job that has been suspended (@pxref{Stopping}) can be resumed. -That is, you can make it continue from where it left off. -The resumed job can be run either in the foreground or in the -background, regardless of whether it was foreground or background -when it was interrupted. - -The following methods of resuming jobs are described more fully below: -@itemize @bullet -@item -To resume a suspended job in the foreground, use the @code{fg} command -or just type a job specification (@pxref{Numbers}). - -@item -If you set the @code{auto_resume} variable, typing a command -may resume a suspended job instead of starting a new one. - -@item -To resume a suspended job in the background, use the @code{bg} command -or just type a job specification (@pxref{Numbers}) followed by an -ampersand (@samp{&}).@refill -@end itemize - -@table @code -@item fg -@itemx fg @var{job_spec} -@itemx @var{job_spec} -Bring the specified job into the foreground, and resume running it. If -@var{job_spec} isn't specified, @code{fg} acts on the current job -(@code{%}). - -The following example resumes the current job in the foreground: - -@example -bash$ fg -@end example - -The following example resumes a stopped @code{du} process in the foreground: - -@example -bash$ %du -@end example - - -@item bg -@itemx bg @var{job_spec} -@itemx @var{job_spec} & -Place the specified job in the background, and resume running it as if -it had been started with @samp{&}. If @var{job_spec} is omitted, -@code{bg} acts on the current job (@code{%}).@refill - -@example -bash$ find / -name resume -print >& resume_list -C-z -[1]+ Stopped find / -name resume -print >& resume_list -bash$ bg -find / -name resume -print >& resume_list & -bash$ -@end example - -@noindent -Here we started the @code{find} command in the foreground but then -stopped it (with @kbd{C-z}) and placed it in the background when we got -tired of waiting for the command to finish. - -The following example places job 2 in the background: - -@example -bash$ jobs -[1]- Stopped find / -name resume -print >& resume_list -[2]+ Stopped ls -R / >& dir_list -bash$ %2 & -ls -R / >& dir_list & -bash$ -@end example - -@c 12/90, bash 1.06.25: bug: 'exact' has no effect - never need whole name -@item auto_resume= -@itemx auto_resume=exact -If you create the @code{auto_resume} variable (e.g. by typing -@samp{auto_resume=}), then if you type a command that matches -a suspended job's command, -@c match of cmd word -@c bfox: auto_resume is for 1-word commands -@c must be 'simple word' -- e.g. \emacs is new -@c bfox: to specifically talk about 1st wd of cmd, call it ``command word'' -the suspended job is resumed instead of a new job being started. -If the value of @code{auto_resume} is @code{exact} -(you set @samp{auto_resume=exact}), then you must -type the entire job name; if the value is anything else, -then only part of job name is enough to resume it. -@c fix: job name = command word -If there is more than one job -with such a name, the job with the highest number is resumed. - -For example, assume that you have a stopped Emacs job: - -@example -bash$ jobs -[1]+ Stopped emacs -f rmail -@end example - -@itemize @bullet -@item -If you have not set @code{auto_resume}, then the command - -@example -bash$ emacs -@end example - -@noindent -will start another Emacs job, and the old job will remain suspended. - -@item -If you have set @code{auto_resume}, the above @samp{emacs} command -will resume the stopped Emacs job. - -@item -If you have set @code{auto_resume} to anything but @code{exact}, an -abbreviated command (such as @samp{ema}) will also resume the stopped -Emacs job. -@end itemize -@end table - -@node fg<>bg -@section Moving a Job Between Foreground and Background - -To move the job that is running in the foreground to the background, -suspend the job (@pxref{Stopping}) -and then resume it in the background (@pxref{Resuming}). - -To make a job that is running in the background be the foreground job, -pretend the job has been suspended (though there is no need to -actually suspend it) and ``resume'' it using any method of resuming jobs -in the foreground (@pxref{Resuming}). - -@c BFOX: Flush NICE from manual -@c KELLEM: nice is NOT a builtin -- description below looks like it's from csh -@c /bin/nice usage is typically: nice [-number] command (both BSD and SysV) -@c note the `-' before number .. what's GNU nice going to do? -@c rms: may be in posix 2 or 2a -@ignore -@node nice, nohup, kill, Job Control -@section Running Processes at a Low Priority Using @code{nice} - -@cindex jobs, the @code{nice} command -@cindex background, the @code{nice} command -@cindex @code{nice} command, for lower priority -@cindex jobs, running at low priority -@cindex background, running processes at a low priority -The @code{nice} command causes a background process to be run at a -low priority. The operating system runs any commands specified by -@code{nice} when the machine has nothing else to do (it runs those -commands less often than normal). This way, commands that normally -consume large amounts of system resources, slowing the system -considerably, are run in stages that don't slow the system down quite -as much. Of course, a program that is run at a lower priority takes -longer to finish, but it doesn't interfere with more important -programs, either. - -The format of the @code{nice} command is: - -@example -nice @r{[}@var{number}@r{]} @var{command-line} -@end example - -@noindent -where @var{command-line} is the command line you want to place at a -lower priority. -If present, the @samp{@var{number}} option causes @code{nice} to -increment the priority by the amount given, up to a limit of 20. The -higher the value given, the lower the command's scheduled priority. -The default value for @var{number} is 10.@refill - -@c need example: maybe 'nice make -k hairy-program >& log' (rms) - -@menu -* exception:: Using @code{nice} to force processes to run - at a higher priority than normal. -@end menu - -@cindex @code{nice} command, using for higher priority -@c what's a super-user? = root -Note for advanced users: -The super-user may give commands a higher priority than normal by using -a negative @var{number}, for example @samp{-5}. -@end ignore - -@c comments by KELLEM -@c should `nohup' description be here? machine specific -@c maybe should just note that way nohup works is machine dependent -@node nohup, , nice, Job Control -@section Preventing Jobs From Stopping Using @code{nohup} - -@c ? stop = be killed = be terminated? -The @code{nohup} command prevents commands from stopping, or being -killed, when you log out. -Normally when you log off your system, any -commands or processes that are running in the background are -terminated. -@c ? aren't suspended processes terminated too? -@c what happens if you suspend a process started with nohup, then resume -@c it? is it still nohup? -The @code{nohup} command prevents hangup signals -(@code{SIGHUP}, normally generated when you log off), -interrupt signals (@code{SIGINT}, normally generated by @kbd{C-c}), -and quit signals (@code{SIGQUIT}, normally generated by @kbd{C-\}) -from terminating your program.@refill -@c ? any other signals disabled? - -@cindex @code{nohup} command -@cindex jobs, the nohup command -@cindex background, the nohup command -@cindex preventing job suspension/stopping when logging out -@cindex logging out, preventing job suspension/stopping -The format of the @code{nohup} command is: - -@example -nohup @var{command-line} -@end example - -@noindent -where @var{command-line} is the command you don't want interrupted. -Any output the @var{command-line} produces is -put into a file called @file{nohup.out} in your current directory. -@c ? i.e. output to standard output? -(If this file cannot be written to your current directory, @code{nohup} -places it in your home directory.) - -@c ? -THIS DESCRIPTION IS MACHINE SPECIFIC, UNLESS WE HAVE A GNU NOHUP (bfox). -@c i.e. nohup may not change priority -@c point of nohup: keep running after hang up - -The @code{nohup} command increments the priority by 5. -(@xref{nice}, for an explanation of priority.). Make sure that you -invoke @code{nohup} from the shell prompt with @samp{&}, so that it -won't respond to interrupt signals, or take input from the next user. -@c format above should thus show with & ? -@c ? if it's not given with &, how can you log out? -@c what next user? -@c rms: it still has association with tty#, might respond to c-c etc. - - -@node Combining commands, Editing, Job Control, Top -@chapter Combining Several Commands on One Line - -@node Sequential cmds, Parallel cmds, Combining commands, Combining commands -@section Sequential Commands - -There are several ways to type several commands in one command line, -such that the commands are executed one after another. -You can either make the sequence execute unconditionally, -as if you had typed the commands one after another at the shell prompt; -or you can make execution of the sequence stop early depending -on the outcome of one of the commands, as if you had typed the commands -one at a time and decided whether to continue as you went along. - -To do this, give a command of the form -@example -@var{command} @r{[}@var{separator} @var{command}@r{]} -@end example -That is, give any number of commands with an appropriate separator -between each pair, as defined in the following: - -@table @code -@item ; -allows you to put -several commands on the same line, to be executed sequentially. -Separate each command from the next with a semicolon, @samp{;}. -@cindex @code{;}, sequential command sequence - -No command in the sequence is executed until you end the line (press -@key{RET}). -Then the commands are executed in order, from left to right, -as if you had typed each separately and waited for it to finish -before typing the next. -@cindex separating commands -@cindex command line, separating commands on a - -For example: - -@example -bash$ cp test test-old; du > test; ls -l test* -@end example - -@item && -indicates conditional execution of commands in the sequence. -@samp{&&} means @sc{and}; the trailing commands are executed only if the -preceding commands are executed successfully.@refill -@cindex @code{&&}, conditional command sequence -@cindex joining commands -@cindex commands, joining -@cindex pipelines, joining -@cindex pipelines, conditional execution of -@cindex commands, conditional execution of - -For example, if there is no file named @file{garbage.test}, -then an attempt to list directory information for such a file -(@samp{ls -l@dots{}}) and an attempt to view its contents (@samp{cat@dots{}}) -will both fail: - -@example -bash$ ls -l garbage.test ; cat garbage.test -garbage.test not found -cat: cannot open garbage.test -bash$ -@end example - -But if @samp{&&} instead of @samp{;} joins the two commands, -the second command is performed only if the -first command is successful. Since the file @file{garbage.test} doesn't exist, -we get the error message associated with @code{ls} and @code{cat} isn't run: - -@example -bash$ ls -l garbage.test && cat garbage.test -garbage.test not found -bash$ -@end example - -@item || -indicates conditional execution of commands in the sequence. -@samp{||} means @sc{or}; the remaining commands are executed only if the -preceding commands are @emph{not} executed successfully.@refill -@cindex @code{||}, conditional command sequence -@cindex joining commands -@cindex commands, joining -@cindex pipelines, joining -@cindex pipelines, conditional execution of -@cindex commands, conditional execution of - -For example: - -@example -bash$ cat garbage.test || cat junk.test -cat: cannot open garbage.test -This is the contents of junk.test. -@end example - -@noindent -The first @code{cat} failed to find @file{garbage.test}, so the second -@code{cat} was performed. - -@end table - -@node Parallel cmds, Combination precedence, Sequential cmds, Combining commands -@section Simultaneous Commands - -There are two ways to type several commands in one command line, -such that the commands are executed simultaneously, in separate -processes. -You can specify either independent commands or commands whose -inputs and outputs are linked together. - -To do this, give a command of the form -@example -@var{command} @r{[}@var{separator} @var{command}@r{]} -@end example -That is, give any number of commands with an appropriate separator -between each pair, as defined in the following: - -@table @code -@item | -joins commands together into a pipeline. -The standard output of each command is redirected (connected) to the -standard input of the next command in the sequence. -@xref{Pipes}. - -@item & -causes each command to run in the background. -The commands are executed simultaneously in the background, -as if you had typed each one separately, terminated with @kbd{&}. -@xref{Job Control}. - -Note: @samp{&} actually terminates commands rather than separating -them. This is a difference from the other command combiners in -this chapter. Thus be sure to put a @samp{&} after the last command -as well as between commands, or the last command will @emph{not} run -in the background. - -@end table - -@node Combination precedence, , Parallel cmds, Combining commands -@section Mixtures of Sequential and Simultaneous Commands - -Any or all of the command separators described in this chapter -(@samp{;}, @samp{&&}, @samp{||}, @samp{|}, @samp{&}) -can be used in a single command. - -The order of precedence (from highest to lowest) is -@table @code -@item | -pipeline - -@item && @r{and} || -``and'' and ``or'', equal precedence, processed from left to right - -@item ; @r{and} & -sequential and background, equal precedence, processed from left to right -@end table - -However, if you have a mixture of operators, you should usually group -the subcommands with parentheses or braces (@pxref{Grouping}), rather -than assume you know how the command will be interpreted. -@c rms: for mixtures of operators, tell them to group with () - -@node Editing, History, Combining commands, Top -@chapter Command Line Editing - -@menu -* Readline Intro:: An introduction to editing command lines - using @code{readline}. - -* Syntax:: The basic editing commands. - -* Customizing:: Customizing @code{readline} to use other - key bindings. Includes a complete list of - all commands used in editing. - -* vi mode:: Editing using other modes, including a - @code{vi} editing mode. -@end menu - -@cindex @code{readline} library -@cindex command lines, editing -@cindex editing command lines -@cindex Emacs, command lines and -BASH provides powerful facilities for editing the command line -you are currently typing, so as to minimize the amount of typing -needed to fix mistakes. -It also includes facilities to save typing by giving you access to -earlier commands and by completing things (such as file names) that you have -not finished typing. - -The command-entry features described here are not specially programmed -into BASH. -Rather, they are provided by the @code{readline} library, which is used by a -number of other GNU programs besides BASH. -This means that you can use the same typing and editing facilities -with a variety of programs. - -By default, @code{readline} has Emacs-like key bindings. -That is, most features that Emacs also has (such as moving the cursor -over words or characters) are invoked by the same keystrokes as -in Emacs. -@xref{Customizing Readline}, for how to change any key bindings you -don't like and customize other aspects of @code{readline}'s behavior. - -@menu -* Movement:: Moving about the line. -* History Commands:: Using previous lines. -* Text:: Commands for changing text. -* Buffer:: Commands for killing and yanking. -* Numeric Arguments:: Specifying numeric arguments and - repeat counts. -* Completion:: Getting @code{readline} to do the - typing for you. -* Miscellaneous:: Other miscellaneous commands. -@end menu - -@node Readline Commands -@section @code{readline} Commands - -The following sections list all the functions provided by @code{readline}. -Each entry consists of -@itemize @bullet -@item the function name -You do not need the function name unless you want to change the key -binding (@pxref{Customizing Readline}). - -@item the default key binding (in parentheses) -This is the key you press to invoke the function. -If no key binding is shown, then you can't use the function -unless you bind it to a key (@pxref{Customizing Readline}). - -@item a short description of what the function does -@end itemize - -@cindex command editing, advanced -@cindex editing commands, advanced -@cindex @code{readline} editing commands, advanced - -@node Movement, History Commands, Customizing, Customizing -@subsection Moving the Cursor - -Here are the @code{readline} cursor movement commands: - -@cindex @code{readline} library, cursor movement commands -@cindex cursor movement commands in the @code{readline} library -@table @asis -@item beginning-of-line (@kbd{C-a}) -Move to the start of the current line. - -@item end-of-line (@kbd{C-e}) -Move to the end of the line. - -@item forward-char (@kbd{C-f}) -Move forward (right) one character. - -@item backward-char (@kbd{C-b}) -Move backward (left) one character. - -@item forward-word (@kbd{M-f}) -Move forward (right) one word. - -@item backward-word (@kbd{M-b}) -Move backward (left) one word. -@end table - -@node Text, Buffer, History Commands, Customizing -@subsection Changing the Command Text - -@c new term: 'cursor point' -@c numeric &/or negative args mentioned but never explained - -@cindex @code{readline} library, commands to change text -@cindex changing text commands in the @code{readline} library -Here are the @code{readline} commands for text manipulation: - -@table @asis -@item quoted-insert (@kbd{C-q}, @kbd{C-v}) -Add the next character that you type to the line verbatim. This allows -you to insert a control character, for example, -and not have it act as an editing key. -For example, if you want to search for a @kbd{C-l} in a file, -you can type the @kbd{C-l} argument to the @code{grep} command -by typing @kbd{C-q C-l}. - -@item tab-insert (@kbd{M-TAB}) -Insert a tab character. -(A @kbd{TAB} character itself normally invokes completion -rather than being inserted into the command line -- @pxref{Completion}.) - -@item self-insert (a, b, A, 1, !, ...) -Insert the typed characters verbatim. -All printing characters except @kbd{TAB} and newline -@c ? @kbd{RET} ? -(i.e., all non-control, non-meta characters) -@c source: bfox -are inserted as typed. - -@item transpose-chars (@kbd{C-t}) -Interchange the character before the cursor with the character -at the cursor and position the cursor after both characters. If the -cursor point is at the end of the line, then transpose the two -characters before the cursor point. Negative arguments are invalid. - -@item transpose-words (@kbd{M-t}) -Interchange the word before the cursor with the word -at the cursor and position the cursor after both words. - -@item upcase-word (@kbd{M-u}) -Change the current (or following) word to uppercase and put the cursor -after the word. When given with a -negative argument, the previous word is changed to uppercase, but the -cursor point is not moved. - -@item downcase-word (@kbd{M-l}) -Change the current (or following) word to lowercase and put the cursor -after the word. When given with a -negative argument, the previous word is changed to lowercase, but the -cursor point is not moved. - -@item capitalize-word (@kbd{M-c}) -Capitalize the current (or following) word and put the cursor -after the word. When given with a negative -argument, the previous word is capitalized, but the cursor point is not -moved. -@end table - -@node Buffer, Numeric Arguments, Text, Customizing -@subsection Deleting and Restoring Text - -@cindex readline library, killing commands -@cindex killing commands in the readline library -@cindex readline library, yanking commands -@cindex yanking commands in the readline library -@cindex readline library, buffer commands -@cindex buffer commands in the readline library -Here are the @code{readline} commands involved in deleting text and -restoring previously deleted text. - -In the following table, the term @dfn{kill} means to delete text from a -line, but save that text in a buffer for later retrieval. -Usually you retrieve killed text by @dfn{yanking} it back into the -line. The term @dfn{yank} means to retrieve text from a buffer and -insert it at the cursor in the current line. -Text that is @dfn{deleted} rather than killed is not saved and -cannot be yanked back. - -@table @asis -@item delete-char (@kbd{C-d}) -Delete the character under the cursor. -Note: If the cursor is at the -beginning of the line, there are no characters in the line, and the -last character typed was not @kbd{C-d}, then @kbd{C-d} means -end-of-file return @sc{eof}, and BASH exits. -@c bfox: bash exits (logs you out)!! ignoreeof can protect you from this - -@item backward-delete-char (@key{DEL}) -Delete the character behind the cursor. A numeric argument given with -this command causes the characters to be killed instead of deleted. - -@item kill-word (@kbd{M-d}) -Kill the text from the current cursor position to the end of the -current word or, if between words, to the end of the next word. - -@item backward-kill-word (@kbd{M-DEL}) -Kill the text from the current cursor position to the start of the -current word or, if between words, to the start of the previous word. -@c bfox: words delimited by -@c when doing completion space tab nl " \ ` ' @ $ > < = -@c in word movement/deletion non-alphanumeric - -@item kill-line (@kbd{C-k}) -Kill the text from the current cursor position to the end of the line. - -@item backward-kill-line () -Kill backward to the beginning of the line. That is, kill the text from -the beginning of the line to the current cursor position. This is -normally not bound to a key. (See @code{unix-line-discard}, which is bound to -@kbd{C-u}.) - -@item unix-line-discard (@kbd{C-u}) -Kill backward to the beginning of the line. -This is identical to backward-kill-line. - -@item unix-word-rubout (@kbd{C-w}) -Kill the text from the current cursor position to the previous -whitespace. This is different from @kbd{M-DEL} because the word -boundaries are different. - -@item yank (@kbd{C-y}) -Restore the most recently killed text back into the line at the cursor. - -@item yank-pop (@kbd{M-y}) -Restore the next to most recently killed text back into the line at the -cursor. You can do this only if the prior command was @kbd{C-y} or -@kbd{M-y}. -@end table - -@node History Commands, Text, Movement, Customizing -@subsection Manipulating the Command History - -@cindex readline library, history commands -@cindex history commands in the readline library -Here are the @code{readline} commands for manipulating the -command history (@pxref{History List}). - -@table @asis -@item accept-line (@key{RET}, newline character) -Accept the line regardless of where the cursor is. If this line is not -empty, add it to the history list. If this line was a history line, -then restore the history line to its original state. -@c bfox: editing a cmd line retrieved from history -@c if execute it, becomes new history line -@c if edit it but move back to new line, old line stays edited, marked -@c with * in history list -- can undo to restore it - -@item previous-history (@kbd{C-p}) -Move up through the history list. - -@item next-history (@kbd{C-n}) -Move down through the history list. - -@item beginning-of-history (@kbd{M-<}) -Move to the oldest line in the history list. - -@item end-of-history (@kbd{M->}) -Move to the most recent line in the history list. - -@c must explain searches -- how to abort, when it's executed (RET), etc. -@c How get the found line for editing? -@c string is inside `', cursor at matching spot, RET executes, or just -@c start editing it -- it becomes current command -@item reverse-search-history (@kbd{C-r}) -Search backward starting at the current line and moving up through the -history as necessary. This is an incremental search. - -@item forward-search-history (@kbd{C-s}) -Search forward starting at the current line and moving down through the -the history. This is an incremental search. -@end table - -@node Numeric Arguments, Completion, Buffer, Customizing -@subsection Specifying Numeric Arguments - -@cindex readline library, specifying numeric arguments -@cindex numeric arguments, specifying in the readline library -Here is how you specify numeric arguments in @code{readline}: - -@c explain what args are for, where can use them - -@table @asis -@item digit-argument (@kbd{M-0}, @kbd{M-1}, ... @kbd{M--}) -Add this digit to the argument already accumulating, or start a new -argument. @kbd{M--} (meta-minus) starts a negative argument. - -@item universal-argument () -This lets you type numeric argument digits without metafying. -To start a negative argument use the minus key. -@c use minus when? after the ^U (or whatever bound to) -A minus sign alone, with no other digits following, means @minus{}1. - -This is normally not bound to a key. - -Assume you have bound @kbd{C-u} to universal-argument. Then -@kbd{C-u} followed by a character that is neither a digit nor a minus -sign means ``multiply the next argument by 4''. @kbd{C-u C-u} means -multiply the next argument by 16. -@c possible to reword without mentioning C-u ? -@c probably not, if unbound commands are inaccessible -@end table - -@node Completion, Miscellaneous, Numeric Arguments, Customizing -@subsection Completion: Letting @code{readline} Type For You - -@cindex readline library, completion commands -@cindex readline library, shortcut commands -@cindex completion commands in the readline library -@cindex shortcut commands in the readline library - -You can save typing by asking for completion of the word you are in the -midst of typing. The system can complete partially-typed file names, -command names, variable names, user names, and host names. You can -either specify the type of completion you would like to perform on the -text before the cursor, or you can let the system guess what kind of -name is being typed and complete it accordingly. - -@table @asis -@item complete (@key{TAB}) -Try to complete the text before the cursor - -In particular, -@c source: bfox -@itemize @bullet -@item variable - -If the word before the cursor starts with @samp{$}, -try to complete it as a variable name. - -@item user - -If the word before the cursor starts with @samp{~}, -try to complete it as a user name. - -@item host - -If the word before the cursor starts with @samp{@@}, -try to complete it as a host name. - -@item command - -If the word before the cursor is the first word in -the command line, try to complete it as a command name. -@c e.g. ema-->emacs - -@item file - -If none of the above cases apply, -try to complete the word before the cursor as a file name. -@end itemize - -@item possible-completions (@kbd{M-?}) -List the possible completions of the text before the cursor. -See above for what kind of completion is assumed. - -@c JEMS: tested 1/7/91 -- not all worked (bfox says fixed) -@item complete-variable (@kbd{M-$}) -@itemx possible-variable-completions (@kbd{C-x $}) -@itemx complete-username (@kbd{M-~}) -@itemx possible-username-completions (@kbd{C-x ~}) -@itemx complete-hostname (@kbd{M-@@}) -@itemx possible-hostname-completions (@kbd{C-x @@}) -@itemx complete-command (@kbd{M-!}) -@itemx possible-command-completions (@kbd{C-x !}) -@itemx complete-filename (@kbd{M-/}) -@itemx possible-filename-completions (@kbd{C-x /}) -@c rewrite -Each of these specify the type of completion you would like to perform -on the text before the cursor, whether it be filename, username, -hostname, variable name, or hostname completion, respectively. These -BASH-specific @code{readline} commands do not depend on a prefix -character; though, if one is there, such as the dollar sign, @samp{$}, -at the beginning of variable names, the commands will still work.@refill - -The @code{possible-@dots{}-completions} commands are similar in -functionality to the @code{possible-completions} command. - -Note that the specific completion commands are specific to BASH and are -@emph{not} defined in the @code{readline} library. -@end table - -@node Miscellaneous, , Completion, Customizing -@subsection Some Miscellaneous Commands - -@cindex readline library, miscellaneous commands -@cindex miscellaneous commands in the readline library - -@table @asis - -@item clear-screen (@kbd{C-l}) -Clear the screen, leaving the current line at the top of the screen. - -@item abort (@kbd{C-g}) -Sounds the warning bell and stops whatever was happening when you typed -these keystrokes. -For example, @kbd{C-g} can be used to abort entry of a numeric -argument (@pxref{Numeric Arguments}) or a search through command -history (@pxref{History Commands}). - -@item do-uppercase-version (@kbd{M-a}, @kbd{M-b}, ...) -Run the command that is bound to the named, but uppercase, command. -@c bfox: M-a can be bound differently from M-A -@c normally, M-a looks up & runs M-A -@c if you rebind it, they're different -@c **be careful in .inputrc to bind correct case -@c is current doc of .inputrc wrong?? - -@item prefix-meta (@kbd{@key{ESC}}) -@emph{Metafy} the next character that you type. This is for -people without a @key{META} key. @kbd{@key{ESC} f} is equivalent to -@kbd{M-f}. - -@c I have no idea what the 'last thing' is. -@c empirically: successive C-- (note: I typed hyphen, not underscore) insert -@c sucessive deletions or delete a whole contiguous set of insertion (typein) -@c bfox: consecutive insertions up to n is 1 thing -@item undo (@kbd{C-_}) -This is the incremental undo. Undo the last thing that you did. -@c last thing in current cmd? -You can undo all the way back to an empty line. -@c bfox: history has edits saved, so can undo them too - -@item revert-line (@kbd{M-r}) -Undo all changes made to this line. This is like typing the ``undo'' -command enough times to get back to the beginning of your corrections -for that line. -@end table - -@node Customizing Readline, vi mode, Syntax, Editing -@section Customizing @code{readline} - -@c ? to define/explain: home directory, ~/ (= home dir?) - -You can customize programs that use @code{readline} by putting commands -in a @code{readline} initialization file, -named @file{.inputrc}, in your home directory. -When a program (such as BASH) that uses the @code{readline} library -starts up, it checks the file @file{~/.inputrc} to set up its key bindings -and other parameters to your liking. -@c KELLEM's comments follow -@c footnote{Currently, both @code{gdb} and @code{bash} use the -@c @code{readline} library. Future interactive GNU Project programs -@c will also incorporate the @code{readline} library.} - -You can also force the initialization file to be reread -(for example, if you modify it and want to use your modifications -in BASH without logging out and logging in again) -by typing @kbd{C-x C-r} (the default key binding for -@code{readline}'s @samp{re-read-init-file} function. -@c ?? re-read-init-file not documented above -@cindex @file{.inputrc} file, re-reading the -@cindex re-reading the @file{.inputrc} file - -Three kinds of lines can appear in this initialization file: -@itemize bullet -@item comment - -A line starting with @samp{#} is a comment. - -@item key binding - -@xref{Readline Key Bindings}. - -@item variable setting - -@xref{vi mode}. -@xref{Readline Variables}. -@end itemize - -@node Readline Key Bindings -@subsection Key Bindings - -@cindex readline library, customizing -@cindex editing commands, customizing -@cindex customizing readline library commands -Although the @code{readline} library comes with a set of Emacs-like key -bindings, it is possible that you would like to use different keys. - -To bind a @code{readline} function to a key, place a line of the form - -@example -@var{key-name}: @var{readline-function} -@end example - -@noindent -or - -@example -@var{key-name}: @var{readline-function} @var{comment} -@end example - -@noindent -in the @file{~/.inputrc} file. -@xref{Readline Commands}, for the function names and their default key bindings. -Any text after the @var{readline-function} is considered to be a -comment and is ignored. -Key names are explained below. - -For example, - -@example -C-u: universal-argument -@end example - -@noindent -or - -@example -C-u: universal-argument used to be unix-line-discard -@end example - -@noindent -binds @kbd{C-u} (which is initially bound to @code{unix-line-discard}) -to @code{universal-argument} (which is not bound to any key by default). - - -@heading Key Names - -@c needs rewriting -For the key name, you can use the name of the key combination, -such as @kbd{C-f}. The various ``words'' you can use to describe keys -are: - -@table @key -@item Control-@kbd{k} -@itemx C-@kbd{k} -Holding down the control key and pressing the @kbd{k} key. - -@item Meta-@kbd{k} -@itemx M-@kbd{k} -Holding down the meta key and pressing the @kbd{k} key. -@xref{Notation}, for alternative ways of metafying a key. - -@item Rubout -@itemx DEL -The delete key. - -@item Escape -@item ESC -The escape key, or @kbd{Control-[}. - -@itemx RETURN -The enter (or return) key. - -@item Space -@itemx SPC -The space bar. - -@item LFD -@itemx NEWLINE -The @kbd{Control-j} key. - -@item TAB -The tab key. -@end table - -@heading Key Sequences - -You can also specify an arbitrary key sequence instead of a single key: - -@example -@var{key-sequence}: @var{readline-function} @var{comment} -@end example - -To do so, surround the sequence in double quotes. -@c example - -@c rewrite -If you want to use the @key{C-} or @key{M-} -specifications inside double quotes, you need to precede it with a -backslash (@samp{\}). You can also specify the escape character with -@samp{\e}. Note that you cannot use the ``words'' listed above, only: - -@example -"\C-k" -"\M-k" -"\e" -@end example - -@heading Macros - -You can bind a key (or key sequence) to a key sequence instead of -to a named function. -@c rewrite -To do so, instead of a function name, -give the key sequence in double quotes. -Keys in this sequence are named as explained above -under ``Key Sequences'' - -@c example -@c format, with comment - -@node vi mode, , Customizing, Editing -@subsection @code{vi} mode in @code{readline} - -@cindex readline library, VI commands -@cindex VI commands in the readline library -@c KELLEM wants to change @code{vi} to @sc{vi} in this section -The @code{readline} library does not have a full set of @code{vi} -editing functions, but it does contain enough to allow simple editing of -a line. - -To switch interactively between Emacs and @code{vi} -editing modes, use the command @kbd{M-C-j} (toggle-editing-mode). -@c why not listed in fns above? -- add it there -@c bfox: vi: start in insert mode -@c get into cmd mode by doing ESC; then M-C-j -@c press ESC till beeps, then M-C-j -@c beware of accidentally getting into vi mode! -To enter the @code{vi}-like editing mode directly, -without starting in Emacs mode, place the command: - -@example -@code{set editing-mode vi} -@end example - -@noindent -in your @file{~/.inputrc} file. - -@c what about 'set -o vi...' (vs. 'set -o emacs...') - -When you enter a line in @code{vi} mode, you are already placed in -``insertion'' mode, as if you had typed an @samp{i}. Pressing @key{ESC} -switches you into ``edit'' mode, where you can edit the text of the line -with the standard @code{vi} keys. Since @code{vi} is not an -officially supported Free Software Foundation product, we won't explain -the key bindings here. -@c reference? -@c KELLEM: probably should, at least, give a list of key/function list for vi -@c mode.. maybe as an appendix? - - -@node Readline Variables -@subsection Other @code{readline} Variables - -@c KELLEM supplied most of this section's content - -In addition to @code{editing-mode} (@pxref{vi mode}), -there are a number of -other variables that can be set in @file{~/.inputrc} to -affect @code{readline}'s behavior. - -To set a variable, put a line of the form - -@example -set @var{readline-variable-name} @var{setting} -@end example - -@noindent -in the initialization file. - -The current @code{readline} variables are: - -@table @code -@item editing-mode -specifies the default editing mode for the -@code{readline} library. You can specify either emacs-style or vi-style -default key bindings. The default is emacs-style key bindings. -The meaningful settings of @var{editing-mode} are: -@table @code -@item emacs - -@item vi -@xref{vi mode}, for more information. -@end table - -@item horizontal-scroll-mode -determines how to display lines longer than the width of your display. -The meaningful settings of @var{horizontal-scroll-mode} are: -@table @code -@item Off -If @code{horizontal-scroll-mode} is set to @code{Off} -(actually, any value other than @code{On} is treated as @code{Off}), lines are -``wrapped'' when they extend beyond the width of the display. -Such a line takes more than one line on the screen, -but it still counts as a single line. -(For example, @kbd{C-a} still goes to the very beginning.) - -@item On -If @code{horizontal-scroll-mode} is set to @samp{On}, the -line is shifted to the left about a third of the display's width when -the cursor extends beyond the right side of the display. -That is, the input line is scrolled between the two edges of the -screen so that the current part is visible, though other parts may not be. -@c test this -@end table - -@noindent -The default value of @code{horizontal-scroll-mode} is @code{Off}. - -@item mark-modified-lines -specifies whether or not to ``mark'' -modified history lines with an asterisk, @samp{*}. -The meaningful settings of @code{mark-modified-lines} are: -@table @code -@item Off -Modified history lines are not marked. - -@item On -Modified history lines are marked. -@end table -The default value of @code{mark-modified-lines} is @code{Off}. - -@end table - - -@c next sec added by KELLEM -@node Inputrc File, , Other Scripts, Start-up -@subsection A Sample @file{~/.inputrc} file - -@cindex inputrc file, customizing readline -@cindex inputrc file -@cindex customizing readline library, sample -@cindex readline library, sample customization file -@cindex editing commands, sample customization file - -Here's an example of a simple @code{readline} -customization file, @file{~/.inputrc}: - -@example -# -*- text -*- -# File: ~/.inputrc -# This file controls the behaviour of line input editing for -# programs that use the GNU Readline library. Existing programs -# include Camera, Bash, and Gdb. -# -# You can re-read the inputrc file with C-x C-r. -# Lines beginning with '#' are comments. -# -# Set various bindings for emacs_mode. - -Meta-Rubout: backward-kill-word Stuff after the function name ignored -#Control-u: universal-argument - -# Note that the order of the words doesn't matter. -Meta-Control-r: revert-line -Control-Meta-u: revert-line -C-Meta-T: transpose-words -M-C-k: transpose-chars -"\C-x\C-?": backward-kill-line - -# This line is bad syntax. It should have the M- before the C-. -# But it works. -"\C-\M-f": forward-word - -# Here is a macro definition. You can tell because the right-hand -# side is in quotes. -#"\C-xr": "\C-a\C-kemacs -f rmail\C-j\C-y" - -# Bind the arrow keys. (good for sun and vt220, vt100, etc.. ) -"\e[A": previous-history -"\e[B": next-history -"\e[D": backward-char -"\e[C": forward-char - -# help key macro -"\e[28~": "\C-a\C-khelp | less\C-j\C-y" VT220 help key -"\e[3~": delete-char VT220 remove key -# C-r is reverse-search-history -"\e[1~": "\C-r" VT220 find key - -# Select the mode. -set editing-mode emacs -set horizontal-scroll-mode On -@end example -@ignore -@c alternative for arrow keys -"\M-[A": previous-history -"\M-[B": next-history -"\M-[C": forward-char -"\M-[D": backward-char -@end ignore - - -@node History, Line, Editing, Top -@chapter History Substitution - -@cindex history library - -BASH provides facilities to remember commands and let you reuse them. - -The command-history features described here are not specially programmed -into BASH. -Rather, they are provided by the history library, which is used by a -number of other GNU programs besides BASH. -(In general, programs that use @code{readline} also use history.) -This means that you can use the same history facilities -with a variety of programs. - -The history library maintains a list of recent command lines, or -@dfn{events}. -@cindex event, in command history -It provides you -with functions for remembering lines on a history list, -searching through the list for a line containing an arbitrary text -string, and referencing any line on the list directly. In addition, a -history expansion function is available which allows you to easily use -those command lines again as is, or with some modifications, with very -little additional typing. - -@cindex history library, using readline library instead -@cindex readline library, using instead of history library -If you find using the history library too difficult, you can use the -readline library instead (@pxref{Editing}). The readline library -includes history manipulation by default, -@c by default? is it ever not there? -and has the added advantage of Emacs-style command line editing. -@c any reason to use ! ever? - -@menu -* Using History:: Using history substitution. - -* Events:: How to specify which history line to use. - -* Words:: Selecting words from an event. - -* Modifiers:: Modifying previous events. - -* History Size:: Changing the number of history lines saved. - -* History Shortcuts:: History substitution shortcuts. - -* History Protection:: History substitution delimiters. - -@end menu - - -@node Using History, Events, History, History -@section How to Use History Substitution - -If you type the command @code{history} on a line by itself, you are -presented with a list of events stored in the history list. For -example: - -@cindex history library, how to use the -@example -bash$ history - - 1 cd News - 2 ls - 3 ls -l - 4 more tobob.doc - 5 mail bob - 6 rm tobob.doc - 7 ls - 8 cat memo - 9 history -@end example - -@noindent -The events are numbered from the oldest command typed (in this case, -number 1) to the latest command typed (in this case, number 9). - -You can re-execute any event in a history list. First you have to -determine which line from the previous history to use, then you need to -select portions of that line for inclusion in the current one. - -The line selected from the previous history is called the @dfn{event}, -and the portions of that line that are acted upon are called -@dfn{words}. The line is broken into words in the same fashion that -the BASH shell does, so that text surrounded by quotes is considered to -be one word (@pxref{Quotation}). - -@node Events, Words, Using History, History -@section Determining Which History Line to Use - -@cindex history library, events in -@cindex events, history library and -@cindex history, determining events -@c why called substitution? -By far the most common use of this @dfn{history substitution} is simply -to reuse an entire line. One way this can be done is to enter a -line which consists of @samp{!} followed immediately by enough -characters to uniquely identify the beginning of the line you want to -reuse. For example, @samp{!cat} re-runs the last @code{cat} -process (@samp{cat memo}) in the above history list: - -@example -bash$ !cat -cat memo -This is a memo. -bash$ -@end example - -@cindex command lines, reusing -@cindex reusing command lines -@cindex history, reusing command lines -Another way to reuse a line is to follow the @samp{!} with a number, -which specifies which line in the history list to use. For example, to -reuse @samp{cat memo} we could have typed: - -@example -bash$ !8 -cat memo -This is a memo. -bash$ -@end example - -A third way is to type @samp{!?@var{string}}, which says to look -backwards through the history for the first line which contains -@var{string}. Here's yet another way of re-using @samp{cat memo}: - -@example -bash$ !?memo -cat memo -This is a memo. -bash$ -@end example - -@cindex events, referring to -@cindex history, referring to events -As we have just demonstrated, there are several ways to refer to an -event: you can use its relative position in the history list, -@c relative position not demonstrated above? -its absolute position in the history list, or any text the event may -contain. Here is a table summarizing the various ways to refer to an -event: - -@table @code -@item !! -refers to the previous command. - -@item !@var{n} -refers to an event by its absolute position in the history -list. It refers to command line number @var{n}, where -@var{n} is the line number shown by the @code{history} command. - -@item !-@var{n} -refers to an event by its relative position in the history -list. It refers to the command line @var{n} before the current line. - -For example: - -@example -bash$ echo a -a -bash$ echo b -b -bash$ !-2 -echo a -a -bash$ -@end example - -@noindent -@samp{!-2} may be used to re-run the command prior to the last command -entered. Successive usage of @samp{!-2} may be used to cycle the last -two commands. In fact, the last @var{n} commands may be cycled through -repeatedly by using @samp{!-@var{n}}. - -@item !@var{string} -refers to the most recent command @emph{beginning} with @var{string}. - -@item !?@var{string} -@itemx !?@var{string}? -refers to -the most recent command containing @var{string}. The closing -@samp{?} is optional, and is necessary only when you need to separate -the event designator from additional text. -@c explain need to separate - -Here's an example. Given the following two commands, entered in this -order: - -@example -bash$ cp /etc/motd ~ -bash$ rcp /etc/motd unsuspecting:/etc/motd -@end example - -@noindent -@samp{!cp} matches the first command, while @samp{!?cp} matches the -second command. - -@item !# -@itemx !:# -both refer to the current line so far. For example: - -@example -bash$ echo foo !# -echo foo echo foo -foo echo foo -bash$ -@end example -@end table - -No matter which way you choose to refer to an event, the shell searches -its history list from the most recent event to the least recent event, -until it finds a match for your request. If your request is too -ambiguous, -@c what ambiguity is possible? all are numbers or refer to most recent -or if no such event exists, you are given an error message. - -Whenever the shell sees the special character -@samp{!} in a command line, it checks the history list and makes the -appropriate substitution. There are some exceptions: if @samp{!} is -followed by a @key{SPC}, @key{TAB}, @key{RET}, @samp{=} or @samp{(}, or -preceded by @samp{<} or @samp{|}, history substitution does not take -place. -@c should samp's in above be kbd's? should key's be wrapped in kbd's? -@c why are those contexts exceptional? what DOES happen? -@c why not also preceding b [, for filename patterns? - -@node Words, Modifiers, Events, History -@section Words Within Events - -@cindex history, words in -@cindex history, selecting words -@cindex words, selecting from history -It is possible to select and use only portions of an event. You can -select any word, or series of words, from an event. Several words -surrounded by quotes are considered to be one word. -@c single quotes? double quotes? - -The words of an event line are numbered from left to right, with the -first word (the command name) being 0. For example: - -@example -bash$ echo one two three four five -@end example - -@noindent -In this example, word 0 is @code{echo}, and word 5 is @code{five}. - -To specify a particular word from a previous event, follow the event -specification with a colon, @samp{:}, and a designator for the desired -word, or words, from that event. The word designators are: -@c must define 'event spec' above - -@table @code -@item 0 -The number 0 represents the first word, which is almost always the -command name. - -@item @var{n} -This matches the @var{n}'th word. - -@item ^ -This is a special notation representing the first argument (that is, -word 1). - -@item $ -This is a special notation representing the last argument. - -@item % -This represents the word matched by the most recent pattern search, -@code{?@var{string}@r{[}?@r{]}}. - -@item @var{x}-@var{y} -This matches a range of words. -@c inclusive - -@item -@var{y} -This is equivalent to the range @code{0-@var{y}}. - -@item * -This matches all the words after word 0, up to and including the last -word. This is similar to matching the range @code{^-$}, except -@code{*} can match 0 or more words, while @code{^-$} must match 1 or -more words. - -@item @var{x}* -This is equivalent to the range @code{@var{x}-$}. - -@item @var{x}- -This is equivalent to the range @code{@var{x}-($-1)}. -@c what's that useful for? looks bizarre -@end table - -The @samp{:} that separates the event specification from the word -designator can be omitted if the word designator begins with a @kbd{^}, -@kbd{$}, @kbd{*} or @kbd{%}. -@c but not - ? -When referring to the immediately -preceding command, you can omit the line identifier if you want. -Therefore, @samp{!:2} refers to word 2 in the previous command line.@refill - -Note that @samp{!} alone on a line means nothing in terms of history -expansion. Also, if an event contains more than one command line -separated by semicolons, the semicolons count as words too. - -Here are several examples using the various word designators in the -above table: - -@example -bash$ mkdir /nfs/cwjcc/fs2/src/Gnu/src/bash/1.06 -bash$ mv bash.tar.Z !$ -mv /nfs/cwjcc/fs2/src/Gnu/src/bash/1.06 -bash$ cd !$ -cd /nfs/cwjcc/fs2/src/Gnu/src/bash/1.06 -@end example -@c should the mv response include bash.tar.Z ?? - -@noindent -This example uses the shorthand for the last word on a command line to -avoid typing in a lengthy path name more than once. -@c show equivalent & explain that !=prev cmd, $=last wd - -@c need a REAL example -@example -bash$ echo a -a -bash$ !! b -echo a b -a b -bash$ !! c -echo a b c -a b c -bash$ echo !* -echo a b c -a b c -@end example -@c above, shows expanded cmd before does it. -@c not all examples do, but all should - -@noindent -This example demonstrates how you can build up a command line -with successive applications of the @samp{!!} notation. You then use -the @samp{!*} expansion to make use of all arguments accumulated so -far. - -@example -bash$ cc -o prog -g a.c b.c c.c -bash$ cmd=!:0 output=!:2 optimize=!:3 files="!:4-$" -@end example -@c what's cc, what's cmd= ? - -@noindent -@c explain -This shows one possible use of the history facilities to break up -command lines into individual elements. After the second command, the -individual portions of the command may be reused, perhaps to print the -source files just compiled with @samp{lpr $files}. - -@node Modifiers, History Size History, Words, History -@section Modifying Previous Events - -@cindex history, modifying previous events -@cindex events, modifying previous -@cindex modifying previous events -Sometimes you don't want to re-execute an event exactly. -Perhaps you -mis-typed a file name, or want to substitute a new pathname, or a -different argument. Whatever the reason, you can modify an event, or -any word of an event, by following that event with a colon, @samp{:}, -and a modifier. - -Here is a list of modifiers and their explanations: - -@c terminology to explain: pathname, head, filename extension, basename, tail -@table @code -@item h -This removes the last element of a pathname, leaving the only the @emph{head}. - -@item r -This removes a filename extension, or trailing suffix -@samp{.@var{xxx}}, leaving only the @emph{root}. - -@item e -This removes all @emph{but} the filename @emph{extension}, or trailing suffix -@samp{.@var{xxx}}. - -@item t -This removes all of the leading pathname components, leaving only the -@emph{tail}. - -@item s/@var{string1}/@var{string2} -This @emph{substitutes} the value of @var{string2} for @var{string1} the -first time it appears. If the @code{g} flag is given as well, the -changes take place globally; that is, all occurrences of @var{string1} -are replaced with @var{string2}. - -@item p -This @emph{prints} the new command but does not execute it. This -allows you to preview the effects of modifiers safely. - -@c s and gs added by KELLEM -@item s/@var{this}/@var{that} -substitutes the first occurrence of @var{this} with @var{that} on -the specified history line. - -@item gs/@var{this}/@var{that} -globally substitutes @var{this} with @var{that} on the specified -history line. -@end table - -The modification is applied only to the first applicable word -on the line. If there are two or more occurrences on that line, the -subsequent occurrences are not changed. If no word on the line is -applicable, then you get an error message. - -Here are some examples of reusing command lines with slight -modification: - -@example -bash$ diff -c2 old/shell.c shell.c > shell.diffs -bash$ !!:gs/shell/builtins -diff -c2 old/builtins.c builtins.c > builtins.diffs -@end example - -@noindent -This example demonstrates the use of the substitution mechanism to -re-run a command. This example may be used repeatedly to create -``diffs'' of a number of changed files without retyping the lengthy -command each time. - -@example -bash$ echo /a/b/c/d -bash$ head="!:1:h" tail="!:1:t" -bash$ echo $head $tail -/a/b/c d -@end example -@c what's the = ? variable setting? - -@noindent -This shows a possible use for the filename splitting facilities. - -@example -bash$ edit file.c -bash$ f="!:1:r" ; echo making $@{f@}.o ; make $@{f@}.o ; unset f -@end example - -@noindent -This is a rather clumsy way to remake an object file from a -just-modified source file. While this example shows the use of the -history library, there are easier ways to remake an object file. For -example you can encapsulate the @code{echo} and @code{make} into a -function, like this: - -@c ? -@example -bash$ type make_o -make_o is a function -make_o () -@{ - echo making $@{1@}.o - make $@{1@}.o -@} -bash$ edit file.c -bash$ make_o !:1:r -make_o file -@end example - -@node History Shortcuts, History Protection, History Size History, History -@section Shortcuts - -@cindex command lines, making changes to -@cindex command lines, history library and -A @samp{^} at the beginning of a command line is a special way to -designate that you want to make changes, or corrections, to the -previous command line. In this case, @samp{^} is equivalent to -@samp{!:s^}, and provides a convenient and special shorthand for making -substitutions to the (immediately) preceding event. The syntax for -this substitution is: - -@example -^@var{old}^@var{new} -@end example - -@noindent -The @var{old} characters between the two @samp{^} are replaced by the -@var{new} characters following the second @samp{^}. For example: - -@example -bash$ mroe parse.y -bash: mroe: command not found -bash$ ^mroe^more -@end example - -@noindent -The first command contained a spelling error, resulting in an unknown -command. Using the quick substitution feature, we can rerun the -command with the correct spelling substituted. - -@node History Protection, , History Shortcuts, History -@section Delimiters - -You can delimit a history substitution from the characters that follow -it by surrounding that substitution with @samp{@{}and @samp{@}}. For -example: - -@example -bash$ make flags.o - @r{[} errors compiling flags.c @r{]} -bash$ edit @{!$:r@}.c -@end example -@c explain: !... means last arg basename, namely 'flags' - -@noindent -In the above example, we attempt to use the @code{make} command to -create @file{flags.o} from @file{flags.c}. There are errors in -@file{flags.c}, so history substitution is used to create the name of -the source file so that it can be edited. - -@c can't understand next paragraph -- what makes the {} a NOP? -@c also, if braces not needed here, need better example. -While braces are not strictly necessary in this example, note that the -braces are not treated specially by the history substitution mechanism -in any way. This works because brace expansion is enabled on our -version of BASH. @emph{If brace expansion is not enabled, enclosing a -history substitution in braces will cause those braces to be retained.} - -@node Quotation, , echo, File Names -@chapter Preventing Shell Interpretation of Special Characters - -@c Is quoting for other parts of commands too, or just for wildcards? -@c (Current chapter separated from old wildcard chapter) -@c sounds more general - -@cindex command lines, quoting -@cindex quoting -There are times when you want the shell to treat special characters as -regular characters, and not expand or interpret them. -@c what does 'interpreted' mean? different from 'expanded'? -To do this, -you must @dfn{quote} the special character by preceding the character -with a @samp{\} or by surrounding the character (or part of -the argument containing it) with single or double quotes. -@c justification? isn't it bad & very rare to have file names with -@c special chars in them? - -@table @code -@item \ -The backslash, @samp{\}, -forces the character that follows it to have its literal -meaning, suppressing any special interpretation in the shell. -Exception: A -backslash followed by a newline character signifies a continuation of -a shell command line onto the following line (@pxref{Continuation}). -@c newline=RET ? - -Note that the backslash protects a single character, not a string -of characters. - -For example, @samp{rm bad*name} deletes all files whose names start with -@samp{bad} and end with @samp{name}, whereas @samp{rm bad\*name} deletes -only the file named @file{bad*name}. The @samp{\} prevents the shell -from interpreting the @samp{*} as a wildcard. - -You can protect the backslash itself from being interpreted by the -shell by preceding it with another backslash. -@c example - -@item '@dots{}' -Single quotes turn off the special meanings of @emph{every} character -between them. All these characters are taken literally. This allows -you to include blank characters in a string. For example: -@c huh? why are blanks interesting? how relate to file names? -@c '...' equivalent to \ in front of every char? - -@c what does example have to do with wildcards? -@c what are such strings for? -@example -'This $#?!!# sentence is taken literally.' -@end example -@c example with > 1 wildcard instead? e.g. rm bad?*name vs. -@c rm bad'?*'name = rm 'bad?*name' - -Note that even the backslash character is treated literally between -single quotes. Therefore, there is no way to include single quotes -themselves in the string. -@c explain or remove - -@item "@dots{}" -Double quotes turn off the special meanings of every character between -them @emph{except} @samp{$}, @samp{'}, and @samp{\}. The characters -@samp{$} and @samp{'} retain their special meanings within double -quotes. When surrounded by double quotes, the backslash, @samp{\}, -retains its special meaning only when followed by @samp{$}, @samp{`}, -@samp{"}, @samp{\}, or the newline character. -@c whole "" section has no clear relation to filename wildcards - -For example: - -@c example not related to file names -@example -"The value of test is $test." -@end example - -You can protect a double quotation mark from being interpreted by the -shell by preceding it with the backslash character, as in @samp{\"}. -A double quote may be quoted within double quotes by preceding it -with a backslash. - -Warning: the special parameters @samp{$*} and @samp{$@@} have special -meanings when inside double quotes (@pxref{Predefined}). -@end table - -@c following par: need examples of why/when need such chars quoted -You should quote any special character if you -do not want the shell to use that character's special meaning. -Therefore quote all redirection operators, wildcard characters, -command-line characters, quote characters, and grouping characters if -they are to represent themselves. In particular, the following -characters should be quoted if they are to represent themselves: -@cindex quote, when to - -@example - ! | & ; < > ( ) $ ` ' " \ * ? [ ] # -@end example -@c above is all special chars? what about : { } (others?) - -@noindent -In addition, you should always quote the space, tab, and newline -characters if they are not to be interpreted by the shell. You can -use single or double quotes around an entire argument or word, or -around just part of one. For example: - -@example -make CC="cc -O" -@end example -@noindent -shows how to specify @samp{cc -O} as the compilation command. - -@node Advanced Redirection -@chapter Redirecting Input and Output (Advanced) - -@node Other Redirections, Pipes, Here-documents, I/O -@section Redirection Using File Descriptors - -@cindex redirection operators, with file descriptors -@cindex file descriptors -@cindex standard input, redirecting -@cindex standard output, redirecting -@cindex standard error, redirecting -@cindex redirecting input and output -The basic redirection operations (@pxref{Redirection}) -are actually special cases of a more general mechanism for -affecting the input and output files used by programs. - -Programs actually do their input and output in terms of @dfn{file -descriptors} (non-negative integers) that are associated with files or -devices. -@c bfox: file descr is index to array of file info -For example, a program might read from file descriptor 3 and -write to file descriptors 6 and 8. -The redirection operators are a means of associating open files with -file descriptors, so that such a program will use the desired files. - -In order for the shell to be able to set up command input and output -in simple, general ways -- hooking commands together with pipes -(@pxref{Pipes}) or redirecting input and output to files as shown -earlier (@pxref{Redirection}) -- certain conventions have been -established for file descriptors. Descriptors 0, 1, and 2 -are generally used as follows: - -@table @asis -@item 0 -is called @dfn{standard input}. -Programs usually read their input from standard input. -@cindex standard input, file descriptor 0 - -@item 1 -is called @dfn{standard output}. -Programs usually write their output to standard output. -@cindex standard output, file descriptor 1 - -@item 2 -is called @dfn{standard error}. -Programs usually write their error messages to standard error. -@cindex standard error, file descriptor 2 -@end table - -Other file descriptors have no standard meaning. - -You can redirect any file descriptors you like, but -not all redirections make sense. In particular, redirecting a file descriptor -number that the program doesn't use will have no effect. - -In general, a redirection using file descriptors looks like this: -@ignore -@c they were each shown with args, but it's probably better to consider -@c those as part of the command. E.g. it was: -@var{command} @r{[}@var{arguments}@r{]} @r{[}@var{n}@r{]}> @var{m} -@end ignore -@example -@var{command} @r{[}@var{n}@r{]}@var{redirection-operator} @var{m} -@exdent @r{or} -@var{command} @r{[}@var{n}@r{]}@var{redirection-operator} @var{file} -@end example - -@noindent -where @var{n} (which is optional) and @var{m} are file descriptors, -@var{file} is a file, -and the @var{redirection-operator} is as described below. - -Warning: -If @var{n} is supplied, there must not be any space between it -and the operator. - -If the file descriptor @var{n} is omitted and the first character of -the redirection operator is @samp{<}, @var{n} defaults to the -standard input (file descriptor 0). If @var{n} is -omitted and the first character of the redirection operator is -@samp{>}, the @var{n} defaults to the standard output (file -descriptor 1). - -@table @code -@item @var{n}> @var{file} -@itemx @var{n}>| @var{file} -@itemx @var{n}>> @var{file} -open @var{file} for output on file descriptor @var{n}. -@var{n} defaults to 1 (standard output). -Thus the operators @samp{>}, @samp{>|}, and @samp{>>} described earlier, -which redirect standard output, are equivalent to @samp{1>}, @samp{1>|}, -and @samp{1>>} respectively. -@cindex @code{>} operator, with file descriptor -@cindex @code{>|} operator, with file descriptor -@cindex @code{>>} operator, with file descriptor - -@c following itemize is exact copy from basic chapter -@itemize @bullet -@item -If @var{file} doesn't yet exist, it is created. - -@item -If @var{file} already exists: -@itemize @bullet -@item -With @samp{>} and @samp{>|}, @var{file} is erased before the -first output is written to it. Be careful: -If a file of the same name already exists, -its contents are deleted before your command's output is -written to that file. -If you don't want @samp{>} to erase existing files, set the -shell's @code{noclobber} variable; then -@samp{>} with an existing file will generate an error message and leave -the file alone. (But note that @samp{>|} will clobber existing files -regardless of the setting of the @code{noclobber} variable.) - -@item -With @samp{>>}, the output is appended to the end of an existing @var{file}. -@end itemize -@end itemize - -For example: - -@example -bash$ find / -name resume -print 2> /dev/null -@end example - -@noindent -This command looks for and prints the pathnames of all files -named @file{resume} by traversing all directories under the @file{/} -directory. When @code{find} encounters permission problems (for -example, directories it does not have permission to read) it prints an -error message on standard error. The above redirection @samp{2> -/dev/null} forces all these error messages to be written to the special -file @file{/dev/null}, which simply discards these messages so that -only the requested @file{resume} files are printed on standard output. -This saves you from wading through pages of uninteresting error messages -from @code{find}. -@c rewrite in terms of utility for redirecting just error w/o output - -@item @var{n}< @var{file} -opens @var{file} for input on file descriptor @var{n}. -@var{n} defaults to 0 (standard input). -Thus the operator @samp{<} described earlier, which redirects standard -input, is equivalent to @samp{0<}. -@cindex @code{<} operator with file descriptor -@c what if n=1 or 2(output)? -@c I tried 'who 1< foo' . Got err msg if foo not exist, no err msg but -@c also no output if foo existed (foo left untouched) -@c bfox: probably who wrote to 1, but it was open for read, not write, -@c but who didn't check for errors on write - -@cindex redirection operators, reading and writing -@item @var{n}<> @var{file} -opens @var{file} for both reading and writing on file descriptor @var{n}. -@var{n} defaults to 0 (standard input). -@cindex @code{<>} operator, redirecting input and output - -As with @samp{>} (above), an existing @var{file} is erased before the -first output is written to it unless the shell's @code{noclobber} -variable is set (in which case @samp{<>} with an existing file will -generate an error message and leave the file alone.) - -@item @var{n}>& @var{m} -makes the file descriptor @var{n} be a copy of the file descriptor @var{m}. -@var{n} defaults to 1 (standard output). -@c no requirement that n and/or m be output descriptors? -@c n=0(input) seems harmless -@c what if m=0(input)? 1>&0 seems to be NOP w no msg -@c e.g. date 0&0 sends output (1) to tty, not to foo -@cindex @code{>&} operator with file descriptor - -Thus the redirection @samp{>&@var{file}} described earlier, which -redirects standard output and standard error to the @var{file}, -is equivalent to @samp{>@var{file} 2>&1}. - -For example : - -@example -bash$ make >make.log 2>&1 -@end example - -@noindent -@code{make} produces output both on the standard output (as it executes -commands) and on the standard error (in the case that a file didn't -compile correctly, etc.). -The first redirection operator on the line says to send output for -the standard output into a file called @file{make.log}. -The second redirection causes -output to file descriptor 2 (the standard error) to be output wherever -the output from file descriptor 1 is going (the standard output). -Thus, both the standard error and standard output are written to -@file{make.log}. (There is a shorthand for -redirecting both the standard output and the standard error to a single file. -@xref{Redirection}, @samp{>&@var{file}}.) - -@item @var{n}<& @var{m} -makes the file descriptor @var{n} be a copy of the file descriptor @var{m}. -@var{n} defaults to 0 (standard input). -(Note that @code{@var{n}<& @var{m}} and @code{@var{n}>& @var{m}} behave -identically except when @var{n} is omitted, in which case they have -different defaults.) -@cindex @code{<&} operator with file descriptor - -@c note: (bfox) >&- same as <&-, only diff is default value of n -@item @r{[}@var{n}@r{]}>&- -closes the file descriptor @var{n}. -@var{n} defaults to 1 (standard output). -@c bfox: closes file & removes association of file w. n - -@item @r{[}@var{n}@r{]}<&- -closes the file descriptor @var{n}. -@var{n} defaults to 0 (standard input). -(Note that @code{@r{[}@var{n}@r{]}<&-} and @code{@r{[}@var{n}@r{]}>&-} -behave identically except when @var{n} is omitted, in which case they -have different defaults.) - -@end table - -@heading Multiple Redirections - -More than one redirection operator can appear in a command. -@cindex redirection operators, using multiple -@emph{The order in which redirections are specified is important.} The -shell evaluates redirection operators in the order encountered, from -left to right. A file descriptor specified with an earlier -redirection operator can be used by a subsequent redirection. For -example: - -@c strange example: plain >& does it without file descriptors -@example -ls > error-list 2>&1 -@end example - -@noindent -redirects first the standard output (@code{>}) -and then the standard error (@code{2>&1}) to the -file @file{error-list}, while the command: - -@c strange example: plain > does it without file descriptors -@example -ls 2>&1 > error-list -@end example - -@noindent -redirects only the standard output to the file @file{error-list}. The -first redirection operator @code{2>&1} -makes the standard error (2) be a copy of the -standard output (1) @emph{before} the standard output is redirected to -@file{error-list} with @code{>}. - -@heading Redirection in Pipelines - -Each command in a pipeline may -include redirection operators. These redirections are performed after -the pipes that link the commands are created. -That is, first the standard input and standard output of each command -in the pipeline are set up as specified by the pipes, then any -redirections specified in the commands are performed. -Thus such a redirection can access the standard input and output set up -by the pipeline. For example, @samp{2>&1} in the first command in -a pipeline makes that command's standard error be the same as its standard -output, hence sends the command's error messages along with its ordinary -output to the second command in the pipeline. - -@node Here-documents, Other Redirections, Redirection, I/O -@section Redirection to Shell Scripts - -@c what are << and <<- for? shellscripts? probably not a good idea at -@c tty, so examples with prompts are poor. -@c bfox: also good in functions -@c Posix p.172 calls it 'here-document' in 'shell input file' -@c add Intro here to explain it. -@c bfox: say it is traditionally called here-document -In general, such a redirection of input looks like this: - -@ignore -@c they were each shown with args, but it's probably better to consider -@c those as part of the command. E.g. it was: -@var{command} @r{[}@var{arguments}@r{]} << @var{word} -@end ignore -@example -@var{command} @var{redirection-operator} @var{word} -@end example - -@noindent -where the @var{redirection-operator} is as follows, -and spaces surrounding it are optional: - -@table @code -@item << -instructs the shell to read input for @var{command} -from the same place as the shell is reading commands from. -The shell reads lines -until a line containing only the given @var{word} (with no trailing blanks) is -seen. All of the lines read up to that point are considered the input -for the @var{command}. -@cindex @code{<<} operator -For example: - -@c example was CAT << foo, but sort seems more interesting. -@c Need a real example. -@example -bash$ sort << foo -hip -hip foo -hooray -and -foo -and -hip -hip foo -hooray -bash$ -@end example - -@noindent -The four lines after @samp{sort << foo} became the input to the -@code{sort} command. The fifth line, containing @samp{foo} on a line by -itself, marked the end of the input. (Note that the @samp{foo} in the -second input line did not end the input because the line contained other -text as well.) The four lines after the end of the input are -the output of the @code{sort}, namely the input lines in alphabetical order. - -@item <<- -@samp{<<-} is like @samp{<<}, except that leading tab characters are -stripped from each line of input as it is read. -@c how justify version that strips tabs - bfox: for formatting? -@cindex @code{<<-} operator -@end table - -@c Posix says can have more than one <<, <<- in command. -@c cover that? True of any other redirection operators? - - -@node Grouping -@chapter Grouping Commands - -@c placeholder for stuff to rewrite completely -@c new concept: subshell, shell environment, [non]interactive shell - -@table @code -@item @{ @var{list}; @} - -@c what is format of the list? -Curly braces are used to group commands. The list of commands is -executed in the current shell environment. The curly braces -must either begin a line, follow a @samp{;}, or be surrounded with -whitespace for the shell to recognize them as grouping commands. For -example: -@cindex commands, grouping -@cindex grouping commands, using @{ @} - -@example -bash$ foo=bar -bash$ @{ ls -l ; echo "Listing finished."; echo $foo @} >listing -@end example - -@noindent -lists the files in the current directory, outputs ``Listing finished.'', -and outputs ``bar'', all of which is redirected into the file -@file{listing}. Unlike the following example, the grouping commands do -not start a subshell, so the current shell's variables are available for -use. - -@item (@var{list}) -@c what is format of the list? -The list of commands is executed in a subshell. Variable assignments -and built-in commands that affect the shell's environment do not remain -in effect after the command finishes. -@cindex grouping commands, using ( ) -@cindex commands, grouping - -The fact that commands within parentheses are executed within a -subshell means that the parent shell is unaffected by shell -side-effects of those commands. Changes in shell state caused by -commands executed in a @emph{subshell} do not affect the parent shell. - - -Let's illustrate: -@c silly example -- the cd in the subshell is useless - -@example -bash$ pwd -/home/alan/work -bash$ (cd ..) -bash$ pwd -/home/alan/work -bash$ cd .. -bash$ pwd -/home/alan -bash$ -@end example - -@noindent -In this example, the current working directory is -@file{/home/alan/work} as shown by the output of the @code{pwd} -command. The command @code{(cd ..)} executes in a @emph{subshell} so -that it does not change the current directory of the parent shell and -the user remains in the original directory, @file{/home/work/alan}. - -However, when the command @code{cd ..} is executed in the parent shell -(that is, it is executed without being surrounded by parentheses) the -parent shell's current working directory is changed to -@file{/home/alan}. -@end table - - -@node Aliases, Functions, Line, Top -@chapter Aliases - -@cindex alias -@cindex shorthand, command names -@cindex command name shorthand -Aliases are a way to rename, redefine, or otherwise rearrange commands -to your liking. An alias is created using the following syntax (note -that there cannot be any spaces before or after the @samp{=} sign): - -@example -alias @var{name}=@var{expansion} -@end example - -@noindent -The @var{name} is the command-name shorthand you want to enter at the -shell prompt. The @var{expansion} is the command that -the @var{name} will stand for. For example: - -@example -alias more=less -@end example - -@noindent -causes the program @code{less} to be substituted for the operating -system's @code{more} program every time the word @samp{more} is typed. -@c next sec says: any time typed as command part (1st part) of cmd - -@c ? I don't understand this text & example -@c see kellem's example below -If the last character of the value for the alias, -@var{expansion}, is a blank, then the word following the alias -will also -@c ? also = in addition to the cmd part of the line? -be checked for substitution. For example:@refill - -@example -alias time='time ' -@end example - -@noindent -allows you to time a command for which you have defined an alias. With -this alias you can time what you would be running if you typed the -expanded version as a command. - -For example, let's say you defined an alias @samp{alias more=less}. -Normally, if you type @samp{time more}, @file{more} is -timed. However, if the @samp{time} alias has been previously defined, -typing @samp{time more} times @file{less}, which is -what you want. The alias @code{more} is expanded, and its value -(@code{less}) is substituted as the program to time. - -If the value for the alias, @var{expansion}, contains spaces, -tabs, or metacharacters, -@c ? metachar means M-... ? What's reason to include metas, not C- etc.? -you must enclose that definition in quotes -to avoid misinterpretation by the shell. For example, -let's say that you use the command-option sequence @samp{ls -la} at -lot. You can assign this command to the alias @code{la} to -make typing quicker and easier: - -@example -alias la='ls -la' -@end example - -@noindent -Now you can type @samp{la} instead of @samp{ls -la} when listing files. - -@c KELLEM: you can make aliases for arbitrary text, -@c that is all an alias really is (a text substitution). can be useful for -@c bash$ alias foo=some.host.somewhere -@c bash$ alias rlogin="rlogin " -@c bash$ rlogin foo -@c is same as `rlogin some.host.somewhere' - -@cindex aliases, listing -To get a list of all the currently defined aliases, simply type the -@code{alias} command with no arguments. A list of aliases in the form -@samp{@var{name}=@var{value}} is displayed on the standard output. If -you want to know if a specific shorthand name has any aliases, you can -type:@refill - -@example -alias @var{name} -@end example - -@noindent -This tells you if any aliases exist for that specific @var{name}. - -@cindex aliases, the shell and -Aliases are local to the shell in which they were declared. This means -that aliases can't be used within shell scripts @emph{unless those -aliases were declared in that script}. This means that the alias -command has to be executed in the shell script before the command which -references that alias is read. -It also means that aliases disappear when their shell is terminated. -@emph{BASH aliases cannot be exported to another shell.} To get BASH -to remember an alias permanently, you have to enter that alias in your -login file (@pxref{Start-up}). - -@menu -* Advanced Aliasing:: Creating aliases for complex commands. - -* Remove:: Removing aliases. -@end menu - -@node Advanced Aliasing, Remove, Aliases, Aliases -@section Creating Aliases For Complex Commands - -@cindex aliases, complex -@cindex aliases, string substitution and -@cindex string substitution and aliases -While you can use simple string substitution with aliases, note that -the @code{alias} command is limited to expanding only the first word in -a command. Using pipes, @samp{|}, semicolons, @samp{;}, -@samp{&&} (@sc{and}) and @samp{||} (@sc{or}), it is possible to have more -than one command sequence per command line. -@c ? terminology problem is killing us here -- command meaning either -@c prog to run or simple cmd with args or compound command -In this case, you can have -more than one alias on the command line, but you can still only have -one alias per command. For example, let's create two more -aliases:@refill - -@example -bash$ alias listdir='ls' -bash$ alias linecount='wc -l' -@end example - -@noindent -and combine those aliases on one command line: - -@example -bash$ listdir | linecount -@end example - -@noindent -The @code{alias} command expands @code{listdir} to @code{ls} and -@code{linecount} to @code{wc -l} because @code{listdir} and -@code{linecount} begin @emph{separate} commands.@refill - -@cindex aliases, versus functions -@cindex aliases, using functions instead of -@cindex functions, versus aliases -@cindex functions, using instead of aliases -If you need more complicated expansion in a command line, use a shell -function (@pxref{Functions}). In particular, there is no mechanism in -BASH for using arguments in the replacement text of aliases. If -arguments are needed, a shell function should be used instead of an alias. - -@cindex aliases, multiple commands and -@cindex multiple commands, aliases and -You can also make aliases that represent multiple commands. For -example, you can create an alias that goes to a directory of your -choice (@code{cd}), lists what is in that directory in long form -(@code{ls}), and shows you the -total disk space used by that directory (@code{du}): - -@c KELLEM: dashes are not allowed in POSIX.2 draft 10 in aliases (not a valid -@c shell identifier), I believe. 'course, the dashes are fine with me. :-) -@example -alias m-use='cd /usr/spool/mail; ls -la; du' -@end example - -@noindent -To use this alias, just type @code{m-use}. - -@c ref for keywords? Is there a list of keywords somewhere? -Lastly, you can alias keywords. For example, if you would rather end -the @code{do} part of a loop command (@pxref{Conditionals and Loops}) -with @code{od} than with the normal @code{done}, you can - -@example -bash$ alias od=done -bash$ for i in 1 2 3 -> do -> echo $i -> od -1 -2 -3 -@end example - -@node Remove, , Advanced Aliasing, Aliases -@section Removing Aliases - -@cindex aliases, removing -@cindex removing aliases -@cindex @code{unalias} command -@cindex aliases, the @code{unalias} command -To get rid of aliases, use the @code{unalias} command. This command -looks like this: - -@example -unalias @var{name1} @var{name2} @dots{} @var{nameN}@refill -@end example - -@noindent -The @code{unalias} command removes all the named aliases from the list -of defined aliases. For example: - -@example -unalias m-use -@end example - -@noindent -removes the @code{m-use} alias, if present. - -@node Variables, Environment, Scripts, Top -@chapter Shell Variables - -@c need new introduction - -@c bfox: home etc.: bash tries to get from env, if not there, creates -@c * etc. are really predefined -@c 5 kinds of vars: -@c inherit or create (e.g. home) -@c predefined (*, @, ...) -@c magic vars -- auto_resume, noclobber -- control shell's internal operation -@c user vars -@c dynamic vars -- seconds, etc. - -@c to coordinate -- what is explained here vs. customization chapter re -@c how to set/unset a var, see its value, etc. - -@cindex variables, what are -@cindex shell variables -@cindex shell variables, types of - -@node Variable Mechanics -@section Mechanics of Named Variables - -Shell behavior that depends on a variable may depend on: - -@itemize -@item -the value of the variable - -@item -whether the variable exists (is set), independent of what value it has -@end itemize - -Thus, in order to configure a shell variable to get the effect you want, -you may need to know: - -@itemize -@item -how to tell whether a variable exists (is set) - -@item -how to create (set) a variable - -@item -how to unset a variable (make it cease to exist) - -@item -how to find out the value of a variable - -@item -how to change the value of a variable -@end itemize - -To find out the value of a variable, type -@samp{echo $@var{name}}, where @var{name} is the variable of interest. -(Be sure to include the @samp{$}: If you omit it, @code{echo} just -repeats the @var{name} itself.) -@itemize -@item -If something is printed, that is the value of the variable. - -@item -If nothing is printed, then either the variable exists and has a null -(invisible) value, or the variable does not exist. -@end itemize - -@noindent -More generally, to get the value stored in a variable, precede the variable's -name by a dollar sign, @samp{$}. -@c explain what 'more generally' is - -To set a variable (create a new variable or change the value of -an existing variable), type -@samp{@var{name}=@var{new-value}}, -where @var{name} is the variable you want to set and -@var{new-value} is the value you want it to have. -Don't leave any blank space around the @kbd{=}. -If you just want to create the variable, and don't need to give it any -particular value, you can simply omit the @var{new-value} -and type @samp{@var{name}=}. - -The name of a shell variable must start with a letter or an underscore -and it can contain only letters, digits, and underscores. -Uppercase and lowercase letters are not equivalent in names. -Be careful to type variable names correctly: -If you type a name wrong before an @samp{=}, you will either change -the wrong variable or create a new variable. - -To include whitespace (spaces, tabs, or newline characters) in a -variable's value, either quote the value with @code{"@dots{}"} or -@code{'@dots{}'}, or precede each whitespace character with a backslash, -@samp{\} (@pxref{Quotation}). - -@c bfox: this stuff is done at assignment time -@c Value undergoes tilde expansion, parameter and variable expansion, -@c command substitution and quote removal. - -To get rid of a variable, type @samp{unset @var{name}}, -where @var{name} is the variable of interest. - -To find out whether a variable exists, you can do any of the following: -@itemize -@item -Type @samp{set} to get a listing of all your shell variables in -alphabetical order, and see if the variable is in the list. - -@item -Type @samp{set | grep @var{name}=}. -If the variable @var{name} exists, its name (and value, if non-null) will be given; -otherwise there will be no output. - -@item -Type @samp{set -u} -@c substitute new equivalent: something like -@c set -o nounset -to tell the shell to make @code{echo} of an unset -(nonexistent) variable give an error message. -From then on, @samp{echo $@var{name}} will be different for nonexistent -variables than for variables with null values. -@end itemize - -Warning: @code{set} and @samp{unset} are not inverse commands: -Although @code{unset} unsets shell variables, @code{set} does not set -them. - -@node Variable Examples, Positional, Variables, Variables -@subsection Examples with Named Variables - -@c need more examples -@c may integrate with parent section (mechanics) - -Here are some examples of user-defined variables: - -@example -bash$ test=This\ is\ a\ test -bash$ test_2="This is also a test" -bash$ test_3='Yet another test' -bash$ echo $test -This is a test -bash$ echo $test_3 -Yet another test -@end example - -To prevent @samp{$} from meaning ``evaluate the following variable,'' -precede the @samp{$} with a backslash, @samp{\}, or enclose @samp{$} and -the reference in single quotes. -@c note: not double quotes -@c explain diff between single & double quotes -For example: - -@example -bash$ echo \$test -$test -bash$ echo '$test' -$test -bash$ echo $test -This is a test -@end example - -@node Positional, Predefined, User-definable, Variables -@section Positional Parameters - -@cindex positional parameters -A program, shell function, or shell script needs a way to refer to -arguments passed to it on the command line that invoked it. The shell -provides for this by means of special variables called @dfn{positional -parameters}. - -The name of a positional parameter is a positive integer. - -The value of a positional parameter is whatever the shell assigns -it from a command line, or whatever you assign it with -@code{set} or @code{shift} (described below). - -To evaluate a positional parameter, precede its -name by a dollar sign, @samp{$}, just as you would a named variable. -But if the parameter name is longer than a single digit, you must -enclose it in braces. For example, you'd type -@kbd{$@{10@}} to refer to the value of parameter @samp{10}. - -When you give a command, the arguments are put into consecutive -positional parameters starting with @code{1}. - -For example, assume we have a script named @code{args} -that simply echoes its first two arguments to the standard output. -That is, the script contains just the command -@samp{echo $1 $2}. Then @code{args} behaves as follows: - -@example -bash$ args 1 3 -1 3 -bash$ args hi there -hi there -bash$ args hi there everybody -hi there -bash$ -@end example - -@xref{Predefined}, for information about the parameter @code{0}, -which holds the name of the current command, -the parameters @code{*} and @code{@@}, which refer to all -the positional parameters at once, and the parameter @samp{#}, -which holds the number of positional parameters (the current -number of arguments). - -The @code{set} command can be used to assign new values to positional -parameters. The command - -@example -set @var{values} -@end example - -@noindent -assigns the given @var{values} to consecutive positional parameters -starting with @code{1}. For example, if we augment the above -@code{args} script to be - -@example -echo $1 $2 -set new message -echo $1 $2 -@end example - -@noindent -then it will modify its positional parameters, replacing the -command-line arguments with @code{new} and @code{message}, and will behave -as follows: - -@example -bash$ args hi there everybody -hi there -new message -bash$ -@end example - - -The @code{shift} command moves each positional parameter's value -into the parameter to its left. -The value of @code{2} is moved into @code{1}, the value of @code{3} -is moved into @code{2}, and so on. -The last parameter becomes null. - -@c bfox: used to determine whether any args left on line -- example? -This is useful, for example, in a recursive shell function, -to ``cdr down'' the list of arguments. - -@code{shift} can also take a numeric argument: -@example -shift @var{n} -@end example - -@noindent -This causes the positional parameters to be shifted left -@var{n} positions instead of just 1 position. -The value of parameter @var{n+1} is moved into @code{1}, and so on. - -For example, if we modify the above @code{args} script to be - -@example -echo $1 $2 -shift 2 -echo $1 $2 -@end example - -@noindent -then it will behave as follows: - -@example -bash$ args hi there everybody else -hi there -everybody else -bash$ -@end example - -BASH itself also has positional parameters, which you can @code{set}, -@code{shift}, and examine. -The positional parameters seen by a command are distinct from -those of the invoking shell. -In this example, we set the shell's first three positional parameters -and see that they are unaffected by execution of the @code{args} -command defined above, which uses @samp{echo $1 $2} to echo its first two arguments. - -@example -bash$ set one two three -bash$ echo $1 $2 -one two -bash$ args hi you -hi you -bash$ echo $1 $2 -one two -bash$ -@end example - -The @code{set} command is the easiest way to break a multi-word string -into elements that can be referenced individually. This can be useful -in conjunction with command substitution (@pxref{Command Subs}). For -example, we can set the positional parameters to the words in the output -of the @code{date} command as follows: - -@example -bash$ set $(date) -bash$ echo $1 $2 $3 $4 $5 $6 -Fri Feb 22 18:13:14 EST 1991 -@end example - -@node Predefined, Command Subs, Positional, Variables -@section Predefined Shell Variables -@c 'predefined shell vars' sound to me like ordinary vars that are defined -@c by the shell (e.g. HOME) -@c bfox: not standard terminology -- can change - -@cindex shell variables, predefined -@cindex variables, predefined shell -The predefined shell variables are set by the shell. -You cannot assign them values, but -you can reference their values by prefacing their names by @samp{$}. -The predefined shell variables are: - -@table @code -@item ? -contains the exit status returned by the command that was last run in -the foreground. - -@item ! -contains the process identification number of the last background -command. - -@item $ -contains the process identification number of the current shell. - -@item # -contains the current number of positional parameters (@pxref{Positional}). - -@item - -contains shell options. -@c bfox: echo $- gives the options you invoked bash with (as modified by -@c set) [some subset of options -- due to new -o option] - -@item 0 -(zero) contains the name of the command being executed. - -@item * -@itemx @@ -contain a list of the positional parameters. - -@c bfox: -@code{*} and @code{@@} are equivalent unless they appear -inside double quotes. -@samp{$*} @samp{$@@} are both equivalent to @samp{$1 $2 ... $@var{n}}, -where @var{n} is the last positional parameter. -But @code{"$*"} is equivalent to @samp{"$1 $2 $3 @dots{}"} -and @code{"$@@"} is equivalent to @code{"$1" "$2" "$3" @dots{}}. -In other words, @code{"$*"} expands to a single word, whereas -@code{"$@@"} expands to separate words. - -@c replace example -@c bfox will suppply example with FOR command -@example -bash$ cat a -this is a file named a -bash$ cat b -this is a file named b -bash$ cat c1 -/bin/cat "$*" -bash$ cat c2 -/bin/cat "$@@" -bash$ c1 a b -a b: No such file or directory -bash$ c2 a b -this is a file named a -this is a file named b -@end example - -@noindent -This example shows the use of two scripts: @code{c1}, which tries to execute -@file{/bin/cat} on the expansion of @samp{$*}, and @code{c2}, which executes -@file{/bin/cat} on the expansion of @samp{$@@}. When invoked with more -than one argument, @code{c1} attempts to run @code{cat} on the file whose name -is the concatenation all its arguments -- not what you would expect. -On the other hand, @code{c2} uses @samp{$@@} and behaves correctly. -@end table - -The following example sets the positional parameters to -the output of the @code{date} command and shows that that output -consists of 6 words: - -@example -bash$ echo $# -0 -bash$ set $(date) -bash$ echo $# -6 -bash$ echo $* -Sat Aug 4 22:19:05 EDT 1990 -@end example - -Here's an obscure script using predefined parameters: - -@example -# -# 2, 3, 4, 5 -- print in the number of columns defined by the -# name of the script. Adapted from Kernighan and Pike. -# -/bin/pr -$(basename $0) -t -l1 "$@@" -@end example - -@noindent -This file prints its input in as many columns as specified by its -name -- if invoked as "2", it prints its input in two columns. - -@node Parameter Subs, Arithmetic Evaluation, Command Subs, Variables -@section Variable Substitution - -@c Posix has excellent description of this, with table comparing the -@c different substitutions. Plagiarize it. - -The simplest case of @dfn{variable substitution} is the simple -@code{$@var{name}} construct, in which the value of the variable -@var{name} is substituted for @code{$@var{name}}. -More complicated constructs let you specify what should happen -if the named variable is unset or if its value is null. - -@cindex parameter substitution -@cindex substitution, of parameter values -BASH's parameter substitution facility lets you test and conditionally set the -value of parameters and shell variables. -@c what's param vs. shell var -Braces allow a variable to be -tested to see if it is defined and is not the null string. This is -important as sometimes the value of an expression depends on whether or -not a variable has been defined. If the colon in the following -expansions is omitted, BASH only tests that the parameter is -unset; it does not test to see that it's unset or null. - -The substitutions allowed are: - -@c fix up items below to make differences clear by using a single -@c example throughout -@table @code -@item $@{@var{variable}@} -The value of @var{variable} is substituted. The braces are required -when @var{variable} is a positional parameter with more than one digit, -or when @var{variable} is followed by a character that isn't part of -its name. -@c e.g. ${v}e -- why should that happen? - -@item $@{@var{variable}:-@var{string}@} -If the named @var{variable} exists, then the expression has -the value of the variable, otherwise it has the value @var{string}. -For example: - -@example -echo $@{timenow-$(date)@} -@end example - -@noindent -This echoes the current time, as stored in the variable @code{timenow}. -If @code{timenow} isn't set, the @code{date} command is run to generate -it. -@c clarify -- date generates time, doesn't set timenow var - -@item $@{@var{variable}:=@var{string}@} -If the named @var{variable} exists, then the expression has -the value of the variable, otherwise it has the value of @var{string} -@emph{and} @var{string} is assigned to @var{variable}. For example: - -@example -bash$ echo $A - -bash$ echo $@{A=123@} -123 -bash$ echo $A -123 -@end example - -@noindent -The first line of this example shows that @samp{A} is unset. -@c actually, nset or null -The second line assigns the value of 123 to @samp{A}. Then the value of -@samp{$A} is substituted, so @samp{A} retains the value 123. -@c last sentence unclear - -This form does not work with positional parameters (@pxref{Positional}) -or special parameters (@pxref{Predefined}). -@c what doesn't work? just this := case? unlikely - -@item $@{@var{variable}:+@var{string}@} -If the named @var{variable} exists, then it has -@c has --> gets? -the value of @var{string}, otherwise it has no value. -@c ? otherwise not created? -For example: - -@example -if [ "$@{var+set@}" = "set" ] ; then - echo '$var' is set -fi -@end example - -@noindent -This example shows a simple method to test whether or not a shell -variable is set. If @code{var} has a value, then the expansion has the -value @code{set}, and you can test on that fact. -@c expansion? test? - -@item $@{@var{variable}:?@var{text}@} -If the named @var{variable} exists, then the expression has -the value of the variable, otherwise the message @var{text} is printed. -For example: - -@example -: $@{REQUIRED?"REQUIRED must be set"@} -@end example -@c example messed up? colon in wrong place? - -@noindent -This statement echoes @samp{REQUIRED must be set} if @code{REQUIRED} is not set. -This can be used to inform the user that further execution of the -current script is not possible. If you don't make this part of an -interactive script, the shell exits after printing the -message. -@c ??? -If there is no @var{text} following the @samp{?}, BASH prints a standard -message. - -@item $@{#@var{variable}@} -The length in characters of the value of @var{variable} is substituted. -@c next sentence ??? -If @var{variable} is @samp{*} or @samp{@@}, the length substituted is -the length of @samp{*} expanded within double quotes. - -@item $@{@var{variable}#@var{string}@} -@itemx $@{@var{variable}##@var{string}@} -@c ??? -The @var{string} is expanded to produce a pattern just like pathname -expansion. If the pattern matches the beginning of the value of -@var{variable}, then the expansion is the value of @var{variable} with -the shortest matching pattern deleted (the @samp{#} case) or the -longest matching pattern deleted (the @samp{##} case). - -@item $@{@var{variable}%@var{string}@} -@itemx $@{@var{variable}%%@var{string}@} -@c ??? -The @var{string} is expanded to produce a pattern like pathname -expansion.@c ??? -If the pattern matches -@c matches ??? -a trailing portion of the value of -@var{variable}, then the expansion is the value of @var{variable} with -the shortest matching pattern deleted (the @samp{%} case) or the longest -matching pattern deleted (the @samp{%%} case). -@end table - - -@node Functions, Programming, Aliases, Top -@chapter Shell Functions - -@cindex functions -@c need to say what functions are for -A shell function stores a series of commands for execution at a later -time, similar to a shell script. Functions are executed in -the current shell; no new process is created to interpret them. - -@node Function Definition -@section Defining a Function - -@c fix: fn def is a cmd, can go anywhere -Function definitions can be entered from the command line or declared in -your login file (@pxref{Start-up}). -The shell doesn't save functions when you log off. To make -function definitions ``permanent'' you must enter them in your login file -(@pxref{Start-up}). -To declare a function use either of the following equivalent forms: -@cindex functions, format of - -@c ? what's the format of the list? what's a legal name? same as var -@c names except fn name can contain dash in addition to what var name can have - -@example -function @var{fname} () @{ @var{commands} @} - -@r{or} - -@var{fname} () @{ @var{commands} @} -@end example - -@noindent -It makes no difference which form you use. Both create a simple -command invoked by @var{fname} which executes the given @var{commands}. - -@cindex functions, recursive -@cindex recursive functions -A function can be recursive; that is, it can call itself. No limit is -imposed on the number of recursive calls that can be made. However, -make sure you put in checks to avoid infinite recursion, as you would -in any programming language. - -@node Function Arguments -@subsection Function Arguments - -@cindex functions, positional parameters and -@cindex positional parameters, functions and -Arguments present on the command line along with @var{fname} are passed -to the function as positional parameters during its execution -(@pxref{Positional}). The special parameter @code{#} is updated to -reflect the change. Positional parameter @code{0} is unchanged. When the -function finishes, the values of the positional parameters and the -special parameter @code{#} are restored to the values they had before -the function was executed. - -Here's an example of a function, using the first syntax: - -@c ? how about a simpler, more basic example? -@example -function xtitle() -@{ - if [ "$DISPLAY" ] ; then - echo -n -e "\033]2;$*\007"; - echo -n -e "\033]1;$*\007"; - fi -@} -@end example - -@noindent -@c ? -If BASH is executing in an xterm window, -@c what's an xterm window? -this function makes its arguments -@c whose args? the fn? -be the string displayed in an xterm title bar. - -@c use same example both times (above & here) -Here's an example of a function, using the second syntax: - -@c ? another mysterious example -@example -cd() -@{ - builtin cd "$@@" && - xtitle $HOST: $PWD -@} -@end example - -@noindent -This redefines the @code{cd} built-in command to allow setting the -title of an xterm window to the host name and current directory. - -@cindex functions, the shell and -@cindex functions, execution of a -@cindex functions, making permanent -@c ? call vs. execute vs. interpret (call is defined in next section) -Shell functions can be executed only in the same shell that -is used to call that function. The shell does not fork a copy of -itself -@c ? fork a copy?? and isn't subshell for a script optional? -to interpret the function, like it would with a script. - -@menu -* Listing:: Listing available functions. -* Calling:: Calling functions. -* Export:: Exporting functions. -* Local:: Local variables within functions. -* Return:: Returning from function calls. -@end menu - -@node Local, Return, Export, Functions -@subsection Local Variables - -@cindex local variables, functions and -@cindex @code{local} command -@cindex functions, local variables and -@cindex functions, @code{local} command and -Bash supports the use of local variables within a function. -A local variable shadows the value of a previously defined variable -(local or not) with the same name. - -Local variables differ from other variables in only one way: when the -function that defined the variable exits, the local variable goes away, -and any previously defined variable with the same name becomes visible -again. - -There is no way to have changes made to a local variable affect the -value of any previous variable with the same name. Local variables -have to be exported to be available to programs invoked by that -function, and to their children, too. -@c children not explained - -Local variables are created with the @code{declare} or @code{local} -commands (@pxref{Built-in}): - -@table @code -@c KELLEM added i (frxi) -@item declare @r{[}-+frxi@r{]} @r{[}@var{name}@r{[}=@var{value}@r{]}@r{]} -This command declares variables and gives them attributes. If no -@var{name} is given, then a listing of the values of variables is -displayed, instead. - -The @samp{-f} option causes @code{declare} to use function names only. -@c ? only as opposed to what? -The @samp{-r} option causes @code{declare} to make @var{name} readonly. -@c ? what's readonly? -The @samp{-x} option causes @code{declare} to make @var{name} export -only. -@c ? what's export only? -@samp{+} and @samp{-} turn on and off, respectively, the options. -@c ? on/off unclear - -When @code{declare} is used in a function, it makes @var{name} local, -the same as the @code{local} command. - -@example -bash$ type z -z is a function -z () -@{ - declare a=2; - echo in z, a = $a; -@} -bash$ a=3 -bash$ z -in z, a = 2 -bash$ echo $a -3 -@end example - -@noindent -The instance of the variable @code{a} in the function @code{z} is -private to @code{z}; the value of @code{a} in the shell -(set by @samp{a=3)} does not -affect it and is not affected by it (as shown by the final @samp{echo $a}). - -@item local @var{name}@r{[}=@var{value}@r{]} -This creates a local variable called @var{name}, and gives it a value -of @var{value}. The @code{local} command can be used only within a -function; it causes the variable @var{name} to be restricted to that -function and its children. -@c ? what children? - -@example -bash$ type z -z is a function -z () -@{ - local pid=$$; -@c ? what's $$ - echo This function is executed in shell $pid; -@} -bash$ echo $pid - -bash$ z -This function is executed in shell 252 -bash$ echo $pid - -bash$ -@end example - -@noindent -The variable @code{pid} is private to function @code{z}; the calling -shell has no such variable. -@c echo above doesn't tell us there's no such var, just that either -@c there's no such var or there's such a var with a null value - -@end table - -Here is the declaration of a function that uses a local version of the -@code{PATH} variable, and executes all of its arguments using a -@code{PATH} which contains only @file{/bin}: - -@example -using_bin () @{ - local PATH=/bin - eval $* -@} -@end example - -@noindent -A useful call to this function might look like: - -@example -using_bin "rm *.texinfo; cp ../*.texinfo ." -@end example -@c ? what are the quotes for? to have just 1 arg? why not do w 2 args? - -@node Return, , Local, Functions -@subsection Returning From Functions - -@cindex functions, return status -@cindex @code{return} command -@cindex functions, @code{return} command and -A function exits if an error occurs, if a @code{return} statement is -executed, or after executing the last command. - -Here is the syntax of the return command: - -@example -return @r{[}@var{n}@r{]} -@end example - -@noindent -@c ? return status (= return value ?) not defined -- = exit status? -This causes a function to exit with the return value specified by -@var{n}, if present. If @var{n} is omitted, the return status is that -of the last command. - -Here's an example: - -@example -true() -@{ - return 0 -@} -false() -@{ - return 1 -@} -@end example - -@noindent -These are replacements for the commands of the same name, and will -execute much faster. -@c ? what true/false cmds? documented? what are they for? Why is this faster? - -@node Calling, Export, Listing, Functions -@section Calling Functions - -@cindex functions, calling -To use a function you must @dfn{call} it. This works the same way as -calling (and using) any program. Here is the syntax used to call a -function: - -@example -@var{fname} @r{[} @var{args} @r{]} -@end example - -@noindent -This calls the function named @var{fname}, and provides it with -optional command-line arguments, @var{args}. Here's an example: - -@example -bash$ f /usr/spool/mail/close -@end example - -@noindent -This calls the function @code{f} with the name of a system mailbox as -its argument. In the body of the function, @samp{$1} is replaced with -@file{/usr/spool/mail/close}. - -@cindex functions, operating system commands and -@cindex operating system commands and functions -@cindex functions, the @code{command} command and -@cindex @code{command} command -If you have a function with the same name as an operating system -command, you can do one of two things to be able to run that operating -system command instead of your function. You can call the command using its full pathname, or -you can use the @code{command} command (@pxref{Built-in}): - -@example -command @r{[}@var{command} @r{[}@var{args}@r{]}@r{]} -@end example - -@noindent -This causes the shell to run the command named in @var{command} with -the arguments specified by @var{args}, ignoring shell -functions. For example, if you have a shell function called @code{ls}, -and you want to run the operating system's @code{ls} command instead, -you'd have to say @samp{command ls}. - -@node Listing, Calling, Functions, Functions -@section Listing Available Functions - -@cindex functions, listing -You can get a list of all the currently defined functions using the -@samp{-f} option of the @code{declare} command (@pxref{Built-in}). The -text of the functions, as well as the function names, is included in -the listing. For example: - -@example -bash$ declare -f -declare -f f () -@{ - grep "^From:" $@{1-$MAIL@}; -@} -declare -f popd () -@{ - builtin popd "$@@"; - xtitle $HOST: $PWD; -@} -declare -f pushd () -@{ - builtin pushd "$@@"; - xtitle $HOST: $PWD; -@} -declare -f cd () -@{ - builtin cd "$@@"; - xtitle $HOST: $PWD; -@} -declare -f xtitle () -@{ - echo -n -e "\033]2;$*\007"; - echo -n -e "\033]1;$*\007"; -@} -@end example - -@noindent -This lists the names of the functions together with their definitions. - - - -@node Environment, Conditionals, Variables, Top -@chapter The Shell Environment -@c should precede or merge with shell var chapter? - -@c ? documentation of export and declare is very inconsistent, over the -@c parts of this chapter and the built-in command appendix. -@c What are they supposed to do? In particular, is it supposed to be -@c the case that: -@c export = declare (or maybe declare -x) -@c export -f = declare -f (or maybe declare -fx) -@c Is export intended to replace declare ? - -@c cover 'set -o allexport...' somewhere in this chapter - -@cindex environment -@cindex shell environment -@c ? program environment vs. shell environment -When a program is invoked it is given an array of strings called the -@dfn{environment}. The shell @dfn{environment} is the set of all -shared and exported -@c ? shared = exported? -shell variables and functions. By typing -@code{declare -x}, or the @code{export} command by itself, you can see -a list of all exported variables. This is a list of name-value pairs, -of the form @samp{@var{name}=@var{value}}: - -@example -bash$ export -declare -x HOME=/usr/chet -declare -x SHELL=/bin/bash -declare -x TERM=xterm -declare -x USER=chet -declare -x PATH=/usr/local/bin/gnu:/usr/local/bin:/usr/ucb:/bin:/usr/bin -declare -x HOSTTYPE=IBMRT -declare -x MAILCHECK=60 -declare -x BASH=/bin/bash -declare -x HISTFILE=/usr/chet/.history -declare -x HISTSIZE=500 -declare -x LOGNAME=chet -declare -x TZ=EST5EDT -declare -x MAIL=/usr/chet/mbox -declare -x HOST=arrakis -declare -x EDITOR=/usr/local/bin/ce -declare -x VISUAL=/usr/local/bin/ce -declare -x PAGER=/usr/local/bin/more -declare -x DISPLAY=unix:0.0 -@end example - -A process can access and use any environment variables and functions -that exist in that process's environment. -@c ? access AND use? -C programs have a @code{getenv()} function available for this purpose. -@c sudden switch from 'commands' (scripts, etc.) to C progs - -The shell allows you to manipulate the environment in several ways. On -invocation, -@c clarify 'invocation' -- maybe ``when it starts up, the shell scans...'' -the shell scans its own environment and creates a parameter -@c ? parameter? -for each name found, automatically marking it for export to child -processes. -@c ? marking paramater? marking name? - -Generally, this ``basic'' environment consists of (at least) the -@code{HOME}, @code{PATH} and @code{TERM} variables. These tell the -shell what your home directory is, the search paths you use most often, -and what terminal you want to emulate, respectively. Other variables -are used to customize your environment to make it more -useful to you. - -Executed commands inherit this environment. -@c ? what environment? -@c ? explain inherit. different from share? use? -If the value of a parameter -@c ? parameter -in the environment is modified, -@c ? modified by the command that's executed? -the new value becomes part of the environment, replacing the old. -@c ? doesn't subshell have COPY of env? - -@c ??? -Therefore, the environment inherited by any executed command consists -of the shell's initial environment, whose values may be modified in the -shell, less any values removed by the @code{unset} command, plus any -additions via the @code{export} and @code{declare} commands. - -@c ??? child processs? subshells? -Remember that exported variables can only be exported to child -processes. If you want to make a variable accessible to all subshells, -be sure to define and export it in your login shell. - -The environment for any simple command or function can be augmented -temporarily by prefixing the command with parameter assignments. -@c ? parameter = shell variable ? -These assignment statements affect only the environment seen by that command. - -@example -bash$ foo=bar printenv foo -bar -bash$ printenv foo -bash$ -@end example - -@c ??? -If @samp{set -k} -@c substitute new 'set -o ...' version of above -is used (@pxref{Built-in}), then all parameter -assignments are placed in the environment for a command, not just those -that precede the command name. - -@node Shared Variables, , Arithmetic Evaluation, Variables -@section Shared Variables -@c ? shared = exported? - -@cindex shared variables -@cindex local variables -@cindex variables, local -@cindex variable, shared -@cindex shell variables, local -@cindex shell variables, shared -Normally shell variables are @dfn{local} variables. That is, these -variables are known only to the shell that created them. When you -start a new shell (@pxref{Install}), the new shell doesn't know about -any of the old shell's variables. Each shell's variables are known -only (are local) to itself. - -Sometimes, however, we want a new shell to recognize the old -shell's variables. You can accomplish this using the @code{export} -command (@pxref{Built-in}): - -@table @code -@item export @var{names} -exports the value of named variables @var{names} to a subshell. -@c what subshell? -Exported variables can only be exported -to child processes and @emph{not} back to parent processes. -@c to every child created from now on? -@c explain child & parent somehwere - -@item export -n @var{names} -removes the export property from the named variables, @var{names}. -@c i.e. no longer exported? - -@item export -lists the variables that are already exported. -@c ? relationship to declare -x ? -@end table - -The @code{export} command actually gives only a @emph{copy} of the -original variable to the new subshell. When the subshell dies, so does -the value of the variable @emph{copy}; the original variable value -remains untouched. -@c key is probably that changes to var in subshell don't affect value -@c seen by parent shell ? - -@node Export, Local, Calling, Functions -@section Exporting Functions - -@cindex functions, exporting -@cindex @code{declare} command -@cindex functions, @code{declare} command and -@cindex @code{export} command -@cindex functions, @code{export} command and -Normally, functions are unset -@c ? unset? -when the shell executes a shell script. -You can get around this problem by exporting your functions to the -environment (@pxref{Environment}). Exported functions are available to -any invocation of the shell, including any shell scripts. There are -two ways you can export functions: use the @samp{-f} option of the -@code{export} command or use the @samp{-xf} option of the -@code{declare} command (@pxref{Built-in}). Here's how they work:@refill -@c ? why synonymous commands? -@c confusing: export -f fn = declare -xf fn, export -f = declare ?? - -@table @code -@item export -f @var{fname} -exports the function named @var{fname} to the environment. More -than one function name can be listed for export. -@item export -f -lists the currently exported functions. - -@noindent -For example: - -@c ? what is 'type' -@example -bash$ type fn -fn is a function -fn () -@{ - grep "^From:" $@{1-$MAIL@}; -@} -bash$ export -f fn -bash$ export -f -declare -xf fn () -@{ - grep "^From:" $@{1-$MAIL@}; -@} -@end example - -@item declare -xf @var{fname} -exports the function named @var{fname} to the environment. More -than one function name can be listed for export. -@item declare -xf -lists the currently exported functions. -@c ? is it declare -xf or declare -x? example below confused - -@noindent -For example: - -@example -bash$ type fn -fn is a function -fn () -@{ - grep "^From:" $@{1-$MAIL@}; -@} -bash$ declare -x fn -bash$ declare -xf -declare -xf fn () -@{ - grep "^From:" $@{1-$MAIL@}; -@} -@end example - -@noindent -The first @code{declare} statement marks the function @code{fn} for -export to the environment. -@c ? marks for export = exports (above) ? -The second statement lists all exported -functions; in this case @code{fn} is the only one.@refill - -@end table - -@node Substitution -@chapter Command Substitution and Arithmetic Evaluation - -@node Command Subs, Parameter Subs, Predefined, Variables -@section Command Substitution - -@cindex command substitution -@cindex substitution, of command values -A command enclosed in backquotes, -@samp{`@var{command}`}, is replaced by the output it -produces. This is called @dfn{command substitution}. - -For example: - -@example -bash$ echo I am logged in as `whoami` -I am logged in as jems -bash$ -@end example - -@noindent -Inside single quotes, a backslash retains its literal meaning, except when followed by -a @samp{$}, @samp{`}, or a @samp{\}. -@c ? what happens in those cases? why just those cases? - - -@c preferred syntax should be first, other mentioned as historical -You can also perform command substitution using the -@samp{$(@var{command})} syntax. -This is the preferred syntax for command substitution. -When this form of command substitution -is used, none of the characters between the parentheses are treated -specially; all characters are considered to make up the command. -Here's an example:@refill - -@c candidate for world's worst example? -@example -kill -1 $(cat /etc/named.pid) -@end example - -@noindent -This sends a hangup signal (@code{SIGHUP}) to the process whose process -@sc{id} is in the file @file{/etc/named.pid}. - -Note that the command substitution operation replaces any linefeed -characters in the command's output with space characters. -@c ? linefeed = newline? -The shell also deletes trailing newlines. -@c what's word splitting? path name expansion? -Note, also, that word -splitting and path name expansion are not performed on the resulting -command if the substitution appears within double quotes. -@c ??? what substitutiont? what resulting command? - -Command substitutions may be nested. (When nesting using the -@samp{`@var{command}`} form, protect the inner backquotes with -backslashes to prevent shell misinterpretation.) - -Command substitution is useful in assigning variables. Use it when you -want the output of a command to be the value of a variable. For -example: - -@example -x=$(pwd) -@end example - -@noindent -This assigns @code{x} the value of your current working directory. This -example isn't really useful because shell has built-in command -(@code{cd}) for performing this action. -@c ? huh? cd doesn't assign x -Here's a more useful example: - -@example -i=$(expr $i + 1) -@end example -@c ? what's expr? - -@noindent -This increments a number if @var{i} is a number. This is useful in -shell scripts for creating loops. - -Here's another example: - -@example -name=$(basename $i) -@end example - -@noindent -This removes all the path information from @var{$i} and gives you a -pure file name. - -A common use of command substitution's linefeed-to-spaces translation -is keeping lists of items on separate lines of a file, and then using -@code{cat} inside of back-quotes to produce word lists for the -@code{for} command (@pxref{for}). -In the following example, the @code{cat} command is used to write the -contents of file @file{namelist} to the output:@refill - -@example -bash$ cat namelist -joe -sam -mary -ezekiel -bash$ echo `cat namelist` -joe sam mary ezekiel -@end example - -Here's an example using the file -@file{namelist} from above:@refill - -@example -bash$ for i in `cat namelist` -bash> do -bash> echo "Hi there, $i." -bash> done -Hi there, joe. -Hi there, sam. -Hi there, mary. -Hi there, ezekiel. -@end example - -@c KELLEM added this skeletal section -@c this section assumes that $[..] arithmetic evaluation is included in -@c 1.06 -- it's from posix and should be included -@node Arithmetic Evaluation, Shared Variables, Parameter Subs, Variables -@section Arithmetic Evaluation - -@c this section should probably be reworded a little, but it's a start -@cindex arithmetic evaluation -@cindex arithmetic expressions -@cindex expressions, arithmetic -@cindex evaluating arithmetic expressions -@cindex math expressions -You can evaluate arithmetic expressions in BASH. The syntax for -arithmetic evaluation is @samp{$[@var{expression}]}. The -@var{expression} is treated as if it were within double quotes, but a -double quote inside the brackets is not treated specially. All tokens -in the @var{expression} undergo parameter expansion, command -substitution, and quote removal. Arithmetic evaluations may be -nested.@refill - -The evaluation of expressions is done in long integers with no check for -overflow, though division by 0 is trapped and flagged as an error. The -following list of operators is grouped into levels of equal precedence -operators. The levels are listed in order of decreasing precedence. - -@table @code -@item - -unary minus -@item ! -logical @sc{not} -@item * / % -multiplication, division, remainder (modulus) -@item + - -addition, substraction -@item <= >= < > -comparison operators -@item == != -equality, inequality -@item = -assignment -@end table - -Shell variables are allowed as operands; parameter expansion is -performed before the expression is evaluated. The value of a parameter -is coerced to a long integer within an expression. Operators are -evaluated in order of precedence. Subexpressions in parentheses are -evaluated first and may override the precedence rules above. Operators -of equal precedence are evaluated from left to right. - -You may also specify arithmetic evaluation with the @code{let} builtin -command. @xref{Built-in, let, Builtin Commands}, for more -information.@refill - -@node Scripts, Variables, Programming, Top -@chapter Shell Scripts - -@cindex shell scripts -@cindex scripts -A shell script is a collection of operating system commands, -comments, and shell programming-language constructs grouped together in -a file. - -Shell scripts can be composed of fixed commands requiring no arguments, -and run without interruption. Scripts can also be composed of commands -that require user input. If this is the case, the script can obtain -that input either by prompting or by arguments included on the command -line used to invoke the script. Scripts can also use pipes and -redirection both internally and externally. -@c ? what does last sentence mean? -@c guess: internal = redir ops in cmds in script, external = i/o of -@c script redirected by command invoking script - -@cindex script, how to execute a -You can run shell scripts in a number of ways. You can type the -@code{bash} command followed by the script file name, or you can turn the -script into an actual command using the @code{chmod} command -(@pxref{chmod, , @code{chmod}, utilities, The GNU Utilities Manual}), -and execute that new command by typing the script's file name. Both of -the ways of executing a script create a new shell process. -@c ? last sentence false? surely bash foo runs foo in a fresh bash, -@c (actually, I don't see it doc'ed like this) -@c but foo creates a foo (non-shell) process -@c must explain shell process above, & current/new process below - -To execute a program without creating a new process you can use the -@code{.} command or the @code{source} command (@pxref{Built-in}). These -execute a shell script as part of the current process. Each line in the -script is acted upon as if you had typed it, excepting that the shell's -notion of interactiveness is turned off. - -The @code{exec} command -(@pxref{exec, , @code{exec}, utilities, The GNU Utilities Manual}), -also executes programs in -place of the current process, but @code{exec} never returns control to -the original program. - -@cindex script, steps in writing a -To summarize, here's one of the easiest ways of writing and executing a -shell script: -@c it's not a summary, it's new info -@c (above, needed exec, ., or source -- chmod case wasn't clear - -@enumerate -@item -Create a file that contains the commands you want to execute. For -example, a series of commands that you execute frequently and are tired -of repeatedly typing. - -@item -Change the file access mode so the file can be run like a program -rather than be treated like a data file. For example, @code{chmod +rx -@var{file}}, where @var{file} represents the name of your script. The -@samp{+rx} option allows all users to read and execute this file. -@c ? why do all users? for just me, do +x ? - -@item -Type the name of the file to execute the commands in the shell script. -@end enumerate - -@cindex script, sample of -Here's an example of a simple shell script: - -@example -#Display the date, time, username and current directory. -echo "The current date and time is:" -date -echo " " -echo "You are `whoami` \n" #print username. -echo "Your current directory is `pwd`." #print current directory. -@end example - -@noindent -This script prints the current date, time, username and working -directory for the user who invokes it. The first line of this script -is a comment, identified by the pound sign @samp{#} that begins it. -Comment statements don't get executed; use them to -document your shell script. -Notice that comments don't have to be placed on a line by themselves. -When a word begins with a @samp{#} sign, it causes the rest of that -line to be interpreted as a comment, and not executed. -Note: @samp{#} works only in a noninteractive shell. -@c new concept: [non]interactive shell -@cindex command lines, comments in -@cindex comments -@cindex scripts, comments in -@cindex non-interactive shells, comments in - -The backquotes around the @code{whoami} and @code{pwd} commands shows -the use of command substitution (@pxref{Command Subs}). Basically -@c ? basically -the shell replaces the command (including the backquotes) with the -output of that command. The @samp{\n} tells @code{echo} to add an extra -carriage return to the end of the line. - -@xref{Advanced Scripts}, for more advanced examples of writing scripts. - - -@node Conditionals and Loops, Built-in, Environment, Top -@chapter Conditionals and Loops - -@c Intro not related to rest of chapter. -@c Rest of chapter isn't about shell use of exit status. - -@cindex conditional statements -BASH has some built-in decision-making and looping statements. Most of these -statements base their decisions on the @dfn{exit}, or @dfn{return}, -status of specified processes. An exit status is simply a flag that -indicates the success or failure of an executed command. -@c what's a flag? a value? -Exit status flags are returned to the parent process when a child -process stops executing (for any reason). - -For example, suppose we wish to look at the contents of a file using -the @code{cat} command. If the specified file cannot be found, it -certainly can't be looked at and the attempt to execute @code{cat} is -looked upon as unsuccessful by the shell. Therefore the exit status is -returned as ``unsuccessful''. - -This status can be tested by the shell and used to make decisions about -what actions to take next. An exit status of zero means that the -command was executed successfully. An exit status of non-zero means -that the command was unsuccessful. - -@menu -* if:: The @code{if} statement. - -* case:: The @code{case} statement. - -* for:: The @code{for} statement. - -* while:: The @code{while} statement. - -* until:: The @code{until} statement. - -* break & continue:: The @code{break} statement and the - @code{continue} statement. -@end menu - -@node if, case, Conditionals, Conditionals -@section The @code{if} Statement - -The syntax of the @code{if} statement is: - -@example -if @var{condition} -then - @var{commands} -@r{[}elif @var{condition} -then - @var{commands}@r{]} -@dots{} -@r{[}else - @var{commands}@r{]} -fi -@end example -@noindent -where the brackets and the dots indicate that the @code{else} part is optional -and that there can be any number (including none) of @code{elif} parts. - -If the commands contained in the first @var{condition} are successfully -executed, then the commands contained in the first @var{commands} are -executed. -The optional @code{elif} parts allow you to specify -conditions to test (and corresponding commands to execute if -successful) if previous conditions were not successful. -The optional @code{else} part allows you to specify -commands to execute if none of the @var{condition}s are successful. -After the appropriate @var{condition}s are tested -and any appropriate @var{commands} are -executed, control goes to the statement following the @code{fi}. - -Here's an example: -@c replace system example by user example - -@example -# check to see that we've got sufficient files to bring the -# system up multi-user -for i in /bin/login /etc/getty /etc/passwd ; do -@c what's the next obscure line??? - if [ ! -s $@{i@} ]; then - echo "$@{i@}: not present @dots{} Can't come up to multi-user mode." ->/dev/console - /bin/kill 1 - fi -done -@end example - -@noindent -This is code to execute at the end of the system startup script. It -checks that the necessary files are present to bring the system up to a -multiuser state, and shuts the system down if the files are not -present. - -Here's another example: - -@example -if [ -f /etc/license ] ; then - PATH=~/bin.vax-ultrix:$PATH -elif [ -f /hp-ux ] ; then - PATH=~/bin.hp-ux:$PATH -elif [ -x /bin/arch ] ; then - if [ $(/bin/arch) = "sun3" ] ; then - PATH=~/bin.sun3:$PATH - else - PATH=~/bin.sparc:$PATH - fi -else - PATH=~/bin.ibm032:$PATH -fi -@end example - -@noindent -This code tacks a machine-specific binary directory onto the -front of the @code{PATH} variable. Only one of the @code{then} bodies is executed, -depending upon the machine being used.@refill - -If you don't want to put the parts of an @code{if} statement -on separate lines as shown in the syntax, you don't have to. -But if you move one of the keywords (@code{then}, @code{elif}, -@code{else}, or @code{fi}) onto the same line as the preceding -@var{condition} or @var{commands}, you must put -a semicolon before it. -In other words, each -@var{condition} or @var{commands} must be followed by a newline -or a @samp{;}. -@c is it allowable to always end with ;, even if newline next? - -For example: - -@c what is the [...] ? -@c The condition here, with =, is not a case of 'successful execution' -@c as discussed above. Rather, it's a comparison. Confusion of -@c concepts: exit status used as t/f for tests -@example -if [ "X$PS1" = "X" ]; then exit ; else echo "interactive shell" ; -fi@refill -@end example - -@noindent -This echoes ``interactive shell'' if BASH is executing interactively. -The variable @code{PS1} is set only if the shell is interactive. - - -@node case, for, if, Conditionals -@section The @code{case} Statement - -The syntax of the @code{case} statement is: - -@example -case @var{string} in - @var{pattern_1a} | @var{pattern_1b} | @var{pattern_1c}) - @var{commands1} - ;; - @var{pattern_2}) - @var{commands2} - ;; - @dots{} -esac -@end example - -This statement tries to match a string, @var{string}, to various -@var{patterns}. If it finds a match, it -executes the corresponding pattern's commands. When execution is -complete, control is transferred to the statement following the -@code{esac}. - -Each pattern in a list is separated -from the next by @samp{|}. Patterns can contain the -file-matching wildcards @samp{*}, @samp{?}, or @samp{[ @dots{} ]} -(@pxref{File Names}). A pattern list is ended with a closing -parenthesis (note that there is no matching open parenthesis).@refill -@c so in this case wildcards aren't just for files - -You don't have to separate all the parts of the @code{case} statement -on separate lines as shown above. -Any of the newlines can be omitted. - -@c put an example case statement here instead of a template -@example -case @var{string} in @var{pattern1a} @r{[}| @var{pattern1b} @dots{}@r{]}) @var{commands} @r{[};; @dots{}@r{]};; esac @refill -@end example - -Here's an example: - -@c example redefines builtin cd, while also using it? -@c example is teco-like gibberish -- replace &/or explain -@c Want simpler example here -- use this example in customization -@c section for people to copy if they like the behavior. -@example -cd() -@{ - builtin cd "$@@" && - case "$1" in - '') - PS1='$ ' - ;; - ..|*/..) - PS1="$@{PWD##*/@}$ " - ;; - */*) - PS1=$@{$1##*/@}$ " - ;; - *) - PS1="$1$ " - ;; - esac -@} -@end example - -@noindent -This sets your prompt to contain the name of the current directory, -with all path information stripped. -@c example to explain above sentence -This can be used as a -way to reset your primary prompt when you change directories. If you -are in your home directory, via a @code{cd} with no arguments, -@code{PS1} will contain no directory information at all. -@c need example of behavior after doing it: -@c bash$ cd me -@c me$ - - -@node for, while, case, Conditionals -@section The @code{for} Statement - -The @code{for} statement executes a sequence of commands once for each -value in a list of items. - -The format of the @code{for} statement is: - -@example -for @var{name} @r{[}in @var{list}@r{]} -do - @var{commands} -done -@end example - -For each element in @var{list}, @var{name} is set to that -element and the @var{commands} are executed. -When you omit the optional @samp{in @var{list}}, it -defaults to @samp{in "$@@"}, so that the loop is executed once for -each of the command line parameters. - -Here's an example: - -@example -for host -do - echo $host: - rsh $host w -done -@end example - -@noindent -This defines a script that runs the @code{w} command remotely on each -host named as an argument. -@c need example of using the script - -Here's an example using the @samp{in @var{list}} option: - -@example -for file in $(echo *.c) -do - touch $file -done -@end example - -@noindent -This updates the timestamp of each file ending in @samp{.c} in the -current directory. This is useful for preparing for a rebuild of a -software system. - -The @code{do} and @code{done} mark the beginning and the -end, respectively, of the loop. When the @var{list} is -used up, control is passed to the statement following the @code{done}. - -If you don't want to put the parts of a @code{for} statement -on separate lines as shown in the syntax, you don't have to. -But if you move one of the keywords (@code{do} or @code{done}) -onto the same line as the preceding -@var{name}, @var{list}, or @var{commands}, you must put -a semicolon before it. -@c is it allowable to always end with ;, even if newline next? - -@node while, until, for, Conditionals -@section @code{while} and @code{until} Loops - -The format of a @code{while} or @code{until} loop is: - -@example -while @var{condition} -@r{[}do - @var{commands}@r{]} -done -@end example -@noindent -or -@example -until @var{condition} -@r{[}do - @var{commands}@r{]} -done -@end example - -In a @code{while} loop, the @var{commands} are -repeatedly executed as long as the @var{condition} executes -successfully (returns an exit status of zero). -Before each pass through the loop, @var{condition} is executed. If -@var{condition} returns zero, @var{commands} is executed. Usually -@var{commands} affects the @var{condition} execution in some way so -that it will eventually return non-zero. Otherwise you end up with an -infinite loop. -When the @var{condition} is unsuccessful in executing, control -jumps to the statement following the @code{done}. - -In an @code{until} loop, the @var{commands} are -repeatedly executed as long as the @var{condition} fails -execution (returns an exit status of non-zero). -Before each pass through the loop, @var{condition} is executed. -If @var{condition} returns non-zero, @var{commands} is executed. -Usually @var{commands} affects the @var{condition} execution in some -way so that it will eventually return zero. Otherwise you end up with -an infinite loop. -When the @var{condition} is successful in executing, control is -returned to the statement following the @code{done}. - -The following example tests the output of the @code{who} command once -each minute until it finds that a user named @samp{chet} has logged in. -@c explain example -- what are who, grep, sleep - -@example -until who | grep chet -do - sleep 60 -done -@end example - -If you don't want to put the parts of a @code{while} or @code{until} statement -on separate lines as shown in the syntax, you don't have to. -But if you move one of the keywords (@code{do} -or @code{done}) onto the same line as the preceding -@var{condition} or @var{commands}, you must put -a semicolon before it. -In other words, the -@var{condition} and @var{commands} must each be followed by a newline -or a @samp{;}. -@c is it allowable to always end with ;, even if newline next? - -The @samp{do @var{commands}} is optional. Sometimes just -testing the @var{condition} is enough. For example, here's an -inefficient way of reading the last line of a file: -@c what do you mean by reading? who sees it? where does it go? -@c if it's inefficient, isn't it a bad example? - -@c explain: what's exec? what's read? -@example -exec < file -while read variable ; done -@end example - -@noindent -The return status of @code{read} is 0 (successful) unless the -end-of-file (@sc{eof}) is -encountered. When the @sc{eof} is encountered, the condition is met and the -usefulness of the statement is finished. No @samp{do @var{commands}} section is needed. - -@node break & continue, , until, Conditionals -@section The @code{break} and @code{continue} Statements - -@cindex loops, interrupting -@cindex interrupting loops -You can interrupt a @code{for}, @code{while}, or @code{until} loop -using a @code{break} or a @code{continue} statement: - -@table @code -@item break @r{[}@var{n}@r{]} - -The @code{break} statement stops the execution of the loop and passes -control to the statement following the @code{done} that marks the end of -the loop. -If @var{n} is specified, it tells the shell to break at the @var{n}th -level of the enclosing loop. -@c explain nth level -- nested loops? - -Here's an example: - -@c what is the : in the while? -@c what are echo, read, [], lpr -@example -while : -do - echo -n "Enter name of file to print [q to quit]: " - read fn - if [ "$fn" = "q" ] ; then - break - fi - lpr $fn -done -@end example - -@noindent -This prompts for names of files and prints them, until a @samp{q} is -encountered. - -@item continue @r{[}@var{n}@r{]} - -The @code{continue} statement transfers control to the loop's -@code{done} statement, which continues execution of the loop. If -@var{n} is specified, it tells the shell to resume computation at the -@var{n}th enclosing loop. -@c explain nth level -- nested loops? - -Here's an example: - -@c what's [], -d -@example -for dir in $(cat dirlist) -do - if [ -d $dir ] ; then - continue - fi - mkdir $dir -done -@end example -@c weird example. Why wouldn't you write it as -@c 'if NOT exists then @c mkdir' -@c without a Continue? - - -@noindent -This reads a file containing the names of a list of directories to -create, and creates each one if it does not already exist. -@end table - -@node Built-in, Shell Vars, Conditionals, Top -@appendix Built-in Shell Commands - -@cindex built-in commands, list of -Some of the commands you may want to run are already part of the shell. -Because of this, no new processes are started in order to run these -built-in commands. Therefore, these built-in commands use less time -than those that aren't built-in. - -The following is a list of the built-in commands. Some of these -commands are explained in more detail earlier in this manual. -@c shouldn't all of these be in the manual? -@c This is then just alphabetical summary -You are directed to read the appropriate chapter if you need more information -than is provided here: -@c be sure all descriptions here match those earlier - -@table @code -@item : -This command can only expand arguments and perform redirections -and nothing else. It is the shell's ``do nothing'' command. It is -not, however, a useless command. Since the shell is able to scan and -parse the line that follows the colon, this command can be adapted for -many uses. - -It can be used as a valid option for a program's conditional statement, -or it can be used to create an infinite (until interrupted) loop. -Here's an example: - -@example -# wait for a file to be created, chewing up lots of CPU time -# usage: waitfor filename -# -while [ ! -f "$1" ] ; do - : -done -@end example - -You can also use the colon to create comment lines, instead of using -the @samp{#} character (@pxref{Scripts}, for more information). -@c other part of doc said # is for noninteractive shell, : for interactive -@ignore -The @samp{:} command can be adapted to create comment lines in an -interactive shell (@pxref{Built-in}). -@cindex command lines, comments in -@cindex comments -@cindex interactive shells, comments in -@cindex colon (@code{:}) command -@iftex -@cindex : command -@end iftex -@c Can't do @cindex : (: is not valid in index/menu in Info mode) -@c from Bob Chassell: A colon cannot be part of an index -@c entry because a colon is used by Info as the marker between the item -@c name and the node name in the index. -@end ignore -For example: - -@example -bash$ echo A bad example > junk -bash$ cat junk -A bad example -bash$ : this is a comment about > junk -bash$ cat junk -bash$ -@end example - -@noindent -First we create the file called @file{junk}, entering a simple message -into that file. Then we create a comment about our file using the -@samp{:} statement and insert a redirection operator into the sentence. -Normally we'd expect the shell to ignore anything that follows a -comment character. However, the shell is able to parse and interpret -the contents of the line following a colon. -Therefore, the above @samp{:} statement, when scanned by the shell, -causes the file @file{junk} to be opened for output, which removes its -prior contents (@pxref{Redirection}). -@c what happens to rest of : line? - -So be careful when using the @samp{:} statement. It can be useful when -used properly; but it can also be dangerous in careless hands. -@c ??? what's an example of proper, useful use? -Don't insert any characters that can be expanded by the shell into a -@samp{:} comment line. -@c ??? what's this expansion stuff above? -It's safest to protect the comment following @samp{:} with single quotes -so that it won't be interpreted by the shell. -@c ??? single quotes are new concept -Make sure that there's a space between the colon and the opening single -quote, though, or the shell could mistake what follows for a command: -@c space/command stuff not explained - -@example -bash$ : 'This is a good way to make a comment.' -bash$ :'This is bad.' -:This is bad.: command not found. -@end example -@c why not just use # ?? because not valid in interactive shell? - -@item . @var{file} -@itemx source @var{file} -Both commands are used to execute shell programs, without creating a -separate child process. The named file is read and executed in the -current shell environment and control is returned to the current shell. -Since these commands do not create a subshell they can be used to -change the value of a shell variable in the current shell. - -@var{file} must have a fully qualified path name in order to be -executed. The @code{PATH} variable is searched for the location of the -named file, otherwise the current directory is searched if no file is -found in @code{PATH}. - -Redirection of input and output and other command line arguments are -not permitted when using these commands. - -@item alias @r{[}@var{name}@r{[}=@var{value}@r{]} @dots{}@r{]} -An alias is defined for each @var{name} whose @var{value} is given. -@xref{Aliases}, for more information. A trailing space in @var{value} -causes the next word to be checked for alias substitution. If a -@var{name} (without the @samp{=@var{value}} part) is given for which no alias has been defined an error -message is printed. - -The @code{alias} command, with no arguments, prints the -list of aliases in the form @samp{@var{name}=@var{value}} -on the standard output. - -@item bg @r{[}@var{job_spec}@r{]} -This causes the shell to place the specified job, @var{job_spec}, in -the background, as if it had been started with @samp{&}. @xref{Resuming}, -for more information. If @var{job_spec} is not present, the shell's -notion of the current job is used. - -@item break @r{[}@var{n}@r{]} -This command exits from an existing @code{for}, @code{while}, or -@code{until} loop. If @var{n} is specified, it tells the shell to -break at the @var{n}th level of the enclosing loop. @var{n} -must be greater than or equal to 1. If @var{n} is greater than the -number of the enclosing loops, all enclosing loops are exited. - -@item builtin @r{[}@var{shell-builtin} @r{[}@var{arguments}@r{]}@r{]} -This is used to execute a built-in shell command, passing it -@var{arguments}. This is useful when you wish to rename a -built-in shell command to be a function, but need the functionality of -the built-in command within the function itself. (The built-in @code{cd} -command is commonly redefined this way.) - -@item cd @r{[}@var{dir}@r{]} -This command tells the shell to change the current directory to the one -specified by @var{dir}. The variable @code{HOME} contains the default -value of @var{dir}. - -The variable @code{CDPATH} defines the search path for the directory -containing @var{dir}. @xref{Predefined}, for more information. -Alternative directory names are separated by a colon, @samp{:}. - -A null directory name is considered to be the same as the current -directory. If @var{dir} begins with a forward slash, @samp{/}, -then the search path contained in @code{CDPATH} is not used. - -@item command @r{[}@var{command} @r{[}@var{arguments}@r{]}@r{]} -This causes the shell to run the [external] command named in @var{command} with -the arguments specified by @var{arguments}, ignoring all -other shell functions.@refill - -For example, if you have a shell function called @code{ls}, and you -want to call the command @code{ls} as well, you can say @samp{command ls}. - -@item continue @r{[}@var{n}@r{]} -This command tells the shell to resume the next iteration of the -enclosing @code{for}, @code{while}, or @code{until} loop at the -@var{n}th enclosing loop (if @var{n} is specified). @var{n} -must be greater than or equal to 1. If @var{n} is greater than the -number of enclosing loops, the last enclosing loop (the ``top-level'' -loop) is resumed. - -@c KELLEM added i (frxi) -@item declare @r{[}-+frxi@r{]} @r{[}@var{name}@r{[}=@var{value}@r{]}@r{]} -This command declares variables and gives them attributes. If no -@var{name} is given, then a listing of the values of variables is -displayed instead. - -@table @code -@item -f -Use function names only. - -@item -r -Make @var{name} readonly. These names cannot be assigned -values by subsequent assignment statements. - -@item -x -Make @var{name} export to subsequent commands via the environment. - -@c KELLEM added -i: -@c the -i is here if $[..] arithmetic evaluation is put into 1.06 -@c it's a posix thing -@item -i -Treat @var{name} as an integer; arithmetic evaluation -(@pxref{Arithmetic Evaluation}) will be performed when the variable is -assigned a value. -@end table - -Using @samp{+} instead of @samp{-} turns off the attribute. - -When @code{declare} is used in a function, it makes @var{name} local, -the same as the @code{local} command (@pxref{Functions}). - -@item dirs -This displays the list of currently remembered directories. -Directories are added to the list with the @code{pushd} command; you -can get back up through the list with the @code{popd} command. - -@item echo @r{[}-ne@r{]} @r{[}arguments@r{]} -This displays a prompt or a message on the standard output. It outputs -the @var{arguments}, if supplied, separated by spaces. If the -@samp{-n} option is specified, the trailing newline character is suppressed.@refill - -If the @samp{-e} option is given, interpretation of the following -backslash-escaped characters is turned on: - -@table @code -@c KELLEM added \a: -@c \a is a ksh-88 thing and should be included in 1.06 as far as I know -@item \a -Alert/bell. - -@item \b -Backspace. - -@item \c -Suppress trailing newline. - -@item \f -Form feed. - -@item \n -New line. - -@item \r -Carriage return. - -@item \t -Horizontal tab. - -@item \v -Vertical tab. - -@item \@var{NNN} -The character whose @sc{ascii} code is @var{NNN} (octal). - -@item \\ -Backslash. -@end table - -@item enable @r{[}-n@r{]} @r{[}@var{names}@r{]} -This command enables and disables built-in shell commands. This allows -you to use an operating system command which has the same name as a -built-in shell command. - -If the @samp{-n} option is used, the named commands, @var{names}, -become disabled. Otherwise the named commands are enabled. - -For example, to use the @code{test} command found in your path instead -of the built-in shell version, you type @samp{enable -n test}. - -@item eval @r{[}@var{arguments}@r{]} -The @var{arguments} are read and concatenated together into a single -command. This ``new'' command is then read and executed by the shell. - -@item exec @r{[}@r{[}-@r{]}@var{command} @r{[}@var{arguments}@r{]} @r{]} -If @var{command} is specified, it is executed, replacing this shell, -without creating a new process. The @var{arguments} become arguments -to @var{command}. - -If the first argument is @samp{-}, the shell places a dash in the -zeroth argument passed to @var{command} (exactly what a login does). - -If the @var{command} can't be executed the shell exits, unless the -shell variable @code{no_exit_on_failed_exec} exists. - -If @var{command} is not specified, any redirections present -take effect in the current shell. - -@item exit @r{[}@var{n}@r{]} -@itemx bye @r{[}@var{n}@r{]} -This causes the shell to exit with the status specified by @var{n}. If -@var{n} is omitted, the exit status is that of the last command -executed. A trap on the shell variable @code{EXIT} is executed before -the shell terminates. - -@item export @r{[}-nf@r{]} @r{[}@var{name}@r{[}=@var{word}@r{]}@r{]} -The @code{export} command exports the value of named variables (or -functions if the @samp{-f} option is specified), @var{name}, to a -subshell. - -If no variable names are given, @code{export} displays a list of all -the variables that are already exported. The @samp{-n} option causes -the shell to remove the export property from the named variables. - -@item fg @r{[}@var{job_spec}@r{]} -This places the specified job, @var{job_spec}, in the foreground, and -makes it the current job. @xref{Resuming}, for more information. If -@var{job_spec} is not present, the shell's notion of the current job is -used. - -@item function @var{name} () @r{[} @var{commands} ; @r{]} -@itemx @var{name} () @r{[} @var{commands} ; @r{]} -This creates a simple command invoked by @var{name} which executes the -named @var{commands} (@pxref{Functions}). Arguments on the -command line along with @var{name} are passed to the function as -@samp{$0 @dots{} $@var{n}} (@pxref{Positional}). - -@item hash @r{[}-r@r{]} @r{[}@var{name}@r{]} -For each variable name, @var{name}, the full pathname of the command is -determined and remembered. The @samp{-r} option causes the shell to -forget all remembered locations. With no arguments, @code{hash} -presents information about remembered commands. - -@c The 'help' sources should be used to augment/check this doc and vice versa -@c I suspect this doc may have come from those sources -@item help @r{[}@var{pattern}@r{]} -This command displays helpful information about built-in commands. If -a pattern is specified, -@c ? same pattern wildcards as for filenames? -@code{help} gives detailed help on all commands -matching @var{pattern}, otherwise a list of the built-ins is printed. -If @var{pattern} contains only alphanumeric characters (no wildcard -characters, such as @samp{?} and @samp{*}), then a pattern of -@samp{pattern*} if assumed. Therefore, the command @samp{help pw} will -produce help on the @code{pwd} command. -@c note: must enclose pattern in quotes if contains wildcards, else -@c expanded to filenames before help sees it - -@item history @r{[}@var{n}@r{]} -@itemx history -rw @r{[}@var{file}@r{]} -@itemx history -s @var{arguments} -The first command displays the history list with line numbers. Lines listed -with a @samp{*} have been modified. If a number @var{n} is specified, only -the last @var{n} lines of the history list are displayed. - -The @samp{-w} option means causes the current history file to be -written out. The @samp{-r} option causes the current history file to -be read, instead. If a file name, @var{file}, is given, then that file -is used as a history list. If no file name is given, BASH checks to see -if the variable @code{HISTFILE} is set. The file @file{~/.bash_history} -is used as the history file if the variable @code{HISTFILE} is not set. -@xref{History}, for more information. - -The @samp{-s} option performs history substitution on the named -arguments. - -@item jobs @r{[}-l@r{]} -This lists the active jobs. The @samp{-l} option causes the list of -process identification numbers to be listed in addition to the normal -information. @xref{Job Control}, for more information. - -@item kill @r{[}-@var{sigspec}@r{]} @var{pid} -@itemx kill @r{[}-@var{sigspec}@r{]} @var{job_spec} -@itemx kill -l -This sends the processes named by @var{pid} or @var{job_spec} the -terminate signal, or the signal specified by @var{sigspec}, if -present. Signals are specified either by number or by name. -@c where are the numbers defined? documented? - -The @samp{-l} option lists the signal names that can be sent. Typing -@code{kill} alone does nothing. @xref{kill}, for more information. - -@c KELLEM added next item (let) -@c `let' is for arith. eval. -- from posix, check if really in final -@c release version of 1.06 -@item let @var{expression} @r{[}@var{expression} @dots{}@r{]} -Each @var{expression} is an arithmetic expression to be evaluated -(@pxref{Arithmetic Evaluation}). If the last @var{expression} evaluates -to 0, @code{let} returns 1; otherwise 0 is returned.@refill - -@item local @var{name}@r{[}=@var{value}@r{]} -This creates a local variable called @var{name}, and gives it a value -of @var{value}. - -When the @code{local} command is used within a function it causes the -variable @var{name} to be restricted to that function and its children. -Otherwise it is equivalent to creating normal variables, as if the -@code{local} command had been omitted. - -When used without options, @code{local} gives a list of local variables -on the standard output. - -@item logout -This exits a login shell. - -@item popd @r{[}+-@var{n}@r{]} -This removes entries from the directory stack. With no arguments, it -removes the top directory from the stack, and changes directories -(@code{cd}) to the new top directory. - -The @samp{+@var{n}} option removes the @var{n}th entry (counting from -the left of the list shown by the @code{dirs} command), starting with -zero. For example: @code{popd +0} removes the first directory, while -@code{popd +1} removes the second. - -The @samp{-@var{n}} option removes the @var{n}th entry (counting from the -right of the list shown by the @code{dirs} command), starting with -zero. For example: @code{popd -0} removes the last directory, while -@code{popd -1} removes the next to last. - -You can see the directory stack with the @code{dirs} command. - -If the variable @var{pushd_silent} is not set, and the @code{popd} -command was successful, a @code{dirs} will be performed too. - -@item pushd @r{[}@var{dir}@r{]} -@itemx pushd @r{[}+-@var{n}@r{]} -This 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, it exchanges the top two directories. - -The @samp{+@var{n}} option rotates the stack so that the @var{n}th -directory (counting from the left of the list shown by the @code{dirs} -command) is at the top. - -The @samp{-@var{n}} option rotates the stack so that the @var{n}th -directory (counting from the right of the list shown by the @code{dirs} -command) is at the top. - -The @samp{@var{dir}} option adds the directory named by @var{dir} to -the directory stack at the top, making it the new current working -directory. - -You can see the directory stack using the @code{dirs} command. - -If the variable @var{pushd_silent} is not set, and the @code{pushd} -command was successful, a @code{dirs} will be performed too. - -@item read @r{[}@var{names}@r{]} -This reads values from the standard input into various shell -variables. One line is read from the standard input, and the first -word is assigned to the first named variable in @var{names}, the second -word to the second named variable, and so on, with leftover words -assigned to the last named variable. - -Only the characters in @code{IFS} are recognized as word delimiters -(@pxref{Predefined}). - -@item readonly @r{[}-f@r{]}@r{[}@var{names}@r{]} -The given @var{names} are marked readonly and the values of these -various @var{names} may not be changed by subsequent assignments. -If the @samp{-f} option is given, the functions corresponding to the -@var{names} are marked instead. If no arguments are given, a list of -all read-only names is printed. - -@item return @r{[}@var{n}@r{]} -This causes a function to exit with the return value specified by -@var{n}. If @var{n} is omitted, the return status is that of the last -command executed in the function body. - -@c ? what about set with no args -- prints list of vars -@item set @r{[}-aefhkntuvxldo@r{]} @r{[}@var{arguments}@r{]} -The @code{set} command sets options for the shell: - -@table @code -@item a -This marks variables which are modified or created for export. - -@item e -This tells a non-interactive shell to exit immediately if a command -exits with a non-zero status. - -@item f -This disables path name expansion. - -@item h -This tells the shell to locate and remember function commands as those -functions are defined. Normally, function commands are looked up when -the function is executed. - -@item k -This tells the shell to place all keyword arguments in the -command's environment. Normally only those that precede the command -name are placed in the environment for a command. - -@item n -This tells the shell to read commands but not execute them. This -may be used to check a shell script for syntax errors, for example. -This option is ignored in interactive shells. - -@item t -This tells the shell to exit after reading and executing one command. - -@item u -This tells the shell to treat unset variables as an error when -performing substitutions. If a substitution is attempted on an unset -variable, the shell prints an error message. If the shell is -non-interactive, it then exits with a non-zero status. - -@item v -This prints shell input lines as they are read. - -@item x -This prints the value of @code{PS4} followed by commands and their -arguments as they are executed. - -@item l -This saves and restores the bindings of the @var{name} in a @code{for} -command (@pxref{for}). - -@item d -This disables the hashing of commands that are looked up for execution. -Normally, commands are remembered in a hash table and, once found, do -not have to be looked up again. - -@c `o' option changed -@c writeup supplied by KELLEM for new o and for `H', replacing the old `o' option. -@c ? really true that H is here? that both h and H exist and are different?!? -@c that not all the one-letter options have -o named equivalents? -@item H -This enables the @samp{!} style history substitution (@pxref{History}). -This option is on by default.@refill - -@item o @r{[}@var{option-name}@r{]} -The @var{option-name} can be one of the following: -@table @code -@item allexport -Same as @samp{-a}. -@item braceexpand -The shell will enable curly brace expansion (SEE BRACE EXPANSION). This -is on by default. -@item emacs -Use an emacs-style command line editing interface -@item errexit -Same as @samp{-e}. -@item histexpand -Same as @samp{-H}. -@item ignoreeof -The effect is as if the shell command @samp{ignoreeof=10} had been -executed (@pxref{Shell Vars, ignoreeof, Shell Variables}). -@item monitor -Same as @samp{-m}. -@c ? no -m doc'ed above -@item noclobber -The effect is as if the shell command @samp{noclobber=} had been -executed (@pxref{Shell Vars, noclobber, Shell Variables}). -@item noexec -Same as @samp{-n}. -@item noglob -Same as @samp{-f}. -@item nohash -Same as @samp{-d}. -@item notify -The effect is as if the shell command @samp{notify=} had been executed -(@pxref{Shell Vars, notify, Shell Variables}). -@item nounset -Same as @samp{-u}. -@item verbose -Same as @samp{-v}. -@item vi -Use a @sc{vi}-style command line editing interface. -@item xtrace -Same as @samp{-x}. -@end table - -If no @var{option-name} is supplied, the values of the current options -are printed. -@end table - -@c KELLEM interchanged - and + below (so that - is on) -You can turn these options on and off by preceding the option letter -with @samp{-} for on, and @samp{+} for off. You can also set these -options on the command line that invokes the shell. For example: - -@example -bash$ bash -v -@end example - -@noindent -The special shell variable, @samp{$-} lists the currently defined shell -options. - -You can also use the @code{set} command to assign values to positional -parameters (@pxref{Parameter Subs}): - -@example -set test junk -@end example - -@noindent -sets the positional parameter @samp{$1} to test and @samp{$2} to junk. -The @var{arguments} are passed as positional parameters @samp{$1} to -@samp{$N}. - -If you type the @code{set} command alone, with no arguments, you get a -list of all the currently defined shell variables (@pxref{Variables}). - -@item shift @r{[}@var{n}@r{]} -This causes the positional parameters from @samp{$@var{n}+1} on up to -be renamed to @samp{$1}, @samp{$2}, and so on. If -@var{n} is not given, it is assumed to be 1. - -@item suspend @r{[}-f@r{]} -This suspends the execution of this shell until it receives a -``resume'' (@code{SIGCONT}) signal. The @samp{-f} option, if specified, -prevents messages about this being a login shell (if it is) and causes -the shell to be suspended quietly anyway. - -@item test @r{[}@var{expr}@r{]} -@itemx [@var{expr}] -These test for various conditions named in @var{expr}. They return a -status of of 0 (true) or 1 (false) depending on the evaluation of -@var{expr}. - -Expressions can be unary or binary. Unary expressions are often used -to examine the status of a file. You can have string operators and -numeric comparison operators too. - -File operators: - -@table @code -@item -b @var{file} -This tests that the file @var{file} exists and is a block special file. - -@item -c @var{file} -This tests that the file @var{file} exists and is a character special -file. - -@item -d @var{file} -This tests that the file @var{file} exists and is a directory. - -@item -f @var{file} -This tests that the file @var{file} exists and is not a directory -(tests that it is a plain file). - -@item -g @var{file} -This tests that the file @var{file} exists and has the set-group-ID bit -set. - -@item -k @var{file} -This tests that the file @var{file} exists and has its ``sticky'' bit -set. - -@item -L @var{file} -This tests that the file @var{file} exists and is a symbolic link. - -@item -p @var{file} -This tests that the file @var{file} exists and is a named pipe. - -@item -r @var{file} -This tests that the file @var{file} is readable by you. - -@item -s @var{file} -This tests that the file @var{file} exists and is not empty (has a -non-zero size). - -@item -S @var{file} -This tests that the file @var{file} exists and is a socket. - -@item -t @r{[}@var{FD}@r{]} -This tests to see if file descriptor @var{FD} is opened on a terminal. -If @var{FD} is omitted, it defaults to 1 (the standard output).@refill - -@item -u @var{file} -This tests that the file @var{file} exists and has the set-user-ID bit -set. - -@item -w @var{file} -This tests that the file @var{file} exists and is writable by you. - -@item -x @var{file} -This test that the file @var{file} exists and is executable by you. - -@item -O @var{file} -This tests that the file @var{file} exists and is, effectively, owned -by you. - -@item -G @var{file} -This tests that the file @var{file} exists and is owned by the -effective group @sc{id}. - -@item @var{file1} -nt @var{file2} -This tests that the files @var{file1} and @var{file2} exist and that -@var{file1} is newer than @var{file2} (according to modification date). - -@item @var{file1} -ot @var{file2} -This tests that the files @var{file1} and @var{file2} exist and that -@var{file1} is older than @var{file2} (according to modification date). - -@item @var{file1} -ef @var{file2} -This tests that the files @var{file} and @var{file2} exist and that -they have the same device and inode numbers. -@end table - -String operators: -@c what strings? variables? variable values? - -@table @code -@item -z @var{string} -This tests that @var{string} exists and is empty (of zero length). - -@item -l @var{string} -When this is used as an operand to any of the binary arithmetic -operators it returns the length of @var{string}. - -@item -n @var{string} -@itemx @var{string} -This tests that @var{string} exists and is not empty (has a non-zero -size). - -@item @var{string1} = @var{string2} -This tests that @var{string1} and @var{string2} exist and are equal. - -@item @var{string1} != @var{string2} -This tests that @var{string1} and @var{string2} exist are not equal. -@end table - -Other operators: - -@table @code -@item ! @var{expr} -This tests that @var{expr} exists and is false. - -@item @var{expr1} -a @var{expr2} -This tests that @var{expr1} and @var{expr2} exist and are both true. - -@item @var{expr1} -o @var{expr2} -This tests that @var{expr1} and @var{expr2} exist and that at least -one of them is true. - -@item @var{argument1} @var{op} @var{argument2} -@var{op} represents one of the arithmetic binary operators @code{-eq} -(equals), @code{-ne} (not equals), @code{-lt} (less than), @code{-le} -(less than or equal to), @code{-gt} (greater than), or @code{-ge} -(greater than or equal to). - -This tests to see if @var{argument1} and @var{argument2} exist and -also tests if @var{argument1} is equal, not equal, less than, less -than or equal to, greater than, or greater than or equal to -@var{argument2}, depending upon the operator used. -@end table - -@item times -This prints the accumulated user and system times for the shell and -for processes started from the shell. - -@item trap @r{[}-l@r{]} @r{[}@var{arguments}@r{]} @r{[}@var{sigspec}@r{]} -The command named by @var{arguments} is to be read and executed when -the shell receives the signal(s) specified by @var{sigspec}. -@var{sigspec} is either a signal name in , or a signal -number. The @code{trap} command with no arguments prints the list of -commands associated with each signal number. The @samp{-l} option -causes the shell to print a list of signal names and their -corresponding numbers. - -If @var{arguments} is absent, all specified signals are reset to -their original values. If @var{arguments} is the null string, the -signal is ignored by the shell and by the commands it invokes. - -If @var{sigspec} is @code{EXIT} (0), the command @var{arguments} is -executed upon exit from the shell. - -@item type @r{[}-all@r{]} @r{[}-type | -path@r{]} @r{[}@var{names}@r{]} -@c KELLEM: might also allow `-a',`-t', & `-p' as synonyms in 1.06 -@c if so, should document here -This allows you to test to see how each named item, @var{name}, would -be interpreted if used as a command name. -@c this item really screwy. command has ``names'', description has ``name'' - -If the @samp{-type} option is used, it returns a single word, either -@samp{alias}, @samp{function}, @samp{builtin}, or @samp{file}, if -@var{name} is an alias, shell function, shell builtin, or disk file, -respectively. If the name is not found, nothing is printed. - -If the @samp{-path} option is used, @code{type} returns either the name -of the disk file that would be executed, or nothing if @samp{-type} -doesn't return a value of @samp{file}. - -If the @samp{-all} option is used, it displays all of the -interpretations of @var{names}. This includes aliases and functions, if -and only if the @samp{-path} option is not also used.@refill - -@item ulimit @r{[}-cdfmst @r{[}@var{limit}@r{]}@r{]} -@code{ulimit} provides control over the resources available to processes -started by the shell, on systems that allow such control. If an -option is given, it is interpreted as follows: - -@table @code -@item -c -refers to the maximum size of core (memory dump) files created. - -@item -d -refers to the maximum size of a process's data segment. - -@item -f -refers to the maximum size of files created by the shell. - -@item -m -refers to the maximum resident set size. - -@item -s -refers to the maximum stack size. - -@item -t -refers to the maximum amount of cpu time, in seconds. -@end table - -If @var{limit} is given, it represents the new value of the specified -resource. Otherwise, the current value of the specified resource is -printed. - -If no options are given, the @samp{-f} is assumed to be active. Values -are in 1k increments, except for @samp{-t}, which is in seconds. - -@item umask @r{[}@var{nnn}@r{]} -This sets the user file-creation mask to the octal number @var{nnn}. -If @var{nnn} is omitted, the current value of the mask is printed. - -@item unalias @r{[}@var{names}@r{]} -This removes the named alias(es), @var{names}, from the list of defined -aliases. - -@item unset @r{[}-f@r{]} @r{[}@var{names}@r{]} -This removes the corresponding variable or function specified by -@var{names}. If the @samp{-f} option is given, then functions are -removed. - -The predefined variables @code{PATH}, @code{IFS}, @code{PPID}, -@code{PS1}, @code{PS2}, @code{UID}, and @code{EUID} cannot -be unset (@pxref{Shell Vars}). - -@item wait @r{[}n@r{]} -This asks the shell to wait for the specified process, @var{n}, and -report its termination status. @var{n} can be a process @sc{id} or a -job specification. If a job specification is given, all processes -in that job's pipeline are waited for. - -If @var{n} is not given, all currently active child processes are -waited for, and the return code is zero. @xref{wait}, for more -information. -@end table - -@node Shell Vars, Install, Built-in, Top -@appendix Variables Set or Used by the Shell - -@c be clearer for each var, who sets it, who uses it - -@cindex variables, set or used by the shell -@cindex shell variables, set or used by the shell -The following variables are set by the shell. -@xref{Variable Mechanics}, for information on shell variables. - -@c terminology needing defs or refs: -@c parent, working directory, user ID, effective user ID, full -@c pathname, instance of BASH, search path, internal field separators, -@c shell script, password file, system spool directory, primary prompt -@c string, secondary prompt string, execution trace, decoded prompt -@c string, exapnsion, end-of-file characters, exit, pathname -@c expansion, history expansion, tokenization, symbolic links, logical -@c chain of directories, complete a hostname, directory stack - -@c what is difference between IS and EXPANDS TO? -@c ? I think almost every 'expands to' here should be 'is' -@table @code -@item PPID -This is the @sc{pid} (process id) of the shell's parent. - -@item PWD -This is the current working directory. -(It's called @code{PWD} because it is the directory name the @code{pwd} -command would report.) -It is updated when you change directories with the @code{cd} command. - -@item OLDPWD -This is the previous working directory. -When you change directories with the @code{cd} command, -the directory you move to goes into @code{PWD} and the directory -you move from goes into @code{OLDPWD}. - -@item REPLY -This is set by the @code{read} built-in command (@pxref{Built-in}) when -no arguments are supplied. - -@item UID -This expands to the user @sc{id} of the current user. - -@item EUID -This expands to the effective user @sc{id} of the current user. - -@item BASH -This expands to the full pathname used to invoke this instance of BASH. - -@item BASH_VERSION -This expands to the version number of this instance of BASH. - -@item SHLVL -This is incremented by one each time an instance of BASH is started. - -@c KELLEM: the following variables are from posix.2 and should be in bash -@c these include RANDOM, SECONDS, and LINENO [not in 1.06.25] -@item RANDOM -Each time this variable is referenced, a random integer is generated. -The sequence of random numbers may be initialized by assigning a value -to @code{RANDOM}. If @code{RANDOM} is unset, it will lose its special -properties, even if it is subsequently reset.@refill - -@item SECONDS -Each time this variable is referenced, the number of seconds since shell -invocation is returned. If a value is assigned to @code{SECONDS}, the -value returned upon subsequent references is the number of seconds since -the assignment plus the value assigned. If @code{SECONDS} is unset, it -will lose its special properties, even if it is subsequently reset. - -@item LINENO -Each time this variable 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. When in a -function, the value is not the number of the source line that the -command appears on (that information has been lost by the time the -function is executed), but is an approximation of the number of commands -executed in the current function. If @code{LINENO} is unset, it will -lose its special properties, even if it is subsequently reset. -@end table - -The following variables are used by the shell. In some cases, as noted -below, BASH assigns these variables default values: - -@table @code -@item HOME -This represents the default argument for the @code{cd} command. (That -is, the command @samp{cd} with no arguments will connect to this -directory.) It is usually your login directory. For example: - -@example -HOME=/usr/home/close -@end example - -@noindent -@code{HOME} is automatically set to your login directory when you log in. - -@item PATH -This is the search path to use when the shell looks for program files -referenced in commands. Separate directory names using colons. Here's -an example: -@c explain - -@example -/usr/gnu/bin:/usr/local/bin:.:/usr/ucb:/bin:/usr/bin/X11:/usr/bin -@end example - -@item CDPATH -This is the search path for the @code{cd} command. Separate directory -names using colons. Here's an example: - -@example -CDPATH=.:~:/usr/src -@end example - -@item IFS -This defines the internal field separators. These are the characters -that separate words. -@c what words? where? -It has a default value of space, tab, and newline characters. Here's an -example: - -@example -IFS=':' -@end example - -@noindent -This allows you to read the password file as separate fields. - -@item ENV -If this parameter is set when BASH is executing a shell script, its -value is interpreted as a file name containing commands to initialize -the shell (like @file{.bashrc} for interactive shells). - -@item MAIL -This is the file name to use as your mailbox. If this file is non-zero -in length and has been modified since the last time the shell checked -the file, the shell displays the message ``@code{you have mail}''. You -control how often the shell checks this file by setting the @code{MAILCHECK} -variable. - -Here's an example using the @code{MAIL} variable: - -@example -MAIL=/usr/homes/close/mbox -@end example - -@noindent -This causes the shell to check for mail in @file{/usr/homes/close/mbox} -rather than the system spool directory. - -@item MAILCHECK -This specifies the amount of time that must pass before the shell will -check the file named by the @code{MAIL} variable to see if it has changed. The -default is 60 seconds (1 minute). An interval of 0 causes the shell -to look for mail before printing each prompt. - -For example, - -@example -MAILCHECK=600 -@end example - -@noindent -causes the shell to check for mail before printing a prompt if 600 -seconds have passed since the last check. - -@item MAILPATH -@c how relates to MAIL variable? what if both set? -This specifies multiple mailboxes for the shell to check. It is the -path the shell uses to check the named files for modifications (receipt -of mail). To distinguish which file has received mail, you can follow -each file name with a @samp{%} and some unique text which is printed -when mail is received. Separate file names with colons. Here's an -example: - -@example -MAILPATH='/usr/homes/close/mbox?"You have mail":~/shell-mail?"$_ has -mail!"' -@end example - -@noindent -This causes the shell to print ``You have mail'' whenever it detects a -change in the modification time of the file -@file{/usr/homes/close/mbox}. Additionally, the file -@file{/usr/homes/close/shell-mail} is also checked, and the message -``/usr/homes/close/shell-mail has mail!'' is printed whenever a change -is detected in its modification time.@refill - -@c KELLEM added MAIL_WARNING -@item MAIL_WARNING -If this variable is set and one of the specified mail boxes has been -accessed since the last time BASH checked, then the message ``The mail -in has been read!'' is printed.@refill - -@item PS1 -This is the primary prompt string. By default it is @samp{bash\$ }. -Here's an example: - -@example -PS1="$(whoami)@@$(hostname)$ " -@end example - -@noindent -This sets the primary prompt string to be the login name of the current -user, followed by the name of the computer, followed by a dollar sign. - -@item PS2 -This is the secondary prompt string. By default it is @samp{bash>}. -For example, - -@example -PS2='more> ' -@end example - -@noindent -sets the secondary prompt string to @samp{more> }. This is printed -whenever bash needs more input to complete a command. -@c elaborate on when needs more input? - -@item PS4 -This is the prompt string printed before each command BASH displays -during an execution trace. By default, it is @samp{+}. - -@item NO_PROMPT_VARS -If this is set, the decoded prompt string does not undergo further -expansion. - -@item HISTSIZE -This is the number of commands to remember in the command history list -(@pxref{History}). Its default value is 500. - -@item HISTFILE -This is the name of the file in which the command history list is saved -(@pxref{History}). -@c apparently: saved over sessions; history of current session not -@c there yet if you look (e.g. with emacs or cat) - -@item PROMPT_COMMAND -If this is set, the value is executed as a command prior to issuing -each primary prompt. - -@c bfox: if a shell is running disconnected from tty, every read from -@c tty gives it eof -- this way it goes away after n tries -@item IGNOREEOF -@itemx ignoreeof -This controls the action of the shell on receipt of an end-of-file -character as the sole input. If set, the value is the number of -consecutive end-of-file characters typed before bash will exit. - -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, an end-of-file -signifies the end of input to the shell. This is only in effect for -interactive shells. - -@item HOSTTYPE -This is automatically set to a string that uniquely describes the type -of machine on which BASH is executing. The default is -system-dependent. -@c example... - -@c KELLEM, adding TMOUT: TMOUT is from posix.2a, I believe -@item TMOUT -If this is set to a value greater than zero, the value is interpreted as -the number of seconds to wait for input after issuing the primary -prompt. BASH will terminate after waiting for the number of seconds. - -@item notify -If this is set, BASH will report terminated background jobs -immediately, rather than waiting until printing the next primary prompt -(@pxref{notify}). - -@item history_control -@c tested 12/26, ok -If this is set to a value of @code{ignorespace}, lines that begin with a -space won't be entered in the history list. - -If this is set to a value of @code{ignoredups}, lines that match the last -line entered in the history list won't be recorded. - -If this is unset, or set to any other value than those above, all -lines read by the shell are saved in the history list. - -@item glob_dot_filenames -If this is set, BASH includes file names beginning with a @samp{.} in -the results of pathname expansion. - -@item allow_null_glob_expansion -Normally, a filename pattern that doesn't match any files is left in the -command as is (expands to itself) . For example, @samp{*.foo} is left -as is if there are no files ending in @samp{.foo}. -If @code{allow_null_glob_expansion} is set, however, a pattern that doesn't -match anything is removed from the command (expands to a null file name). -@c example? - -@c must doc in appropriate parts of manual -@item histchars -This represents the two characters which control history expansion and -tokenization. The first character is the history expansion character; -that is, the character which signals the start of a history expansion -(normally @samp{!}). - -The second character is the character which signifies that the -remainder of the line is a comment, when found as the first character -of a word. -@c ? default histchars was empty in 1.06, 2/13/91 -@c I tried setting it, and ! stopped being special but the new chars -@c didn't seem to do anything. - -@item nolinks -If this is set, the shell doesn't follow symbolic links when doing -commands that change the current working directory. By default, BASH -follows the logical chain of directories when performing commands such -as @code{cd}. - -@item hostname_completion_file -This contains the name of a file, in the same format as -@file{/etc/hosts}, that should be read when the shell needs to -complete a hostname. You can change the file name interactively; the -next time you want to complete a hostname BASH adds the contents of the -new file to the already existing database.@refill -@c really telling user to modify a public file?!? - -@item noclobber -If this is set, BASH will not overwrite an existing file with the -@samp{>}, @samp{>&}, and @samp{<>} redirection operators. -@c KELLEM: <> opens a file descriptor for reading and writing. from posix -Such an attempt to overwrite a file will generate an error message. -You can override this via the @samp{>|} redirection operator. The @samp{>>} -(append) redirection operator will still work on existing files because -it only appends to the file and doesn't erase the file's current contents. - -@item auto_resume -This variable determines whether a command may restart a suspended job -rather than starting a new one. -@xref{Resuming}, for more information. - -@item no_exit_on_failed_exec -If this variable exists, the shell doesn't exit if it can't execute the -file specified in an @code{exec} command (@pxref{Built-in}). - -@item cdable_vars -If this is set, an argument to the @code{cd} built-in command that is -not a directory is assumed to be the name of a variable whose value -represents the directory to which you would like to @code{cd}. - -@item pushd_silent -If this is set, the @code{pushd} and @code{popd} built-in commands will -not print the current directory stack after successful execution. -@end table - -@node Install, Invoke, Shell Vars, Top -@appendix Installing BASH - -This appendix tells how to install BASH on a machine. -If BASH is already on your machine, or you are not the person installing -it, ignore this appendix. - -@cindex installing BASH -@cindex BASH, installation -To install BASH you simply type @kbd{make}. @c really? -The BASH @file{Makefile} @c really a file name? -tries to dynamically figure out what kind of machine and operating -system you are using. It makes an educated guess based on the -information it finds. - -During the @code{make} process, a message is displayed describing what -machine and operating system has been chosen for you. This information -is also saved in the file @file{.machine} so you can look at it later. - -Therefore, for most machines, simply follow this simple checklist to -install BASH: - -@enumerate -@item -Type @kbd{make}. - -@item -Wait for the compilation to finish. - -@item -Type @kbd{./bash} to see if the compile worked. -@c how can you tell if it worked? - -@item -Type @kbd{cp ./bash /usr/gnu/bin/bash} (or wherever you keep GNU -binaries) to copy BASH to your binaries directory. -@end enumerate - -@menu -* Problems:: What to do if BASH doesn't install quite so easily. - -* Files:: Files used in the @code{make} process. - -* Porting:: Porting BASH to a new machine. - -* Bugs:: What to do if you Discover Bugs in BASH. - -@end menu - -@node Problems, Files, Install, Install -@appendixsec What if it Doesn't Install so Easily? - -@cindex installation, problems with -@cindex BASH, installation problems -Sometimes BASH gets confused and will make the wrong assumptions about -your machine or operating system. If the displayed information (also -found in @file{.machine}) is incorrect, you will have to edit the file -@file{machines.h} and provide the appropriate information so that BASH -can be installed correctly. The complete instructions for doing this -are located in the @file{machines.h} file. - -@c what font should UNKNOWN_MACHINE be? -However, if BASH says that your machine type is an @sc{UNKNOWN_MACHINE}, -or BASH thought it knew something about your machine but was wrong, -then reading the next few sections could be of use to you -@xref{Files}, and @ref{Porting}, for more information). - -@node Files, Porting, Problems, Install -@appendixsec Files Used in the @code{make} Process. - -@cindex installation, files used in -@cindex BASH, files used in installation of -The following files are used during the installation of BASH, in the -@code{make} process: - -@table @code -@item Makefile -This is responsible for making the actual @file{Makefile} that is used -to create Bash. It runs the C preprocessor (usually located in -@file{/lib/cpp}) on the file @file{cpp-Makefile}, producing the output -file @file{bash-Makefile}. - -@item cpp-Makefile -This is a file of C comments and text. It contains -@code{ifdefs} that control what files get compiled and which flags -are passed to the various C files comprising BASH. It includes a file -called @file{machines.h}. - -@item machines.h -This file contains the basic compilation parameters for all of the -machines to which BASH has been ported. This file consists of a series -of conditional blocks, one per machine type. - -These conditional blocks are depend upon the unique identifier that -@file{cpp} has predefined for this machine. In some cases, additional -information can be passed from @file{Makefile}. It is possible to pass -information such as whether or not a particular file is available on -this system, and so on. - -@item bash-Makefile -This is the output from the initial stage of @code{make}. It is a -stripped down version of @file{cpp-Makefile} which is tailor-made for -your machine and operating system. All subsequent @code{makes} use -this file. -@end table - -@node Porting, Bugs, Files, Install -@appendixsec What if You Have to Port to a New Machine? - -@cindex installation, porting to a new machine -@cindex BASH, porting to a new machine -@cindex porting BASH to a new machine -To port BASH to a previously unsupported -machine, you need to create a block in @file{machines.h} -that is conditional based on a unique identifier present in your -version of the C preprocessor. - -If you don't know what that symbol is, you might try the following -simple test: - -@example -bash$ echo "main () @{ @}" > foo.c -bash$ cc -v foo.c -@end example - -@noindent -The first command puts a small C program into the file @file{foo.c}, -and the second program compiles that program. -The @code{-v} option ???. @c what does it do? - -@noindent -Look for something of the form @code{-D}@var{machine} in the output of -@code{cc}, where @var{machine} is an identifier for your machine. If -your machine's C preprocessor doesn't have a unique identifier, you will -have to define the identifier in @file{Makefile} manually. - -Let's say you have a machine from Yoyodyne Industries, called the YoYo. -It runs a version of @sc{bsd}, so it is reasonably compatible. -@c compatible with what? -However, the -@file{cpp} file on this YoYo machine doesn't define any unique identifiers. -You should change the @file{Makefile} line for @code{CPPFLAGS} to: - -@example -CPPFLAGS = -P -DYoYo -@end example - -@noindent -Then, in @file{machines.h}, make a copy of the block for -@code{UNKNOWN_MACHINE}, and change the conditional to:@refill - -@example -#if defined (YoYo) -@end example - -@noindent -Inside the YoYo block, define @samp{M_MACHINE="YoYo"} and -@samp{M_OS=BSD}. You also modify the existing defines to match your -machine's software. - -If BASH still won't compile, perhaps because of missing code that is -required for your YoYo machine, you will have to write that code and -place it within a conditional block based on YoYo. - -Most machines aren't that difficult; simply redefining a few of the -default values is sufficient. If you do run across a difficult machine, -please send all fixes and changes to bash-maintainers@@ai.mit.edu in the -form of context diffs: - -@example -diff -c orig-machines.h machines.h >machines.diffs -@end example - -@noindent -Please include information about which version of the shell you have. - -@node Bugs, , Porting, Install -@appendixsec Reporting Bugs - -@cindex BASH, reporting bugs -If you find a bug in BASH, 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 BASH that is available. -@c how can you find out if it is the latest BASH? - -Once you have ascertained that a bug really exists, you are welcome to -mail in a bug report. If you have a fix, please mail that too! - -Suggestions and ``philosophical'' bug reports should be mailed to -bug-bash@@ai.mit.edu. Genuine bug reports should be mailed to the same -place, or to bash-maintainers@@ai.mit.edu. - -@emph{All} bug reports should include: - -@itemize @bullet -@item -The version number of BASH. -@c how find it out? - -@item -The hardware and operating system used. - -@item -The compiler used to compile BASH. - -@item -A description of the bug's behavior. - -@item -A short script or ``recipe'' which demonstrates the bug. -@end itemize - -Without this information, it is generally not possible to successfully -debug BASH. Usually, without this information, the bug won't manifest -itself! - -Discussion and questions about BASH in general (including questions -about this documentation) can be sent to bug-maintainers@@ai.mit.edu. - -@node Invoke, Start-up, Install, Top -@appendix Invoking BASH -@c bad title -- more is covered - -@cindex invoking BASH -@cindex BASH, invoking -@c intro material might be useful elsewhere -The operating system starts a shell for you when you log in. - -This shell operates interactively; that is, it prompts you for commands -and processes those commands. Logging off the system ends this login -shell. - -@cindex shell, interactive -@cindex shell, login -@cindex shell, non-interactive -A login shell is one that's been started with the @samp{-login} flag, -or one whose first character of argument 0 is a @samp{-}. -@c I don't understand the last sntence -An -interactive shell is one that has been started with the -@samp{-i} flag, or one whose standard input and standard output are -both connected to terminals. - -A shell doesn't always have to be interactive. For example, if you use -a sequence of commands frequently, you can save time typing by storing -those commands in a file -@c ? is that the def of a shell script? -and direct the shell to execute this command -file when you need it. When this command file is executed a new -non-interactive shell -is started to read and execute the commands in that file. -@c not necessarily new shell - -You can tell if a shell is interactive or not by examining the contents -of the variable @code{PS1}. It is unset in non-interactive shells, and set in -interactive ones. -@c Why/when do you want to tell? If you're typing at the shell, you -@c already know it is interactive. If you're writing a file to be -@c executed by a noninteractive shell, that file knows it's noninteractive. - -@menu -* Invoke Order:: What files are invokes upon login, logout - and starting non-interactive and non-login - shells. - -* Invoke Options:: Options that modify the shell invocation - process. - -* Signals:: How BASH handles signals as an interactive - shell. - -* Tilde:: How BASH handles tilde expansion. - -* Splitting:: How BASH handles word splitting and pathname - expansion. -@end menu - -@node Invoke Order, Invoke Options, Invoke, Invoke -@appendixsec Automatic Script Execution - -@cindex invoking BASH, file order when -@cindex shell, login file order -@cindex shell, logout file order -Upon starting a login shell, the system -@c ? the system? or bash? -looks for a file containing -system-wide start-up instructions for BASH and reads and executes it. -Usually these instructions are in a file called @file{/etc/profile}. - -Next the system looks for start-up instructions for your account and -reads and executes it. These instructions are found in one of the -following files; the system searches for the following files, in order, -and reads and executes the first one it finds: - -@table @file -@item ~/.bash_profile - -@item ~/.bash_login - -@item ~/.profile -@end table - -@noindent -Since the chosen file contains start-up instructions for @emph{your} -account, you can modify and ``personalize'' this file if you want. -@xref{Start-up}, for an example of this type of file -(@file{~/.bash_profile}). If BASH can't find any of these files, -BASH starts with a default environment; no error message is given. - -When exiting a login shell, BASH reads and executes the file -@file{~/.bash_logout}, if it exists. -@c bash IS the login shell that is exiting -@xref{Start-up}, for an example of this type of file. - -@cindex shell, interactive file order -@c what causes non-login interacive shell to start up? -Upon starting a non-login, interactive shell, BASH -@c bash IS that shell -reads and executes the -file @file{~/.bashrc} if it exists. -@c ? mnemonic for 'rc' -@xref{Start-up}, for an example of this type of file. - -@cindex shell, non-interactive file order -@c what causes non-interacive shell to start up? -Upon starting a non-interactive shell, BASH -@c bash IS that shell -checks to see if the -environment variable -@c ? env var = shell var ? -@code{ENV} is non-null, and reads and executes the -file named by that variable. - -@node Invoke Options, Signals, Invoke Order, Invoke -@appendixsec Options That Modify the Shell Invocation Process - -To invoke BASH you can type: -@c why? you have one already - -@c text below says options come before -... -@example -bash @r{[}-acefhiknstuvx@r{]} @r{[}@var{options}@r{]} -@end example - -@noindent -where @var{options} represents one of the multi-character options -described a bit later in this section. BASH interprets the following -single-character options when it is invoked: - -@cindex invoking BASH, options -@cindex shell, invocation options -@c compare to 'set' options. maybe combine doc -@c listed here as -@table @code -@item a -Automatically mark variables which are modified or created for export. - -@c how does string combine with other single-char options? -@item c @var{string} -Commands are read from @var{string}. - -@item e -Exit immediately if a command exits with a nonzero status. - -@item f -Disable pathname generation. - -@item h -Locate and remember function commands as functions are defined. - -@item i -This makes the shell interactive. - -@item k -Place all keyword arguments for a command in the environment for that -command (not just those arguments that precede the command name). - -@item n -Read commands but don't execute them. - -@item s -If this option is present, or if no arguments remain after option -processing, commands are read from the standard input. (This option -allows the positional parameters to be set when invoking an interactive -shell.) - -@item t -Exit after reading and executing one command. - -@item u -Treat unset variables as an error when performing parameter expansion. - -@item v -Print shell input lines as they are read. - -@item x -After expanding each command, display the value of @code{PS4} followed -by the command and its expanded arguments. -@end table - -BASH also interprets a number of multi-character options. These -options must appear on the command line @emph{before} the single-character -options in order to be recognized. These options are:@refill - -@table @code - -@item -norc -Do not load the personal initialization file @file{~/.bashrc}. This is -the default if the shell name is @code{sh}. -@c ??? - -@item -noprofile -Do not read either @file{/etc/profile} or @file{~/.bash_profile}, if -this is a login shell. -@c what about the other profiles? ~/.bash_login, ~/.profile - -@item -rcfile @var{file} -Execute commands from @var{file} instead of from the standard personal -initialization file @file{~/.bashrc}. - -@item -version -Show the version number of this instance of BASH when starting. -@c this instance = the bash starting up? - -@item -quiet -Do not be verbose when starting up (do not show the shell version or -any other information). - -@item -login -Make BASH act as if it had been invoked by @code{login}. - -@item -nobraceexpansion -Do not perform curly brace expansion (@pxref{Grouping}). - -@item -nolineediting -Do not use the readline library to read command lines if this shell is -interactive. -@end table - -If arguments remain after option processing, -@c no args shown in syntax above -and neither the -@samp{-c} nor the @samp{-s} option has been supplied, -@c s not explained well -- didn't show use of an arg -then the first -argument is assumed to be the name of a file containing shell commands. -If BASH is invoked in this fashion, the variable @code{0} is set to the name of the -file, and the positional parameters are set to the remaining arguments. -BASH reads and executes commands from this file, then exits. - -@node Signals, Prompt, Invoke Options, Invoke -@appendixsec How BASH Handles Signals - -@cindex BASH, signal handling in -@cindex signals, how BASH handles -@cindex signal handling -@c how relates to signals in process chapter? - -@c below:explain job control, synchronous job, inherited, command -@c substitution, kernel, process group id - -When BASH is interactive, it ignores @code{SIGTERM}. This means that -@samp{kill 0} will not kill an interactive shell. Also, @code{SIGINT} -is caught and ignored, so that @code{wait} is interruptible. - -In all cases, BASH ignores @code{SIGQUIT}. - -If job control is in effect, bash ignores @code{SIGTTIN}, -@code{SIGTTOU}, and @code{SIGTSTP}. Synchronous jobs started by BASH -have signals set to the values inherited by the shell from its parent. -Background jobs (jobs started with @samp{&}) ignore @code{SIGINT} and -@code{SIGQUIT}. - -Commands run as a result of command substitution ignore the -keyboard-generated job control signals @code{SIGTTIN}, @code{SIGTTOU}, -and @code{SIGTSTP}. - -Here's a description of the signals listed above: - -@table @code -@item SIGINT -This is the signal generated (normally) by @kbd{C-c} on the keyboard. -This signal will kill most processes, although a program may choose to -ignore @code{SIGINT}. @code{SIGINT} also allows a process to clean up after itself -before dying. - -@item SIGQUIT -This is the signal generated (normally) by @kbd{C-\} on the keyboard. -@code{SIGQUIT} is identical to @code{SIGINT} except that it requests that the -operating system produce a diagnostics file (called a @dfn{core dump} -which is placed into a file named @file{core}). - -@item SIGTERM -@code{SIGTERM} is similar to @code{SIGINT} except that it is normally produced by a -software program and not from the @kbd{C-c} on the keyboard. Note that -some programs treat @code{SIGTERM} differently from @code{SIGINT}. - -@item SIGTSTP -@code{SIGTSTP} is the signal sent (normally) by the @kbd{C-z} key on the -keyboard. Some programs may ignore this signal. This signal does not -kill the process but instead @emph{stops} the process, putting the -program into a suspended state. - -@item SIGTTIN -The kernel sends the signal @code{SIGTTIN} to a job/process group that is not -in the foreground (that is, the process group's process group @sc{id} is not -equal to the terminal's foreground process group @sc{id}) and attempts to -read from the terminal. - -@item SIGTTOU -The kernel sends the signal @code{SIGTTOU} to a job/process group that is not -in the foreground and attempts to write to the terminal if, and only -if, the terminal has the @sc{tostop} bit set in its local flags word (you -can set this bit with @samp{stty tostop}). -@c tostop: code or sc? -@c what's tostop? local flags word? -@end table - -@c what is this topic really? sections removed from another appendix -@node Command Processing -@appendix Command Processing - -@node Splitting, , Tilde, Invoke -@appendixsec Word Splitting and Pathname Expansion - -@c purpose of section -- what is effect of splitting? why do we care? - -@cindex word splitting -@cindex splitting, words -@c ??? -The shell scans the results of parameter expansion and command -substitution that did not occur within double quotes for word -splitting. - -The shell treats each character of the variable @code{IFS} as a delimiter, and -splits the results of the other expansions -@c other than what? -into words on these -characters. The default value of @code{IFS} is exactly -@samp{}. -@c SPCTAB ... how notate? - @xref{Shell Vars}, for more information -on how to change the value of @code{IFS}. - -If @code{IFS} is unset or null, no splitting is done. Otherwise, each occurrence -of an @code{IFS} character is treated as a delimiter. - -Explicit null arguments (@samp{""} or @samp{''} -- i.e., single or -double quotes with nothing between them) are retained. -Implicit null arguments, resulting from the expansion of parameters -that have no values, -@c no value -- unset? null value? -are removed. If no expansion occurs, then no splitting is performed. - -@cindex expansion, pathname -@cindex pathname expansion -After word splitting, BASH scans each word for the special characters -@samp{*}, @samp{?}, and @samp{[@dots{}]}, unless the @samp{-f} option is -present. If one of these characters appears, then the word is regarded -as a pattern, and replaced with an alphabetically sorted list of -pathnames matching the pattern. @xref{File Names}, for more -information on these special characters. - -If no matching pathnames are found, and the shell variable -@code{allow_null_glob_expansion} is unset, the word is left unchanged -(@pxref{Shell Vars}). If the variable is set, the word is removed if -no matches are found. - -@c paragraph unclear -When a pattern is used for pathname generation, the character @samp{.} -(at the start of a name or immediately following a slash) must be -matched explicitly, unless the shell variable @code{glob_dot_filenames} -is set (@pxref{Shell Vars}). The slash character must always be -matched explicitly. In other cases, the @samp{.} character is not -treated specially. - -@node Start-up, Advanced Scripts, Invoke, Top -@appendix Sample Script Files - -@c some redundancy between invocation appendix and this one re login files -When you first log in, a shell process is started that establishes the -environment for your session (@pxref{Invoke Order}). A system-wide -login script assigns default values to environment variables creating a -basic, default environment (@pxref{Environment}). -(A login script is simply a file that contains commands that customize -the environment.) - -@cindex start-up files, sample -@cindex login file samples -This default environment can be quite restrictive. BASH uses various -local login scripts to allow you to change and ``personalize'' the -default environment (@pxref{Invoke Order}). If a local login scripts -exists, it is executed by the shell before you get a shell prompt, -customizing your environment for you. - -@menu -* Login Script:: Sample of a login script. - -* Logout Script:: Sample of a logout script. - -* Other Scripts:: Sample of a non-login, interactive shell - script. - -@end menu - -@node Login Script, Logout Script, Start-up, Start-up -@appendixsec Login Scripts -@c some redundancy between invocation appendix and this one re login files -@cindex login script -A local login script allows you to change the default environment to -fit your needs. If you have one it resides in your home directory. -Note that names for this script begin with a dot (@samp{.}), so the -file remains hidden when performing a standard directory listing -(@code{ls}). You have to type @code{ls -a} to see if you have any -local login scripts. If you do, it will be called one of the following -names: - -@c if you don't have one, can create one -- how know what put in it? -@c Be clear it's done after system file, so needn't duplicate what's there -@table @file -@item ~/.bash_profile - -@item ~/.bash_login - -@item ~/.profile -@end table - -Since this file contains start-up instructions for @emph{your} account, -you can modify this file to create an environment -specific to your needs. Here is an example of a BASH start-up file for -login shells, @file{~/.bash_profile}: -@c need to explain sample scripts - -@cindex login script, sample of -@cindex script, sample of a login -@example -# File: /usr/gnu/lib/Bash_profile - -# Startup file for bash login shells. -# -default_dir=/usr/gnu/lib/ - -@c how can your login shell be noninteractive? -# Test to see if this is an interactive shell. -if [ "$PS1" ]; then - PS1='\u@@\h(\#)\$ '@c KELLEM added \ before $ - ignoreeof=3 -fi - -LOGIN_SHELL=true - -# If the user has her own init file, then use that one, else use -# the canonical one. -@c why in separate rc file instead of right here? -if [ -f ~/.bashrc ]; then - source ~/.bashrc -else if [ -f $@{default_dir@}Bashrc ]; then - source $@{default_dir@}Bashrc; - fi -fi -@end example - -@node Logout Script, Other Scripts, Login Script, Start-up -@appendixsec Logout Scripts - -A logout script allows you to automate a variety of tasks like starting -background processes with a @code{nohup} option, running file clean-up -routines, or simply displaying a logout message when you log out. If a -@file{.bash_logout} file exits in your home directory, it is executed -automatically when you log out. -@c nohup not illustrated in sample script - -The logout script can contain any commands that you might type at the -shell prompt. However, a logout script is most useful when used to -display information about the session just ending and to run background -commands after you log out. - -Here's an example of a simple BASH logout file, @file{~/.bash_logout}: - -@cindex logout script -@cindex logout script, sample of -@cindex script, sample of a logout -@example -# File: /usr/close/.bash_logout -# BASH log off file - -# First clear the screen. -clear - -# Clean up my files. -echo "cleaning things up now" -rm *.o - -# Print a logout message. -echo `whoami` "logged out on" `date` - -# Then say goodbye. -echo "Au revoir" -@end example - -@node Other Scripts, Inputrc File, Logout Script, Start-up -@appendixsec Non-login, Interactive Scripts -@c what about noninteracive scripts? - -All login scripts are run when you first log in. -@c all ?? -In addition, login -scripts that end in @samp{rc} are executed each time your current shell -creates a subshell. -@c ? what are the possible rc script names? -@c ?when does it run a subshell? -Here's an example of a BASH start-up file for -non-login, interactive shells, @file{~/.bashrc}: -@cindex interactive non-login script -@cindex interactive non-login script, sample of -@cindex script, sample of an interactive non-login - -@example -# File: /usr/gnu/lib/Bashrc -# Bourne Again SHell init file. -# -# Files you make look like rw-rw-r -umask 002 - -# Don't make useless coredump files. If you want a coredump, -# say "ulimit -c unlimited" and then cause a segmentation fault. -ulimit -c 0 - -# Sometimes, there are lots of places that one can find tex -# inputs. -export TEXINPUTS=.:$HOME/bin:/usr/lib/tex/inputs:/usr/local/lib/tex/inputs - -# Where's the Gnu stuff at? -GNU=/usr/gnu/bin -X11=/usr/bin/X11 - -UTIL_PATH=$GNU:$X11 -STANDARD_PATH=/usr/local/bin:/usr/ucb:/bin:/usr/bin:/usr/etc:/etc:/usr/games -if [ "$HOSTTYPE" = "sony" ]; then STANDARD_PATH=$STANDARD_PATH:/usr/sony/bin; fi - -if [ -d $HOME/bin/$HOSTTYPE ]; then - MY_PATH=$HOME/bin/$HOSTTYPE -fi - -if [ -d $HOME/bin ]; then - MY_PATH=$MY_PATH:$HOME/bin -fi - -PATH=.:$MY_PATH:$UTIL_PATH:$STANDARD_PATH - -@c section claims to be about interactive script -- why need to test? -# If running interactively, then: -if [ "$PS1" ]; then - - # Here are a couple of functions to make csh user's lives easier. - setenv () @{ - export $1="$2" - @} - - unsetenv () @{ - unset $* - @} - - # Here are a couple of functions that make *my* life easier. - showme () @{ - local files=$(type -all -path $1) - if [ "$files" ]; then ls -l $files; else echo "No such file."; fi - @} - - # Set ignoreeof if you don't want EOF as the sole input to the shell to - # immediately signal a quit condition. This only happens at the start - # of a line if the line is empty, and you haven't just deleted a character - # with C-d. I turn this on in ~/.bash_profile so that only login shells - # have the right to be obnoxious. - # ignoreeof= - - # Set auto_resume if you want TWENEX style behavior for command names. - auto_resume= - - # Set notify if you want to be asynchronously notified about background - # job completion. - notify= - - # Make it so that failed `exec' commands don't flush this shell. - no_exit_on_failed_exec= - -@c section claims to be about non-login script - if [ ! "$LOGIN_SHELL" ]; then - PS1="\u@@\h\$ " - fi - - HISTSIZE=256 - MAILCHECK=60 - - # A couple of default aliases. - alias j='jobs -l' - alias po=popd - alias pu=pushd - alias ls='ls -F' - -HOST=$(hostname | sed -e 's/\.*//') - -xtitle () @{ echo -n -e "\033]l$*\033" @} - - if [ -f ~/.bash_aliases ]; then - source ~/.bash_aliases - fi -fi -@end example - - -@node Advanced Scripts, Tools, Start-up, Top -@appendix Writing and Debugging Scripts - -@cindex debugging shell scripts -@cindex scripts, debugging -@cindex shell scripts, debugging -When writing scripts, it's always possible that mistypings and other -errors can occur. In complicated scripts -errors may be difficult to track down and fix. - -The shell can make things simpler though, with its debugging options, -like @samp{-v} and @samp{-x}. All can be invoked by command arguments -to BASH or through the @code{set} command (@pxref{Built-in}). For -example, @code{bash -v} or @code{set -v}. -@c substitute new 'set -o ...' version of above - -The @samp{-v} option sets the shell to verbose mode. This causes -command lines to be displayed as they are read. -@c read in general? or just from a script (file)? -This is useful for -finding syntax errors. You can use this option in conjunction with -the @samp{-n} option, -@c substitute new 'set -o ...' version of above -which prevents the execution of commands. -However, note that saying @code{set -n} makes a terminal useless until -an end-of-file is typed. -@c ? how do you type eof? - -The @samp{-x} option displays each command as it is executed, following -all substitutions. -@c substitutions such as ... -This lets you see what is going on as the shell -program runs. -@c ? program = script? -It shows you what the shell did to your command line as -a result of all the substitutions that took place. This is useful to -see if your command lines do what you wanted them to do. - -In long shell scripts you can get lots of unwanted and unnecessary -debugging information from the shell when the -@samp{-x} option is used. You can reduce the amount of output by -turning this option on (@code{set -x}) -@c substitute new 'set -o ...' version of above -where you need it and turning it off (@code{set +x}) when you don't.@refill -@c you mean put 'set ' in the script itslf? - -Adding @code{echo} statements to the shell script also helps when -debugging. It's like having @code{print} statments in a program. - -You can even check for unset shell variables with the @samp{-u} option. -When you use this option, attempts to substitute variables that have not -been set causes an error message and execution is stopped. - -@c KELLEM: the next sentence sounds incorrect, will have to verify -@c All options can be turned off by saying @code{set -}. -The current setting of the shell options is available as @samp{$-}. - -@menu -* More Scripts:: Advanced sample scripts. -@end menu - -@node More Scripts, , Advanced Scripts, Advanced Scripts -@appendixsec More Examples of Shell Scripts - -@cindex shell scripts, advanced examples of -@cindex scripts, advanced examples of -Here's an example of a more advanced shell script. -@c more advanced than what? -This script tells you which file will be executed when you -use the command you give it as an argument. It uses @code{sed} to -split your path, inserting dots in place of null strings to preserve -the shell semantics. It tests each directory on your path for an -executable file whose name is the same as the argument you gave to the -script. If it finds one, it tells you what it is and exits with a -successful status. If no executable files are found, the script exits -with a failure status. - -@example -# -# which -- find out which command in $PATH is executed -# -# adapted from Kernighan and Pike -# -opath=$PATH -PATH=/usr/ucb:/bin:/usr/bin - -case $# in - 0) - echo "usage: $0 command" 1>&2 - exit 1 - ;; - *) - ;; -esac - -@c !!! my god!!!! teco**(teco**2) -for i in $(echo $opath | sed 's/^:/.:/ - s/::/:.:/g - s/$:/:./ - s/:/ /g') -do - if [ -x $i/$1 ] ; then - echo $i/$1 - exit 0 - fi -done -exit 1 -@end example - - -Here's another example, submitted by Bennett Todd -(bet@@orion.mc.duke.edu). It forces the commands run as the arguments -to the script to die after some timeout. This is handy for debugging -full-screen programs (like Emacs) that, if they get hung, wedge the -terminal fatally. - -@example -#!/bin/sh -# Launch a sleeping killer-offer - -progname=`basename $0` -timeout=10 -signal=TERM - -while test $# -gt 2 -a `expr "x$1" : "x-."` -gt 0 -do - case "x$1" - in - x-t) shift; timeout=$1; shift;; - x-s) shift; signal=$1; shift;; - esac -done - -if test $# -lt 1 -then - echo "syntax: $0 [-t timeout] [-s signal] command" 1>&2 - exit 1 -fi - -(sleep $timeout; kill -$signal $$) & -exec "$@@" -@end example - -Finally, here's one more example of a shell script, submitted by Bill -Trost (trost@@reed.bitnet). It creates an extended version of the -shell's @code{pushd} & @code{popd} commands. It's slower than the -built-ins, but also adds a couple of features to @code{pushd}: negative -numeric arguments (given a dirstack of size 3, @code{pushd +2} is -equivalent to @code{pushd -1}), and named references. With a named -reference, a command of the form @code{pushd +xterm} will rotate the -directory stack to the first directory whose final component is -@file{xterm}. It uses the @samp{#} variable construct, and lots of -@code{sets} and @code{shifts}. - -@example -# A shell-level version of pushd and popd. A bit slower, a bit -# cleverer. I added a feature, which is best described by -# example. -# Suppose you have the directory stack consisting of /tmp, -# /local/src/X11r4/mit/clients/xterm, and ~/prj/term (/tmp at the -# top). If you type "pushd +xterm", you'll end up in the first -# directory whose name end with "xterm". - -# This is a complete rewrite of a similar function posted to -# gnu.bash.bug by Martin Tomes . I've done -# a little benchmarking, and this version's pushd appears to be -# gobs faster; this is probably due to my use of the case -# construct instead of if/elif/fi. The if construct (at least in -# Bourne shell) has historically been very slow. Then again, -# popd was just as fast...? -# The alternative explanation is that his frequent use of the -# "cut" and "expr" commands slowed things down. - -# This program expects the "seq" command to give a sequence of -# numbers from $1 to $2. I have a "seq" function which is -# usually very fast. - -dirs () @{ echo $PWD $DIRS @} - -pushd () @{ - case "$1" in - "") - # Swap first two. - local here=$PWD - set $DIRS - cd "$1" - shift - DIRS="$here $*" - ;; - +[0-9]*) - local save i=$@{1#+@} - set $PWD $DIRS - for i in `seq 1 $i`; do - [ "$1" = "" ] && @{ set $PWD $DIRS ; save= @} - save="$save $1" - shift - done - [ "$1" = "" ] || @{ - cd $1 - shift - DIRS="$* $save" - @} - ;; - [-][0-9]*) - local dest=$@{1#-@} - set $PWD $DIRS - pushd +`expr $# - \\( $dest % $# \\)` - ;; - +?*) - # Feature: pushd +foo will push to directory whose - # basename is "foo". - local wrap i goal=$@{1#+@} found=false - set $PWD $DIRS - for i; do - [ $@{i##*/@} = "$goal" ] && @{ - cd $i - shift - DIRS="$* $wrap" - found=true - break - @} - wrap="$wrap $i" - shift - done - $found || @{ - echo $@{goal@}: Directory not on stack. 1>&2 - return 1 - @} - ;; - *) - [ ! -d $1 ] && @{ - echo "$1": No such file or directory 1>&2 - return 1 - @} - DIRS="$PWD $DIRS" - cd $1 - ;; - esac - true $@{pushd_silent:-`dirs`@} -@} - -popd () @{ - [ -z "$DIRS" ] && @{ - echo popd: Directory stack empty 1>&2 - return 1 - @} - case "$1" in - "") - set $DIRS - cd $1 - shift - DIRS="$*" - ;; - +*) - count=$1 - set $DIRS - # Hack until builtin test works correctly with unary + - /bin/[ $count -gt $# ] && @{ - echo popd: Directory stack not that deep 1>&2 - return 1 - @} - DIRS="`echo $DIRS | awk '@{ $'$count' = \"\"; print @}'`" - ;; - *) - echo 'popd: usage: popd [ +n ]' 1>&2 - return 1 - ;; - esac - true $@{pushd_silent:-`dirs`@} -@} -@end example - - -@node Tools, Authors, Advanced Scripts, Top -@appendix Useful Operating System Programs - -This is the section that will include useful and related operating -system commands (NOT built-ins) to use with the shell and shell -procedures. - -If you think that various utilities and commands used to support shell -programming belong in the shell programming manual, then go ahead and -add them yourself. Personally, I feel that there is no good determiner -of whether a utility belongs in the shell programming manual or whether -it belongs in the GNU operating system manual. - -@c following note by JEMS -@c maybe should include those used in examples -@c (e.g. ls, rm cat, who, sort, date, more, wc, ...) - -@node Authors, Concept Index, Tools, Top -@appendix Who and Where to Write - -@c main topic is acknowledgments, not who to write - -@cindex authors -This manual is a combined effort of a number of people. Diane Barlow -Close (close@@lunch.wpd.sgi.com) wrote the original draft. Julie -Sussman (jems@@altdorf.lcs.mit.edu) did the majority of reorganization -and the second draft. Without her help, this manual would probably -still be waiting to be written. Brian Fox (bfox@@ai.mit.edu) produced -the third draft, and provided technical advice for Diane and Julie. - -Chet Ramey (chet@@cwns1.ins.cwru.edu) provided many examples for this -manual and wrote the BASH man page. - -Richard Stallman (rms@@ai.mit.edu) provided editing and polishing of -the finished product. - -Others who provided assistance of varying degrees are mentioned in the -acknowledgement section (@pxref{Thanks}). - -Errors concerning this documentation should be sent to -bug-bash-manual@@ai.mit.edu. @xref{Bugs}, for information on where to -send bug reports for BASH itself.@refill - -@node Concept Index, , Authors, Top -@unnumbered Concept Index - -@printindex cp - -@summarycontents -@contents -@bye diff --git a/doc/rbash.0 b/doc/rbash.0 deleted file mode 100644 index 3ac18d86e..000000000 --- a/doc/rbash.0 +++ /dev/null @@ -1,59 +0,0 @@ -RBASH(1) RBASH(1) - - - -NNAAMMEE - rbash - restricted bash, see bbaasshh(1) - -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 - disallowed or not performed: - - +o changing directories with ccdd - - +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, EENNVV, or BBAASSHH__EENNVV - - +o specifying command names containing // - - +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 - --pp option to the hhaasshh builtin command - - +o importing function definitions from the shell environment at - startup - - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at - startup - - +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- - ion operators - - +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 - to the eennaabbllee builtin command - - +o using the eennaabbllee builtin command to enable disabled shell - builtins - - +o specifying the --pp option to the ccoommmmaanndd builtin command - - +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd. - - These restrictions are enforced after any startup files are read. - - When a command that is found to be a shell script is executed, rrbbaasshh - turns off any restrictions in the shell spawned to execute the script. - -SSEEEE AALLSSOO - bash(1) - - - -GNU Bash-4.0 2004 Apr 20 RBASH(1) diff --git a/doc/rbash.ps b/doc/rbash.ps deleted file mode 100644 index f5b8a74b1..000000000 --- a/doc/rbash.ps +++ /dev/null @@ -1,280 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.19.2 -%%CreationDate: Fri Jan 11 16:34:25 2013 -%%DocumentNeededResources: font Times-Roman -%%+ font Times-Bold -%%DocumentSuppliedResources: procset grops 1.19 2 -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: Default 595 842 0 () () -%%Orientation: Portrait -%%EndComments -%%BeginDefaults -%%PageMedia: Default -%%EndDefaults -%%BeginProlog -%%BeginResource: procset grops 1.19 2 -%!PS-Adobe-3.0 Resource-ProcSet -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/MANUAL{ -statusdict begin/manualfeed true store end -}bind def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/Fr{ -setrgbcolor fill -}bind def -/setcmykcolor where{ -pop -/Fk{ -setcmykcolor fill -}bind def -}if -/Fg{ -setgray fill -}bind def -/FL/fill load def -/LW/setlinewidth load def -/Cr/setrgbcolor load def -/setcmykcolor where{ -pop -/Ck/setcmykcolor load def -}if -/Cg/setgray load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -/setpagedevice{}def -}bind def -/PEND{ -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%EndProlog -%%BeginSetup -%%BeginFeature: *PageSize Default -<< /PageSize [ 595 842 ] /ImagingBBox null >> setpagedevice -%%EndFeature -%%IncludeResource: font Times-Roman -%%IncludeResource: font Times-Bold -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 -def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron -/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent -/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen -/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon -/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O -/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex -/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y -/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft -/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl -/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen -/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft -/logicalnot/minus/registered/macron/degree/plusminus/twosuperior -/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior -/ordmasculine/guilsinglright/onequarter/onehalf/threequarters -/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE -/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex -/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn -/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla -/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis -/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash -/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def -/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF(RB)72 48 Q 376.2(ASH\(1\) RB)-.35 F(ASH\(1\)) --.35 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F0 -(rbash \255 restricted bash, see)108 96 Q/F2 10/Times-Bold@0 SF(bash)2.5 -E F0(\(1\))A F1(RESTRICTED SHELL)72 112.8 Q F0(If)108 124.8 Q F2(bash) -4.397 E F0 1.897(is started with the name)4.397 F F2(rbash)4.397 E F0 -4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F24.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 136.8 R .945 -(restricted shell is used to set up an en)3.445 F .946 -(vironment more controlled than the standard shell.)-.4 F(It)5.946 E -(beha)108 148.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 -(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E 32.5<8363>108 -165.6 S(hanging directories with)-32.5 E F2(cd)2.5 E F0 32.5<8373>108 -182.4 S(etting or unsetting the v)-32.5 E(alues of)-.25 E/F3 9 -/Times-Bold@0 SF(SHELL)2.5 E/F4 9/Times-Roman@0 SF(,)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 32.5<8373>108 199.2 S -(pecifying command names containing)-32.5 E F2(/)2.5 E F0 32.5<8373>108 -216 S(pecifying a \214lename containing a)-32.5 E F2(/)2.5 E F0 -(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E 32.5<8373>108 232.8 S .45 -(pecifying a \214lename containing a slash as an ar)-32.5 F .449 -(gument to the)-.18 F F22.949 E F0 .449(option to the)2.949 F F2 -(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 244.8 Q -32.5<8369>108 261.6 S(mporting function de\214nitions from the shell en) --32.5 E(vironment at startup)-.4 E 32.5<8370>108 278.4 S(arsing the v) --32.5 E(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E -(vironment at startup)-.4 E 32.5<8372>108 295.2 S(edirecting output usi\ -ng the >, >|, <>, >&, &>, and >> redirection operators)-32.5 E 32.5 -<8375>108 312 S(sing the)-32.5 E F2(exec)2.5 E F0 -.2(bu)2.5 G -(iltin command to replace the shell with another command).2 E 32.5<8361> -108 328.8 S(dding or deleting b)-32.5 E(uiltin commands with the)-.2 E -F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8375>108 345.6 S -(sing the)-32.5 E F2(enable)2.5 E F0 -.2(bu)2.5 G -(iltin command to enable disabled shell b).2 E(uiltins)-.2 E 32.5<8373> -108 362.4 S(pecifying the)-32.5 E F22.5 E F0(option to the)2.5 E -F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E 32.5<8374>108 379.2 -S(urning of)-32.5 E 2.5(fr)-.25 G(estricted mode with)-2.5 E F2(set +r) -2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 396 Q 2.5(ys)-.15 G -(tartup \214les are read.)-2.5 E .429 -(When a command that is found to be a shell script is e)108 412.8 R -.15 -(xe)-.15 G(cuted,).15 E F2(rbash)2.929 E F0 .429(turns of)2.929 F 2.929 -(fa)-.25 G .729 -.15(ny r)-2.929 H .429(estrictions in the shell).15 F -(spa)108 424.8 Q(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E -F1(SEE ALSO)72 441.6 Q F0(bash\(1\))108 453.6 Q(GNU Bash-4.0)72 768 Q -(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP -%%Trailer -end -%%EOF diff --git a/doc/rose94.pdf b/doc/rose94.pdf deleted file mode 100644 index 1772f543c..000000000 Binary files a/doc/rose94.pdf and /dev/null differ diff --git a/doc/rose94.ps b/doc/rose94.ps deleted file mode 100644 index 1fff283ea..000000000 --- a/doc/rose94.ps +++ /dev/null @@ -1,1581 +0,0 @@ -%!PS-Adobe-3.0 -%%Creator: groff version 1.08 -%%DocumentNeededResources: font Times-Bold -%%+ font Times-Italic -%%+ font Times-Roman -%%+ font Courier -%%+ font Symbol -%%DocumentSuppliedResources: procset grops 1.08 0 -%%Pages: 13 -%%PageOrder: Ascend -%%Orientation: Portrait -%%EndComments -%%BeginProlog -%%BeginResource: procset grops 1.08 0 -/setpacking where{ -pop -currentpacking -true setpacking -}if -/grops 120 dict dup begin -/SC 32 def -/A/show load def -/B{0 SC 3 -1 roll widthshow}bind def -/C{0 exch ashow}bind def -/D{0 exch 0 SC 5 2 roll awidthshow}bind def -/E{0 rmoveto show}bind def -/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def -/G{0 rmoveto 0 exch ashow}bind def -/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/I{0 exch rmoveto show}bind def -/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def -/K{0 exch rmoveto 0 exch ashow}bind def -/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/M{rmoveto show}bind def -/N{rmoveto 0 SC 3 -1 roll widthshow}bind def -/O{rmoveto 0 exch ashow}bind def -/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/Q{moveto show}bind def -/R{moveto 0 SC 3 -1 roll widthshow}bind def -/S{moveto 0 exch ashow}bind def -/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def -/SF{ -findfont exch -[exch dup 0 exch 0 exch neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/MF{ -findfont -[5 2 roll -0 3 1 roll -neg 0 0]makefont -dup setfont -[exch/setfont cvx]cvx bind def -}bind def -/level0 0 def -/RES 0 def -/PL 0 def -/LS 0 def -/PLG{ -gsave newpath clippath pathbbox grestore -exch pop add exch pop -}bind def -/BP{ -/level0 save def -1 setlinecap -1 setlinejoin -72 RES div dup scale -LS{ -90 rotate -}{ -0 PL translate -}ifelse -1 -1 scale -}bind def -/EP{ -level0 restore -showpage -}bind def -/DA{ -newpath arcn stroke -}bind def -/SN{ -transform -.25 sub exch .25 sub exch -round .25 add exch round .25 add exch -itransform -}bind def -/DL{ -SN -moveto -SN -lineto stroke -}bind def -/DC{ -newpath 0 360 arc closepath -}bind def -/TM matrix def -/DE{ -TM currentmatrix pop -translate scale newpath 0 0 .5 0 360 arc closepath -TM setmatrix -}bind def -/RC/rcurveto load def -/RL/rlineto load def -/ST/stroke load def -/MT/moveto load def -/CL/closepath load def -/FL{ -currentgray exch setgray fill setgray -}bind def -/BL/fill load def -/LW/setlinewidth load def -/RE{ -findfont -dup maxlength 1 index/FontName known not{1 add}if dict begin -{ -1 index/FID ne{def}{pop pop}ifelse -}forall -/Encoding exch def -dup/FontName exch def -currentdict end definefont pop -}bind def -/DEFS 0 def -/EBEGIN{ -moveto -DEFS begin -}bind def -/EEND/end load def -/CNT 0 def -/level1 0 def -/PBEGIN{ -/level1 save def -translate -div 3 1 roll div exch scale -neg exch neg exch translate -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[]0 setdash -/setstrokeadjust where{ -pop -false setstrokeadjust -}if -/setoverprint where{ -pop -false setoverprint -}if -newpath -/CNT countdictstack def -userdict begin -/showpage{}def -}bind def -/PEND{ -clear -countdictstack CNT sub{end}repeat -level1 restore -}bind def -end def -/setpacking where{ -pop -setpacking -}if -%%EndResource -%%IncludeResource: font Times-Bold -%%IncludeResource: font Times-Italic -%%IncludeResource: font Times-Roman -%%IncludeResource: font Courier -%%IncludeResource: font Symbol -grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL -792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron -/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef -/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space -/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft -/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four -/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C -/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash -/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q -/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase -/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger -/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut -/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash -/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar -/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus -/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu -/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright -/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde -/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute -/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls -/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute -/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve -/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis]def/Courier@0 ENC0/Courier RE/Times-Roman@0 -ENC0/Times-Roman RE/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0 -/Times-Bold RE -%%EndProlog -%%Page: 1 1 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 12/Times-Bold@0 SF(Bash, the Bour)210.99 123 Q(ne\255Again Shell)-.18 E/F1 -10/Times-Italic@0 SF(Chet Rame)263.85 147 Q(y)-.3 E(Case W)221.72 159 Q -(estern Reserve Univer)-.92 E(sity)-.1 E -.15(ch)250.425 171 S(et@po.cwru.edu) -.15 E(ABSTRA)264.535 213 Q(CT)-.3 E/F2 10/Times-Roman@0 SF .019(An o)133 237 R --.15(ve)-.15 G(rvie).15 E 2.519(wo)-.25 G 2.519(f/)191.918 237 S .018 -(bin/sh\255compatible shells is presented, as well as an introduction to) -200.547 237 R .128(the POSIX.2 shell and tools standard.)108 249 R .128 -(These serv)5.128 F 2.628(ea)-.15 G 2.628(sa)318.562 249 S 2.628(ni)329.52 249 -S .128(ntroduction to bash.)339.928 249 R 2.628(Ac)5.128 G(ompar)439.32 249 Q -(-)-.2 E .188(ison of bash to sh and ksh is presented, as well as a discussion\ - of features unique to bash.)108 261 R(Finally)108 273 Q 3.178(,s)-.65 G .678 -(ome of the changes and ne)145.258 273 R 3.178(wf)-.25 G .678 -(eatures to appear in the ne)268.486 273 R .678(xt bash release will be)-.15 F -(discussed.)108 285 Q/F3 10/Times-Bold@0 SF 2.5(1. Intr)72 321 R(oduction)-.18 -E(Bash)97 336.6 Q F2 .904(is the shell, or command language interpreter)3.404 F -3.404(,t)-.4 G .904(hat will appear in the GNU operating system.)316.032 336.6 -R .782(The name is an acron)72 348.6 R .782(ym for the `)-.15 F(`Bourne\255Ag) --.74 E .782(ain SHell')-.05 F .782(', a pun on Ste)-.74 F 1.082 -.15(ve B)-.25 -H .783(ourne, the author of the direct).15 F .212(ancestor of the current)72 -360.6 R/F4 9/Times-Roman@0 SF(UNIX)2.712 E F2 2.712<8773>C(hell)199.131 360.6 Q -F1(/bin/sh)2.712 E F2 2.712(,w)C .212(hich appeared in the Se)256.505 360.6 R --.15(ve)-.25 G .211(nth Edition Bell Labs Research v).15 F(er)-.15 E(-)-.2 E -(sion of)72 372.6 Q F4(UNIX)2.5 E F2([1].).833 E .191(Bash is an)97 388.2 R F3 -(sh)2.691 E F2 .192 -(\255compatible shell that incorporates useful features from the K)B .192 -(orn shell \()-.35 F F3(ksh)A F2 .833(\)[)C .192(2] and the)-.833 F 2.767(Cs)72 -400.2 S .267(hell \()85.327 400.2 R F3(csh)A F2 .833(\)[)C .267 -(3], described later in this article.)-.833 F .266 -(It is ultimately intended to be a conformant implementation)5.267 F 1.965 -(of the IEEE POSIX Shell and T)72 412.2 R 1.966(ools speci\214cation \(IEEE W) --.8 F 1.966(orking Group 1003.2\).)-.8 F 1.966(It of)6.966 F 1.966 -(fers functional)-.25 F(impro)72 424.2 Q -.15(ve)-.15 G(ments o).15 E -.15(ve) --.15 G 2.5(rs).15 G 2.5(hf)155.28 424.2 S(or both interacti)166.11 424.2 Q .3 --.15(ve a)-.25 H(nd programming use.).15 E .802 -(While the GNU operating system will most lik)97 439.8 R .801(ely include a v) --.1 F .801(ersion of the Berk)-.15 F(ele)-.1 E 3.301(ys)-.15 G .801 -(hell csh, bash)448.238 439.8 R .108(will be the def)72 451.8 R .108 -(ault shell.)-.1 F(Lik)5.108 E 2.608(eo)-.1 G .108(ther GNU softw)199.658 451.8 -R .108(are, bash is quite portable.)-.1 F .109(It currently runs on nearly e) -5.109 F -.15(ve)-.25 G(ry).15 E -.15(ve)72 463.8 S .367(rsion of).15 F F4(UNIX) -2.867 E F2 .367(and a fe)2.867 F 2.867(wo)-.25 G .367 -(ther operating systems \255 an independently-supported port e)187.933 463.8 R -.366(xists for OS/2, and)-.15 F .706(there are rumors of ports to DOS and W)72 -475.8 R(indo)-.4 E .706(ws NT)-.25 F 5.706(.P)-.74 G .706(orts to)295.97 475.8 -R F4(UNIX)3.206 E F2(-lik)A 3.206(es)-.1 G .706(ystems such as QNX and Minix) -372.979 475.8 R(are part of the distrib)72 487.8 Q(ution.)-.2 E .51 -(The original author of bash w)97 503.4 R .51(as Brian F)-.1 F .509 -(ox, an emplo)-.15 F .509(yee of the Free Softw)-.1 F .509(are F)-.1 F 3.009 -(oundation. The)-.15 F(cur)3.009 E(-)-.2 E(rent de)72 515.4 Q -.15(ve)-.25 G -(loper and maintainer is Chet Rame).15 E 1.3 -.65(y, a v)-.15 H(olunteer who w) -.45 E(orks at Case W)-.1 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)458.91 515.4 Q --.15(ve)-.25 G(rsity).15 E(.)-.65 E F3 2.5(2. What)72 539.4 R(is a shell?)2.5 E -F2 1.241(At its base, a shell is simply a macro processor that e)97 555 R -.15 -(xe)-.15 G 1.242(cutes commands.).15 F(A)6.242 E F4(UNIX)3.742 E F2 1.242 -(shell is both a)3.742 F .189(command interpreter)72 567 R 2.688(,w)-.4 G .188 -(hich pro)167.787 567 R .188(vides the user interf)-.15 F .188 -(ace to the rich set of)-.1 F F4(UNIX)2.688 E F2 .188 -(utilities, and a programming)2.688 F .751(language, allo)72 579 R .752 -(wing these utilitites to be combined.)-.25 F .752 -(The shell reads commands either from a terminal or a)5.752 F 2.52 -(\214le. Files)72 591 R .019 -(containing commands can be created, and become commands themselv)2.52 F 2.519 -(es. These)-.15 F(ne)2.519 E 2.519(wc)-.25 G(ommands)465.11 591 Q(ha)72 603 Q -.395 -.15(ve t)-.2 H .095(he same status as system commands in directories lik) -.15 F(e)-.1 E F3(/bin)2.595 E F2 2.595(,a)C(llo)342.575 603 Q .096 -(wing users or groups to establish cus-)-.25 F(tom en)72 615 Q(vironments.)-.4 -E F3 2.5(2.1. Command)72 639 R(Inter)2.5 E(pr)-.1 E(eter)-.18 E F2 2.926(As)97 -654.6 S .426(hell allo)111.036 654.6 R .426(ws e)-.25 F -.15(xe)-.15 G .426 -(cution of).15 F F4(UNIX)2.926 E F2 .426 -(commands, both synchronously and asynchronously)2.926 F 5.425(.T)-.65 G(he) -460.165 654.6 Q F1 -.37(re)2.925 G(dir).37 E(ec-)-.37 E(tion)72 666.6 Q F2 .334 -(constructs permit \214ne-grained control of the input and output of those com\ -mands, and the shell allo)2.833 F(ws)-.25 E .559(control o)72 678.6 R -.15(ve) --.15 G 3.058(rt).15 G .558(he contents of their en)126.697 678.6 R(vironment.) --.4 E F4(UNIX)5.558 E F2 .558(shells also pro)3.058 F .558 -(vide a small set of b)-.15 F .558(uilt-in commands)-.2 F(\()72 690.6 Q F1 -.2 -(bu)C(iltins).2 E F2 4.611(\)i)C 2.112 -(mplementing functionality impossible \(e.g.,)115.861 690.6 R F3(cd)4.612 E F2 -(,)A F3(br)4.612 E(eak)-.18 E F2(,)A F3(continue)4.612 E F2 4.612(,a)C(nd) -399.074 690.6 Q F3(exec)4.612 E F2 4.612(\)o)C 4.612(ri)444.948 690.6 S(ncon) -455.67 690.6 Q -.15(ve)-.4 G(nient).15 E .32 LW 76 700.6 72 700.6 DL 80 700.6 -76 700.6 DL 84 700.6 80 700.6 DL 88 700.6 84 700.6 DL 92 700.6 88 700.6 DL 96 -700.6 92 700.6 DL 100 700.6 96 700.6 DL 104 700.6 100 700.6 DL 108 700.6 104 -700.6 DL 112 700.6 108 700.6 DL 116 700.6 112 700.6 DL 120 700.6 116 700.6 DL -124 700.6 120 700.6 DL 128 700.6 124 700.6 DL 132 700.6 128 700.6 DL 136 700.6 -132 700.6 DL 140 700.6 136 700.6 DL 144 700.6 140 700.6 DL/F5 8/Times-Roman@0 -SF 2<8755>72 710.6 S(NIX is a trademark of X/OPEN)83.776 710.6 Q EP -%%Page: 2 2 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-2-)279.67 48 S(\()72 84 Q/F1 10/Times-Bold@0 SF -(history)A F0(,)A F1(getopts)3.505 E F0(,)A F1(kill)3.505 E F0 3.505(,o)C(r) -172.795 84 Q F1(pwd)3.505 E F0 3.505(,f)C 1.005(or e)207.305 84 R 1.005 -(xample\) to obtain via separate utilities.)-.15 F 1.005 -(Shells may be used interac-)6.005 F(ti)72 96 Q -.15(ve)-.25 G -(ly or non-interacti).15 E -.15(ve)-.25 G 2.5(ly: the).15 F 2.5(ya)-.15 G -(ccept input typed from the k)207.42 96 Q -.15(ey)-.1 G -(board or from a \214le.).15 E F1 2.5(2.2. Pr)72 120 R(ogramming Language)-.18 -E F0 .501(While e)97 135.6 R -.15(xe)-.15 G .501 -(cuting commands is essential, most of the po).15 F .501(wer \(and comple)-.25 -F .502(xity\) of shells is due to their)-.15 F .05 -(embedded programming languages.)72 147.6 R(Lik)5.049 E 2.549(ea)-.1 G .349 --.15(ny h)245.398 147.6 T(igh-le).15 E -.15(ve)-.25 G 2.549(ll).15 G .049 -(anguage, the shell pro)303.276 147.6 R .049(vides v)-.15 F .049 -(ariables, \215o)-.25 F 2.549(wc)-.25 G(ontrol)480.11 147.6 Q -(constructs, quoting, and functions.)72 159.6 Q .475 -(The basic syntactic element is a)97 175.2 R/F2 10/Times-Italic@0 SF .475 -(simple command)2.975 F F0 5.475(.A)C .475 -(simple command consists of an optional set of)315.405 175.2 R -.25(va)72 187.2 -S .525(riable assignments, a command w).25 F .525 -(ord, and an optional list of ar)-.1 F 3.024(guments. Operators)-.18 F .524 -(to redirect input and)3.024 F(output may appear an)72 199.2 Q -(ywhere in a simple command.)-.15 E(Some e)5 E(xamples are:)-.15 E/F3 10 -/Courier@0 SF(who)97 211.2 Q(trn -e -S1 -N)97 223.2 Q(ls -l /bin > binfiles)97 -235.2 Q(make > make.out 2>make.errs)97 247.2 Q F0 2.518(Ap)97 262.8 S .018 -(ipeline is a sequence of tw)111.738 262.8 R 2.518(oo)-.1 G 2.518(rm)230.056 -262.8 S .018(ore commands separated by the character)243.684 262.8 R/F4 10 -/Symbol SF2.519 E F0 5.019(.T)C .019(he standard output)430.082 262.8 R -(of the \214rst command is connected to the standard input of the second.)72 -274.8 Q(Examples of pipelines include:)5 E F3(who | wc -l)97 286.8 Q -(ls -l | sort +3nr)97 298.8 Q F0 .578 -(Simple commands and pipelines may be combined into)97 314.4 R F2(lists)3.078 E -F0 5.578(.A)C .578(list is a sequence of pipelines sepa-)360.002 314.4 R .289 -(rated by one of)72 326.4 R F1(;)2.789 E F0(,)A F1(&)2.789 E F0(,)A F1(&&)2.789 -E F0 2.789(,o)C(r)185.103 326.4 Q F42.789 E F0 2.789(,a)C .289 -(nd optionally terminated by)210.831 326.4 R F1(;)2.789 E F0(,)A F1(&)2.789 E -F0 2.789(,o)C 2.789(ran)352.555 326.4 S -.25(ew)370.903 326.4 S 2.789 -(line. Commands).25 F .289(separated by)2.789 F F1(;)72 338.4 Q F0 .336(are e) -2.836 F -.15(xe)-.15 G .336(cuted sequentially; the shell w).15 F .335 -(aits for each to complete in turn.)-.1 F .335(If a command is terminated by) -5.335 F F1(&)2.835 E F0(,)A .007(the shell e)72 350.4 R -.15(xe)-.15 G .007 -(cutes it in the).15 F F2(bac)2.507 E(kgr)-.2 E(ound)-.45 E F0 2.508(,a)1.666 G -.008(nd does not w)236.076 350.4 R .008(ait for it to \214nish.)-.1 F .008 -(If tw)5.008 F 2.508(oc)-.1 G .008(ommands are separated by)397.616 350.4 R F1 -(&&)72 362.4 Q F0 3.008(,t)C .508(he second command e)96.948 362.4 R -.15(xe) --.15 G .508(cutes only if the \214rst command succeeds.).15 F 3.007(As)5.508 G -.507(eparator of)383.575 362.4 R F43.007 E F0 .507(causes the sec-)3.007 -F(ond command to e)72 374.4 Q -.15(xe)-.15 G(cute only if the \214rst f).15 E -2.5(ails. Some)-.1 F -.15(ex)2.5 G(amples are:).15 E F3(who ; date)97 386.4 Q -(cd /usr/src || exit 1)97 398.4 Q(cd "$@" && xtitle $HOST: $PWD)97 410.4 Q F0 -1.36(The shell programming language pro)97 426 R 1.361(vides a v)-.15 F 1.361 -(ariety of \215o)-.25 F 3.861(wc)-.25 G 1.361(ontrol structures.)353.276 426 R -(The)6.361 E F1 -.25(fo)3.861 G(r).25 E F0(command)3.861 E(allo)72 438 Q .654 -(ws a list of commands to be e)-.25 F -.15(xe)-.15 G .654 -(cuted once for each w).15 F .654(ord in a w)-.1 F .654(ord list.)-.1 F(The) -5.654 E F1(case)3.154 E F0 .654(command allo)3.154 F .654(ws a)-.25 F .627 -(list to be e)72 450 R -.15(xe)-.15 G .628(cuted if a w).15 F .628 -(ord matches a speci\214ed pattern.)-.1 F(The)5.628 E F1(while)3.128 E F0(and) -3.128 E F1(until)3.128 E F0 .628(commands e)3.128 F -.15(xe)-.15 G .628 -(cute a list of).15 F 1.559 -(commands as long as a guard command completes successfully or f)72 462 R 1.559 -(ails, respecti)-.1 F -.15(ve)-.25 G(ly).15 E 6.559(.T)-.65 G(he)440.892 462 Q -F1(if)4.059 E F0(command)4.059 E(allo)72 474 Q(ws e)-.25 E -.15(xe)-.15 G -(cution of dif).15 E(ferent command lists depending on the e)-.25 E -(xit status of a guard command.)-.15 E(A)97 489.6 Q F2 .385(shell function) -2.885 F F0 .385(associates a list of commands with a name.)2.885 F .386 -(Each time the name is used as a simple)5.385 F .938(command, the list is e)72 -501.6 R -.15(xe)-.15 G 3.438(cuted. This).15 F -.15(exe)3.438 G .938 -(cution tak).15 F .938(es place in the current shell conte)-.1 F .937 -(xt; no ne)-.15 F 3.437(wp)-.25 G .937(rocess is)468.903 501.6 R 2.5 -(created. Functions)72 513.6 R(may ha)2.5 E .3 -.15(ve t)-.2 H(heir o).15 E -(wn ar)-.25 E(gument lists and local v)-.18 E(ariables, and may be recursi)-.25 -E -.15(ve)-.25 G(.).15 E .722(The shell language pro)97 529.2 R .722(vides v) --.15 F .722(ariables, which may be both set and referenced.)-.25 F 3.222(An) -5.722 G .722(umber of special)435.906 529.2 R 1.02 -(parameters are present, such as)72 541.2 R F1($@)3.519 E F0 3.519(,w)C 1.019 -(hich returns the shell')231.257 541.2 R 3.519(sp)-.55 G 1.019 -(ositional parameters \(command-line ar)333.103 541.2 R(gu-)-.18 E(ments\),)72 -553.2 Q F1($?)2.906 E F0 2.906(,t)C .406(he e)122.812 553.2 R .406 -(xit status of the pre)-.15 F .406(vious command, and)-.25 F F1($$)2.906 E F0 -2.906(,t)C .406(he shell')322.436 553.2 R 2.906(sp)-.55 G .406(rocess I.D.) -368.248 553.2 R .407(In addition to pro)5.406 F(vid-)-.15 E .129 -(ing special parameters and user)72 565.2 R .129(-de\214ned v)-.2 F .129 -(ariables, the shell permits the v)-.25 F .128(alues of certain v)-.25 F .128 -(ariables to control)-.25 F .16(its beha)72 577.2 R(vior)-.2 E 5.16(.S)-.55 G -.16(ome of these v)131.57 577.2 R .16(ariables include)-.25 F F1(IFS)2.661 E F0 -2.661(,w)C .161(hich controls ho)284.202 577.2 R 2.661(wt)-.25 G .161 -(he shell splits w)361.375 577.2 R(ords,)-.1 E F1 -.74(PA)2.661 G(TH)-.21 E F0 -2.661(,w)C(hich)486.78 577.2 Q .392 -(tells the shell where to look for commands, and)72 589.2 R F1(PS1)2.892 E F0 -2.892(,w)C .392(hose v)297.01 589.2 R .392 -(alue is the string the shell uses to prompt for)-.25 F 3.371(commands. There) -72 601.2 R .871(are a fe)3.371 F 3.371(wv)-.25 G .871(ariables whose v)196.645 -601.2 R .871(alues are set by the shell and normally only referenced by)-.25 F -(users;)72 613.2 Q F1(PWD)3.663 E F0 3.663(,w)C 1.163(hose v)135.706 613.2 R -1.163(alue is the pathname of the shell')-.25 F 3.662(sc)-.55 G 1.162(urrent w) -313.068 613.2 R 1.162(orking directory)-.1 F 3.662(,i)-.65 G 3.662(so)421.894 -613.2 S 1.162(ne such v)434.446 613.2 R(ariable.)-.25 E -1.11(Va)72 625.2 S -.008(riables can be used in nearly an)1.11 F 2.509(ys)-.15 G .009(hell conte) -219.37 625.2 R .009(xt and are particularly v)-.15 F .009 -(aluable when used with control struc-)-.25 F(tures.)72 637.2 Q .583 -(There are se)97 652.8 R -.15(ve)-.25 G .583(ral shell).15 F F2 -.2(ex)3.083 G -(pansions).2 E F0 5.583(.A)C -.25(va)254.298 652.8 S(riable).25 E F2(name)3.083 -E F0 .583(is e)3.083 F .582(xpanded to its v)-.15 F .582(alue using ${)-.25 F -F2(name)A F0 .582(}, where)B 1.387(the braces are optional.)72 664.8 R 1.387 -(There are a number of parameter e)6.387 F 1.388(xpansions a)-.15 F -.25(va)-.2 -G 3.888(ilable. F).25 F 1.388(or e)-.15 F 1.388(xample, there are)-.15 F(${)72 -676.8 Q F2(name)A F0<3aad>A F2(wor)A(d)-.37 E F0 .891(}, which e)B .891 -(xpands to)-.15 F F2(wor)3.391 E(d)-.37 E F0(if)3.391 E F2(name)3.391 E F0 .891 -(is unset or null, and the in)3.391 F -.15(ve)-.4 G .89(rse ${).15 F F2(name)A -F0(:+)A F2(wor)A(d)-.37 E F0 .89(}, which)B -.15(ex)72 688.8 S 1.203(pands to) -.15 F F2(wor)3.703 E(d)-.37 E F0(if)3.703 E F2(name)3.703 E F0 1.203 -(is set and not null.)3.703 F F2 1.203(Command substitution)6.203 F F0(allo) -3.703 E 1.204(ws the output of a command to)-.25 F .918 -(replace the command name.)72 700.8 R .918(The syntax is `)5.918 F F2(command)A -F0(`.)A F2(Command)5.918 E F0 .918(is e)3.418 F -.15(xe)-.15 G .918 -(cuted and it and the backquotes).15 F .299 -(are replaced by its output, with trailing ne)72 712.8 R .299(wlines remo)-.25 -F -.15(ve)-.15 G(d.).15 E F2 -.8(Pa)5.299 G .299(thname e).8 F(xpansion)-.2 E -F0 .299(is a w)2.799 F .299(ay to e)-.1 F .299(xpand a w)-.15 F(ord)-.1 E 1.586 -(to a set of \214lenames.)72 724.8 R -.8(Wo)6.586 G 1.586(rds are re).8 F -.05 -(ga)-.15 G 1.586(rded as patterns, in which the characters).05 F F1(*)4.086 E -F0(,)A F1(?)4.086 E F0 4.085(,a)C(nd)432.115 724.8 Q F1([)4.085 E F0(ha)4.085 E -1.885 -.15(ve s)-.2 H(pecial).15 E EP -%%Page: 3 3 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-3-)279.67 48 S 2.845(meaning. W)72 84 R .346(ords\ - containing these special characters are replaced with a sorted list of matchi\ -ng pathnames.)-.8 F(If a w)72 96 Q -(ord generates no matches, it is left unchanged.)-.1 E/F1 10/Times-Italic@0 SF -(Quoting)97 111.6 Q F0 .85(is used to remo)3.35 F 1.15 -.15(ve t)-.15 H .85 -(he special meaning of characters or w).15 F 3.35(ords. It)-.1 F .85 -(can disable special treat-)3.35 F .314 -(ment for shell operators or other special characters, pre)72 123.6 R -.15(ve) --.25 G .315(nt reserv).15 F .315(ed w)-.15 F .315 -(ords from being recognized as such,)-.1 F .683(and inhibit v)72 135.6 R .683 -(ariable e)-.25 F 3.183(xpansion. The)-.15 F .683 -(shell has three quoting mechanisms:)3.183 F 3.183(ab)5.683 G .683 -(ackslash preserv)387.413 135.6 R .682(es the literal)-.15 F -.25(va)72 147.6 S -.417(lue of the ne).25 F .417(xt character)-.15 F 2.917(,ap)-.4 G .417 -(air of single quotes preserv)196.712 147.6 R .417(es the literal v)-.15 F .418 -(alue of each character between the)-.25 F 1.426 -(quotes, and a pair of double quotes preserv)72 159.6 R 1.425 -(es the literal meaning of enclosed characters while allo)-.15 F(wing)-.25 E -(some e)72 171.6 Q(xpansions.)-.15 E 1.054(Some of the commands b)97 187.2 R -1.054(uilt into the shell are part of the programming language.)-.2 F(The)6.055 -E/F2 10/Times-Bold@0 SF(br)3.555 E(eak)-.18 E F0(and)3.555 E F2(continue)72 -199.2 Q F0 1.175(commands control loop e)3.675 F -.15(xe)-.15 G 1.175 -(cution as in the C language.).15 F(The)6.175 E F2 -2.3 -.15(ev a)3.675 H(l).15 -E F0 -.2(bu)3.675 G 1.174(iltin allo).2 F 1.174(ws a string to be)-.25 F .204 -(parsed and e)72 211.2 R -.15(xe)-.15 G .204(cuted as a command.).15 F F2 -.65 -(Wa)5.205 G(it).65 E F0 .205 -(tells the shell to pause until the processes speci\214ed as ar)2.705 F -(guments)-.18 E(ha)72 223.2 Q .3 -.15(ve ex)-.2 H(ited.).15 E F2 2.5 -(2.3. Interacti)72 247.2 R .2 -.1(ve F)-.1 H(eatur)-.15 E(es)-.18 E F0 .51 -(Shells ha)97 262.8 R .81 -.15(ve b)-.2 H -.15(eg).15 G .51(un of).15 F .51 -(fering features geared speci\214cally for interacti)-.25 F .81 -.15(ve u)-.25 -H .51(se rather than to augment the).15 F .76(programming language.)72 274.8 R -.761(These interacti)5.76 F 1.061 -.15(ve f)-.25 H .761 -(eatures include job control, command line editing, history and).15 F(aliases.) -72 286.8 Q .626(Job control is a f)97 302.4 R .626(acility pro)-.1 F .626 -(vided jointly by the shell and the)-.15 F/F3 9/Times-Roman@0 SF(UNIX)3.125 E -F0 -.1(ke)3.125 G .625(rnel that allo).1 F .625(ws users to selec-)-.25 F(ti)72 -314.4 Q -.15(ve)-.25 G .344 -(ly stop \(suspend\) and restart \(resume\) processes.).15 F .345 -(Each pipeline e)5.345 F -.15(xe)-.15 G .345 -(cuted by the shell is referred to as a).15 F F1(job)72 326.4 Q F0 2.989(.J)C -.488(obs may be suspended and restarted in either the fore)94.159 326.4 R .488 -(ground, where the)-.15 F 2.988(yh)-.15 G -2.25 -.2(av e)397.148 326.4 T .488 -(access to the terminal,)3.188 F .833(or background, where the)72 338.4 R 3.333 -(ya)-.15 G .834(re isolated and cannot read from the terminal.)189.312 338.4 R --.8(Ty)5.834 G .834(ping the).8 F F1(suspend)3.334 E F0(character)5 E .459(whi\ -le a process is running stops that process and returns control to the shell.)72 -350.4 R .459(Once a job is suspended, the)5.459 F .392 -(user manipulates the job')72 362.4 R 2.892(ss)-.55 G .392(tate, using)184.118 -362.4 R F2(bg)2.892 E F0 .393(to continue it in the background,)2.892 F F2(fg) -2.893 E F0 .393(to return it to the fore)2.893 F(ground)-.15 E .891(and a)72 -374.4 R -.1(wa)-.15 G .891(it its completion, or).1 F F2(kill)3.391 E F0 .891 -(to send it a signal.)3.391 F(The)5.89 E F2(jobs)3.39 E F0 .89 -(command lists the status of jobs, and)3.39 F F2(wait)3.39 E F0 .407 -(will pause the shell until a speci\214ed job terminates.)72 386.4 R .407 -(The shell pro)5.407 F .407(vides a number of w)-.15 F .407 -(ays to refer to a job,)-.1 F(and will notify the user whene)72 398.4 Q -.15 -(ve)-.25 G 2.5(rab).15 G(ackground job terminates.)220.18 398.4 Q -.4(Wi)97 414 -S .956(th the adv).4 F .956(ent of more po)-.15 F .956 -(werful terminals and terminal emulators, more sophisticated interaction)-.25 F -.253(than that pro)72 426 R .253(vided by the)-.15 F F3(UNIX)2.753 E F0 -.1(ke) -2.754 G .254(rnel terminal dri).1 F -.15(ve)-.25 G 2.754(ri).15 G 2.754(sp) -293.592 426 S 2.754(ossible. Some)305.236 426 R .254(shells of)2.754 F .254 -(fer command line editing,)-.25 F 1.141 -(which permits a user to edit lines of input using f)72 438 R(amiliar)-.1 E F1 -(emacs)3.64 E F0(or)3.64 E F1(vi)3.64 E F0 1.14 -(-style commands before submitting)B .02(them to the shell.)72 450 R .02 -(Editors allo)5.02 F 2.52(wc)-.25 G .02(orrections to be made without ha)206.31 -450 R .021(ving to erase back to the point of error)-.2 F 2.521(,o)-.4 G(r) -500.67 450 Q .135(start the line ane)72 462 R 3.935 -.65(w. C)-.25 H .135 -(ommand line editors run the g).65 F .135(amut from a small \214x)-.05 F .134 -(ed set of commands and k)-.15 F .434 -.15(ey b)-.1 H(ind-).15 E -(ings to input f)72 474 Q(acilities which allo)-.1 E 2.5(wa)-.25 G -(rbitrary actions to be bound to a k)217.2 474 Q .3 -.15(ey o)-.1 H 2.5(rk).15 -G .3 -.15(ey s)379.88 474 T(equence.).15 E .145(Modern shells also k)97 489.6 R -.145(eep a history)-.1 F 2.645(,w)-.65 G .146 -(hich is the list of commands a user has typed.)243.49 489.6 R .146(Shell f) -5.146 F .146(acilities are)-.1 F -.2(av)72 501.6 S .368(ailable to recall pre) --.05 F .367(vious commands and use portions of old commands when composing ne) --.25 F 2.867(wo)-.25 G 2.867(nes. The)467.253 501.6 R 1.456 -(command history can be sa)72 513.6 R -.15(ve)-.2 G 3.957(dt).15 G 3.957 -(oa\214)207.522 513.6 S 1.457 -(le and read back in at shell startup, so it persists across sessions.)230.436 -513.6 R .675(Shells which pro)72 525.6 R .675 -(vide both command editing and history generally ha)-.15 F .974 -.15(ve e)-.2 H -.674(diting commands to interacti).15 F -.15(ve)-.25 G(ly).15 E(step forw)72 -537.6 Q(ard and backw)-.1 E(ard through the history list.)-.1 E .013 -(Aliases allo)97 553.2 R -5.012 2.513(wa s)-.25 H .014 -(tring to be substituted for a command name.)164.28 553.2 R(The)5.014 E 2.514 -(yc)-.15 G .014(an be used to create a mnemonic)373.396 553.2 R .568(for a)72 -565.2 R F3(UNIX)3.068 E F0 .568(command name \()3.068 F/F4 10/Courier@0 SF .568 -(alias del=rm)B F0 .568(\), to e)B .567(xpand a single w)-.15 F .567 -(ord to a comple)-.1 F 3.067(xc)-.15 G .567(ommand \()432.603 565.2 R F4(alias) -A .255(news='xterm -g 80x45 -title trn -e trn -e -S1 -N &')72 577.2 R F0 .255 -(\), or to ensure that a command)B(is in)72 589.2 Q -.2(vo)-.4 G -.1(ke).2 G -2.5(dw).1 G(ith a basic set of options \()122.41 589.2 Q F4 -(alias ls="/bin/ls -F")A F0(\).)A F2 2.5(3. The)72 613.2 R -(POSIX Shell Standard)2.5 E F1(POSIX)97 628.8 Q F0 .239 -(is a name originally coined by Richard Stallman for a f)4.405 F .239 -(amily of open system standards based)-.1 F(on)72 640.8 Q F3(UNIX)3.239 E F0 -5.739(.T)C .74(here are a number of aspects of)122.079 640.8 R F3(UNIX)3.24 E -F0 .74(under consideration for standardization, from the basic)3.24 F .192 -(system services at the system call and C library le)72 652.8 R -.15(ve)-.25 G -2.692(lt).15 G 2.692(oa)290.16 652.8 S .191 -(pplications and tools to system administration and)302.292 652.8 R 2.5 -(management. Each)72 664.8 R(area of standardization is assigned to a w)2.5 E -(orking group in the 1003 series.)-.1 E 3.602(The POSIX Shell and T)97 680.4 R -3.602(ools standard has been de)-.8 F -.15(ve)-.25 G 3.603(loped by IEEE W).15 -F 3.603(orking Group 1003.2)-.8 F -1.667(\(POSIX.2\) [4].)72 692.4 R 2.799 -(It concentrates on the command interpreter interf)7.799 F 2.799 -(ace and utility programs commonly)-.1 F -.15(exe)72 704.4 S 2.345 -(cuted from the command line or by other programs.).15 F 2.345(An initial v) -7.345 F 2.345(ersion of the standard has been)-.15 F(appro)72 716.4 Q -.15(ve) --.15 G 2.915(da).15 G .414(nd published by the IEEE, and w)116.265 716.4 R .414 -(ork is currently underw)-.1 F .414(ay to update it.)-.1 F .414 -(There are four primary)5.414 F(areas of w)72 728.4 Q -(ork in the 1003.2 standard:)-.1 E EP -%%Page: 4 4 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-4-)279.67 48 S 21.5<8341>72 84 S .835 -(spects of the shell')104.22 84 R 3.335(ss)-.55 G .835 -(yntax and command language.)192 84 R 3.335(An)5.835 G .835(umber of special b) -338.095 84 R .835(uiltins such as)-.2 F/F1 10/Times-Bold@0 SF(cd)3.335 E F0 -(and)3.335 E F1(exec)97 96 Q F0 .545(are being speci\214ed as part of the shel\ -l, since their functionality usually cannot be implemented)3.046 F -(by a separate e)97 108 Q -.15(xe)-.15 G(cutable;).15 E 21.5<8341>72 123.6 S -.73(set of utilities to be called by shell scripts and applications.)107.45 -123.6 R .731(Examples are programs lik)5.731 F(e)-.1 E/F2 10/Times-Italic@0 SF -2.397(sed, tr)3.231 F(,)-1.11 E F0(and)97 135.6 Q F2(awk.)2.853 E F0 .352 -(Utilities commonly implemented as shell b)4.519 F .352 -(uiltins are described in this section, such as)-.2 F F1(test)2.852 E F0(and)97 -147.6 Q F1(kill)3.422 E F0 5.922(.A)C 3.422(ne)144.404 147.6 S .922 -(xpansion of this section')157.116 147.6 R 3.423(ss)-.55 G .923 -(cope, termed the User Portability Extension, or UPE, has)268.586 147.6 R -(standardized interacti)97 159.6 Q .3 -.15(ve p)-.25 H(rograms such as).15 E F2 -(vi)2.5 E F0(and)4.166 E F2(mailx;)2.5 E F0 21.5<8341>72 175.2 S .926 -(group of functional interf)107.646 175.2 R .926(aces to services pro)-.1 F -.926(vided by the shell, such as the traditional)-.15 F F2(system)3.425 E F0(C) -5.091 E .507(library function.)97 187.2 R .507 -(There are functions to perform shell w)5.507 F .508(ord e)-.1 F .508 -(xpansions, perform \214lename e)-.15 F(xpansion)-.15 E(\()97 199.2 Q F2 -(globbing)A F0 .58(\), obtain v)B .58 -(alues of POSIX.2 system con\214guration v)-.25 F .58(ariables, retrie)-.25 F -.88 -.15(ve v)-.25 H .58(alues of en)-.1 F(vironment)-.4 E -.25(va)97 211.2 S -(riables \().25 E F2 -.1(ge)C(ten).1 E(v\(\))-.4 E F0(\), and other services;) -.833 E 21.5<8341>72 226.8 S(suite of `)106.72 226.8 Q(`de)-.74 E -.15(ve)-.25 G -(lopment').15 E 2.5('u)-.74 G(tilities such as)209.54 226.8 Q F2(c89)2.5 E F0 -(\(the POSIX.2 v)4.166 E(ersion of)-.15 E F2(cc)2.5 E F0(\), and)A F2(yacc.)2.5 -E F0 .483(Bash is concerned with the aspects of the shell')97 242.4 R 2.983(sb) --.55 G(eha)301.597 242.4 Q .484(vior de\214ned by POSIX.2.)-.2 F .484 -(The shell command)5.484 F 1.439 -(language has of course been standardized, including the basic \215o)72 254.4 R -3.938(wc)-.25 G 1.438(ontrol and program e)359.688 254.4 R -.15(xe)-.15 G 1.438 -(cution con-).15 F 1.145(structs, I/O redirection and pipelining, ar)72 266.4 R -1.145(gument handling, v)-.18 F 1.145(ariable e)-.25 F 1.146 -(xpansion, and quoting.)-.15 F(The)6.146 E F2(special)3.646 E F0 -.2(bu)72 -278.4 S .676(iltins, which must be implemented as part of the shell to pro).2 F -.676(vide the desired functionality)-.15 F 3.176(,a)-.65 G .676(re speci\214ed) -457.504 278.4 R .7(as being part of the shell; e)72 290.4 R .7 -(xamples of these are)-.15 F F1 -2.3 -.15(ev a)3.201 H(l).15 E F0(and)3.201 E -F1(export)3.201 E F0 5.701(.O)C .701(ther utilities appear in the sections of) -352.034 290.4 R .256(POSIX.2 not de)72 302.4 R -.2(vo)-.25 G .256(ted to the s\ -hell which are commonly \(and in some cases must be\) implemented as b).2 F -(uiltin)-.2 E(commands, such as)72 314.4 Q F1 -.18(re)2.5 G(ad).18 E F0(and)2.5 -E F1(test)2.5 E F0(.)A .972(POSIX.2 also speci\214es aspects of the shell')97 -330 R 3.473(si)-.55 G(nteracti)286.016 330 Q 1.273 -.15(ve b)-.25 H(eha).15 E -.973(vior as part of the UPE, including job)-.2 F .233 -(control, command line editing, and history)72 342 R 5.233(.I)-.65 G .233 -(nterestingly enough, only)253.849 342 R F2(vi)2.733 E F0 .233 -(-style line editing commands ha)B -.15(ve)-.2 G(been standardized;)72 354 Q F2 -(emacs)2.5 E F0(editing commands were left out due to objections.)2.5 E .148 -(There were certain areas in which POSIX.2 felt standardization w)97 369.6 R -.149(as necessary)-.1 F 2.649(,b)-.65 G .149(ut no e)420.643 369.6 R .149 -(xisting imple-)-.15 F 1.598(mentation pro)72 381.6 R 1.598 -(vided the proper beha)-.15 F(vior)-.2 E 6.598(.T)-.55 G 1.598(he w)251.56 -381.6 R 1.597(orking group in)-.1 F -.15(ve)-.4 G 1.597 -(nted and standardized functionality in).15 F .228(these areas.)72 393.6 R(The) -5.228 E F1(command)2.728 E F0 -.2(bu)2.728 G .228(iltin w).2 F .228(as in)-.1 F --.15(ve)-.4 G .228(nted so that shell functions could be written to replace b) -.15 F(uiltins;)-.2 E 1.663(it mak)72 405.6 R 1.663 -(es the capabilities of the b)-.1 F 1.663(uiltin a)-.2 F -.25(va)-.2 G 1.663 -(ilable to the function.).25 F 1.663(The reserv)6.663 F 1.663(ed w)-.15 F 1.663 -(ord `)-.1 F(`!')-.74 E 4.163('w)-.74 G 1.663(as added to)455.685 405.6 R(ne)72 -417.6 Q -.05(ga)-.15 G .915(te the return v).05 F .915 -(alue of a command or pipeline; it w)-.25 F .916(as nearly impossible to e)-.1 -F .916(xpress `)-.15 F .916(`if not x')-.74 F 3.416('c)-.74 G(leanly)479.56 -417.6 Q .904(using the sh language.)72 429.6 R .904(There e)5.904 F .904 -(xist multiple incompatible implementations of the)-.15 F F1(test)3.403 E F0 --.2(bu)3.403 G .903(iltin, which tests).2 F .28 -(\214les for type and other attrib)72 441.6 R .281 -(utes and performs arithmetic and string comparisons.)-.2 F .281 -(POSIX considered none)5.281 F .868(of these correct, so the standard beha)72 -453.6 R .868(vior w)-.2 F .868(as speci\214ed in terms of the number of ar)-.1 -F .867(guments to the com-)-.18 F 3.803(mand. POSIX.2)72 465.6 R 1.303 -(dictates e)3.803 F 1.303(xactly what will happen when four or fe)-.15 F 1.303 -(wer ar)-.25 F 1.303(guments are gi)-.18 F -.15(ve)-.25 G 3.803(nt).15 G(o) -459.462 465.6 Q F1(test)3.804 E F0 3.804(,a)C(nd)494 465.6 Q(lea)72 477.6 Q --.15(ve)-.2 G 4.531(st).15 G 2.031(he beha)103.951 477.6 R 2.031 -(vior unde\214ned when more ar)-.2 F 2.031(guments are supplied.)-.18 F 2.03 -(Bash uses the POSIX.2 algorithm,)7.031 F(which w)72 489.6 Q(as concei)-.1 E --.15(ve)-.25 G 2.5(db).15 G 2.5(yD)164.53 489.6 S -.2(av)179.25 489.6 S(id K).2 -E(orn.)-.35 E 1.128 -(While POSIX.2 includes much of what the shell has traditionally pro)97 505.2 R -1.129(vided, some important things)-.15 F(ha)72 517.2 Q .58 -.15(ve b)-.2 H .28 -(een omitted as being `).15 F(`be)-.74 E .28(yond its scope.)-.15 F 4.26 -.74 -('' T)-.7 H .28(here is, for instance, no mention of a dif).74 F .28 -(ference between)-.25 F(a)72 529.2 Q F2(lo)3.354 E(gin)-.1 E F0 .854 -(shell and an)5.02 F 3.354(yo)-.15 G .854(ther interacti)167.956 529.2 R 1.154 --.15(ve s)-.25 H .854(hell \(since POSIX.2 does not specify a login program\).) -.15 F .855(No \214x)5.855 F(ed)-.15 E -(startup \214les are de\214ned, either \255 the standard does not mention)72 -541.2 Q F2(.pr)2.5 E(o\214le)-.45 E F0(.)1.666 E F1 2.5(4. Shell)72 565.2 R -(Comparison)2.5 E F0 .693(This section compares features of bash, sh, and ksh \ -\(the three shells closest to POSIX compliance\).)97 580.8 R .245(Since ksh an\ -d bash are supersets of sh, the features common to all three are co)72 592.8 R --.15(ve)-.15 G .245(red \214rst.).15 F .245(Some of the fea-)5.245 F 1.198 -(tures bash and ksh contain which are not in sh will be discussed.)72 604.8 R -(Ne)6.198 E 1.198(xt, features unique to bash will be)-.15 F 2.866(listed. The) -72 616.8 R .366(\214rst three sections pro)2.866 F .366(vide a progressi)-.15 F --.15(ve)-.25 G .366(ly more detailed o).15 F -.15(ve)-.15 G(rvie).15 E 2.866 -(wo)-.25 G 2.866(fb)395.706 616.8 S 2.866(ash. Finally)406.902 616.8 R 2.866 -(,f)-.65 G .366(eatures of)464.484 616.8 R(ksh-88 \(the currently-a)72 628.8 Q --.25(va)-.2 G(ilable v).25 E(ersion\) not in sh or bash will be presented.)-.15 -E F1 2.5(4.1. Common)72 652.8 R -.25(Fe)2.5 G(atur).25 E(es)-.18 E F0 .021 -(All three shells ha)97 668.4 R .321 -.15(ve t)-.2 H .021 -(he same basic feature set, which is essentially that pro).15 F .02 -(vided by sh and described)-.15 F 1.026(in an)72 680.4 R 3.526(ys)-.15 G 3.526 -(hm)105.012 680.4 S 1.027 -(anual page. Bash and ksh are both sh supersets, and so all three pro)121.318 -680.4 R 1.027(vide the command inter)-.15 F(-)-.2 E .714 -(preter and programming language described earlier)72 692.4 R 3.214(.T)-.55 G -.714(he shell grammar)291.506 692.4 R 3.214(,s)-.4 G .714(yntax, \215o)371.568 -692.4 R 3.214(wc)-.25 G .714(ontrol, redirections,)424.686 692.4 R(and b)72 -704.4 Q(uiltins implemented by the Bourne shell are the baseline for subsequen\ -t discussion.)-.2 E EP -%%Page: 5 5 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-5-)279.67 48 S/F1 10/Times-Bold@0 SF 2.5(4.2. F)72 -84 R(eatur)-.25 E(es in bash and ksh)-.18 E F0 .458(Ksh and bash ha)97 99.6 R -.758 -.15(ve s)-.2 H -2.15 -.25(ev e).15 H .459(ral features in common be).25 F -.459(yond this base le)-.15 F -.15(ve)-.25 G 2.959(lo).15 G 2.959(ff)387.814 -99.6 S(unctionality)397.433 99.6 Q 5.459(.S)-.65 G .459(ome of this)458.082 -99.6 R(is due to the POSIX.2 standard.)72 111.6 Q(Other functions ha)5 E .3 --.15(ve b)-.2 H(een implemented in bash using ksh as a guide.).15 E F1 2.5 -(4.2.1. V)72 135.6 R(ariables and V)-.92 E(ariable Expansion)-.92 E F0 .097 -(Bash and ksh ha)97 151.2 R .396 -.15(ve a)-.2 H .096(ugmented v).15 F .096 -(ariable e)-.25 F 2.596(xpansion. Arithmetic)-.15 F .096(substitution allo) -2.596 F .096(ws an e)-.25 F .096(xpression to be)-.15 F -.25(eva)72 163.2 S .6 -(luated and the result substituted.).25 F .6(Shell v)5.6 F .6 -(ariables may be used as operands, and the result of an e)-.25 F(xpres-)-.15 E -.41(sion may be assigned to a v)72 175.2 R 2.91(ariable. Nearly)-.25 F .41 -(all of the operators from the C language are a)2.91 F -.25(va)-.2 G .41 -(ilable, with the).25 F(same precedence rules:)72 187.2 Q/F2 10/Courier@0 SF 6 -($e)97 205.2 S(cho $\(\(3 + 5 * 32\)\))115 205.2 Q(163)97 217.2 Q F0 -1.11(Va) -72 238.8 S 1.445(riables may be declared as)1.11 F/F3 10/Times-Italic@0 SF -(inte)3.945 E -.1(ge)-.4 G(r).1 E F0 3.945(,w)1.666 G 1.446 -(hich causes arithmetic e)240.956 238.8 R -.25(va)-.25 G 1.446 -(luation to be performed on the v).25 F(alue)-.25 E(whene)72 250.8 Q -.15(ve) --.25 G 2.5(rt).15 G(he)115.75 250.8 Q 2.5(ya)-.15 G(re assigned to.)136.98 -250.8 Q .483(There are ne)97 266.4 R 2.983(we)-.25 G .483 -(xpansions to obtain the length of a v)162.179 266.4 R(ariable')-.25 E 2.982 -(sv)-.55 G .482(alue and to remo)352.19 266.4 R .782 -.15(ve s)-.15 H .482 -(ubstrings match-).15 F .063(ing speci\214ed patterns from the be)72 278.4 R -.063(ginning and end of v)-.15 F .063(ariable v)-.25 F 2.563(alues. A)-.25 F -(ne)2.563 E 2.563(wf)-.25 G .064(orm of command substitution,)383.249 278.4 R -F1($\()72 290.4 Q F3(list)A F1(\))A F0 2.5(,i)C 2.5(sm)103.67 290.4 S -(uch easier to nest than `)117.84 290.4 Q F3(list)A F0 2.5(`a)C -(nd has simpli\214ed quoting rules.)235.04 290.4 Q .082(There are ne)97 306 R -2.582(wv)-.25 G .082(ariables to control the shell')161.436 306 R 2.581(sb)-.55 -G(eha)284.333 306 Q(vior)-.2 E 2.581(,a)-.4 G .081(nd additional v)323.244 306 -R .081(ariables set or interpreted spe-)-.25 F 1.038(cially by the shell.)72 -318 R F1(RANDOM)6.038 E F0(and)3.538 E F1(SECONDS)3.538 E F0(are)3.539 E F3 -(dynamic)3.539 E F0 -.25(va)3.539 G 3.539(riables: their).25 F -.25(va)3.539 G -1.039(lues are generated afresh).25 F 1.022(each time the)72 330 R 3.522(ya) --.15 G 1.022(re referenced.)140.176 330 R F1(RANDOM)6.022 E F0 1.021 -(returns a dif)3.521 F 1.021(ferent random number each time it is referenced,) --.25 F(and)72 342 Q F1(SECONDS)3.138 E F0 .638 -(returns the number of seconds since the shell w)3.138 F .638 -(as started or the v)-.1 F .639(ariable w)-.25 F .639(as assigned to,)-.1 F -1.448(plus an)72 354 R 3.948(yv)-.15 G 1.448(alue assigned.)115.606 354 R F1 -(PWD)6.448 E F0(and)3.948 E F1(OLDPWD)3.947 E F0 1.447 -(are set to the current and pre)3.947 F 1.447(vious w)-.25 F 1.447 -(orking directories,)-.1 F(respecti)72 366 Q -.15(ve)-.25 G(ly).15 E(.)-.65 E -F1(TMOUT)5.604 E F0 .604(controls ho)3.104 F 3.104(wl)-.25 G .604 -(ong the shell will w)226.436 366 R .604(ait at a prompt for input.)-.1 F(If) -5.604 E F1(TMOUT)3.104 E F0 .605(is set to a)3.105 F -.25(va)72 378 S 1.168 -(lue greater than zero, the shell e).25 F 1.168(xits after w)-.15 F 1.168 -(aiting that man)-.1 F 3.668(ys)-.15 G 1.167(econds for input.)337.478 378 R F1 -(REPL)6.167 E(Y)-.92 E F0 1.167(is the def)3.667 F(ault)-.1 E -.25(va)72 390 S -.991(riable for the).25 F F1 -.18(re)3.491 G(ad).18 E F0 -.2(bu)3.491 G .991 -(iltin; if no v).2 F .992(ariable names are supplied as ar)-.25 F .992 -(guments, the line read is assigned to)-.18 F F1(REPL)72 402 Q(Y)-.92 E F0(.)A -F1 2.5(4.2.2. New)72 426 R(and Modi\214ed Builtins)2.5 E F0 .652(Both shells e) -97 441.6 R .651(xpand the basic sh set of b)-.15 F .651(uiltin commands.)-.2 F -F1(Let)5.651 E F0(pro)3.151 E .651(vides a w)-.15 F .651 -(ay to perform arithmetic)-.1 F 2.767(on shell v)72 453.6 R 5.268 -(ariables. Shell)-.25 F 2.768(programmers use)5.268 F F1(typeset)5.268 E F0 -2.768(\(bash includes)5.268 F F1(declar)5.268 E(e)-.18 E F0 2.768(as a synon) -5.268 F 2.768(ym\) to assign)-.15 F(attrib)72 465.6 Q .295(utes such as)-.2 F -F3 -.2(ex)2.795 G(port).2 E F0(and)4.461 E F3 -.37(re)2.795 G(adonly).37 E F0 -.295(to v)4.461 F(ariables.)-.25 E F1(Getopts)5.295 E F0 .294 -(is used by shell scripts to parse script options)2.795 F .962(and ar)72 477.6 -R 3.462(guments. The)-.18 F F1(set)3.462 E F0 .962(command has a ne)3.462 F -3.462(wo)-.25 G(ption)266.446 477.6 Q F13.463 E F0 .963(which tak)3.463 F -.963(es option names as ar)-.1 F 3.463(guments. Option)-.18 F 1.28 -(names are synon)72 489.6 R 1.28(yms for the other set options \(e.g.,)-.15 F -F13.78 E F0(and)3.78 E F1 1.28(\255o noglob)3.78 F F0 3.78(\)o)C 3.78(rp) -375.97 489.6 S(ro)388.08 489.6 Q 1.28(vide ne)-.15 F 3.78(wf)-.25 G 1.28 -(unctionality \()440.78 489.6 R F1(-o)A(notify)72 501.6 Q F0 3.348(,f)C .849 -(or e)106.178 501.6 R 3.349(xample\). The)-.15 F F1 -.18(re)3.349 G(ad).18 E F0 --.2(bu)3.349 G .849(iltin tak).2 F .849(es a ne)-.1 F(w)-.25 E F13.349 E -F0 .849(option to specify that a line ending in a backslash)3.349 F -(should not be continued.)72 513.6 Q F1 2.5(4.2.3. T)72 537.6 R(ilde Expansion) --.18 E F0 -.35(Ti)97 553.2 S .252(lde e).35 F .251 -(xpansion is a feature adopted from the C shell.)-.15 F 2.751(At)5.251 G .251 -(ilde character at the be)331.172 553.2 R .251(ginning of a w)-.15 F .251 -(ord is)-.1 F -.15(ex)72 565.2 S(panded to either).15 E F1($HOME)2.5 E F0 -(or the home directory of another user)2.5 E 2.5(,d)-.4 G -(epending on what follo)345.84 565.2 Q(ws the tilde.)-.25 E F1 2.5 -(4.2.4. Interacti)72 589.2 R .2 -.1(ve I)-.1 H(mpr).1 E -.1(ove)-.18 G(ments).1 -E F0 .789(The most noticable impro)97 604.8 R -.15(ve)-.15 G .789(ments o).15 F --.15(ve)-.15 G 3.289(rs).15 G 3.289(ha)263.385 604.8 S .789 -(re geared for interacti)276.114 604.8 R 1.089 -.15(ve u)-.25 H 3.29(se. Ksh) -.15 F .79(and bash pro)3.29 F .79(vide job)-.15 F .882(control in a v)72 616.8 -R .882(ery similar f)-.15 F .882 -(ashion, with the same options to enable and disable it \()-.1 F F1 .881 -(set -o monitor)B F0 3.381(\)a)C .881(nd the)478.399 616.8 R(same b)72 628.8 Q -(uiltin commands to manipulate jobs \()-.2 E F1(jobs/fg/bg/kill/wait)A F0(\).)A -.866(Command line editing, with emacs and vi-style k)97 644.4 R 1.166 -.15 -(ey b)-.1 H .866(indings, is a).15 F -.25(va)-.2 G .866(ilable in both shells.) -.25 F .866(The Bash)5.866 F F3 -.37(re)72 656.4 S(adline).37 E F0 1.578 -(library is considerably more sophisticated than the ksh editing library:)5.744 -F 1.577(it allo)6.577 F 1.577(ws arbitrary k)-.25 F -.15(ey)-.1 G 1.867 -(bindings, macros, a per)72 668.4 R 1.868(-user customization \214le \()-.2 F -F3(~/.inputr)A(c)-.37 E F0 1.868(\), a number of v)B 1.868 -(ariables to further customize)-.25 F(beha)72 680.4 Q(vior)-.2 E 3.538(,a)-.4 G -1.038(nd a much lar)116.868 680.4 R 1.038 -(ger set of bindable editing commands.)-.18 F 1.037 -(The ksh editing library pro)6.037 F 1.037(vides a small)-.15 F<8c78>72 692.4 Q -(ed command set and only clumsy macros.)-.15 E .706(Both shells of)97 708 R -.706(fer access to the command history)-.25 F 5.706(.T)-.65 G .706 -(he in-line editing options ha)307.278 708 R 1.006 -.15(ve d)-.2 H(ef).15 E -.706(ault k)-.1 F 1.006 -.15(ey b)-.1 H(ind-).15 E .624 -(ings to access the history list.)72 720 R(The)5.624 E F1(fc)3.124 E F0 .624 -(command is pro)3.124 F .624(vided to re-e)-.15 F -.15(xe)-.15 G .623(cute pre) -.15 F .623(vious commands and display)-.25 F EP -%%Page: 6 6 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-6-)279.67 48 S(the contents of the history list.) -72 84 Q/F1 10/Times-Bold@0 SF 2.5(4.2.5. Miscellaneous)72 108 R -(Changes and Impr)2.5 E -.1(ov)-.18 G(ments).1 E F0 .707(Other impro)97 123.6 R --.15(ve)-.15 G .707(ments include aliases, the).15 F F1(select)3.207 E F0 .708 -(shell language construct, which supports the genera-)3.207 F 1.298 -(tion and presentation of simple menus, and e)72 135.6 R 1.298 -(xtensions to the)-.15 F F1(export)3.798 E F0(and)3.798 E F1 -.18(re)3.798 G -(adonly).18 E F0 -.2(bu)3.798 G 1.298(iltins which allo).2 F(w)-.25 E -.25(va) -72 147.6 S .017(riables to be assigned v).25 F .017 -(alues at the same time the attrib)-.25 F .017(utes are set.)-.2 F -.8(Wo)5.018 -G .018(rd splitting has changed:).8 F .018(if tw)5.018 F 2.518(oo)-.1 G(r) -500.67 147.6 Q .158(more adjacent w)72 159.6 R .157 -(ord splitting characters occur)-.1 F 2.657(,b)-.4 G .157 -(ash and ksh will generate null \214elds; sh mak)264.893 159.6 R .157 -(es runs of mul-)-.1 F .339 -(tiple \214eld separator charactors the same as a single separator)72 171.6 R -5.339(.B)-.55 G .34(ash and ksh split only the results of e)330.89 171.6 R -(xpan-)-.15 E(sion, rather than e)72 183.6 Q -.15(ve)-.25 G(ry w).15 E -(ord as sh does, closing a long-standing shell security hole.)-.1 E 1.234 -(Shell functions in bash and ksh may ha)97 199.2 R 1.534 -.15(ve l)-.2 H 1.234 -(ocal v).15 F 3.734(ariables. V)-.25 F 1.234(ariables declared with)-1.11 F F1 -(typeset)3.734 E F0 1.234(\(or the)3.734 F .001(bash synon)72 211.2 R(ym,)-.15 -E F1(local)2.501 E F0 .001(\), ha)B .301 -.15(ve a s)-.2 H .001 -(cope restricted to the function and its descendents, and may shado).15 F 2.502 -(wv)-.25 G(ariables)472.9 211.2 Q(de\214ned by the in)72 223.2 Q -.2(vo)-.4 G -(king shell.).2 E(Local v)5 E(ariables are remo)-.25 E -.15(ve)-.15 G 2.5(dw) -.15 G(hen a function completes.)317.75 223.2 Q F1 2.5(4.3. F)72 247.2 R(eatur) --.25 E(es Unique to bash)-.18 E F0(Naturally)97 262.8 Q 2.895(,b)-.65 G .395 -(ash includes features not in sh or ksh.)144.515 262.8 R .395 -(This section discusses some of the features which)5.395 F(mak)72 274.8 Q 2.986 -(eb)-.1 G .486(ash unique.)101.546 274.8 R .486(Most of them pro)5.486 F .486 -(vide impro)-.15 F -.15(ve)-.15 G 2.986(di).15 G(nteracti)288.098 274.8 Q .787 --.15(ve u)-.25 H .487(se, b).15 F .487(ut a fe)-.2 F 2.987(wp)-.25 G .487 -(rogramming impro)394.653 274.8 R -.15(ve)-.15 G(ments).15 E -(are present as well.)72 286.8 Q -(Full descriptions of these features can be found in the bash documentation.)5 -E F1 2.5(4.3.1. Startup)72 310.8 R(Files)2.5 E F0 .281(Bash e)97 326.4 R -.15 -(xe)-.15 G .281(cutes startup \214les dif).15 F .281 -(ferently than other shells.)-.25 F .281(The bash beha)5.281 F .28 -(vior is a compromise between)-.2 F .116 -(the csh principle of startup \214les with \214x)72 338.4 R .116(ed names e) --.15 F -.15(xe)-.15 G .116(cuted for each shell and the sh `).15 F -(`minimalist')-.74 E 2.616('b)-.74 G(eha)472.26 338.4 Q(vior)-.2 E(.)-.55 E -2.956(An interacti)72 350.4 R 3.256 -.15(ve i)-.25 H 2.956 -(nstance of bash started as a login shell reads and e).15 F -.15(xe)-.15 G -(cutes).15 E/F2 10/Times-Italic@0 SF(~/.bash_pr)5.455 E(o\214le)-.45 E F0 2.955 -(\(the \214le)7.121 F F2(.bash_pr)72 362.4 Q(o\214le)-.45 E F0 .835 -(in the user')5 F 3.335(sh)-.55 G .835(ome directory\), if it e)187.385 362.4 R -3.335(xists. An)-.15 F(interacti)3.335 E 1.135 -.15(ve n)-.25 H .835 -(on-login shell reads and e).15 F -.15(xe)-.15 G(cutes).15 E F2(~/.bashr)72 -374.4 Q(c)-.37 E F0 5.538(.A)1.666 G(non-interacti)127.422 374.4 Q .838 -.15 -(ve s)-.25 H .538(hell \(one be).15 F .538(gun to e)-.15 F -.15(xe)-.15 G .538 -(cute a shell script, for e).15 F .537(xample\) reads no \214x)-.15 F .537 -(ed startup)-.15 F .139(\214le, b)72 386.4 R .139(ut uses the v)-.2 F .139 -(alue of the v)-.25 F(ariable)-.25 E F1(ENV)2.639 E F0 2.639(,i)C 2.639(fs) -253.361 386.4 S .139(et, as the name of a startup \214le.)263.22 386.4 R .139 -(The ksh practice of reading)5.139 F F1($ENV)72 398.4 Q F0 .69(for e)3.19 F --.15(ve)-.25 G .69(ry shell, with the accompan).15 F .689(ying dif)-.15 F .689 -(\214culty of de\214ning the proper v)-.25 F .689(ariables and functions for) --.25 F(interacti)72 410.4 Q .946 -.15(ve a)-.25 H .646(nd non-interacti).15 F -.946 -.15(ve s)-.25 H .646(hells or ha).15 F .646 -(ving the \214le read only for interacti)-.2 F .946 -.15(ve s)-.25 H .646 -(hells, w).15 F .646(as considered too)-.1 F(comple)72 422.4 Q(x.)-.15 E F1 2.5 -(4.3.2. New)72 446.4 R(Builtin Commands)2.5 E F0 1.119(There are a fe)97 462 R -3.619(wb)-.25 G 1.118(uiltins which are ne)170.986 462 R 3.618(wo)-.25 G 3.618 -(rh)268.528 462 S -2.25 -.2(av e)280.476 462 T 1.118(been e)3.818 F 1.118 -(xtended in bash.)-.15 F(The)6.118 E F1(enable)3.618 E F0 -.2(bu)3.618 G 1.118 -(iltin allo).2 F(ws)-.25 E -.2(bu)72 474 S .736 -(iltin commands to be turned on and of).2 F 3.236(fa)-.25 G(rbitrarily)250.198 -474 Q 5.736(.T)-.65 G 3.237(ou)298.644 474 S .737(se the v)311.881 474 R .737 -(ersion of)-.15 F F2(ec)3.237 E(ho)-.15 E F0 .737(found in a user')4.903 F -3.237(ss)-.55 G(earch)482.35 474 Q .013(path rather than the bash b)72 486 R -(uiltin,)-.2 E/F3 10/Courier@0 SF .013(enable -n echo)2.513 F F0(suf)2.513 E -2.513(\214ces. The)-.25 F F1(help)2.513 E F0 -.2(bu)2.513 G .013(iltin pro).2 F -.013(vides quick synopses of)-.15 F 1.382(the shell f)72 498 R 1.382 -(acilities without requiring access to a manual page.)-.1 F F1(Builtin)6.382 E -F0 1.383(is similar to)3.882 F F1(command)3.883 E F0 1.383(in that it)3.883 F -.342(bypasses shell functions and directly e)72 510 R -.15(xe)-.15 G .342 -(cutes b).15 F .342(uiltin commands.)-.2 F .342 -(Access to a csh-style stack of directories)5.342 F .072(is pro)72 522 R .073 -(vided via the)-.15 F F1(pushd)2.573 E F0(,)A F1(popd)2.573 E F0 2.573(,a)C(nd) -211.197 522 Q F1(dirs)2.573 E F0 -.2(bu)2.573 G(iltins.).2 E F1(Pushd)5.073 E -F0(and)2.573 E F1(popd)2.573 E F0 .073(insert and remo)2.573 F .373 -.15(ve d) --.15 H .073(irectories from the).15 F .094(stack, respecti)72 534 R -.15(ve) --.25 G(ly).15 E 2.594(,a)-.65 G(nd)154.448 534 Q F1(dirs)2.594 E F0 .094 -(lists the stack contents.The)2.594 F F1(suspend)2.594 E F0 .094 -(command will stop the shell process when)2.594 F 1.329(job control is acti)72 -546 R -.15(ve)-.25 G 3.829(;m).15 G 1.329(ost other shells do not allo)169.136 -546 R 3.829(wt)-.25 G(hemselv)294.64 546 Q 1.33(es to be stopped lik)-.15 F -3.83(et)-.1 G(hat.)421.31 546 Q F1 -.74(Ty)6.33 G(pe,).74 E F0 1.33(the bash) -3.83 F(answer to)72 558 Q F1(which)2.5 E F0(and)2.5 E F1(whence,)2.5 E F0(sho) -2.5 E(ws what will happen when a w)-.25 E(ord is typed as a command:)-.1 E F3 6 -($t)97 576 S(ype export)115 576 Q(export is a shell builtin)97 588 Q 6($t)97 -600 S(ype -t export)115 600 Q(builtin)97 612 Q 6($t)97 624 S(ype bash)115 624 Q -(bash is /bin/bash)97 636 Q 6($t)97 648 S(ype cd)115 648 Q(cd is a function)97 -660 Q(cd \(\))97 672 Q({)97 684 Q(builtin cd "$@" && xtitle $HOST: $PWD)121 696 -Q(})97 708 Q EP -%%Page: 7 7 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-7-)279.67 48 S -1.11(Va)72 84 S .682 -(rious modes tell what a command w)1.11 F .681(ord is \(reserv)-.1 F .681(ed w) --.15 F .681(ord, alias, function, b)-.1 F .681(uiltin, or \214le\) or which v) --.2 F(er)-.15 E(-)-.2 E 1.15(sion of a command will be e)72 96 R -.15(xe)-.15 G -1.15(cuted based on a user').15 F 3.65(ss)-.55 G 1.15(earch path.)305.7 96 R -1.15(Some of this functionality has been)6.15 F -(adopted by POSIX.2 and folded into the)72 108 Q/F1 10/Times-Bold@0 SF(command) -2.5 E F0(utility)2.5 E(.)-.65 E F1 2.5(4.3.3. Editing)72 132 R(and Completion) -2.5 E F0 .682(One area in which bash shines is command line editing.)97 147.6 R -.682(Bash uses the)5.682 F/F2 10/Times-Italic@0 SF -.37(re)3.182 G(adline).37 E -F0 .682(library to read and)4.848 F .102(edit lines when interacti)72 159.6 R --.15(ve)-.25 G 5.102(.R).15 G .103(eadline is a po)191.438 159.6 R .103 -(werful and \215e)-.25 F .103(xible input f)-.15 F .103 -(acility that a user can con\214gure to his)-.1 F 2.506(tastes. It)72 171.6 R -(allo)2.506 E .006(ws lines to be edited using either emacs or vi commands, wh\ -ere those commands are appropri-)-.25 F 2.994(ate. The)72 183.6 R .494 -(full capability of emacs is not present \255 there is no w)2.994 F .495 -(ay to e)-.1 F -.15(xe)-.15 G .495(cute a named command with M-x,).15 F .222 -(for instance \255 b)72 195.6 R .222(ut the e)-.2 F .222 -(xisting commands are more than adequate.)-.15 F .221 -(The vi mode is compliant with the com-)5.222 F -(mand line editing standardized by POSIX.2.)72 207.6 Q 1.69 -(Readline is fully customizable.)97 223.2 R 1.691 -(In addition to the basic commands and k)6.69 F 1.991 -.15(ey b)-.1 H 1.691 -(indings, the library).15 F(allo)72 235.2 Q .83 -(ws users to de\214ne additional k)-.25 F 1.13 -.15(ey b)-.1 H .83 -(indings using a startup \214le.).15 F(The)5.83 E F2(inputr)3.329 E(c)-.37 E F0 -.829(\214le, which def)4.995 F .829(aults to the)-.1 F(\214le)72 247.2 Q F2 -(~/.inputr)4.287 E(c)-.37 E F0 4.287(,i)1.666 G 4.287(sr)137.43 247.2 S 1.788(\ -ead each time readline initializes, permitting users to maintain a consistent \ -interf)148.937 247.2 R(ace)-.1 E .547(across a set of programs.)72 259.2 R .546 -(Readline includes an e)5.546 F .546(xtensible interf)-.15 F .546 -(ace, so each program using the library can)-.1 F .23(add its o)72 271.2 R .23 -(wn bindable commands and program-speci\214c k)-.25 F .531 -.15(ey b)-.1 H -2.731(indings. Bash).15 F .231(uses this f)2.731 F .231 -(acility to add bindings)-.1 F(that perform history e)72 283.2 Q -(xpansion or shell w)-.15 E(ord e)-.1 E(xpansions on the current input line.) --.15 E .707(Readline interprets a number of v)97 298.8 R .706 -(ariables which further tune its beha)-.25 F(vior)-.2 E 5.706(.V)-.55 G .706 -(ariables e)408.432 298.8 R .706(xist to control)-.15 F .157 -(whether or not eight-bit characters are directly read as input or con)72 310.8 -R -.15(ve)-.4 G .158(rted to meta-pre\214x).15 F .158(ed k)-.15 F .458 -.15 -(ey s)-.1 H .158(equences \(a).15 F(meta-pre\214x)72 322.8 Q 1.575(ed k)-.15 F -1.875 -.15(ey s)-.1 H 1.575 -(equence consists of the character with the eighth bit zeroed, preceded by the) -.15 F F2(meta-)4.074 E(pr)72 334.8 Q(e\214x)-.37 E F0(character)4.45 E 2.784 -(,u)-.4 G .284(sually escape, which selects an alternate k)145.374 334.8 R -.15 -(ey)-.1 G .285(map\), to decide whether to output characters).15 F .485 -(with the eighth bit set directly or as a meta-pre\214x)72 346.8 R .485(ed k) --.15 F .784 -.15(ey s)-.1 H .484(equence, whether or not to wrap to a ne).15 F -2.984(ws)-.25 G(creen)482.35 346.8 Q .157 -(line when a line being edited is longer than the screen width, the k)72 358.8 -R -.15(ey)-.1 G .158(map to which subsequent k).15 F .458 -.15(ey b)-.1 H -(indings).15 E .531(should apply)72 370.8 R 3.031(,o)-.65 G 3.031(re)133.802 -370.8 S -.15(ve)144.353 370.8 S 3.031(nw).15 G .531 -(hat happens when readline w)168.894 370.8 R .531(ants to ring the terminal') --.1 F 3.03(sb)-.55 G 3.03(ell. All)399.37 370.8 R .53(of these v)3.03 F -(ariables)-.25 E(can be set in the inputrc \214le.)72 382.8 Q .284 -(The startup \214le understands a set of C preprocessor)97 398.4 R(-lik)-.2 E -2.785(ec)-.1 G .285(onditional constructs which allo)329.49 398.4 R 2.785(wv) --.25 G(ariables)472.9 398.4 Q .12(or k)72 410.4 R .42 -.15(ey b)-.1 H .119(ind\ -ings to be assigned based on the application using readline, the terminal curr\ -ently being used, or).15 F .316(the editing mode.)72 422.4 R .317 -(Users can add program-speci\214c bindings to mak)5.317 F 2.817(et)-.1 G .317 -(heir li)352.808 422.4 R -.15(ve)-.25 G 2.817(se).15 G 2.817(asier: here) -396.922 422.4 R .317(are bindings to)2.817 F(edit the v)72 434.4 Q(alue of)-.25 -E F1 -.74(PA)2.5 G(TH)-.21 E F0(and double-quote the current or pre)2.5 E -(vious w)-.25 E(ord:)-.1 E/F3 10/Courier@0 SF 6(#M)97 452.4 S -(acros that are convenient for shell interaction)115 452.4 Q($if Bash)97 464.4 -Q 6(#e)97 476.4 S(dit the path)115 476.4 Q -("\\C-xp": "PATH=${PATH}\\e\\C-e\\C-a\\ef\\C-f")97 488.4 Q 6(#p)97 500.4 S -(repare to type a quoted word -- insert open and close double quotes)115 500.4 -Q 6(#a)97 512.4 S(nd move to just after the open quote)115 512.4 Q -("\\C-x\\"": "\\"\\"\\C-b")97 524.4 Q 6(#Q)97 536.4 S -(uote the current or previous word)115 536.4 Q("\\C-xq": "\\eb\\"\\ef\\"")97 -548.4 Q($endif)97 560.4 Q F0 .322(There is a readline command to re-read the \ -\214le, so users can edit the \214le, change some bindings, and be)72 582 R -(gin)-.15 E(to use them almost immediately)72 594 Q(.)-.65 E .851 -(Bash implements the)97 609.6 R F1(bind)3.351 E F0 -.2(bu)3.351 G .851 -(iltin for more dyamic control of readline than the startup \214le permits.).2 -F F1(Bind)72 621.6 Q F0 .167(is used in se)2.667 F -.15(ve)-.25 G .167(ral w) -.15 F 2.667(ays. In)-.1 F F2(list)2.667 E F0 .167 -(mode, it can display the current k)4.333 F .466 -.15(ey b)-.1 H .166 -(indings, list all the readline edit-).15 F .149(ing directi)72 633.6 R -.15 -(ve)-.25 G 2.649(sa).15 G -.25(va)132.798 633.6 S .149 -(ilable for binding, list which k).25 F -.15(ey)-.1 G 2.649(si).15 G -1.9 -.4 -(nv o)282.352 633.6 T .349 -.1(ke a g).4 H -2.15 -.25(iv e).1 H 2.65(nd).25 G -(irecti)345.3 633.6 Q -.15(ve)-.25 G 2.65(,o).15 G 2.65(ro)385.04 633.6 S .15 -(utput the current set of k)396.02 633.6 R -.15(ey)-.1 G .526(bindings in a fo\ -rmat that can be incorporated directly into an inputrc \214le.)72 645.6 R(In) -5.526 E F2(batc)3.026 E(h)-.15 E F0 .526(mode, it reads a series)4.692 F .71 -(of k)72 657.6 R 1.01 -.15(ey b)-.1 H .71 -(indings directly from a \214le and passes them to readline.).15 F .71 -(In its most common usage,)5.71 F F1(bind)3.21 E F0(tak)3.21 E .71(es a)-.1 F -.534(single string and passes it directly to readline, which interprets the li\ -ne as if it had just been read from the)72 669.6 R(inputrc \214le.)72 681.6 Q -(Both k)5 E .3 -.15(ey b)-.1 H(indings and v).15 E -(ariable assignments can appear in the string gi)-.25 E -.15(ve)-.25 G 2.5(nt) -.15 G(o)424.4 681.6 Q F1(bind)2.5 E F0(.)A .401(The readline library also pro) -97 697.2 R .402(vides an interf)-.15 F .402(ace for)-.1 F F2(wor)2.902 E 2.902 -(dc)-.37 G(ompletion)328.546 697.2 Q F0 5.402(.W)C .402(hen the)385.888 697.2 R -F2(completion)2.902 E F0(character)4.568 E 1.261(\(usually T)72 709.2 R 1.261 -(AB\) is typed, readline looks at the w)-.93 F 1.26 -(ord currently being entered and computes the set of \214le-)-.1 F .523 -(names of which the current w)72 721.2 R .523(ord is a v)-.1 F .523 -(alid pre\214x.)-.25 F .524 -(If there is only one possible completion, the rest of the)5.523 F EP -%%Page: 8 8 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-8-)279.67 48 S .358 -(characters are inserted directly)72 84 R 2.858(,o)-.65 G .358(therwise the co\ -mmon pre\214x of the set of \214lenames is added to the current)205.232 84 R --.1(wo)72 96 S 3.199(rd. A).1 F .699(second T)3.199 F .699(AB character entere\ -d immediately after a non-unique completion causes readline to list)-.93 F -1.814(the possible completions; there is an option to ha)72 108 R 2.113 -.15 -(ve t)-.2 H 1.813(he list displayed immediately).15 F 6.813(.R)-.65 G 1.813 -(eadline pro)436.517 108 R(vides)-.15 E .482 -(hooks so that applications can pro)72 120 R .482 -(vide speci\214c types of completion before the def)-.15 F .483 -(ault \214lename completion)-.1 F .132(is attempted.)72 132 R .132 -(This is quite \215e)5.132 F .132(xible, though it is not completely user)-.15 -F 2.632(-programmable. Bash,)-.2 F .132(for e)2.632 F .132(xample, can)-.15 F -.37(complete \214lenames, command names \(including aliases, b)72 144 R .37 -(uiltins, shell reserv)-.2 F .37(ed w)-.15 F .37(ords, shell functions, and)-.1 -F -.15(exe)72 156 S .424(cutables found in the \214le system\), shell v).15 F -.424(ariables, usernames, and hostnames.)-.25 F .423 -(It uses a set of heuristics)5.424 F(that, while not perfect, is generally qui\ -te good at determining what type of completion to attempt.)72 168 Q/F1 10 -/Times-Bold@0 SF 2.5(4.3.4. History)72 192 R F0 .255 -(Access to the list of commands pre)97 207.6 R .255(viously entered \(the)-.25 -F/F2 10/Times-Italic@0 SF .255(command history)2.755 F F0 2.756(\)i)C 2.756(sp) -399.236 207.6 S(ro)410.882 207.6 Q .256(vided jointly by bash)-.15 F .095 -(and the readline library)72 219.6 R 5.094(.B)-.65 G .094(ash pro)178.928 219.6 -R .094(vides v)-.15 F .094(ariables \()-.25 F F1(HISTFILE)A F0(,)A F1(HISTSIZE) -2.594 E F0 2.594(,a)C(nd)382.068 219.6 Q F1(HISTCONTR)2.594 E(OL)-.3 E F0 2.594 -(\)a)C .094(nd the)479.186 219.6 R F1(history)72 231.6 Q F0(and)2.825 E F1(fc) -2.825 E F0 -.2(bu)2.825 G .325(iltins to manipulate the history list.).2 F .325 -(The v)5.325 F .325(alue of)-.25 F F1(HISTFILE)2.825 E F0 .326 -(specifes the \214le where bash)2.826 F .128(writes the command history on e)72 -243.6 R .128(xit and reads it on startup.)-.15 F F1(HISTSIZE)5.128 E F0 .128 -(is used to limit the number of com-)2.628 F .346(mands sa)72 255.6 R -.15(ve) --.2 G 2.846(di).15 G 2.846(nt)129.002 255.6 S .346(he history)139.628 255.6 R -(.)-.65 E F1(HISTCONTR)5.346 E(OL)-.3 E F0(pro)2.846 E .346 -(vides a crude form of control o)-.15 F -.15(ve)-.15 G 2.846(rw).15 G .346 -(hich commands are)425.548 255.6 R(sa)72 267.6 Q -.15(ve)-.2 G 2.905(do).15 G -2.905(nt)102.325 267.6 S .405(he history list: a v)113.01 267.6 R .405(alue of) --.25 F F2(ignor)2.905 E(espace)-.37 E F0 .405(means to not sa)4.571 F .705 -.15 -(ve c)-.2 H .405(ommands which be).15 F .405(gin with a space; a)-.15 F -.25 -(va)72 279.6 S .339(lue of).25 F F2(ignor)2.839 E(edups)-.37 E F0 .339 -(means to not sa)4.505 F .64 -.15(ve c)-.2 H .34 -(ommands identical to the last command sa).15 F -.15(ve)-.2 G(d.).15 E F1 -(HISTCONTR)5.34 E(OL)-.3 E F0 -.1(wa)72 291.6 S 3.15(sn).1 G(amed)95.6 291.6 Q -F1(history_contr)3.15 E(ol)-.18 E F0 .65(in earlier v)3.15 F .649 -(ersions of bash; the old name is still accepted for backw)-.15 F .649 -(ards com-)-.1 F(patibility)72 303.6 Q 5.723(.T)-.65 G(he)121.803 303.6 Q F1 -(history)3.223 E F0 .724(command can read or write \214les containing the hist\ -ory list and display the current)3.223 F .895(list contents.)72 315.6 R(The) -5.895 E F1(fc)3.395 E F0 -.2(bu)3.395 G .895 -(iltin, adopted from POSIX.2 and the K).2 F .894(orn Shell, allo)-.35 F .894 -(ws display and re-e)-.25 F -.15(xe)-.15 G(cution,).15 E .461 -(with optional editing, of commands from the history list.)72 327.6 R .462 -(The readline library of)5.462 F .462(fers a set of commands to)-.25 F .657(se\ -arch the history list for a portion of the current input line or a string type\ -d by the user)72 339.6 R 5.657(.F)-.55 G(inally)445.836 339.6 Q 3.157(,t)-.65 G -(he)476.403 339.6 Q F2(his-)3.157 E(tory)72 351.6 Q F0(library)4.196 E 2.53(,g) --.65 G .03(enerally incorporated directly into the readline library)128.346 -351.6 R 2.53(,i)-.65 G .03(mplements a f)350.636 351.6 R .031 -(acility for history recall,)-.1 F -.15(ex)72 363.6 S .594(pansion, and re-e) -.15 F -.15(xe)-.15 G .594(cution of pre).15 F .594(vious commands v)-.25 F .594 -(ery similar to csh \(`)-.15 F .593(`bang history')-.74 F .593 -(', so called because)-.74 F(the e)72 375.6 Q -(xclamation point introduces a history substitution\):)-.15 E/F3 10/Courier@0 -SF 6($e)97 393.6 S(cho a b c d e)115 393.6 Q 6(abcde)97 405.6 S 6($!)97 417.6 S -6(!fghi)115 417.6 S(echo a b c d e f g h i)97 429.6 Q 6(abcdefghi)97 441.6 S 6 -($!)97 453.6 S(-2)115 453.6 Q(echo a b c d e)97 465.6 Q 6(abcde)97 477.6 S 6 -($e)97 489.6 S(cho !-2:1-4)115 489.6 Q(echo a b c d)97 501.6 Q 6(abcd)97 513.6 -S F0 1.456(The command history is only sa)72 535.2 R -.15(ve)-.2 G 3.957(dw).15 -G 1.457(hen the shell is interacti)232.599 535.2 R -.15(ve)-.25 G 3.957(,s).15 -G 3.957(oi)352.804 535.2 S 3.957(ti)364.541 535.2 S 3.957(sn)374.058 535.2 S -1.457(ot a)386.905 535.2 R -.25(va)-.2 G 1.457(ilable for use by shell).25 F -(scripts.)72 547.2 Q F1 2.5(4.3.5. New)72 571.2 R(Shell V)2.5 E(ariables)-.92 E -F0 .701(There are a number of con)97 586.8 R -.15(ve)-.4 G .701(nience v).15 F -.701(ariables that bash interprets to mak)-.25 F 3.2(el)-.1 G .7(ife easier) -402.76 586.8 R 5.7(.T)-.55 G .7(hese include)453.59 586.8 R F1(FIGNORE)72 598.8 -Q F0 3.973(,w)C 1.473(hich is a set of \214lename suf)132.363 598.8 R<8c78>-.25 -E 1.474(es identifying \214les to e)-.15 F 1.474 -(xclude when completing \214lenames;)-.15 F F1(HOSTTYPE)72 610.8 Q F0 3.03(,w)C -.53(hich is automatically set to a string describing the type of hardw)139.21 -610.8 R .53(are on which bash is cur)-.1 F(-)-.2 E .76(rently e)72 622.8 R -.15 -(xe)-.15 G(cuting;).15 E F1(OSTYPE)3.26 E F0 3.26(,t)C 3.26(ow)191.76 622.8 S -.76(hich bash assigns a v)207.24 622.8 R .761(alue that identi\214es the v)-.25 -F .761(ersion of)-.15 F/F4 9/Times-Roman@0 SF(UNIX)3.261 E F0(it')3.261 E 3.261 -(sr)-.55 G(unning)476.22 622.8 Q 1.354 -(on \(great for putting architecture-speci\214c binary directories into the)72 -634.8 R F1 -.74(PA)3.854 G(TH)-.21 E F0 1.354(\); and)B F1(IGNOREEOF)3.854 E F0 -3.854(,w)C(hose)485.67 634.8 Q -.25(va)72 646.8 S .062 -(lue indicates the number of consecuti).25 F .362 -.15(ve E)-.25 H .062 -(OF characters that an interacti).15 F .362 -.15(ve s)-.25 H .062 -(hell will read before e).15 F .062(xiting \255)-.15 F .114(an easy w)72 658.8 -R .113(ay to k)-.1 F .113(eep yourself from being logged out accidentally)-.1 F -5.113(.T)-.65 G(he)344.285 658.8 Q F1(auto_r)2.613 E(esume)-.18 E F0 -.25(va) -2.613 G .113(riable alters the w).25 F(ay)-.1 E .409 -(the shell treats simple command names: if job control is acti)72 670.8 R -.15 -(ve)-.25 G 2.909(,a).15 G .409(nd this v)335.516 670.8 R .409 -(ariable is set, single-w)-.25 F .409(ord simple)-.1 F .17(commands without re\ -directions cause the shell to \214rst look for a suspended job with that name \ -before start-)72 682.8 R(ing a ne)72 694.8 Q 2.5(wp)-.25 G(rocess.)118.13 694.8 -Q EP -%%Page: 9 9 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-9-)279.67 48 S/F1 10/Times-Bold@0 SF 2.5 -(4.3.6. Brace)72 84 R(Expansion)2.5 E F0 .653(Since sh of)97 99.6 R .653 -(fers no con)-.25 F -.15(ve)-.4 G .653(nient w).15 F .653 -(ay to generate arbitrary strings that share a common pre\214x or suf)-.1 F -<8c78>-.25 E 1.893(\(pathname e)72 111.6 R 1.893 -(xpansion requires that the \214lenames e)-.15 F 1.892(xist\), bash implements) --.15 F/F2 10/Times-Italic@0 SF(br)4.392 E 1.892(ace e)-.15 F(xpansion)-.2 E F0 -4.392(,ac)C(apability)469 111.6 Q(pick)72 123.6 Q .496(ed up from csh.)-.1 F -.496(Brace e)5.496 F .496(xpansion is similar to pathname e)-.15 F .496 -(xpansion, b)-.15 F .497(ut the strings generated need not)-.2 F 1.107 -(correspond to e)72 135.6 R 1.107(xisting \214les.)-.15 F 3.607(Ab)6.107 G -1.107(race e)207.655 135.6 R 1.107(xpression consists of an optional)-.15 F F2 -(pr)3.606 E(eamble)-.37 E F0 3.606(,f)1.666 G(ollo)419.286 135.6 Q 1.106 -(wed by a pair of)-.25 F 2.809 -(braces enclosing a series of comma-separated strings, and an optional)72 147.6 -R F2(postamble)5.31 E F0 7.81(.T)1.666 G 2.81(he preamble is)440.06 147.6 R(pr\ -epended to each string within the braces, and the postamble is then appended t\ -o each resulting string:)72 159.6 Q/F3 10/Courier@0 SF 6($e)97 177.6 S -(cho a{d,c,b}e)115 177.6 Q(ade ace abe)97 189.6 Q F1 2.5(4.3.7. Pr)72 219.6 R -(ompt Customization)-.18 E F0 .077(One of the more popular interacti)97 235.2 R -.376 -.15(ve f)-.25 H .076(eatures that bash pro).15 F .076 -(vides is the ability to customize the prompt.)-.15 F(Both)72 247.2 Q F1(PS1) -3.305 E F0(and)3.305 E F1(PS2,)3.305 E F0 .805 -(the primary and secondary prompts, are e)3.305 F .805 -(xpanded before being displayed.)-.15 F -.15(Pa)5.805 G(rameter).15 E .324 -(and v)72 259.2 R .324(ariable e)-.25 F .324 -(xpansion is performed when the prompt string is e)-.15 F .323 -(xpanded, so the v)-.15 F .323(alue of an)-.25 F 2.823(ys)-.15 G .323(hell v) -454.217 259.2 R(ariable)-.25 E .728(can be put into the prompt \(e.g.,)72 271.2 -R F1($SHL)3.228 E(VL)-.92 E F0 3.228(,w)C .728(hich indicates ho)258.564 271.2 -R 3.228(wd)-.25 G .729(eeply the current shell is nested\).)342.988 271.2 R -(Bash)5.729 E 1.895 -(specially interprets characters in the prompt string preceded by a backslash.) -72 283.2 R 1.895(Some of these backslash)6.895 F .874 -(escapes are replaced with the current time, the date, the current w)72 295.2 R -.874(orking directory)-.1 F 3.374(,t)-.65 G .874(he username, and the)416.958 -295.2 R .781(command number or history number of the command being entered.)72 -307.2 R .78(There is e)5.781 F -.15(ve)-.25 G 3.28(nab).15 G .78 -(ackslash escape to)429.13 307.2 R .007 -(cause the shell to change its prompt when running as root after an)72 319.2 R -F2(su)2.507 E F0 5.007(.B)C .008(efore printing each primary prompt,)360.388 -319.2 R .27(bash e)72 331.2 R .27(xpands the v)-.15 F(ariable)-.25 E F1(PR)2.77 -E(OMPT_COMMAND)-.3 E F0 .269(and, if it has a v)2.77 F .269(alue, e)-.25 F -.15 -(xe)-.15 G .269(cutes the e).15 F .269(xpanded v)-.15 F .269(alue as a)-.25 F -.04(command, allo)72 343.2 R .041(wing additional prompt customization.)-.25 F --.15(Fo)5.041 G 2.541(re).15 G .041 -(xample, this assignment causes the current user)311.964 343.2 R(,)-.4 E .99 -(the current host, the time, the last component of the current w)72 355.2 R -.989(orking directory)-.1 F 3.489(,t)-.65 G .989(he le)402.954 355.2 R -.15(ve) --.25 G 3.489(lo).15 G 3.489(fs)443.412 355.2 S .989(hell nesting,)454.121 355.2 -R(and the history number of the current command to be embedded into the primar\ -y prompt:)72 367.2 Q F3 6($P)97 385.2 S -(S1='\\u@\\h [\\t] \\W\($SHLVL:\\!\)\\$ ')115 385.2 Q -(chet@odin [21:03:44] documentation\(2:636\)$ cd ..)97 397.2 Q -(chet@odin [21:03:54] src\(2:637\)$)97 409.2 Q F0 .619 -(The string being assigned is surrounded by single quotes so that if it is e)72 -430.8 R(xported,)-.15 E F1(SHL)3.119 E(VL)-.92 E F0 .619(will be updated)3.119 -F(by a child shell:)72 442.8 Q F3 -(chet@odin [21:13:35] src\(2:638\)$ export PS1)97 460.8 Q -(chet@odin [21:17:40] src\(2:639\)$ bash)97 472.8 Q -(chet@odin [21:17:46] src\(3:696\)$)97 484.8 Q F0(The)72 506.4 Q F1(\\$)2.5 E -F0(escape is displayed as `)2.5 E(`)-.74 E F1($)A F0 1.48 -.74('' w)D -(hen running as a normal user).74 E 2.5(,b)-.4 G(ut as `)342.08 506.4 Q(`)-.74 -E F1(#)A F0 1.48 -.74('' w)D(hen running as root.).74 E F1 2.5(4.3.8. POSIX)72 -530.4 R(Mode)2.5 E F0 .46(Although bash is intended to be POSIX.2 compliant, t\ -here are areas in which the def)97 546 R .46(ault beha)-.1 F .46(vior is)-.2 F -1.168(not compatible with the standard.)72 558 R -.15(Fo)6.169 G 3.669(ru).15 G -1.169(sers who wish to operate in a strict POSIX.2 en)238.85 558 R 1.169 -(vironment, bash)-.4 F .61(implements a)72 570 R F2 .61(POSIX mode)3.11 F F0 -5.61(.W)C .61(hen this mode is acti)199.42 570 R -.15(ve)-.25 G 3.109(,b).15 G -.609(ash modi\214es its def)303.727 570 R .609(ault operation where it dif)-.1 -F(fers)-.25 E .066(from POSIX.2 to match the standard.)72 582 R .067 -(POSIX mode is entered when bash is started with the)5.066 F F1 .067(-o posix) -2.567 F F0(option)2.567 E .382(or when)72 594 R F1 .382(set -o posix)2.882 F F0 -.381(is e)2.881 F -.15(xe)-.15 G 2.881(cuted. F).15 F .381 -(or compatibility with other GNU softw)-.15 F .381 -(are that attempts to be POSIX.2)-.1 F 5.752 -(compliant, bash also enters POSIX mode if either of the v)72 606 R(ariables) --.25 E F1(POSIX_PED)8.253 E(ANTIC)-.35 E F0(or)8.253 E F1(POSIXL)72 618 Q -(Y_CORRECT)-.92 E F0 1.179(is set when bash is started or assigned a v)3.679 F -1.178(alue during e)-.25 F -.15(xe)-.15 G 3.678(cution. When).15 F 1.178 -(bash is)3.678 F .218(started in POSIX mode, for e)72 630 R .218(xample, the) --.15 F F1(kill)2.718 E F0 -.2(bu)2.718 G(iltin').2 E(s)-.55 E F12.718 E -F0 .218(option beha)2.718 F -.15(ve)-.2 G 2.718(sd).15 G(if)370.166 630 Q .219 -(ferently: it lists the names of all)-.25 F 1.084(signals on a single line sep\ -arated by spaces, rather than listing the signal names and their corresponding) -72 642 R(numbers.)72 654 Q .865(Some of the def)97 669.6 R .865(ault bash beha) --.1 F .865(vior dif)-.2 F .865 -(fers from other shells as a result of the POSIX standard.)-.25 F -.15(Fo)5.866 -G(r).15 E 1.16(instance, bash includes the)72 681.6 R F1(!)3.66 E F0(reserv) -6.16 E 1.16(ed w)-.15 F 1.16(ord to ne)-.1 F -.05(ga)-.15 G 1.16 -(te the return status of a pipeline because it has been).05 F -(de\214ned by POSIX.2.)72 693.6 Q -(Neither sh nor ksh has implemented that feature.)5 E EP -%%Page: 10 10 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(0-)288 48 S/F1 10/Times-Bold@0 -SF 2.5(4.4. F)72 84 R(eatur)-.25 E(es Unique to ksh)-.18 E F0 .177 -(Ksh includes a number of features not in the currently-released v)97 99.6 R -.178(ersion of bash, v)-.15 F .178(ersion 1.14.)-.15 F(Unless)5.178 E .822 -(noted, none of these features is in the POSIX.2 standard.)72 111.6 R .821 -(Where appropriate the equi)5.821 F -.25(va)-.25 G .821(lent bash features).25 -F(are noted.)72 123.6 Q F1 2.5(4.4.1. The)72 147.6 R(ksh Language)2.5 E F0 -2.955(An)97 163.2 S .955 -.25(ew c)112.175 163.2 T .455(ompound command folds) -.25 F F1(test)2.955 E F0 .456(into the ksh language, delimited by the reserv) -2.955 F .456(ed w)-.15 F(ords)-.1 E F1([[)2.956 E F0(and)2.956 E F1(]])72 175.2 -Q F0 5.726(.T)C .726(he syntax is identical to)92.996 175.2 R F1(test)3.225 E -F0 .725(with a fe)3.225 F 3.225(wc)-.25 G .725 -(hanges: for instance, instead of)262.855 175.2 R F13.225 E F0(and)3.225 -E F13.225 E F0(,)A F1(&&)3.225 E F0(and)3.225 E/F2 10/Symbol SF -3.225 E F0(are)3.225 E 3.32(used. The)72 187.2 R -.1(wo)3.32 G .82(rds between) -.1 F F1([[)3.32 E F0(and)3.32 E F1(]])3.32 E F0 .82(are not processed for w) -3.32 F .82(ord splitting or \214lename generation.)-.1 F .82(The ne)5.82 F(w) --.25 E .926 -(command does pattern matching as well as string comparison, a la the)72 199.2 -R F1(case)3.425 E F0 3.425(command. This)3.425 F(ne)3.425 E 3.425(wc)-.25 G -(ontrol)480.11 199.2 Q .165(structure does ha)72 211.2 R .465 -.15(ve t)-.2 H -.165(he adv).15 F .166(antage of reducing common ar)-.25 F .166 -(gument problems encountered using test \(e.g.)-.18 F F1(test)2.666 E -("$string")72 223.2 Q F0 2.928(,w)C(here)125.748 223.2 Q F1($string)2.928 E F0 --.15(ex)2.928 G .428(pands to).15 F F12.928 E F0 .428(\), b)B .428 -(ut at the cost of bloating the language.)-.2 F .427(The POSIX.2 test algo-) -5.427 F 2.752(rithm that bash uses, along with some programmer care, alle)72 -235.2 R 2.752(viates those problems in a backw)-.25 F(ards-)-.1 E .854 -(compatible w)72 247.2 R .853(ay with no additions to the language.)-.1 F .853 -(The one capability of)5.853 F F1 .853([[ ]])3.353 F F0 .853(not a)3.353 F -.25 -(va)-.2 G .853(ilable in bash is its).25 F(ability to test whether an indi)72 -259.2 Q(vidual)-.25 E F1(set \255o)2.5 E F0(option is turned on or of)2.5 E(f.) --.25 E .339(Other parts of the ksh language are not common to bash.)97 274.8 R -(The)5.34 E F1(\(\(...\)\))2.84 E F0(operator)5.34 E 2.84(,e)-.4 G(qui)419.33 -274.8 Q -.25(va)-.25 G .34(lent to).25 F F1 .34(let "...")2.84 F F0(,)A .197 -(is unique to ksh, as are the concept of co-processes and the)72 286.8 R F1 -(time)2.697 E F0 -.1(ke)2.696 G(yw)-.05 E .196 -(ord to time commands and pipelines.)-.1 F F1 2.5(4.4.2. Functions)72 310.8 R -(and Aliases)2.5 E F0 1.022(The K)97 326.4 R 1.022(orn shell has)-.35 F/F3 10 -/Times-Italic@0 SF(autoloaded)3.522 E F0 3.522(functions. A)3.522 F 1.022 -(function mark)3.522 F 1.022(ed as)-.1 F F3(autoload)3.522 E F0 1.022 -(is not de\214ned until it is)5.188 F 1.042(\214rst e)72 338.4 R -.15(xe)-.15 G -3.542(cuted. When).15 F 1.042(such a function is e)3.542 F -.15(xe)-.15 G 1.042 -(cuted, a search is made through the directories in).15 F F1(FP)3.541 E -.95 -(AT)-.74 G(H).95 E F0(\(a)3.541 E .27 -(colon-separated list of directories similar to)72 350.4 R F1 -.74(PA)2.77 G -(TH)-.21 E F0 2.77(\)f)C .27(or a \214le with the same name as the function.) -285.78 350.4 R .27(That \214le)5.27 F .548(is then read in as with the)72 362.4 -R F1(.)3.881 E F0 .547(command; presumably the function is de\214ned therein.) -3.047 F .547(There is a pair of shell)5.547 F .886 -(functions included in the bash distrib)72 374.4 R .886(ution \()-.2 F F3 -.2 -(ex)C(amples/functions/autoload).2 E F0 5.886(\)t)C .886(hat pro)378.35 374.4 R -.886(vide much of this func-)-.15 F -(tionality without changing the shell itself.)72 386.4 Q .116 -(Ksh functions are scoped in such a w)97 402 R .116(ay that the en)-.1 F .116 -(vironment in which the)-.4 F 2.616(ya)-.15 G .116(re e)405.144 402 R -.15(xe) --.15 G .115(cuted is closer to a).15 F .827(shell script en)72 414 R 3.327 -(vironment. Bash)-.4 F .827(uses the POSIX.2 scoping rules, which mak)3.327 F -3.327(et)-.1 G .827(he function e)392.517 414 R -.15(xe)-.15 G .828(cution en) -.15 F(vi-)-.4 E 1.2(ronment an e)72 426 R 1.2(xact cop)-.15 F 3.7(yo)-.1 G 3.7 -(ft)174.86 426 S 1.199(he shell en)184.67 426 R 1.199 -(vironment with the replacement of the shell')-.4 F 3.699(sp)-.55 G 1.199 -(ositional paramters)426.421 426 R(with the function ar)72 438 Q 2.5 -(guments. K)-.18 F -(orn shell functions do not share options or traps with the in)-.35 E -.2(vo) --.4 G(king shell.).2 E .451(Ksh has)97 453.6 R F3(tr)2.951 E(ac)-.15 E -.1(ke) --.2 G(d).1 E F0 .452(aliases, which alias a command name to its full pathname.) -2.952 F .452(Bash has true command)5.452 F(hashing.)72 465.6 Q F1 2.5 -(4.4.3. Arrays)72 489.6 R F0 .246 -(Arrays are an aspect of ksh that has no real bash equi)97 505.2 R -.25(va)-.25 -G 2.746(lent. The).25 F 2.746(ya)-.15 G .246(re easy to create and manipulate:) -371.42 505.2 R 1.637 -(an array is created automatically by using subscript assignment \()72 517.2 R -F1(name)A F0([)A F3(inde)A(x)-.2 E F0(]=)A F1 -.1(va)C(lue).1 E F0 1.637 -(\), and an)B 4.137(yv)-.15 G(ariable)476.79 517.2 Q 1.967 -(may be referred to as an array)72 529.2 R 6.967(.K)-.65 G 1.967(sh arrays, ho) -219.229 529.2 R(we)-.25 E -.15(ve)-.25 G 2.767 -.4(r, h).15 H -2.25 -.2(av e).4 -H(se)4.667 E -.15(ve)-.25 G 1.967(ral anno).15 F 1.967(ying limitations: the) --.1 F 4.466(ym)-.15 G 1.966(ay be)480.654 529.2 R(inde)72 541.2 Q -.15(xe)-.15 -G 3.498(do).15 G .998(nly up to 512 or 1024 elements, depending on ho)111.858 -541.2 R 3.498(wt)-.25 G .999(he shell is compiled, and there is only the) -330.188 541.2 R(clumsy)72 553.2 Q F1 .223(set -A)2.723 F F0 .223 -(to assign a list of v)2.723 F .223(alues sequentially)-.25 F 5.223(.D)-.65 G -.223(espite these limits, arrays are useful, if underutilized)293.31 553.2 R -(by shell programmers.)72 565.2 Q F1 2.5(4.4.4. Builtin)72 589.2 R(Commands)2.5 -E F0 .112(Some of the b)97 604.8 R .112(uiltin commands ha)-.2 F .412 -.15 -(ve b)-.2 H .112(een e).15 F .112(xtended or are ne)-.15 F 2.612(wi)-.25 G -2.613(nk)351.402 604.8 S 2.613(sh. The)364.015 604.8 R F1(print)2.613 E F0 -.2 -(bu)2.613 G .113(iltin w).2 F .113(as included)-.1 F .242(to w)72 616.8 R .242 -(ork around the incompatibilities and limitations of)-.1 F F1(echo)2.741 E F0 -5.241(.T)C(he)328.234 616.8 Q F1(whence)2.741 E F0 .241(command tells what w) -2.741 F .241(ould hap-)-.1 F .418(pen if each ar)72 628.8 R .418 -(gument were typed as a command name.)-.18 F(The)5.418 E F1(cd)2.919 E F0 -.2 -(bu)2.919 G .419(iltin has been e).2 F .419(xtended to tak)-.15 F 2.919(eu)-.1 -G 2.919(pt)470.482 628.8 S 2.919(ot)481.181 628.8 S -.1(wo)491.88 628.8 S(ar)72 -640.8 Q 1.425(guments: if tw)-.18 F 3.925(oa)-.1 G -.18(rg)153.485 640.8 S -1.424(uments are supplied, the second is substituted for the \214rst in the cu\ -rrent directory).18 F 2.294 -(name and the shell changes to the resultant directory name.)72 652.8 R 2.295 -(The ksh)7.294 F F1(trap)4.795 E F0 -.2(bu)4.795 G 2.295(iltin accepts).2 F F1 -(ERR)4.795 E F0(and)4.795 E F1(DEB)72 664.8 Q(UG)-.1 E F0 .15(as trap names.) -2.65 F(The)5.15 E F1(ERR)2.65 E F0 .15(trap is e)2.65 F -.15(xe)-.15 G .15 -(cuted when a command f).15 F(ails;)-.1 E F1(DEB)2.65 E(UG)-.1 E F0 .15(is e) -2.65 F -.15(xe)-.15 G .15(cuted after e).15 F -.15(ve)-.25 G(ry).15 E -(simple command.)72 676.8 Q .05(The bash distrib)97 692.4 R .05 -(ution includes shell functions that implement)-.2 F F1(print)2.55 E F0(and) -2.55 E F1(whence)2.55 E F0 .05(and the e)2.55 F .05(xtensions to)-.15 F F1(cd) -72 704.4 Q F0(.)A EP -%%Page: 11 11 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(1-)288 48 S/F1 10/Times-Bold@0 -SF 2.5(4.4.5. Expansion)72 84 R F0 .282(The ksh \214lename generation \()97 -99.6 R/F2 10/Times-Italic@0 SF(globbing)A F0 2.782(\)f)C .282(acilities ha) -262.45 99.6 R .581 -.15(ve b)-.2 H .281(een e).15 F .281(xtended be)-.15 F .281 -(yond their bash and sh coun-)-.15 F 3.68(terparts. In)72 111.6 R 1.181 -(this area, ksh can be thought of as)3.681 F F2 -.4(eg)3.681 G -.37(re).4 G(p) -.37 E F0 1.181(to the bash)5.347 F F2(gr)3.681 E(ep)-.37 E F0 6.181(.K)1.666 G -1.181(sh globbing of)382.406 111.6 R 1.181(fers things lik)-.25 F(e)-.1 E 1.018 -(alternation, the ability to match zero or more instances of a pattern, and th\ -e ability to match e)72 123.6 R 1.018(xactly one)-.15 F(occurrence of an)72 -135.6 Q 2.5(yo)-.15 G 2.5(fal)150.98 135.6 S(ist of patterns.)166.53 135.6 Q F1 -2.5(4.4.6. Startup)72 159.6 R(Files)2.5 E F0 .977(Ksh and bash e)97 175.2 R --.15(xe)-.15 G .977(cute startup \214les dif).15 F(ferently)-.25 E 5.977(.K) --.65 G .977(sh e)297.879 175.2 R(xpands)-.15 E F1(ENV)3.478 E F0 .978 -(and sources the \214le it names for)3.478 F -2.15 -.25(ev e)72 187.2 T 1.85 -(ry shell.).25 F 1.85(Bash sources)6.85 F F1($ENV)4.35 E F0 1.85 -(only in non-interacti)4.35 F 2.15 -.15(ve s)-.25 H 1.85(hells; interacti).15 F -2.15 -.15(ve s)-.25 H 1.85(hells source \214x).15 F 1.85(ed \214les, as)-.15 F --.15(ex)72 199.2 S 1.285(plained in the pre).15 F 1.285(vious section.)-.25 F -1.285(The POSIX standard has speci\214ed the ksh beha)6.285 F(vior)-.2 E 3.785 -(,s)-.4 G 3.785(ob)441.545 199.2 S 1.285(ash acts the)455.33 199.2 R -(same as ksh if started with the)72 211.2 Q F1(\255posix)2.5 E F0(or)2.5 E F1 -(\255o posix)2.5 E F0(options.)2.5 E F1 2.5(4.4.7. History)72 235.2 R F0 -(Finally)97 250.8 Q 3.372(,t)-.65 G .872(he ksh history implementation dif) -133.342 250.8 R .871(fers slightly from bash.)-.25 F .871 -(Each instance of bash k)5.871 F .871(eeps the)-.1 F .633 -(history list in memory and of)72 262.8 R .633(fers options to the)-.25 F F1 -(history)3.133 E F0 -.2(bu)3.133 G .634 -(iltin to write the list to or read it from a named).2 F 3.216(\214le. Ksh)72 -274.8 R -.1(ke)3.216 G .716 -(eps the history in a \214le, which it accesses each time a command is sa).1 F --.15(ve)-.2 G 3.215(dt).15 G 3.215(oo)426.445 274.8 S 3.215(rr)439.66 274.8 S -(etrie)449.535 274.8 Q -.15(ve)-.25 G 3.215(df).15 G(rom)487.89 274.8 Q .338 -(the history)72 286.8 R 5.338(.K)-.65 G .338 -(sh history \214les may be shared among dif)129.246 286.8 R .338 -(ferent concurrent instances of ksh, which could be a)-.25 F -(bene\214t to the user)72 298.8 Q(.)-.55 E F1 2.5(5. F)72 322.8 R(eatur)-.25 E -(es in Bash-2.0)-.18 E F0 .657(The ne)97 338.4 R .657 -(xt release of bash, 2.0, will be a major o)-.15 F -.15(ve)-.15 G 3.157 -(rhaul. It).15 F .656(will include man)3.157 F 3.156(yn)-.15 G 1.156 -.25(ew f) -419.532 338.4 T .656(eatures, for both).25 F .705(programming and interacti)72 -350.4 R 1.005 -.15(ve u)-.25 H 3.205(se. Redundant).15 F -.15(ex)3.205 G .705 -(isting functions will be remo).15 F -.15(ve)-.15 G 3.206(d. There).15 F .706 -(are se)3.206 F -.15(ve)-.25 G .706(ral cases).15 F 1.34(where bash treats a v) -72 362.4 R 1.34(ariable specially to enable functionality a)-.25 F -.25(va)-.2 -G 1.34(ilable another w).25 F 1.34(ay \()-.1 F F1($nolinks)A F0(vs.)3.84 E F1 -1.34(set -o)3.84 F(ph)72 374.4 Q(ysical)-.15 E F0 2.5(,f)C(or e)115.19 374.4 Q -(xample\); the special treatment of the v)-.15 E(ariable name will be remo)-.25 -E -.15(ve)-.15 G(d.).15 E F1 2.5(5.1. Arrays)72 398.4 R F0 .546(Bash-2.0 will \ -include arrays which are a superset of those in ksh, with the size limitations\ - remo)97 414 R -.15(ve)-.15 G(d.).15 E(The)72 426 Q F1(declar)3.086 E(e)-.18 E -F0(,)A F1 -.18(re)3.086 G(adonly).18 E F0 3.086(,a)C(nd)174.768 426 Q F1 -(export)3.086 E F0 -.2(bu)3.086 G .586 -(iltins will accept options to specify arrays, and the).2 F F1 -.18(re)3.085 G -(ad).18 E F0 -.2(bu)3.085 G .585(iltin will).2 F(ha)72 438 Q .81 -.15(ve a)-.2 -H 3.01(no).15 G .51(ption to read a list of w)110.99 438 R .51 -(ords and assign them directly to an array)-.1 F 5.51(.T)-.65 G .51 -(here will also be a ne)386.23 438 R 3.01(wa)-.25 G(rray)487.9 438 Q F2 .262 -(compound assignment)72 450 R F0 .262(syntax a)2.762 F -.25(va)-.2 G .262 -(ilable for assignment statements and the).25 F F1(declar)2.761 E(e)-.18 E F0 --.2(bu)2.761 G 2.761(iltin. This).2 F(ne)2.761 E 2.761(ws)-.25 G(yntax)481.78 -450 Q .441(has the form)72 462 R F2(name)2.941 E F0(=\()A F2(value1)A F0(...) -2.941 E F2(valueN)2.941 E F0 .441(\), where each)B F2(value)2.942 E F0 .442 -(has the form [)4.608 F F2(subscript)A F0(]=)A F2(string)A F0 5.442(.O)C .442 -(nly the)449.776 462 R F2(string)2.942 E F0 1.395(is required.)72 474 R 1.395 -(If the optional brack)6.395 F 1.395(ets and)-.1 F F2(subscript)3.894 E F0 -1.394(are included, that inde)3.894 F 3.894(xi)-.15 G 3.894(sa)388.714 474 S -1.394(ssigned to, otherwise the)400.938 474 R(inde)72 486 Q 3.656(xo)-.15 G -3.656(ft)102.726 486 S 1.156(he element assigned is the last inde)112.492 486 R -3.657(xa)-.15 G 1.157(ssigned to by the statement plus one.)272.917 486 R(Inde) -6.157 E 1.157(xing starts at)-.15 F 2.73(zero. The)72 498 R .23 -(same syntax is accepted by)2.73 F F1(declar)2.73 E(e)-.18 E F0 5.229(.I)C(ndi) -269.159 498 Q .229(vidual array elements may be assigned to using the ksh)-.25 -F F2(name)72 510 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0(.)A F1 2.5 -(5.2. Dynamic)72 534 R(Loading)2.5 E F0 .348(On systems that support the)97 -549.6 R F2(dlopen)2.848 E F0 .349(\(3\) library function, bash-2.0 will allo)B -2.849(wn)-.25 G .849 -.25(ew b)407.504 549.6 T .349(uiltins to be loaded).05 F -.049(into a running shell from a shared object \214le.)72 561.6 R .049(The ne) -5.049 F 2.549(wb)-.25 G .049(uiltins will ha)298.999 561.6 R .348 -.15(ve a)-.2 -H .048(ccess to the rest of the shell f).15 F(acil-)-.1 E .649(ities, b)72 -573.6 R .649(ut programmers will be subject to a fe)-.2 F 3.149(ws)-.25 G .649 -(tructural rules.)269.591 573.6 R .65(This will be pro)5.65 F .65 -(vided via a ne)-.15 F 3.15(wo)-.25 G .65(ption to)472.51 573.6 R F1(enable)72 -585.6 Q F0(.)A F1 2.5(5.3. Builtins)72 609.6 R F0 .889(Some of the e)97 625.2 R -.889(xisting b)-.15 F .889(uiltins will change in bash-2.0.)-.2 F .888(As pre) -5.888 F .888(viously noted,)-.25 F F1(declar)3.388 E(e)-.18 E F0(,)A F1(export) -3.388 E F0(,)A F1 -.18(re)3.388 G(ad-).18 E(only)72 637.2 Q F0 2.873(,a)C(nd) -100.153 637.2 Q F1 -.18(re)2.873 G(ad).18 E F0 .373(will accept ne)2.873 F -2.873(wo)-.25 G .374(ptions to specify arrays.)206.288 637.2 R(The)5.374 E F1 -(jobs)2.874 E F0 -.2(bu)2.874 G .374(iltin will be able to list only stopped).2 -F .323(or running jobs.)72 649.2 R(The)5.322 E F1(enable)2.822 E F0 .322 -(command will tak)2.822 F 2.822(ean)-.1 G -.25(ew)282.84 649.2 S F13.072 -E F0 .322(option to restrict its actions to the POSIX.2)2.822 F F2(spe-)2.822 E -(cial)72 661.2 Q F0 -.2(bu)3.14 G(iltins.).2 E F1(Kill)5.64 E F0 .64 -(will be able to list signal numbers corresponding to indi)3.14 F .64 -(vidual signal names.)-.25 F .64(The read-)5.64 F .703(line library interf)72 -673.2 R(ace,)-.1 E F1(bind)3.203 E F0 3.203(,w)C .703(ill ha)193.032 673.2 R -1.003 -.15(ve a)-.2 H 3.203(no).15 G .703(ption to remo)243.951 673.2 R 1.003 --.15(ve t)-.15 H .703(he binding for an).15 F 3.203(yk)-.15 G 1.002 -.15(ey s) -398.032 673.2 T .702(equence \(which is not).15 F -(the same as binding it to self-insert\).)72 685.2 Q .494(There will be tw)97 -700.8 R 2.994(on)-.1 G .994 -.25(ew b)177.196 700.8 T .495 -(uiltin commands in bash-2.0.).05 F(The)5.495 E F1(diso)2.995 E(wn)-.1 E F0 -.495(command will remo)2.995 F .795 -.15(ve j)-.15 H .495(obs from).15 F(bash') -72 712.8 Q 3.445(si)-.55 G .945(nternal jobs table when job control is acti) -103.225 712.8 R -.15(ve)-.25 G 5.945(.A).15 G(diso)303.25 712.8 Q .944 -(wned job will not be listed by the jobs com-)-.25 F .666(mand, nor will its e) -72 724.8 R .666(xit status be reported.)-.15 F(Diso)5.667 E .667 -(wned jobs will not be sent a)-.25 F F1(SIGHUP)3.167 E F0 .667 -(when an interacti)3.167 F -.15(ve)-.25 G EP -%%Page: 12 12 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(2-)288 48 S .688(shell e)72 84 R -3.187(xits. Most)-.15 F .687(of the shell')3.187 F 3.187(so)-.55 G .687 -(ptional or)205.423 84 R/F1 10/Times-Italic@0 SF(to)3.187 E -.1(gg)-.1 G(led).1 -E F0 .687(functionality will be folded into the ne)3.187 F(w)-.25 E/F2 10 -/Times-Bold@0 SF(shopt)3.187 E F0 -.2(bu)3.187 G(iltin.).2 E(Man)72 96 Q 3.714 -(yo)-.15 G 3.714(ft)103.894 96 S 1.214(he v)113.718 96 R 1.214 -(ariables which alter the shell')-.25 F 3.714(sb)-.55 G(eha)266.282 96 Q 1.214 -(vior when set \(re)-.2 F -.05(ga)-.15 G 1.214(rdless of their v).05 F 1.215 -(alue\) will be made)-.25 F 6(options settable with)72 108 R F2(shopt)8.5 E F0 -11(.E)C 6(xamples of such v)218.23 108 R 6(ariables include)-.25 F F2(allo)8.5 -E(w_null_glob_expansion)-.1 E F0(,)A F2(glob_dot_\214lenames)72 120 Q F0 2.5 -(,a)C(nd)163.67 120 Q F2(MAIL_W)2.5 E(ARNING)-1.2 E F0(.)A F2 2.5(5.4. V)72 144 -R(ariables and V)-.92 E(ariable Expansion)-.92 E F0 .047 -(Bash-2.0 will implement se)97 159.6 R -.15(ve)-.25 G .048(ral ne).15 F 2.548 -(wv)-.25 G .048(ariable e)252.988 159.6 R 2.548(xpansions. These)-.15 F .048 -(will answer se)2.548 F -.15(ve)-.25 G .048(ral of the most per).15 F(-)-.2 E -.213(sistant requests for ne)72 171.6 R 2.713(wf)-.25 G 2.713(eatures. It) -172.582 171.6 R .213(will be possible to `)2.713 F .212(`indirectly reference') --.74 F 2.712('av)-.74 G .212(ariable with an e)398.534 171.6 R(xpansion,)-.15 E -(lik)72 183.6 Q 3.01(eu)-.1 G(sing)94.91 183.6 Q/F3 10/Courier@0 SF .51 -(eval \\$${name})3.01 F F0 .51(to reference a v)3.01 F .51(ariable named by) --.25 F F3(${name})3.01 E F0 5.51(.E)C .51(xpansions will be a)394.32 183.6 R --.25(va)-.2 G(ilable).25 E .462(to retrie)72 195.6 R .762 -.15(ve s)-.25 H .462 -(ubstrings of v).15 F .461(ariables in an)-.25 F F1(awk)2.961 E F0(-lik)A 2.961 -(em)-.1 G .461(anner: starting at a speci\214c inde)277.692 195.6 R .461 -(x, retrie)-.15 F .461(ving some num-)-.25 F .941 -(ber of characters or the rest of the string.)72 207.6 R .941 -(It will be possible to retrie)5.941 F 1.241 -.15(ve s)-.25 H .941 -(equences of array elements lik).15 F(e)-.1 E .354(this, too.)72 219.6 R .354 -(It w)5.354 F .354(ould be nice to ha)-.1 F .654 -.15(ve a w)-.2 H .354 -(ay to replace portions of a v).05 F .353 -(ariable matching a pattern the same w)-.25 F(ay)-.1 E(leading or trailing sub\ -strings are presently stripped; that capability may be a)72 231.6 Q -.25(va)-.2 -G(ilable.).25 E .453(Another ne)97 247.2 R 2.953(we)-.25 G .453 -(xpansion will pro)156.376 247.2 R .453(vide a w)-.15 F .454 -(ay to create strings containing arbitrary characters, which is)-.1 F(incon)72 -259.2 Q -.15(ve)-.4 G 1.636(nient in the current v).15 F 4.136(ersion. W)-.15 F -1.635(ords of the form $')-.8 F F1(string)A F0 4.135('w)C 1.635(ill e)355.145 -259.2 R 1.635(xpand to)-.15 F F1(string)4.135 E F0 1.635(with backslash-)4.135 -F 1.231(escaped characters in)72 271.2 R F1(string)3.731 E F0 1.231 -(replaced as speci\214ed by the ANSI C standard.)3.731 F 1.232 -(As with other single-quoted)6.232 F -(shell strings, the only character that may not appear in)72 283.2 Q F1(string) -2.5 E F0(is a single quote.)2.5 E 1.436(The shell v)97 298.8 R 1.436 -(ariables will change also.)-.25 F 3.936(An)6.436 G 1.936 -.25(ew va)272.052 -298.8 T(riable).25 E F2(HISTIGNORE)3.936 E F0 1.435(will supersede)3.936 F F2 -(HISTCON-)3.935 E(TR)72 310.8 Q(OL)-.3 E F0(.)A F2(HISTIGNORE)5.327 E F0 .327 -(is the history analogy of)2.827 F F2(FIGNORE)2.828 E F0 2.828(:ac)C .328 -(olon-separated list of patterns specifying)339.938 310.8 R 1.082 -(commands to omit from the history list.)72 322.8 R 1.081 -(The special pattern '&' will match the pre)6.081 F 1.081 -(vious history line, to)-.25 F(pro)72 334.8 Q 1.568(vide the)-.15 F F2 -(HISTCONTR)4.068 E(OL)-.3 E F1(ignor)4.068 E(edups)-.37 E F0(beha)5.734 E(vior) --.2 E 6.568(.M)-.55 G(an)303.546 334.8 Q 4.069(yv)-.15 G 1.569 -(ariables which modify the shell')326.655 334.8 R 4.069(sb)-.55 G(eha)474.21 -334.8 Q(vior)-.2 E .395(will lose their special meaning.)72 346.8 R -1.11(Va) -5.395 G .395(riables such as)1.11 F F2(notify)2.895 E F0(and)2.895 E F2(noclob) -2.895 E(ber)-.1 E F0 .395(which pro)2.895 F .395(vide functionality a)-.15 F --.25(va)-.2 G(il-).25 E .931 -(able via other mechanisms will no longer be treated specially)72 358.8 R 5.931 -(.O)-.65 G .931(ther v)340.06 358.8 R .932(ariables will be folded into)-.25 F -F2(shopt)3.432 E F0(.)A(The)72 370.8 Q F2(history_contr)5.519 E(ol)-.18 E F0 -(and)5.519 E F2(hostname_completion_\214le)5.519 E F0 -.25(va)5.519 G 3.019 -(riables, superseded by).25 F F2(HISTCONTR)5.518 E(OL)-.3 E F0(and)5.518 E F2 -(HOSTFILE)72 382.8 Q F0(respecti)2.5 E -.15(ve)-.25 G(ly).15 E 2.5(,w)-.65 G -(ill be remo)185.12 382.8 Q -.15(ve)-.15 G(d.).15 E F2 2.5(5.5. Readline)72 -406.8 R F0(Naturally)97 422.4 Q 2.94(,t)-.65 G .44(here will be impro)142.34 -422.4 R -.15(ve)-.15 G .441(ments to readline as well.).15 F .441 -(All of the POSIX.2)5.441 F F1(vi)2.941 E F0 .441(-mode editing com-)B .33 -(mands will be implemented; missing commands lik)72 434.4 R 2.829(e`)-.1 G .329 -(m' to sa)290.599 434.4 R .629 -.15(ve t)-.2 H .329 -(he current cursor position \().15 F F1(mark)A F0 2.829(\)a)C .329(nd the) -478.951 434.4 R .36(`@' command for macro e)72 446.4 R .36(xpansion will be a) --.15 F -.25(va)-.2 G 2.861(ilable. The).25 F .361 -(ability to set the mark and e)2.861 F .361(xchange the current)-.15 F .764 -(cursor position \()72 458.4 R F1(point)A F0 3.264(\)a)C .764 -(nd mark will be added to the readline emacs mode as well.)170.672 458.4 R .763 -(Since there are com-)5.764 F .196 -(mands to set the mark, commands to manipulate the re)72 470.4 R .197 -(gion \(the characters between the point and the mark\))-.15 F .111(will be a) -72 482.4 R -.25(va)-.2 G 2.611(ilable. Commands).25 F(ha)2.611 E .411 -.15 -(ve b)-.2 H .11 -(een added to the readline emacs mode for more complete ksh compati-).15 F -(bility)72 494.4 Q 2.5(,s)-.65 G(uch as the C-])101.36 494.4 Q F1(c)A F0 -(character search command.)2.5 E F2 2.5(5.6. Con\214guration)72 518.4 R F0 .318 -(Bash w)97 534 R .318 -(as the \214rst GNU program to completely autocon\214gure.)-.1 F .319 -(Its autocon\214guration mechanism pre-)5.319 F(dates)72 546 Q F1(autoconf)4.07 -E F0 4.07(,t)C 1.569 -(he current GNU con\214guration program, and needs updating.)140.97 546 R 1.569 -(Bash-2.0 may include an)6.569 F .603 -(autoconf-based con\214guration script, if necessary ne)72 558 R 3.103(wf)-.25 -G .603(unctionality can be added to autoconf, or its limita-)294.476 558 R -(tions bypassed.)72 570 Q F2 2.5(5.7. Miscellaneous)72 594 R F0 1.632 -(The POSIX mode will be impro)97 609.6 R -.15(ve)-.15 G 4.131(di).15 G 4.131 -(nb)254.26 609.6 S 1.631(ash-2.0; it will pro)268.391 609.6 R 1.631 -(vide a more complete superset of the)-.15 F(POSIX standard.)72 621.6 Q -.15 -(Fo)5 G 2.5(rt).15 G(he \214rst time, bash will recognize the e)163.79 621.6 Q -(xistance of the POSIX.2)-.15 E F1(special)2.5 E F0 -.2(bu)2.5 G(iltins.).2 E -2.627(An)97 637.2 S .627 -.25(ew t)111.847 637.2 T .127(rap v).25 F(alue,)-.25 -E F2(DEB)2.627 E(UG)-.1 E F0 2.627(,w)C .128(ill be present, as in ksh.)218.405 -637.2 R .128(Commands speci\214ed with a)5.128 F F2(DEB)2.628 E(UG)-.1 E F0 -.128(trap will)2.628 F 1.908(be e)72 649.2 R -.15(xe)-.15 G 1.908 -(cuted after e).15 F -.15(ve)-.25 G 1.908(ry simple command.).15 F 1.908 -(Since this mak)6.908 F 1.908(es shell script deb)-.1 F 1.908 -(uggers possible, I hope to)-.2 F(include a bash deb)72 661.2 Q -(ugger in the bash-2.0 release.)-.2 E F2 2.5(6. A)72 685.2 R -.1(va)-1 G -(ilability).1 E F0 5.997(The current v)97 700.8 R 5.997(ersion of bash is a) --.15 F -.25(va)-.2 G 5.998(ilable for anon).25 F 5.998 -(ymous FTP from prep.ai.mit.edu as)-.15 F F1(/pub/gnu/bash-1.14.2.tar)72 712.8 -Q(.gz)-1.11 E F0(.)1.666 E EP -%%Page: 13 13 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF 2.5(-1)277.17 48 S 2.5(3-)288 48 S/F1 10/Times-Bold@0 -SF 2.5(7. Conclusion)72 84 R F0 .755(This paper has presented an o)97 99.6 R --.15(ve)-.15 G(rvie).15 E 3.255(wo)-.25 G 3.255(fb)259.27 99.6 S .755 -(ash, compared its features with those of other shells, and)270.855 99.6 R -(hinted at features in the ne)72 111.6 Q(xt release, bash-2.0.)-.15 E .483 -(Bash is a solid replacement for sh.)97 127.2 R .483(It is suf)5.483 F .483 -(\214ciently portable to run on nearly e)-.25 F -.15(ve)-.25 G .484(ry v).15 F -.484(ersion of)-.15 F/F2 9/Times-Roman@0 SF(UNIX)2.984 E F0 .514 -(from 4.3 BSD to SVR4.2, and se)72 139.2 R -.15(ve)-.25 G(ral).15 E F2(UNIX) -3.013 E F0 -.1(wo)3.013 G(rkalik).1 E .513(es, and rob)-.1 F .513 -(ust enough to replace sh on most of those)-.2 F .771(systems, It is v)72 151.2 -R .771(ery close to POSIX.2-conformant in POSIX mode, and is getting f)-.15 F -(aster)-.1 E 5.771(.I)-.55 G 3.272(ti)436.684 151.2 S 3.272(sn)445.516 151.2 S -.772(ot, unfortu-)457.678 151.2 R(nately)72 163.2 Q 2.663(,g)-.65 G .163 -(etting smaller)105.953 163.2 R 2.663(,b)-.4 G .163(ut there are man)170.399 -163.2 R 2.663(yo)-.15 G .163(ptional features.)248.101 163.2 R .163(It is v) -5.163 F .162(ery easy to b)-.15 F .162(uild a small subset to use as)-.2 F 2.5 -(ad)72 175.2 S(irect replacement for /bin/sh.)83.94 175.2 Q .909 -(Bash has thousands of users w)97 190.8 R .909(orldwide, all of whom ha)-.1 F -1.209 -.15(ve h)-.2 H .91(elped to mak).15 F 3.41(ei)-.1 G 3.41(tb)409.34 190.8 -S(etter)420.53 190.8 Q 5.91(.A)-.55 G .91(nother testa-)453.38 190.8 R -(ment to the bene\214ts of free softw)72 202.8 Q(are.)-.1 E F1 2.5(8. Refer)72 -226.8 R(ences)-.18 E F0 .432([1] S. R. Bourne, `)72 242.4 R .432(`UNIX T)-.74 F -.432(ime-Sharing System:)-.35 F .431(The UNIX Shell')5.431 F(',)-.74 E/F3 10 -/Times-Italic@0 SF .431(Bell System T)2.931 F(ec)-.92 E .431(hnical J)-.15 F -(ournal)-.25 E F0 2.931(,5)C(7\(6\),)484.84 242.4 Q -(July-August, 1978, pp. 1971-1990.)72 254.4 Q .736([2] Morris Bolsk)72 270 R -3.237(ya)-.15 G .737(nd Da)153.22 270 R .737(vid K)-.2 F(orn,)-.35 E F3 .737 -(The K)3.237 F .737(ornShell Command and Pr)-.4 F -.1(og)-.45 G -.15(ra).1 G -.737(mming Langua).15 F -.1(ge)-.1 G F0 3.237(,P).1 G .737(rentice Hall,) -453.833 270 R(1989.)72 282 Q .142([3] Bill Jo)72 297.6 R 1.442 -.65(y, A)-.1 H -2.642(nI).65 G .141(ntroduction to the C Shell,)140.428 297.6 R F3 .141 -(UNIX User')2.641 F 2.641(sS)-.4 G .141(upplementary Documents)309.346 297.6 R -F0 2.641(,U)C(ni)424.328 297.6 Q -.15(ve)-.25 G .141(rsity of Califor).15 F(-) --.2 E(nia at Berk)72 309.6 Q(ele)-.1 E 1.3 -.65(y, 1)-.15 H(986.).65 E .283 -([4] IEEE,)72 325.2 R F3 .283(IEEE Standar)2.783 F 2.783(df)-.37 G .283 -(or Information T)179.692 325.2 R(ec)-.92 E(hnolo)-.15 E .283(gy -- P)-.1 F -.283(ortable Oper)-.8 F .283(ating System Interface \(POSIX\) P)-.15 F(art)-.8 -E(2: Shell and Utilities)72 337.2 Q F0 2.5(,1)C(992.)165.06 337.2 Q F1 2.5 -(9. A)72 361.2 R(uthor Inf)-.5 E(ormation)-.25 E F0 .937(Chet Rame)97 376.8 R -3.437(yi)-.15 G 3.437(sas)153.724 376.8 S(oftw)172.818 376.8 Q .936 -(are engineer w)-.1 F .936(orking at Case W)-.1 F .936(estern Reserv)-.8 F -3.436(eU)-.15 G(ni)393.43 376.8 Q -.15(ve)-.25 G(rsity).15 E 5.936(.H)-.65 G -3.436(eh)443.036 376.8 S .936(as a B.S. in)455.912 376.8 R .072 -(Computer Engineering and an M.S. in Computer Science, both from CWR)72 388.8 R -2.573(U. He)-.4 F .073(has been w)2.573 F .073(orking on bash)-.1 F -(for six years, and the primary maintainer for one.)72 400.8 Q EP -%%Trailer -end -%%EOF diff --git a/doc/texinfo.tex.20030205 b/doc/texinfo.tex.20030205 deleted file mode 100644 index 555a07707..000000000 --- a/doc/texinfo.tex.20030205 +++ /dev/null @@ -1,6688 +0,0 @@ -% texinfo.tex -- TeX macros to handle Texinfo files. -% -% Load plain if necessary, i.e., if running under initex. -\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi -% -\def\texinfoversion{2003-02-03.16} -% -% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, -% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -% -% This texinfo.tex file is free software; you can redistribute it and/or -% modify it under the terms of the GNU General Public License as -% published by the Free Software Foundation; either version 2, or (at -% your option) any later version. -% -% This texinfo.tex file 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 texinfo.tex file; see the file COPYING. If not, write -% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -% Boston, MA 02111-1307, USA. -% -% In other words, you are welcome to use, share and improve this program. -% You are forbidden to forbid anyone else to use, share and improve -% what you give them. Help stamp out software-hoarding! -% -% Please try the latest version of texinfo.tex before submitting bug -% reports; you can get the latest version from: -% ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex -% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) -% ftp://tug.org/tex/texinfo.tex -% (and all CTAN mirrors, see http://www.ctan.org), -% and /home/gd/gnu/doc/texinfo.tex on the GNU machines. -% -% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. -% -% The texinfo.tex in any given Texinfo distribution could well be out -% of date, so if that's what you're using, please check. -% -% Send bug reports to bug-texinfo@gnu.org. Please include including a -% complete document in each bug report with which we can reproduce the -% problem. Patches are, of course, greatly appreciated. -% -% To process a Texinfo manual with TeX, it's most reliable to use the -% texi2dvi shell script that comes with the distribution. For a simple -% manual foo.texi, however, you can get away with this: -% tex foo.texi -% texindex foo.?? -% tex foo.texi -% tex foo.texi -% dvips foo.dvi -o # or whatever; this makes foo.ps. -% The extra TeX runs get the cross-reference information correct. -% Sometimes one run after texindex suffices, and sometimes you need more -% than two; texi2dvi does it as many times as necessary. -% -% It is possible to adapt texinfo.tex for other languages, to some -% extent. You can get the existing language-specific files from the -% full Texinfo distribution. - -\message{Loading texinfo [version \texinfoversion]:} - -% If in a .fmt file, print the version number -% and turn on active characters that we couldn't do earlier because -% they might have appeared in the input file name. -\everyjob{\message{[Texinfo version \texinfoversion]}% - \catcode`+=\active \catcode`\_=\active} - -\message{Basics,} -\chardef\other=12 - -% We never want plain's outer \+ definition in Texinfo. -% For @tex, we can use \tabalign. -\let\+ = \relax - -% Save some parts of plain tex whose names we will redefine. -\let\ptexb=\b -\let\ptexbullet=\bullet -\let\ptexc=\c -\let\ptexcomma=\, -\let\ptexdot=\. -\let\ptexdots=\dots -\let\ptexend=\end -\let\ptexequiv=\equiv -\let\ptexexclam=\! -\let\ptexgtr=> -\let\ptexhat=^ -\let\ptexi=\i -\let\ptexlbrace=\{ -\let\ptexless=< -\let\ptexplus=+ -\let\ptexrbrace=\} -\let\ptexstar=\* -\let\ptext=\t - -% If this character appears in an error message or help string, it -% starts a new line in the output. -\newlinechar = `^^J - -% Set up fixed words for English if not already set. -\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi -\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi -\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi -\ifx\putwordin\undefined \gdef\putwordin{in}\fi -\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi -\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi -\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi -\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi -\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi -\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi -\ifx\putwordof\undefined \gdef\putwordof{of}\fi -\ifx\putwordon\undefined \gdef\putwordon{on}\fi -\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi -\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi -\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi -\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi -\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi -\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi -\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi -% -\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi -\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi -\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi -\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi -\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi -\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi -\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi -\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi -\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi -\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi -\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi -\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi -% -\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi -\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi -\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi -\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi -\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi -\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi -\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi - -% In some macros, we cannot use the `\? notation---the left quote is -% in some cases the escape char. -\chardef\colonChar = `\: -\chardef\commaChar = `\, -\chardef\dotChar = `\. -\chardef\equalChar = `\= -\chardef\exclamChar= `\! -\chardef\questChar = `\? -\chardef\semiChar = `\; -\chardef\spaceChar = `\ % -\chardef\underChar = `\_ - -% Ignore a token. -% -\def\gobble#1{} - -% True if #1 is the empty string, i.e., called like `\ifempty{}'. -% -\def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}% -\def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}% - -% Hyphenation fixes. -\hyphenation{ap-pen-dix} -\hyphenation{mini-buf-fer mini-buf-fers} -\hyphenation{eshell} -\hyphenation{white-space} - -% Margin to add to right of even pages, to left of odd pages. -\newdimen\bindingoffset -\newdimen\normaloffset -\newdimen\pagewidth \newdimen\pageheight - -% Sometimes it is convenient to have everything in the transcript file -% and nothing on the terminal. We don't just call \tracingall here, -% since that produces some useless output on the terminal. We also make -% some effort to order the tracing commands to reduce output in the log -% file; cf. trace.sty in LaTeX. -% -\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% -\def\loggingall{% - \tracingstats2 - \tracingpages1 - \tracinglostchars2 % 2 gives us more in etex - \tracingparagraphs1 - \tracingoutput1 - \tracingmacros2 - \tracingrestores1 - \showboxbreadth\maxdimen \showboxdepth\maxdimen - \ifx\eTeXversion\undefined\else % etex gives us more logging - \tracingscantokens1 - \tracingifs1 - \tracinggroups1 - \tracingnesting2 - \tracingassigns1 - \fi - \tracingcommands3 % 3 gives us more in etex - \errorcontextlines\maxdimen -}% - -% add check for \lastpenalty to plain's definitions. If the last thing -% we did was a \nobreak, we don't want to insert more space. -% -\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount - \removelastskip\penalty-50\smallskip\fi\fi} -\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount - \removelastskip\penalty-100\medskip\fi\fi} -\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount - \removelastskip\penalty-200\bigskip\fi\fi} - -% For @cropmarks command. -% Do @cropmarks to get crop marks. -% -\newif\ifcropmarks -\let\cropmarks = \cropmarkstrue -% -% Dimensions to add cropmarks at corners. -% Added by P. A. MacKay, 12 Nov. 1986 -% -\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines -\newdimen\cornerlong \cornerlong=1pc -\newdimen\cornerthick \cornerthick=.3pt -\newdimen\topandbottommargin \topandbottommargin=.75in - -% Main output routine. -\chardef\PAGE = 255 -\output = {\onepageout{\pagecontents\PAGE}} - -\newbox\headlinebox -\newbox\footlinebox - -% \onepageout takes a vbox as an argument. Note that \pagecontents -% does insertions, but you have to call it yourself. -\def\onepageout#1{% - \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi - % - \ifodd\pageno \advance\hoffset by \bindingoffset - \else \advance\hoffset by -\bindingoffset\fi - % - % Do this outside of the \shipout so @code etc. will be expanded in - % the headline as they should be, not taken literally (outputting ''code). - \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% - \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% - % - {% - % Have to do this stuff outside the \shipout because we want it to - % take effect in \write's, yet the group defined by the \vbox ends - % before the \shipout runs. - % - \escapechar = `\\ % use backslash in output files. - \indexdummies % don't expand commands in the output. - \normalturnoffactive % \ in index entries must not stay \, e.g., if - % the page break happens to be in the middle of an example. - \shipout\vbox{% - % Do this early so pdf references go to the beginning of the page. - \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi - % - \ifcropmarks \vbox to \outervsize\bgroup - \hsize = \outerhsize - \vskip-\topandbottommargin - \vtop to0pt{% - \line{\ewtop\hfil\ewtop}% - \nointerlineskip - \line{% - \vbox{\moveleft\cornerthick\nstop}% - \hfill - \vbox{\moveright\cornerthick\nstop}% - }% - \vss}% - \vskip\topandbottommargin - \line\bgroup - \hfil % center the page within the outer (page) hsize. - \ifodd\pageno\hskip\bindingoffset\fi - \vbox\bgroup - \fi - % - \unvbox\headlinebox - \pagebody{#1}% - \ifdim\ht\footlinebox > 0pt - % Only leave this space if the footline is nonempty. - % (We lessened \vsize for it in \oddfootingxxx.) - % The \baselineskip=24pt in plain's \makefootline has no effect. - \vskip 2\baselineskip - \unvbox\footlinebox - \fi - % - \ifcropmarks - \egroup % end of \vbox\bgroup - \hfil\egroup % end of (centering) \line\bgroup - \vskip\topandbottommargin plus1fill minus1fill - \boxmaxdepth = \cornerthick - \vbox to0pt{\vss - \line{% - \vbox{\moveleft\cornerthick\nsbot}% - \hfill - \vbox{\moveright\cornerthick\nsbot}% - }% - \nointerlineskip - \line{\ewbot\hfil\ewbot}% - }% - \egroup % \vbox from first cropmarks clause - \fi - }% end of \shipout\vbox - }% end of group with \normalturnoffactive - \advancepageno - \ifnum\outputpenalty>-20000 \else\dosupereject\fi -} - -\newinsert\margin \dimen\margin=\maxdimen - -\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} -{\catcode`\@ =11 -\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi -% marginal hacks, juha@viisa.uucp (Juha Takala) -\ifvoid\margin\else % marginal info is present - \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi -\dimen@=\dp#1 \unvbox#1 -\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi -\ifr@ggedbottom \kern-\dimen@ \vfil \fi} -} - -% Here are the rules for the cropmarks. Note that they are -% offset so that the space between them is truly \outerhsize or \outervsize -% (P. A. MacKay, 12 November, 1986) -% -\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} -\def\nstop{\vbox - {\hrule height\cornerthick depth\cornerlong width\cornerthick}} -\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} -\def\nsbot{\vbox - {\hrule height\cornerlong depth\cornerthick width\cornerthick}} - -% Parse an argument, then pass it to #1. The argument is the rest of -% the input line (except we remove a trailing comment). #1 should be a -% macro which expects an ordinary undelimited TeX argument. -% -\def\parsearg#1{% - \let\next = #1% - \begingroup - \obeylines - \futurelet\temp\parseargx -} - -% If the next token is an obeyed space (from an @example environment or -% the like), remove it and recurse. Otherwise, we're done. -\def\parseargx{% - % \obeyedspace is defined far below, after the definition of \sepspaces. - \ifx\obeyedspace\temp - \expandafter\parseargdiscardspace - \else - \expandafter\parseargline - \fi -} - -% Remove a single space (as the delimiter token to the macro call). -{\obeyspaces % - \gdef\parseargdiscardspace {\futurelet\temp\parseargx}} - -{\obeylines % - \gdef\parseargline#1^^M{% - \endgroup % End of the group started in \parsearg. - % - % First remove any @c comment, then any @comment. - % Result of each macro is put in \toks0. - \argremovec #1\c\relax % - \expandafter\argremovecomment \the\toks0 \comment\relax % - % - % Call the caller's macro, saved as \next in \parsearg. - \expandafter\next\expandafter{\the\toks0}% - }% -} - -% Since all \c{,omment} does is throw away the argument, we can let TeX -% do that for us. The \relax here is matched by the \relax in the call -% in \parseargline; it could be more or less anything, its purpose is -% just to delimit the argument to the \c. -\def\argremovec#1\c#2\relax{\toks0 = {#1}} -\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}} - -% \argremovec{,omment} might leave us with trailing spaces, though; e.g., -% @end itemize @c foo -% will have two active spaces as part of the argument with the -% `itemize'. Here we remove all active spaces from #1, and assign the -% result to \toks0. -% -% This loses if there are any *other* active characters besides spaces -% in the argument -- _ ^ +, for example -- since they get expanded. -% Fortunately, Texinfo does not define any such commands. (If it ever -% does, the catcode of the characters in questionwill have to be changed -% here.) But this means we cannot call \removeactivespaces as part of -% \argremovec{,omment}, since @c uses \parsearg, and thus the argument -% that \parsearg gets might well have any character at all in it. -% -\def\removeactivespaces#1{% - \begingroup - \ignoreactivespaces - \edef\temp{#1}% - \global\toks0 = \expandafter{\temp}% - \endgroup -} - -% Change the active space to expand to nothing. -% -\begingroup - \obeyspaces - \gdef\ignoreactivespaces{\obeyspaces\let =\empty} -\endgroup - - -\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} - -%% These are used to keep @begin/@end levels from running away -%% Call \inENV within environments (after a \begingroup) -\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi} -\def\ENVcheck{% -\ifENV\errmessage{Still within an environment; press RETURN to continue} -\endgroup\fi} % This is not perfect, but it should reduce lossage - -% @begin foo is the same as @foo, for now. -\newhelp\EMsimple{Press RETURN to continue.} - -\outer\def\begin{\parsearg\beginxxx} - -\def\beginxxx #1{% -\expandafter\ifx\csname #1\endcsname\relax -{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else -\csname #1\endcsname\fi} - -% @end foo executes the definition of \Efoo. -% -\def\end{\parsearg\endxxx} -\def\endxxx #1{% - \removeactivespaces{#1}% - \edef\endthing{\the\toks0}% - % - \expandafter\ifx\csname E\endthing\endcsname\relax - \expandafter\ifx\csname \endthing\endcsname\relax - % There's no \foo, i.e., no ``environment'' foo. - \errhelp = \EMsimple - \errmessage{Undefined command `@end \endthing'}% - \else - \unmatchedenderror\endthing - \fi - \else - % Everything's ok; the right environment has been started. - \csname E\endthing\endcsname - \fi -} - -% There is an environment #1, but it hasn't been started. Give an error. -% -\def\unmatchedenderror#1{% - \errhelp = \EMsimple - \errmessage{This `@end #1' doesn't have a matching `@#1'}% -} - -% Define the control sequence \E#1 to give an unmatched @end error. -% -\def\defineunmatchedend#1{% - \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}% -} - - -%% Simple single-character @ commands - -% @@ prints an @ -% Kludge this until the fonts are right (grr). -\def\@{{\tt\char64}} - -% This is turned off because it was never documented -% and you can use @w{...} around a quote to suppress ligatures. -%% Define @` and @' to be the same as ` and ' -%% but suppressing ligatures. -%\def\`{{`}} -%\def\'{{'}} - -% Used to generate quoted braces. -\def\mylbrace {{\tt\char123}} -\def\myrbrace {{\tt\char125}} -\let\{=\mylbrace -\let\}=\myrbrace -\begingroup - % Definitions to produce \{ and \} commands for indices, - % and @{ and @} for the aux file. - \catcode`\{ = \other \catcode`\} = \other - \catcode`\[ = 1 \catcode`\] = 2 - \catcode`\! = 0 \catcode`\\ = \other - !gdef!lbracecmd[\{]% - !gdef!rbracecmd[\}]% - !gdef!lbraceatcmd[@{]% - !gdef!rbraceatcmd[@}]% -!endgroup - -% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent -% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. -\let\, = \c -\let\dotaccent = \. -\def\ringaccent#1{{\accent23 #1}} -\let\tieaccent = \t -\let\ubaraccent = \b -\let\udotaccent = \d - -% Other special characters: @questiondown @exclamdown -% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. -\def\questiondown{?`} -\def\exclamdown{!`} - -% Dotless i and dotless j, used for accents. -\def\imacro{i} -\def\jmacro{j} -\def\dotless#1{% - \def\temp{#1}% - \ifx\temp\imacro \ptexi - \else\ifx\temp\jmacro \j - \else \errmessage{@dotless can be used only with i or j}% - \fi\fi -} - -% Be sure we're in horizontal mode when doing a tie, since we make space -% equivalent to this in @example-like environments. Otherwise, a space -% at the beginning of a line will start with \penalty -- and -% since \penalty is valid in vertical mode, we'd end up putting the -% penalty on the vertical list instead of in the new paragraph. -{\catcode`@ = 11 - % Avoid using \@M directly, because that causes trouble - % if the definition is written into an index file. - \global\let\tiepenalty = \@M - \gdef\tie{\leavevmode\penalty\tiepenalty\ } -} - -% @: forces normal size whitespace following. -\def\:{\spacefactor=1000 } - -% @* forces a line break. -\def\*{\hfil\break\hbox{}\ignorespaces} - -% @. is an end-of-sentence period. -\def\.{.\spacefactor=3000 } - -% @! is an end-of-sentence bang. -\def\!{!\spacefactor=3000 } - -% @? is an end-of-sentence query. -\def\?{?\spacefactor=3000 } - -% @w prevents a word break. Without the \leavevmode, @w at the -% beginning of a paragraph, when TeX is still in vertical mode, would -% produce a whole line of output instead of starting the paragraph. -\def\w#1{\leavevmode\hbox{#1}} - -% @group ... @end group forces ... to be all on one page, by enclosing -% it in a TeX vbox. We use \vtop instead of \vbox to construct the box -% to keep its height that of a normal line. According to the rules for -% \topskip (p.114 of the TeXbook), the glue inserted is -% max (\topskip - \ht (first item), 0). If that height is large, -% therefore, no glue is inserted, and the space between the headline and -% the text is small, which looks bad. -% -% Another complication is that the group might be very large. This can -% cause the glue on the previous page to be unduly stretched, because it -% does not have much material. In this case, it's better to add an -% explicit \vfill so that the extra space is at the bottom. The -% threshold for doing this is if the group is more than \vfilllimit -% percent of a page (\vfilllimit can be changed inside of @tex). -% -\newbox\groupbox -\def\vfilllimit{0.7} -% -\def\group{\begingroup - \ifnum\catcode13=\active \else - \errhelp = \groupinvalidhelp - \errmessage{@group invalid in context where filling is enabled}% - \fi - % - % The \vtop we start below produces a box with normal height and large - % depth; thus, TeX puts \baselineskip glue before it, and (when the - % next line of text is done) \lineskip glue after it. (See p.82 of - % the TeXbook.) Thus, space below is not quite equal to space - % above. But it's pretty close. - \def\Egroup{% - \egroup % End the \vtop. - % \dimen0 is the vertical size of the group's box. - \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox - % \dimen2 is how much space is left on the page (more or less). - \dimen2 = \pageheight \advance\dimen2 by -\pagetotal - % if the group doesn't fit on the current page, and it's a big big - % group, force a page break. - \ifdim \dimen0 > \dimen2 - \ifdim \pagetotal < \vfilllimit\pageheight - \page - \fi - \fi - \copy\groupbox - \endgroup % End the \group. - }% - % - \setbox\groupbox = \vtop\bgroup - % We have to put a strut on the last line in case the @group is in - % the midst of an example, rather than completely enclosing it. - % Otherwise, the interline space between the last line of the group - % and the first line afterwards is too small. But we can't put the - % strut in \Egroup, since there it would be on a line by itself. - % Hence this just inserts a strut at the beginning of each line. - \everypar = {\strut}% - % - % Since we have a strut on every line, we don't need any of TeX's - % normal interline spacing. - \offinterlineskip - % - % OK, but now we have to do something about blank - % lines in the input in @example-like environments, which normally - % just turn into \lisppar, which will insert no space now that we've - % turned off the interline space. Simplest is to make them be an - % empty paragraph. - \ifx\par\lisppar - \edef\par{\leavevmode \par}% - % - % Reset ^^M's definition to new definition of \par. - \obeylines - \fi - % - % Do @comment since we are called inside an environment such as - % @example, where each end-of-line in the input causes an - % end-of-line in the output. We don't want the end-of-line after - % the `@group' to put extra space in the output. Since @group - % should appear on a line by itself (according to the Texinfo - % manual), we don't worry about eating any user text. - \comment -} -% -% TeX puts in an \escapechar (i.e., `@') at the beginning of the help -% message, so this ends up printing `@group can only ...'. -% -\newhelp\groupinvalidhelp{% -group can only be used in environments such as @example,^^J% -where each line of input produces a line of output.} - -% @need space-in-mils -% forces a page break if there is not space-in-mils remaining. - -\newdimen\mil \mil=0.001in - -\def\need{\parsearg\needx} - -% Old definition--didn't work. -%\def\needx #1{\par % -%% This method tries to make TeX break the page naturally -%% if the depth of the box does not fit. -%{\baselineskip=0pt% -%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak -%\prevdepth=-1000pt -%}} - -\def\needx#1{% - % Ensure vertical mode, so we don't make a big box in the middle of a - % paragraph. - \par - % - % If the @need value is less than one line space, it's useless. - \dimen0 = #1\mil - \dimen2 = \ht\strutbox - \advance\dimen2 by \dp\strutbox - \ifdim\dimen0 > \dimen2 - % - % Do a \strut just to make the height of this box be normal, so the - % normal leading is inserted relative to the preceding line. - % And a page break here is fine. - \vtop to #1\mil{\strut\vfil}% - % - % TeX does not even consider page breaks if a penalty added to the - % main vertical list is 10000 or more. But in order to see if the - % empty box we just added fits on the page, we must make it consider - % page breaks. On the other hand, we don't want to actually break the - % page after the empty box. So we use a penalty of 9999. - % - % There is an extremely small chance that TeX will actually break the - % page at this \penalty, if there are no other feasible breakpoints in - % sight. (If the user is using lots of big @group commands, which - % almost-but-not-quite fill up a page, TeX will have a hard time doing - % good page breaking, for example.) However, I could not construct an - % example where a page broke at this \penalty; if it happens in a real - % document, then we can reconsider our strategy. - \penalty9999 - % - % Back up by the size of the box, whether we did a page break or not. - \kern -#1\mil - % - % Do not allow a page break right after this kern. - \nobreak - \fi -} - -% @br forces paragraph break - -\let\br = \par - -% @dots{} output an ellipsis using the current font. -% We do .5em per period so that it has the same spacing in a typewriter -% font as three actual period characters. -% -\def\dots{% - \leavevmode - \hbox to 1.5em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% -} - -% @enddots{} is an end-of-sentence ellipsis. -% -\def\enddots{% - \leavevmode - \hbox to 2em{% - \hskip 0pt plus 0.25fil minus 0.25fil - .\hss.\hss.\hss.% - \hskip 0pt plus 0.5fil minus 0.5fil - }% - \spacefactor=3000 -} - - -% @page forces the start of a new page -% -\def\page{\par\vfill\supereject} - -% @exdent text.... -% outputs text on separate line in roman font, starting at standard page margin - -% This records the amount of indent in the innermost environment. -% That's how much \exdent should take out. -\newskip\exdentamount - -% This defn is used inside fill environments such as @defun. -\def\exdent{\parsearg\exdentyyy} -\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}} - -% This defn is used inside nofill environments such as @example. -\def\nofillexdent{\parsearg\nofillexdentyyy} -\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount -\leftline{\hskip\leftskip{\rm#1}}}} - -% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current -% paragraph. For more general purposes, use the \margin insertion -% class. WHICH is `l' or `r'. -% -\newskip\inmarginspacing \inmarginspacing=1cm -\def\strutdepth{\dp\strutbox} -% -\def\doinmargin#1#2{\strut\vadjust{% - \nobreak - \kern-\strutdepth - \vtop to \strutdepth{% - \baselineskip=\strutdepth - \vss - % if you have multiple lines of stuff to put here, you'll need to - % make the vbox yourself of the appropriate size. - \ifx#1l% - \llap{\ignorespaces #2\hskip\inmarginspacing}% - \else - \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% - \fi - \null - }% -}} -\def\inleftmargin{\doinmargin l} -\def\inrightmargin{\doinmargin r} -% -% @inmargin{TEXT [, RIGHT-TEXT]} -% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; -% else use TEXT for both). -% -\def\inmargin#1{\parseinmargin #1,,\finish} -\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \def\lefttext{#1}% have both texts - \def\righttext{#2}% - \else - \def\lefttext{#1}% have only one text - \def\righttext{#1}% - \fi - % - \ifodd\pageno - \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin - \else - \def\temp{\inleftmargin\lefttext}% - \fi - \temp -} - -% @include file insert text of that file as input. -% Allow normal characters that we make active in the argument (a file name). -\def\include{\begingroup - \catcode`\\=\other - \catcode`~=\other - \catcode`^=\other - \catcode`_=\other - \catcode`|=\other - \catcode`<=\other - \catcode`>=\other - \catcode`+=\other - \parsearg\includezzz} -% Restore active chars for included file. -\def\includezzz#1{\endgroup\begingroup - % Read the included file in a group so nested @include's work. - \def\thisfile{#1}% - \let\value=\expandablevalue - \input\thisfile -\endgroup} - -\def\thisfile{} - -% @center line -% outputs that line, centered. -% -\def\center{\parsearg\docenter} -\def\docenter#1{{% - \ifhmode \hfil\break \fi - \advance\hsize by -\leftskip - \advance\hsize by -\rightskip - \line{\hfil \ignorespaces#1\unskip \hfil}% - \ifhmode \break \fi -}} - -% @sp n outputs n lines of vertical space - -\def\sp{\parsearg\spxxx} -\def\spxxx #1{\vskip #1\baselineskip} - -% @comment ...line which is ignored... -% @c is the same as @comment -% @ignore ... @end ignore is another way to write a comment - -\def\comment{\begingroup \catcode`\^^M=\other% -\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% -\commentxxx} -{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} - -\let\c=\comment - -% @paragraphindent NCHARS -% We'll use ems for NCHARS, close enough. -% We cannot implement @paragraphindent asis, though. -% -\def\asisword{asis} % no translation, these are keywords -\def\noneword{none} -% -\def\paragraphindent{\parsearg\doparagraphindent} -\def\doparagraphindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \defaultparindent = 0pt - \else - \defaultparindent = #1em - \fi - \fi - \parindent = \defaultparindent -} - -% @exampleindent NCHARS -% We'll use ems for NCHARS like @paragraphindent. -% It seems @exampleindent asis isn't necessary, but -% I preserve it to make it similar to @paragraphindent. -\def\exampleindent{\parsearg\doexampleindent} -\def\doexampleindent#1{% - \def\temp{#1}% - \ifx\temp\asisword - \else - \ifx\temp\noneword - \lispnarrowing = 0pt - \else - \lispnarrowing = #1em - \fi - \fi -} - -% @asis just yields its argument. Used with @table, for example. -% -\def\asis#1{#1} - -% @math outputs its argument in math mode. -% We don't use $'s directly in the definition of \math because we need -% to set catcodes according to plain TeX first, to allow for subscripts, -% superscripts, special math chars, etc. -% -\let\implicitmath = $%$ font-lock fix -% -% One complication: _ usually means subscripts, but it could also mean -% an actual _ character, as in @math{@var{some_variable} + 1}. So make -% _ within @math be active (mathcode "8000), and distinguish by seeing -% if the current family is \slfam, which is what @var uses. -% -{\catcode\underChar = \active -\gdef\mathunderscore{% - \catcode\underChar=\active - \def_{\ifnum\fam=\slfam \_\else\sb\fi}% -}} -% -% Another complication: we want \\ (and @\) to output a \ character. -% FYI, plain.tex uses \\ as a temporary control sequence (why?), but -% this is not advertised and we don't care. Texinfo does not -% otherwise define @\. -% -% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. -\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} -% -\def\math{% - \tex - \mathcode`\_="8000 \mathunderscore - \let\\ = \mathbackslash - \mathactive - \implicitmath\finishmath} -\def\finishmath#1{#1\implicitmath\Etex} - -% Some active characters (such as <) are spaced differently in math. -% We have to reset their definitions in case the @math was an -% argument to a command which set the catcodes (such as @item or @section). -% -{ - \catcode`^ = \active - \catcode`< = \active - \catcode`> = \active - \catcode`+ = \active - \gdef\mathactive{% - \let^ = \ptexhat - \let< = \ptexless - \let> = \ptexgtr - \let+ = \ptexplus - } -} - -% @bullet and @minus need the same treatment as @math, just above. -\def\bullet{\implicitmath\ptexbullet\implicitmath} -\def\minus{\implicitmath-\implicitmath} - -% @refill is a no-op. -\let\refill=\relax - -% If working on a large document in chapters, it is convenient to -% be able to disable indexing, cross-referencing, and contents, for test runs. -% This is done with @novalidate (before @setfilename). -% -\newif\iflinks \linkstrue % by default we want the aux files. -\let\novalidate = \linksfalse - -% @setfilename is done at the beginning of every texinfo file. -% So open here the files we need to have open while reading the input. -% This makes it possible to make a .fmt file for texinfo. -\def\setfilename{% - \iflinks - \readauxfile - \fi % \openindices needs to do some work in any case. - \openindices - \fixbackslash % Turn off hack to swallow `\input texinfo'. - \global\let\setfilename=\comment % Ignore extra @setfilename cmds. - % - % If texinfo.cnf is present on the system, read it. - % Useful for site-wide @afourpaper, etc. - % Just to be on the safe side, close the input stream before the \input. - \openin 1 texinfo.cnf - \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi - \closein1 - \temp - % - \comment % Ignore the actual filename. -} - -% Called from \setfilename. -% -\def\openindices{% - \newindex{cp}% - \newcodeindex{fn}% - \newcodeindex{vr}% - \newcodeindex{tp}% - \newcodeindex{ky}% - \newcodeindex{pg}% -} - -% @bye. -\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} - - -\message{pdf,} -% adobe `portable' document format -\newcount\tempnum -\newcount\lnkcount -\newtoks\filename -\newcount\filenamelength -\newcount\pgn -\newtoks\toksA -\newtoks\toksB -\newtoks\toksC -\newtoks\toksD -\newbox\boxA -\newcount\countA -\newif\ifpdf -\newif\ifpdfmakepagedest - -\ifx\pdfoutput\undefined - \pdffalse - \let\pdfmkdest = \gobble - \let\pdfurl = \gobble - \let\endlink = \relax - \let\linkcolor = \relax - \let\pdfmakeoutlines = \relax -\else - \pdftrue - \pdfoutput = 1 - \input pdfcolor - \def\dopdfimage#1#2#3{% - \def\imagewidth{#2}% - \def\imageheight{#3}% - % without \immediate, pdftex seg faults when the same image is - % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) - \ifnum\pdftexversion < 14 - \immediate\pdfimage - \else - \immediate\pdfximage - \fi - \ifx\empty\imagewidth\else width \imagewidth \fi - \ifx\empty\imageheight\else height \imageheight \fi - \ifnum\pdftexversion<13 - #1.pdf% - \else - {#1.pdf}% - \fi - \ifnum\pdftexversion < 14 \else - \pdfrefximage \pdflastximage - \fi} - \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} - \def\pdfmkpgn#1{#1} - \let\linkcolor = \Blue % was Cyan, but that seems light? - \def\endlink{\Black\pdfendlink} - % Adding outlines to PDF; macros for calculating structure of outlines - % come from Petr Olsak - \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% - \else \csname#1\endcsname \fi} - \def\advancenumber#1{\tempnum=\expnumber{#1}\relax - \advance\tempnum by1 - \expandafter\xdef\csname#1\endcsname{\the\tempnum}} - \def\pdfmakeoutlines{{% - \openin 1 \jobname.toc - \ifeof 1\else\begingroup - \closein 1 - % Thanh's hack / proper braces in bookmarks - \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace - \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace - % - \def\chapentry ##1##2##3{} - \def\secentry ##1##2##3##4{\advancenumber{chap##2}} - \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} - \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} - \let\appendixentry = \chapentry - \let\unnumbchapentry = \chapentry - \let\unnumbsecentry = \secentry - \let\unnumbsubsecentry = \subsecentry - \let\unnumbsubsubsecentry = \subsubsecentry - \input \jobname.toc - \def\chapentry ##1##2##3{% - \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} - \def\secentry ##1##2##3##4{% - \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} - \def\subsecentry ##1##2##3##4##5{% - \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} - \def\subsubsecentry ##1##2##3##4##5##6{% - \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} - \let\appendixentry = \chapentry - \let\unnumbchapentry = \chapentry - \let\unnumbsecentry = \secentry - \let\unnumbsubsecentry = \subsecentry - \let\unnumbsubsubsecentry = \subsubsecentry - % - % Make special characters normal for writing to the pdf file. - % - \indexnofonts - \let\tt=\relax - \turnoffactive - \input \jobname.toc - \endgroup\fi - }} - \def\makelinks #1,{% - \def\params{#1}\def\E{END}% - \ifx\params\E - \let\nextmakelinks=\relax - \else - \let\nextmakelinks=\makelinks - \ifnum\lnkcount>0,\fi - \picknum{#1}% - \startlink attr{/Border [0 0 0]} - goto name{\pdfmkpgn{\the\pgn}}% - \linkcolor #1% - \advance\lnkcount by 1% - \endlink - \fi - \nextmakelinks - } - \def\picknum#1{\expandafter\pn#1} - \def\pn#1{% - \def\p{#1}% - \ifx\p\lbrace - \let\nextpn=\ppn - \else - \let\nextpn=\ppnn - \def\first{#1} - \fi - \nextpn - } - \def\ppn#1{\pgn=#1\gobble} - \def\ppnn{\pgn=\first} - \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\skipspaces#1{\def\PP{#1}\def\D{|}% - \ifx\PP\D\let\nextsp\relax - \else\let\nextsp\skipspaces - \ifx\p\space\else\addtokens{\filename}{\PP}% - \advance\filenamelength by 1 - \fi - \fi - \nextsp} - \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} - \ifnum\pdftexversion < 14 - \let \startlink \pdfannotlink - \else - \let \startlink \pdfstartlink - \fi - \def\pdfurl#1{% - \begingroup - \normalturnoffactive\def\@{@}% - \let\value=\expandablevalue - \leavevmode\Red - \startlink attr{/Border [0 0 0]}% - user{/Subtype /Link /A << /S /URI /URI (#1) >>}% - % #1 - \endgroup} - \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} - \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} - \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} - \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} - \def\maketoks{% - \expandafter\poptoks\the\toksA|ENDTOKS| - \ifx\first0\adn0 - \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 - \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 - \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 - \else - \ifnum0=\countA\else\makelink\fi - \ifx\first.\let\next=\done\else - \let\next=\maketoks - \addtokens{\toksB}{\the\toksD} - \ifx\first,\addtokens{\toksB}{\space}\fi - \fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \next} - \def\makelink{\addtokens{\toksB}% - {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% - \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} - \linkcolor #1\endlink} - \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -\fi % \ifx\pdfoutput - - -\message{fonts,} -% Font-change commands. - -% Texinfo sort of supports the sans serif font style, which plain TeX does not. -% So we set up a \sf analogous to plain's \rm, etc. -\newfam\sffam -\def\sf{\fam=\sffam \tensf} -\let\li = \sf % Sometimes we call it \li, not \sf. - -% We don't need math for this one. -\def\ttsl{\tenttsl} - -% Default leading. -\newdimen\textleading \textleading = 13.2pt - -% Set the baselineskip to #1, and the lineskip and strut size -% correspondingly. There is no deep meaning behind these magic numbers -% used as factors; they just match (closely enough) what Knuth defined. -% -\def\lineskipfactor{.08333} -\def\strutheightpercent{.70833} -\def\strutdepthpercent {.29167} -% -\def\setleading#1{% - \normalbaselineskip = #1\relax - \normallineskip = \lineskipfactor\normalbaselineskip - \normalbaselines - \setbox\strutbox =\hbox{% - \vrule width0pt height\strutheightpercent\baselineskip - depth \strutdepthpercent \baselineskip - }% -} - -% Set the font macro #1 to the font named #2, adding on the -% specified font prefix (normally `cm'). -% #3 is the font's design size, #4 is a scale factor -\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} - -% Use cm as the default font prefix. -% To specify the font prefix, you must define \fontprefix -% before you read in texinfo.tex. -\ifx\fontprefix\undefined -\def\fontprefix{cm} -\fi -% Support font families that don't use the same naming scheme as CM. -\def\rmshape{r} -\def\rmbshape{bx} %where the normal face is bold -\def\bfshape{b} -\def\bxshape{bx} -\def\ttshape{tt} -\def\ttbshape{tt} -\def\ttslshape{sltt} -\def\itshape{ti} -\def\itbshape{bxti} -\def\slshape{sl} -\def\slbshape{bxsl} -\def\sfshape{ss} -\def\sfbshape{ss} -\def\scshape{csc} -\def\scbshape{csc} - -\newcount\mainmagstep -\ifx\bigger\relax - % not really supported. - \mainmagstep=\magstep1 - \setfont\textrm\rmshape{12}{1000} - \setfont\texttt\ttshape{12}{1000} -\else - \mainmagstep=\magstephalf - \setfont\textrm\rmshape{10}{\mainmagstep} - \setfont\texttt\ttshape{10}{\mainmagstep} -\fi -% Instead of cmb10, you may want to use cmbx10. -% cmbx10 is a prettier font on its own, but cmb10 -% looks better when embedded in a line with cmr10 -% (in Bob's opinion). -\setfont\textbf\bfshape{10}{\mainmagstep} -\setfont\textit\itshape{10}{\mainmagstep} -\setfont\textsl\slshape{10}{\mainmagstep} -\setfont\textsf\sfshape{10}{\mainmagstep} -\setfont\textsc\scshape{10}{\mainmagstep} -\setfont\textttsl\ttslshape{10}{\mainmagstep} -\font\texti=cmmi10 scaled \mainmagstep -\font\textsy=cmsy10 scaled \mainmagstep - -% A few fonts for @defun, etc. -\setfont\defbf\bxshape{10}{\magstep1} %was 1314 -\setfont\deftt\ttshape{10}{\magstep1} -\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf} - -% Fonts for indices, footnotes, small examples (9pt). -\setfont\smallrm\rmshape{9}{1000} -\setfont\smalltt\ttshape{9}{1000} -\setfont\smallbf\bfshape{10}{900} -\setfont\smallit\itshape{9}{1000} -\setfont\smallsl\slshape{9}{1000} -\setfont\smallsf\sfshape{9}{1000} -\setfont\smallsc\scshape{10}{900} -\setfont\smallttsl\ttslshape{10}{900} -\font\smalli=cmmi9 -\font\smallsy=cmsy9 - -% Fonts for small examples (8pt). -\setfont\smallerrm\rmshape{8}{1000} -\setfont\smallertt\ttshape{8}{1000} -\setfont\smallerbf\bfshape{10}{800} -\setfont\smallerit\itshape{8}{1000} -\setfont\smallersl\slshape{8}{1000} -\setfont\smallersf\sfshape{8}{1000} -\setfont\smallersc\scshape{10}{800} -\setfont\smallerttsl\ttslshape{10}{800} -\font\smalleri=cmmi8 -\font\smallersy=cmsy8 - -% Fonts for title page: -\setfont\titlerm\rmbshape{12}{\magstep3} -\setfont\titleit\itbshape{10}{\magstep4} -\setfont\titlesl\slbshape{10}{\magstep4} -\setfont\titlett\ttbshape{12}{\magstep3} -\setfont\titlettsl\ttslshape{10}{\magstep4} -\setfont\titlesf\sfbshape{17}{\magstep1} -\let\titlebf=\titlerm -\setfont\titlesc\scbshape{10}{\magstep4} -\font\titlei=cmmi12 scaled \magstep3 -\font\titlesy=cmsy10 scaled \magstep4 -\def\authorrm{\secrm} -\def\authortt{\sectt} - -% Chapter (and unnumbered) fonts (17.28pt). -\setfont\chaprm\rmbshape{12}{\magstep2} -\setfont\chapit\itbshape{10}{\magstep3} -\setfont\chapsl\slbshape{10}{\magstep3} -\setfont\chaptt\ttbshape{12}{\magstep2} -\setfont\chapttsl\ttslshape{10}{\magstep3} -\setfont\chapsf\sfbshape{17}{1000} -\let\chapbf=\chaprm -\setfont\chapsc\scbshape{10}{\magstep3} -\font\chapi=cmmi12 scaled \magstep2 -\font\chapsy=cmsy10 scaled \magstep3 - -% Section fonts (14.4pt). -\setfont\secrm\rmbshape{12}{\magstep1} -\setfont\secit\itbshape{10}{\magstep2} -\setfont\secsl\slbshape{10}{\magstep2} -\setfont\sectt\ttbshape{12}{\magstep1} -\setfont\secttsl\ttslshape{10}{\magstep2} -\setfont\secsf\sfbshape{12}{\magstep1} -\let\secbf\secrm -\setfont\secsc\scbshape{10}{\magstep2} -\font\seci=cmmi12 scaled \magstep1 -\font\secsy=cmsy10 scaled \magstep2 - -% Subsection fonts (13.15pt). -\setfont\ssecrm\rmbshape{12}{\magstephalf} -\setfont\ssecit\itbshape{10}{1315} -\setfont\ssecsl\slbshape{10}{1315} -\setfont\ssectt\ttbshape{12}{\magstephalf} -\setfont\ssecttsl\ttslshape{10}{1315} -\setfont\ssecsf\sfbshape{12}{\magstephalf} -\let\ssecbf\ssecrm -\setfont\ssecsc\scbshape{10}{\magstep1} -\font\sseci=cmmi12 scaled \magstephalf -\font\ssecsy=cmsy10 scaled 1315 -% The smallcaps and symbol fonts should actually be scaled \magstep1.5, -% but that is not a standard magnification. - -% In order for the font changes to affect most math symbols and letters, -% we have to define the \textfont of the standard families. Since -% texinfo doesn't allow for producing subscripts and superscripts except -% in the main text, we don't bother to reset \scriptfont and -% \scriptscriptfont (which would also require loading a lot more fonts). -% -\def\resetmathfonts{% - \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy - \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf - \textfont\ttfam=\tentt \textfont\sffam=\tensf -} - -% The font-changing commands redefine the meanings of \tenSTYLE, instead -% of just \STYLE. We do this so that font changes will continue to work -% in math mode, where it is the current \fam that is relevant in most -% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam -% \tenbf}, for example. By redefining \tenbf, we obviate the need to -% redefine \bf itself. -\def\textfonts{% - \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl - \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc - \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl - \resetmathfonts \setleading{\textleading}} -\def\titlefonts{% - \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl - \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc - \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy - \let\tenttsl=\titlettsl - \resetmathfonts \setleading{25pt}} -\def\titlefont#1{{\titlefonts\rm #1}} -\def\chapfonts{% - \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl - \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl - \resetmathfonts \setleading{19pt}} -\def\secfonts{% - \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl - \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc - \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl - \resetmathfonts \setleading{16pt}} -\def\subsecfonts{% - \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl - \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc - \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl - \resetmathfonts \setleading{15pt}} -\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf? -\def\smallfonts{% - \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl - \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc - \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy - \let\tenttsl=\smallttsl - \resetmathfonts \setleading{10.5pt}} -\def\smallerfonts{% - \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl - \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc - \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy - \let\tenttsl=\smallerttsl - \resetmathfonts \setleading{9.5pt}} - -% Set the fonts to use with the @small... environments. -\let\smallexamplefonts = \smallfonts - -% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample -% can fit this many characters: -% 8.5x11=86 smallbook=72 a4=90 a5=69 -% If we use \smallerfonts (8pt), then we can fit this many characters: -% 8.5x11=90+ smallbook=80 a4=90+ a5=77 -% For me, subjectively, the few extra characters that fit aren't worth -% the additional smallness of 8pt. So I'm making the default 9pt. -% -% By the way, for comparison, here's what fits with @example (10pt): -% 8.5x11=71 smallbook=60 a4=75 a5=58 -% -% I wish we used A4 paper on this side of the Atlantic. -% -% --karl, 24jan03. - - -% Set up the default fonts, so we can use them for creating boxes. -% -\textfonts - -% Define these so they can be easily changed for other fonts. -\def\angleleft{$\langle$} -\def\angleright{$\rangle$} - -% Count depth in font-changes, for error checks -\newcount\fontdepth \fontdepth=0 - -% Fonts for short table of contents. -\setfont\shortcontrm\rmshape{12}{1000} -\setfont\shortcontbf\bxshape{12}{1000} -\setfont\shortcontsl\slshape{12}{1000} -\setfont\shortconttt\ttshape{12}{1000} - -%% Add scribe-like font environments, plus @l for inline lisp (usually sans -%% serif) and @ii for TeX italic - -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} -\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} - -\let\i=\smartitalic -\let\var=\smartslanted -\let\dfn=\smartslanted -\let\emph=\smartitalic -\let\cite=\smartslanted - -\def\b#1{{\bf #1}} -\let\strong=\b - -% We can't just use \exhyphenpenalty, because that only has effect at -% the end of a paragraph. Restore normal hyphenation at the end of the -% group within which \nohyphenation is presumably called. -% -\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} -\def\restorehyphenation{\hyphenchar\font = `- } - -% Set sfcode to normal for the chars that usually have another value. -% Can't use plain's \frenchspacing because it uses the `\x notation, and -% sometimes \x has an active definition that messes things up. -% -\catcode`@=11 - \def\frenchspacing{% - \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m - \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m - } -\catcode`@=\other - -\def\t#1{% - {\tt \rawbackslash \frenchspacing #1}% - \null -} -\let\ttfont=\t -\def\samp#1{`\tclose{#1}'\null} -\setfont\keyrm\rmshape{8}{1000} -\font\keysy=cmsy9 -\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% - \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% - \vbox{\hrule\kern-0.4pt - \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% - \kern-0.4pt\hrule}% - \kern-.06em\raise0.4pt\hbox{\angleright}}}} -% The old definition, with no lozenge: -%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} -\def\ctrl #1{{\tt \rawbackslash \hat}#1} - -% @file, @option are the same as @samp. -\let\file=\samp -\let\option=\samp - -% @code is a modification of @t, -% which makes spaces the same size as normal in the surrounding text. -\def\tclose#1{% - {% - % Change normal interword space to be same as for the current font. - \spaceskip = \fontdimen2\font - % - % Switch to typewriter. - \tt - % - % But `\ ' produces the large typewriter interword space. - \def\ {{\spaceskip = 0pt{} }}% - % - % Turn off hyphenation. - \nohyphenation - % - \rawbackslash - \frenchspacing - #1% - }% - \null -} - -% We *must* turn on hyphenation at `-' and `_' in \code. -% Otherwise, it is too hard to avoid overfull hboxes -% in the Emacs manual, the Library manual, etc. - -% Unfortunately, TeX uses one parameter (\hyphenchar) to control -% both hyphenation at - and hyphenation within words. -% We must therefore turn them both off (\tclose does that) -% and arrange explicitly to hyphenate at a dash. -% -- rms. -{ - \catcode`\-=\active - \catcode`\_=\active - % - \global\def\code{\begingroup - \catcode`\-=\active \let-\codedash - \catcode`\_=\active \let_\codeunder - \codex - } - % - % If we end up with any active - characters when handling the index, - % just treat them as a normal -. - \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} -} - -\def\realdash{-} -\def\codedash{-\discretionary{}{}{}} -\def\codeunder{% - % this is all so @math{@code{var_name}+1} can work. In math mode, _ - % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) - % will therefore expand the active definition of _, which is us - % (inside @code that is), therefore an endless loop. - \ifusingtt{\ifmmode - \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. - \else\normalunderscore \fi - \discretionary{}{}{}}% - {\_}% -} -\def\codex #1{\tclose{#1}\endgroup} - -% @kbd is like @code, except that if the argument is just one @key command, -% then @kbd has no effect. - -% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), -% `example' (@kbd uses ttsl only inside of @example and friends), -% or `code' (@kbd uses normal tty font always). -\def\kbdinputstyle{\parsearg\kbdinputstylexxx} -\def\kbdinputstylexxx#1{% - \def\arg{#1}% - \ifx\arg\worddistinct - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% - \else\ifx\arg\wordexample - \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% - \else\ifx\arg\wordcode - \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% - \else - \errhelp = \EMsimple - \errmessage{Unknown @kbdinputstyle `\arg'}% - \fi\fi\fi -} -\def\worddistinct{distinct} -\def\wordexample{example} -\def\wordcode{code} - -% Default is `distinct.' -\kbdinputstyle distinct - -\def\xkey{\key} -\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% -\ifx\one\xkey\ifx\threex\three \key{#2}% -\else{\tclose{\kbdfont\look}}\fi -\else{\tclose{\kbdfont\look}}\fi} - -% For @url, @env, @command quotes seem unnecessary, so use \code. -\let\url=\code -\let\env=\code -\let\command=\code - -% @uref (abbreviation for `urlref') takes an optional (comma-separated) -% second argument specifying the text to display and an optional third -% arg as text to display instead of (rather than in addition to) the url -% itself. First (mandatory) arg is the url. Perhaps eventually put in -% a hypertex \special here. -% -\def\uref#1{\douref #1,,,\finish} -\def\douref#1,#2,#3,#4\finish{\begingroup - \unsepspaces - \pdfurl{#1}% - \setbox0 = \hbox{\ignorespaces #3}% - \ifdim\wd0 > 0pt - \unhbox0 % third arg given, show only that - \else - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0 > 0pt - \ifpdf - \unhbox0 % PDF: 2nd arg given, show only it - \else - \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url - \fi - \else - \code{#1}% only url given, so show it - \fi - \fi - \endlink -\endgroup} - -% rms does not like angle brackets --karl, 17may97. -% So now @email is just like @uref, unless we are pdf. -% -%\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdf - \def\email#1{\doemail#1,,\finish} - \def\doemail#1,#2,#3\finish{\begingroup - \unsepspaces - \pdfurl{mailto:#1}% - \setbox0 = \hbox{\ignorespaces #2}% - \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi - \endlink - \endgroup} -\else - \let\email=\uref -\fi - -% Check if we are currently using a typewriter font. Since all the -% Computer Modern typewriter fonts have zero interword stretch (and -% shrink), and it is reasonable to expect all typewriter fonts to have -% this property, we can check that font parameter. -% -\def\ifmonospace{\ifdim\fontdimen3\font=0pt } - -% Typeset a dimension, e.g., `in' or `pt'. The only reason for the -% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. -% -\def\dmn#1{\thinspace #1} - -\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} - -% @l was never documented to mean ``switch to the Lisp font'', -% and it is not used as such in any manual I can find. We need it for -% Polish suppressed-l. --karl, 22sep96. -%\def\l#1{{\li #1}\null} - -% Explicit font changes: @r, @sc, undocumented @ii. -\def\r#1{{\rm #1}} % roman font -\def\sc#1{{\smallcaps#1}} % smallcaps font -\def\ii#1{{\it #1}} % italic font - -% @acronym downcases the argument and prints in smallcaps. -\def\acronym#1{{\smallcaps \lowercase{#1}}} - -% @pounds{} is a sterling sign. -\def\pounds{{\it\$}} - - -\message{page headings,} - -\newskip\titlepagetopglue \titlepagetopglue = 1.5in -\newskip\titlepagebottomglue \titlepagebottomglue = 2pc - -% First the title page. Must do @settitle before @titlepage. -\newif\ifseenauthor -\newif\iffinishedtitlepage - -% Do an implicit @contents or @shortcontents after @end titlepage if the -% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. -% -\newif\ifsetcontentsaftertitlepage - \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue -\newif\ifsetshortcontentsaftertitlepage - \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue - -\def\shorttitlepage{\parsearg\shorttitlepagezzz} -\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% - \endgroup\page\hbox{}\page} - -\def\titlepage{\begingroup \parindent=0pt \textfonts - \let\subtitlerm=\tenrm - \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% - % - \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines - \let\tt=\authortt}% - % - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % - % Now you can print the title using @title. - \def\title{\parsearg\titlezzz}% - \def\titlezzz##1{\leftline{\titlefonts\rm ##1} - % print a rule at the page bottom also. - \finishedtitlepagefalse - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Now you can put text using @subtitle. - \def\subtitle{\parsearg\subtitlezzz}% - \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% - % - % @author should come last, but may come many times. - \def\author{\parsearg\authorzzz}% - \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi - {\authorfont \leftline{##1}}}% - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \oldpage - \let\page = \oldpage - \hbox{}}% -% \def\page{\oldpage \hbox{}} -} - -\def\Etitlepage{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - % It is important to do the page break before ending the group, - % because the headline and footline are only empty inside the group. - % If we use the new definition of \page, we always get a blank page - % after the title page, which we certainly don't want. - \oldpage - \endgroup - % - % Need this before the \...aftertitlepage checks so that if they are - % in effect the toc pages will come out with page numbers. - \HEADINGSon - % - % If they want short, they certainly want long too. - \ifsetshortcontentsaftertitlepage - \shortcontents - \contents - \global\let\shortcontents = \relax - \global\let\contents = \relax - \fi - % - \ifsetcontentsaftertitlepage - \contents - \global\let\contents = \relax - \global\let\shortcontents = \relax - \fi -} - -\def\finishtitlepage{% - \vskip4pt \hrule height 2pt width \hsize - \vskip\titlepagebottomglue - \finishedtitlepagetrue -} - -%%% Set up page headings and footings. - -\let\thispage=\folio - -\newtoks\evenheadline % headline on even pages -\newtoks\oddheadline % headline on odd pages -\newtoks\evenfootline % footline on even pages -\newtoks\oddfootline % footline on odd pages - -% Now make Tex use those variables -\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline - \else \the\evenheadline \fi}} -\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline - \else \the\evenfootline \fi}\HEADINGShook} -\let\HEADINGShook=\relax - -% Commands to set those variables. -% For example, this is what @headings on does -% @evenheading @thistitle|@thispage|@thischapter -% @oddheading @thischapter|@thispage|@thistitle -% @evenfooting @thisfile|| -% @oddfooting ||@thisfile - -\def\evenheading{\parsearg\evenheadingxxx} -\def\oddheading{\parsearg\oddheadingxxx} -\def\everyheading{\parsearg\everyheadingxxx} - -\def\evenfooting{\parsearg\evenfootingxxx} -\def\oddfooting{\parsearg\oddfootingxxx} -\def\everyfooting{\parsearg\everyfootingxxx} - -{\catcode`\@=0 % - -\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish} -\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{% -\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish} -\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{% -\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}% - -\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish} -\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{% -\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} - -\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish} -\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{% - \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% - % - % Leave some space for the footline. Hopefully ok to assume - % @evenfooting will not be used by itself. - \global\advance\pageheight by -\baselineskip - \global\advance\vsize by -\baselineskip -} - -\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}} -% -}% unbind the catcode of @. - -% @headings double turns headings on for double-sided printing. -% @headings single turns headings on for single-sided printing. -% @headings off turns them off. -% @headings on same as @headings double, retained for compatibility. -% @headings after turns on double-sided headings after this page. -% @headings doubleafter turns on double-sided headings after this page. -% @headings singleafter turns on single-sided headings after this page. -% By default, they are off at the start of a document, -% and turned `on' after @end titlepage. - -\def\headings #1 {\csname HEADINGS#1\endcsname} - -\def\HEADINGSoff{ -\global\evenheadline={\hfil} \global\evenfootline={\hfil} -\global\oddheadline={\hfil} \global\oddfootline={\hfil}} -\HEADINGSoff -% When we turn headings on, set the page number to 1. -% For double-sided printing, put current file name in lower left corner, -% chapter name on inside top of right hand pages, document -% title on inside top of left hand pages, and page numbers on outside top -% edge of all pages. -\def\HEADINGSdouble{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} -\let\contentsalignmacro = \chappager - -% For single-sided printing, chapter title goes across top left of page, -% page number on top right. -\def\HEADINGSsingle{ -\global\pageno=1 -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} -\def\HEADINGSon{\HEADINGSdouble} - -\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} -\let\HEADINGSdoubleafter=\HEADINGSafter -\def\HEADINGSdoublex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\folio\hfil\thistitle}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chapoddpage -} - -\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} -\def\HEADINGSsinglex{% -\global\evenfootline={\hfil} -\global\oddfootline={\hfil} -\global\evenheadline={\line{\thischapter\hfil\folio}} -\global\oddheadline={\line{\thischapter\hfil\folio}} -\global\let\contentsalignmacro = \chappager -} - -% Subroutines used in generating headings -% This produces Day Month Year style of output. -% Only define if not already defined, in case a txi-??.tex file has set -% up a different format (e.g., txi-cs.tex does this). -\ifx\today\undefined -\def\today{% - \number\day\space - \ifcase\month - \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr - \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug - \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec - \fi - \space\number\year} -\fi - -% @settitle line... specifies the title of the document, for headings. -% It generates no output of its own. -\def\thistitle{\putwordNoTitle} -\def\settitle{\parsearg\settitlezzz} -\def\settitlezzz #1{\gdef\thistitle{#1}} - - -\message{tables,} -% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x). - -% default indentation of table text -\newdimen\tableindent \tableindent=.8in -% default indentation of @itemize and @enumerate text -\newdimen\itemindent \itemindent=.3in -% margin between end of table item and start of table text. -\newdimen\itemmargin \itemmargin=.1in - -% used internally for \itemindent minus \itemmargin -\newdimen\itemmax - -% Note @table, @vtable, and @vtable define @item, @itemx, etc., with -% these defs. -% They also define \itemindex -% to index the item name in whatever manner is desired (perhaps none). - -\newif\ifitemxneedsnegativevskip - -\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} - -\def\internalBitem{\smallbreak \parsearg\itemzzz} -\def\internalBitemx{\itemxpar \parsearg\itemzzz} - -\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz} -\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz} - -\def\internalBkitem{\smallbreak \parsearg\kitemzzz} -\def\internalBkitemx{\itemxpar \parsearg\kitemzzz} - -\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}% - \itemzzz {#1}} - -\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}% - \itemzzz {#1}} - -\def\itemzzz #1{\begingroup % - \advance\hsize by -\rightskip - \advance\hsize by -\tableindent - \setbox0=\hbox{\itemfont{#1}}% - \itemindex{#1}% - \nobreak % This prevents a break before @itemx. - % - % If the item text does not fit in the space we have, put it on a line - % by itself, and do not allow a page break either before or after that - % line. We do not start a paragraph here because then if the next - % command is, e.g., @kindex, the whatsit would get put into the - % horizontal list on a line by itself, resulting in extra blank space. - \ifdim \wd0>\itemmax - % - % Make this a paragraph so we get the \parskip glue and wrapping, - % but leave it ragged-right. - \begingroup - \advance\leftskip by-\tableindent - \advance\hsize by\tableindent - \advance\rightskip by0pt plus1fil - \leavevmode\unhbox0\par - \endgroup - % - % We're going to be starting a paragraph, but we don't want the - % \parskip glue -- logically it's part of the @item we just started. - \nobreak \vskip-\parskip - % - % Stop a page break at the \parskip glue coming up. (Unfortunately - % we can't prevent a possible page break at the following - % \baselineskip glue.) However, if what follows is an environment - % such as @example, there will be no \parskip glue; then - % the negative vskip we just would cause the example and the item to - % crash together. So we use this bizarre value of 10001 as a signal - % to \aboveenvbreak to insert \parskip glue after all. - % (Possibly there are other commands that could be followed by - % @example which need the same treatment, but not section titles; or - % maybe section titles are the only special case and they should be - % penalty 10001...) - \penalty 10001 - \endgroup - \itemxneedsnegativevskipfalse - \else - % The item text fits into the space. Start a paragraph, so that the - % following text (if any) will end up on the same line. - \noindent - % Do this with kerns and \unhbox so that if there is a footnote in - % the item text, it can migrate to the main vertical list and - % eventually be printed. - \nobreak\kern-\tableindent - \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 - \unhbox0 - \nobreak\kern\dimen0 - \endgroup - \itemxneedsnegativevskiptrue - \fi -} - -\def\item{\errmessage{@item while not in a table}} -\def\itemx{\errmessage{@itemx while not in a table}} -\def\kitem{\errmessage{@kitem while not in a table}} -\def\kitemx{\errmessage{@kitemx while not in a table}} -\def\xitem{\errmessage{@xitem while not in a table}} -\def\xitemx{\errmessage{@xitemx while not in a table}} - -% Contains a kludge to get @end[description] to work. -\def\description{\tablez{\dontindex}{1}{}{}{}{}} - -% @table, @ftable, @vtable. -\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex} -{\obeylines\obeyspaces% -\gdef\tablex #1^^M{% -\tabley\dontindex#1 \endtabley}} - -\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex} -{\obeylines\obeyspaces% -\gdef\ftablex #1^^M{% -\tabley\fnitemindex#1 \endtabley -\def\Eftable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex} -{\obeylines\obeyspaces% -\gdef\vtablex #1^^M{% -\tabley\vritemindex#1 \endtabley -\def\Evtable{\endgraf\afterenvbreak\endgroup}% -\let\Etable=\relax}} - -\def\dontindex #1{} -\def\fnitemindex #1{\doind {fn}{\code{#1}}}% -\def\vritemindex #1{\doind {vr}{\code{#1}}}% - -{\obeyspaces % -\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup% -\tablez{#1}{#2}{#3}{#4}{#5}{#6}}} - -\def\tablez #1#2#3#4#5#6{% -\aboveenvbreak % -\begingroup % -\def\Edescription{\Etable}% Necessary kludge. -\let\itemindex=#1% -\ifnum 0#3>0 \advance \leftskip by #3\mil \fi % -\ifnum 0#4>0 \tableindent=#4\mil \fi % -\ifnum 0#5>0 \advance \rightskip by #5\mil \fi % -\def\itemfont{#2}% -\itemmax=\tableindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \tableindent % -\exdentamount=\tableindent -\parindent = 0pt -\parskip = \smallskipamount -\ifdim \parskip=0pt \parskip=2pt \fi% -\def\Etable{\endgraf\afterenvbreak\endgroup}% -\let\item = \internalBitem % -\let\itemx = \internalBitemx % -\let\kitem = \internalBkitem % -\let\kitemx = \internalBkitemx % -\let\xitem = \internalBxitem % -\let\xitemx = \internalBxitemx % -} - -% This is the counter used by @enumerate, which is really @itemize - -\newcount \itemno - -\def\itemize{\parsearg\itemizezzz} - -\def\itemizezzz #1{% - \begingroup % ended by the @end itemize - \itemizey {#1}{\Eitemize} -} - -\def\itemizey #1#2{% -\aboveenvbreak % -\itemmax=\itemindent % -\advance \itemmax by -\itemmargin % -\advance \leftskip by \itemindent % -\exdentamount=\itemindent -\parindent = 0pt % -\parskip = \smallskipamount % -\ifdim \parskip=0pt \parskip=2pt \fi% -\def#2{\endgraf\afterenvbreak\endgroup}% -\def\itemcontents{#1}% -\let\item=\itemizeitem} - -% \splitoff TOKENS\endmark defines \first to be the first token in -% TOKENS, and \rest to be the remainder. -% -\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% - -% Allow an optional argument of an uppercase letter, lowercase letter, -% or number, to specify the first label in the enumerated list. No -% argument is the same as `1'. -% -\def\enumerate{\parsearg\enumeratezzz} -\def\enumeratezzz #1{\enumeratey #1 \endenumeratey} -\def\enumeratey #1 #2\endenumeratey{% - \begingroup % ended by the @end enumerate - % - % If we were given no argument, pretend we were given `1'. - \def\thearg{#1}% - \ifx\thearg\empty \def\thearg{1}\fi - % - % Detect if the argument is a single token. If so, it might be a - % letter. Otherwise, the only valid thing it can be is a number. - % (We will always have one token, because of the test we just made. - % This is a good thing, since \splitoff doesn't work given nothing at - % all -- the first parameter is undelimited.) - \expandafter\splitoff\thearg\endmark - \ifx\rest\empty - % Only one token in the argument. It could still be anything. - % A ``lowercase letter'' is one whose \lccode is nonzero. - % An ``uppercase letter'' is one whose \lccode is both nonzero, and - % not equal to itself. - % Otherwise, we assume it's a number. - % - % We need the \relax at the end of the \ifnum lines to stop TeX from - % continuing to look for a . - % - \ifnum\lccode\expandafter`\thearg=0\relax - \numericenumerate % a number (we hope) - \else - % It's a letter. - \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax - \lowercaseenumerate % lowercase letter - \else - \uppercaseenumerate % uppercase letter - \fi - \fi - \else - % Multiple tokens in the argument. We hope it's a number. - \numericenumerate - \fi -} - -% An @enumerate whose labels are integers. The starting integer is -% given in \thearg. -% -\def\numericenumerate{% - \itemno = \thearg - \startenumeration{\the\itemno}% -} - -% The starting (lowercase) letter is in \thearg. -\def\lowercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more lowercase letters in @enumerate; get a bigger - alphabet}% - \fi - \char\lccode\itemno - }% -} - -% The starting (uppercase) letter is in \thearg. -\def\uppercaseenumerate{% - \itemno = \expandafter`\thearg - \startenumeration{% - % Be sure we're not beyond the end of the alphabet. - \ifnum\itemno=0 - \errmessage{No more uppercase letters in @enumerate; get a bigger - alphabet} - \fi - \char\uccode\itemno - }% -} - -% Call itemizey, adding a period to the first argument and supplying the -% common last two arguments. Also subtract one from the initial value in -% \itemno, since @item increments \itemno. -% -\def\startenumeration#1{% - \advance\itemno by -1 - \itemizey{#1.}\Eenumerate\flushcr -} - -% @alphaenumerate and @capsenumerate are abbreviations for giving an arg -% to @enumerate. -% -\def\alphaenumerate{\enumerate{a}} -\def\capsenumerate{\enumerate{A}} -\def\Ealphaenumerate{\Eenumerate} -\def\Ecapsenumerate{\Eenumerate} - -% Definition of @item while inside @itemize. - -\def\itemizeitem{% -\advance\itemno by 1 -{\let\par=\endgraf \smallbreak}% -\ifhmode \errmessage{In hmode at itemizeitem}\fi -{\parskip=0in \hskip 0pt -\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}% -\vadjust{\penalty 1200}}% -\flushcr} - -% @multitable macros -% Amy Hendrickson, 8/18/94, 3/6/96 -% -% @multitable ... @end multitable will make as many columns as desired. -% Contents of each column will wrap at width given in preamble. Width -% can be specified either with sample text given in a template line, -% or in percent of \hsize, the current width of text on page. - -% Table can continue over pages but will only break between lines. - -% To make preamble: -% -% Either define widths of columns in terms of percent of \hsize: -% @multitable @columnfractions .25 .3 .45 -% @item ... -% -% Numbers following @columnfractions are the percent of the total -% current hsize to be used for each column. You may use as many -% columns as desired. - - -% Or use a template: -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item ... -% using the widest term desired in each column. -% -% For those who want to use more than one line's worth of words in -% the preamble, break the line within one argument and it -% will parse correctly, i.e., -% -% @multitable {Column 1 template} {Column 2 template} {Column 3 -% template} -% Not: -% @multitable {Column 1 template} {Column 2 template} -% {Column 3 template} - -% Each new table line starts with @item, each subsequent new column -% starts with @tab. Empty columns may be produced by supplying @tab's -% with nothing between them for as many times as empty columns are needed, -% ie, @tab@tab@tab will produce two empty columns. - -% @item, @tab, @multitable or @end multitable do not need to be on their -% own lines, but it will not hurt if they are. - -% Sample multitable: - -% @multitable {Column 1 template} {Column 2 template} {Column 3 template} -% @item first col stuff @tab second col stuff @tab third col -% @item -% first col stuff -% @tab -% second col stuff -% @tab -% third col -% @item first col stuff @tab second col stuff -% @tab Many paragraphs of text may be used in any column. -% -% They will wrap at the width determined by the template. -% @item@tab@tab This will be in third column. -% @end multitable - -% Default dimensions may be reset by user. -% @multitableparskip is vertical space between paragraphs in table. -% @multitableparindent is paragraph indent in table. -% @multitablecolmargin is horizontal space to be left between columns. -% @multitablelinespace is space to leave between table items, baseline -% to baseline. -% 0pt means it depends on current normal line spacing. -% -\newskip\multitableparskip -\newskip\multitableparindent -\newdimen\multitablecolspace -\newskip\multitablelinespace -\multitableparskip=0pt -\multitableparindent=6pt -\multitablecolspace=12pt -\multitablelinespace=0pt - -% Macros used to set up halign preamble: -% -\let\endsetuptable\relax -\def\xendsetuptable{\endsetuptable} -\let\columnfractions\relax -\def\xcolumnfractions{\columnfractions} -\newif\ifsetpercent - -% #1 is the part of the @columnfraction before the decimal point, which -% is presumably either 0 or the empty string (but we don't check, we -% just throw it away). #2 is the decimal part, which we use as the -% percent of \hsize for this column. -\def\pickupwholefraction#1.#2 {% - \global\advance\colcount by 1 - \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}% - \setuptable -} - -\newcount\colcount -\def\setuptable#1{% - \def\firstarg{#1}% - \ifx\firstarg\xendsetuptable - \let\go = \relax - \else - \ifx\firstarg\xcolumnfractions - \global\setpercenttrue - \else - \ifsetpercent - \let\go\pickupwholefraction - \else - \global\advance\colcount by 1 - \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a - % separator; typically that is always in the input, anyway. - \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% - \fi - \fi - \ifx\go\pickupwholefraction - % Put the argument back for the \pickupwholefraction call, so - % we'll always have a period there to be parsed. - \def\go{\pickupwholefraction#1}% - \else - \let\go = \setuptable - \fi% - \fi - \go -} - -% @multitable ... @end multitable definitions: -% -\def\multitable{\parsearg\dotable} -\def\dotable#1{\bgroup - \vskip\parskip - \let\item=\crcrwithfootnotes - % A \tab used to include \hskip1sp. But then the space in a template - % line is not enough. That is bad. So let's go back to just & until - % we encounter the problem it was intended to solve again. --karl, - % nathan@acm.org, 20apr99. - \let\tab=&% - \let\startfootins=\startsavedfootnote - \tolerance=9500 - \hbadness=9500 - \setmultitablespacing - \parskip=\multitableparskip - \parindent=\multitableparindent - \overfullrule=0pt - \global\colcount=0 - \def\Emultitable{% - \global\setpercentfalse - \crcrwithfootnotes\crcr - \egroup\egroup - }% - % - % To parse everything between @multitable and @item: - \setuptable#1 \endsetuptable - % - % \everycr will reset column counter, \colcount, at the end of - % each line. Every column entry will cause \colcount to advance by one. - % The table preamble - % looks at the current \colcount to find the correct column width. - \everycr{\noalign{% - % - % \filbreak%% keeps underfull box messages off when table breaks over pages. - % Maybe so, but it also creates really weird page breaks when the table - % breaks over pages. Wouldn't \vfil be better? Wait until the problem - % manifests itself, so it can be fixed for real --karl. - \global\colcount=0\relax}}% - % - % This preamble sets up a generic column definition, which will - % be used as many times as user calls for columns. - % \vtop will set a single line and will also let text wrap and - % continue for many paragraphs if desired. - \halign\bgroup&\global\advance\colcount by 1\relax - \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname - % - % In order to keep entries from bumping into each other - % we will add a \leftskip of \multitablecolspace to all columns after - % the first one. - % - % If a template has been used, we will add \multitablecolspace - % to the width of each template entry. - % - % If the user has set preamble in terms of percent of \hsize we will - % use that dimension as the width of the column, and the \leftskip - % will keep entries from bumping into each other. Table will start at - % left margin and final column will justify at right margin. - % - % Make sure we don't inherit \rightskip from the outer environment. - \rightskip=0pt - \ifnum\colcount=1 - % The first column will be indented with the surrounding text. - \advance\hsize by\leftskip - \else - \ifsetpercent \else - % If user has not set preamble in terms of percent of \hsize - % we will advance \hsize by \multitablecolspace. - \advance\hsize by \multitablecolspace - \fi - % In either case we will make \leftskip=\multitablecolspace: - \leftskip=\multitablecolspace - \fi - % Ignoring space at the beginning and end avoids an occasional spurious - % blank line, when TeX decides to break the line at the space before the - % box from the multistrut, so the strut ends up on a line by itself. - % For example: - % @multitable @columnfractions .11 .89 - % @item @code{#} - % @tab Legal holiday which is valid in major parts of the whole country. - % Is automatically provided with highlighting sequences respectively marking - % characters. - \noindent\ignorespaces##\unskip\multistrut}\cr -} - -\def\setmultitablespacing{% test to see if user has set \multitablelinespace. -% If so, do nothing. If not, give it an appropriate dimension based on -% current baselineskip. -\ifdim\multitablelinespace=0pt -\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip -\global\advance\multitablelinespace by-\ht0 -%% strut to put in table in case some entry doesn't have descenders, -%% to keep lines equally spaced -\let\multistrut = \strut -\else -%% FIXME: what is \box0 supposed to be? -\gdef\multistrut{\vrule height\multitablelinespace depth\dp0 -width0pt\relax} \fi -%% Test to see if parskip is larger than space between lines of -%% table. If not, do nothing. -%% If so, set to same dimension as multitablelinespace. -\ifdim\multitableparskip>\multitablelinespace -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi% -\ifdim\multitableparskip=0pt -\global\multitableparskip=\multitablelinespace -\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller - %% than skip between lines in the table. -\fi} - -% In case a @footnote appears inside an alignment, save the footnote -% text to a box and make the \insert when a row of the table is -% finished. Otherwise, the insertion is lost, it never migrates to the -% main vertical list. --kasal, 22jan03. -% -\newbox\savedfootnotes -% -% \dotable \let's \startfootins to this, so that \dofootnote will call -% it instead of starting the insertion right away. -\def\startsavedfootnote{% - \global\setbox\savedfootnotes = \vbox\bgroup - \unvbox\savedfootnotes -} -\def\crcrwithfootnotes{% - \crcr - \ifvoid\savedfootnotes \else - \noalign{\insert\footins{\box\savedfootnotes}}% - \fi -} - -\message{conditionals,} -% Prevent errors for section commands. -% Used in @ignore and in failing conditionals. -\def\ignoresections{% - \let\chapter=\relax - \let\unnumbered=\relax - \let\top=\relax - \let\unnumberedsec=\relax - \let\unnumberedsection=\relax - \let\unnumberedsubsec=\relax - \let\unnumberedsubsection=\relax - \let\unnumberedsubsubsec=\relax - \let\unnumberedsubsubsection=\relax - \let\section=\relax - \let\subsec=\relax - \let\subsubsec=\relax - \let\subsection=\relax - \let\subsubsection=\relax - \let\appendix=\relax - \let\appendixsec=\relax - \let\appendixsection=\relax - \let\appendixsubsec=\relax - \let\appendixsubsection=\relax - \let\appendixsubsubsec=\relax - \let\appendixsubsubsection=\relax - \let\contents=\relax - \let\smallbook=\relax - \let\titlepage=\relax -} - -% Used in nested conditionals, where we have to parse the Texinfo source -% and so want to turn off most commands, in case they are used -% incorrectly. -% -% We use \empty instead of \relax for the @def... commands, so that \end -% doesn't throw an error. For instance: -% @ignore -% @deffn ... -% @end deffn -% @end ignore -% -% The @end deffn is going to get expanded, because we're trying to allow -% nested conditionals. But we don't want to expand the actual @deffn, -% since it might be syntactically correct and intended to be ignored. -% Since \end checks for \relax, using \empty does not cause an error. -% -\def\ignoremorecommands{% - \let\defcodeindex = \relax - \let\defcv = \empty - \let\defcvx = \empty - \let\Edefcv = \empty - \let\deffn = \empty - \let\deffnx = \empty - \let\Edeffn = \empty - \let\defindex = \relax - \let\defivar = \empty - \let\defivarx = \empty - \let\Edefivar = \empty - \let\defmac = \empty - \let\defmacx = \empty - \let\Edefmac = \empty - \let\defmethod = \empty - \let\defmethodx = \empty - \let\Edefmethod = \empty - \let\defop = \empty - \let\defopx = \empty - \let\Edefop = \empty - \let\defopt = \empty - \let\defoptx = \empty - \let\Edefopt = \empty - \let\defspec = \empty - \let\defspecx = \empty - \let\Edefspec = \empty - \let\deftp = \empty - \let\deftpx = \empty - \let\Edeftp = \empty - \let\deftypefn = \empty - \let\deftypefnx = \empty - \let\Edeftypefn = \empty - \let\deftypefun = \empty - \let\deftypefunx = \empty - \let\Edeftypefun = \empty - \let\deftypeivar = \empty - \let\deftypeivarx = \empty - \let\Edeftypeivar = \empty - \let\deftypemethod = \empty - \let\deftypemethodx = \empty - \let\Edeftypemethod = \empty - \let\deftypeop = \empty - \let\deftypeopx = \empty - \let\Edeftypeop = \empty - \let\deftypevar = \empty - \let\deftypevarx = \empty - \let\Edeftypevar = \empty - \let\deftypevr = \empty - \let\deftypevrx = \empty - \let\Edeftypevr = \empty - \let\defun = \empty - \let\defunx = \empty - \let\Edefun = \empty - \let\defvar = \empty - \let\defvarx = \empty - \let\Edefvar = \empty - \let\defvr = \empty - \let\defvrx = \empty - \let\Edefvr = \empty - \let\clear = \relax - \let\down = \relax - \let\evenfooting = \relax - \let\evenheading = \relax - \let\everyfooting = \relax - \let\everyheading = \relax - \let\headings = \relax - \let\include = \relax - \let\item = \relax - \let\lowersections = \relax - \let\oddfooting = \relax - \let\oddheading = \relax - \let\printindex = \relax - \let\pxref = \relax - \let\raisesections = \relax - \let\ref = \relax - \let\set = \relax - \let\setchapternewpage = \relax - \let\setchapterstyle = \relax - \let\settitle = \relax - \let\up = \relax - \let\verbatiminclude = \relax - \let\xref = \relax -} - -% Ignore @ignore, @ifhtml, @ifinfo, and the like. -% -\def\direntry{\doignore{direntry}} -\def\documentdescriptionword{documentdescription} -\def\documentdescription{\doignore{documentdescription}} -\def\html{\doignore{html}} -\def\ifhtml{\doignore{ifhtml}} -\def\ifinfo{\doignore{ifinfo}} -\def\ifnottex{\doignore{ifnottex}} -\def\ifplaintext{\doignore{ifplaintext}} -\def\ifxml{\doignore{ifxml}} -\def\ignore{\doignore{ignore}} -\def\menu{\doignore{menu}} -\def\xml{\doignore{xml}} - -% @dircategory CATEGORY -- specify a category of the dir file -% which this file should belong to. Ignore this in TeX. -\let\dircategory = \comment - -% Ignore text until a line `@end #1'. -% -\def\doignore#1{\begingroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define a command to swallow text until we reach `@end #1'. - % This @ is a catcode 12 token (that is the normal catcode of @ in - % this texinfo.tex file). We change the catcode of @ below to match. - \long\def\doignoretext##1@end #1{\enddoignore}% - % - % Make sure that spaces turn into tokens that match what \doignoretext wants. - \catcode\spaceChar = 10 - % - % Ignore braces, too, so mismatched braces don't cause trouble. - \catcode`\{ = 9 - \catcode`\} = 9 - % - % We must not have @c interpreted as a control sequence. - \catcode`\@ = 12 - % - \def\ignoreword{#1}% - \ifx\ignoreword\documentdescriptionword - % The c kludge breaks documentdescription, since - % `documentdescription' contains a `c'. Means not everything will - % be ignored inside @documentdescription, but oh well... - \else - % Make the letter c a comment character so that the rest of the line - % will be ignored. This way, the document can have (for example) - % @c @end ifinfo - % and the @end ifinfo will be properly ignored. - % (We've just changed @ to catcode 12.) - \catcode`\c = 14 - \fi - % - % And now expand the command defined above. - \doignoretext -} - -% What we do to finish off ignored text. -% -\def\enddoignore{\endgroup\ignorespaces}% - -\newif\ifwarnedobs\warnedobsfalse -\def\obstexwarn{% - \ifwarnedobs\relax\else - % We need to warn folks that they may have trouble with TeX 3.0. - % This uses \immediate\write16 rather than \message to get newlines. - \immediate\write16{} - \immediate\write16{WARNING: for users of Unix TeX 3.0!} - \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).} - \immediate\write16{If you are running another version of TeX, relax.} - \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} - \immediate\write16{ Then upgrade your TeX installation if you can.} - \immediate\write16{ (See ftp://ftp.gnu.org/non-gnu/TeX.README.)} - \immediate\write16{If you are stuck with version 3.0, run the} - \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} - \immediate\write16{ to use a workaround.} - \immediate\write16{} - \global\warnedobstrue - \fi -} - -% **In TeX 3.0, setting text in \nullfont hangs tex. For a -% workaround (which requires the file ``dummy.tfm'' to be installed), -% uncomment the following line: -%%%%%\font\nullfont=dummy\let\obstexwarn=\relax - -% Ignore text, except that we keep track of conditional commands for -% purposes of nesting, up to an `@end #1' command. -% -\def\nestedignore#1{% - \obstexwarn - % We must actually expand the ignored text to look for the @end - % command, so that nested ignore constructs work. Thus, we put the - % text into a \vbox and then do nothing with the result. To minimize - % the chance of memory overflow, we follow the approach outlined on - % page 401 of the TeXbook. - % - \setbox0 = \vbox\bgroup - % Don't complain about control sequences we have declared \outer. - \ignoresections - % - % Define `@end #1' to end the box, which will in turn undefine the - % @end command again. - \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}% - % - % We are going to be parsing Texinfo commands. Most cause no - % trouble when they are used incorrectly, but some commands do - % complicated argument parsing or otherwise get confused, so we - % undefine them. - % - % We can't do anything about stray @-signs, unfortunately; - % they'll produce `undefined control sequence' errors. - \ignoremorecommands - % - % Set the current font to be \nullfont, a TeX primitive, and define - % all the font commands to also use \nullfont. We don't use - % dummy.tfm, as suggested in the TeXbook, because some sites - % might not have that installed. Therefore, math mode will still - % produce output, but that should be an extremely small amount of - % stuff compared to the main input. - % - \nullfont - \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont - \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont - \let\tensf=\nullfont - % Similarly for index fonts. - \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont - \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont - \let\smallsf=\nullfont - % Similarly for smallexample fonts. - \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont - \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont - \let\smallersf=\nullfont - % - % Don't complain when characters are missing from the fonts. - \tracinglostchars = 0 - % - % Don't bother to do space factor calculations. - \frenchspacing - % - % Don't report underfull hboxes. - \hbadness = 10000 - % - % Do minimal line-breaking. - \pretolerance = 10000 - % - % Do not execute instructions in @tex. - \def\tex{\doignore{tex}}% - % Do not execute macro definitions. - % `c' is a comment character, so the word `macro' will get cut off. - \def\macro{\doignore{ma}}% -} - -% @set VAR sets the variable VAR to an empty value. -% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. -% -% Since we want to separate VAR from REST-OF-LINE (which might be -% empty), we can't just use \parsearg; we have to insert a space of our -% own to delimit the rest of the line, and then take it out again if we -% didn't need it. Make sure the catcode of space is correct to avoid -% losing inside @example, for instance. -% -\def\set{\begingroup\catcode` =10 - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \parsearg\setxxx} -\def\setxxx#1{\setyyy#1 \endsetyyy} -\def\setyyy#1 #2\endsetyyy{% - \def\temp{#2}% - \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty - \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted. - \fi - \endgroup -} -% Can't use \xdef to pre-expand #2 and save some time, since \temp or -% \next or other control sequences that we've defined might get us into -% an infinite loop. Consider `@set foo @cite{bar}'. -\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}} - -% @clear VAR clears (i.e., unsets) the variable VAR. -% -\def\clear{\parsearg\clearxxx} -\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax} - -% @value{foo} gets the text saved in variable foo. -{ - \catcode`\_ = \active - % - % We might end up with active _ or - characters in the argument if - % we're called from @code, as @code{@value{foo-bar_}}. So \let any - % such active characters to their normal equivalents. - \gdef\value{\begingroup - \catcode`\-=\other \catcode`\_=\other - \indexbreaks \let_\normalunderscore - \valuexxx} -} -\def\valuexxx#1{\expandablevalue{#1}\endgroup} - -% We have this subroutine so that we can handle at least some @value's -% properly in indexes (we \let\value to this in \indexdummies). Ones -% whose names contain - or _ still won't work, but we can't do anything -% about that. The command has to be fully expandable (if the variable -% is set), since the result winds up in the index file. This means that -% if the variable's value contains other Texinfo commands, it's almost -% certain it will fail (although perhaps we could fix that with -% sufficient work to do a one-level expansion on the result, instead of -% complete). -% -\def\expandablevalue#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - {[No value for ``#1'']}% - \message{Variable `#1', used in @value, is not set.}% - \else - \csname SET#1\endcsname - \fi -} - -% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined -% with @set. -% -\def\ifset{\parsearg\doifset} -\def\doifset#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \let\next=\ifsetfail - \else - \let\next=\ifsetsucceed - \fi - \next -} -\def\ifsetsucceed{\conditionalsucceed{ifset}} -\def\ifsetfail{\nestedignore{ifset}} -\defineunmatchedend{ifset} - -% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been -% defined with @set, or has been undefined with @clear. -% -\def\ifclear{\parsearg\doifclear} -\def\doifclear#1{% - \expandafter\ifx\csname SET#1\endcsname\relax - \let\next=\ifclearsucceed - \else - \let\next=\ifclearfail - \fi - \next -} -\def\ifclearsucceed{\conditionalsucceed{ifclear}} -\def\ifclearfail{\nestedignore{ifclear}} -\defineunmatchedend{ifclear} - -% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we -% read the text following, through the first @end iftex (etc.). Make -% `@end iftex' (etc.) valid only after an @iftex. -% -\def\iftex{\conditionalsucceed{iftex}} -\def\ifnothtml{\conditionalsucceed{ifnothtml}} -\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} -\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} -\defineunmatchedend{iftex} -\defineunmatchedend{ifnothtml} -\defineunmatchedend{ifnotinfo} -\defineunmatchedend{ifnotplaintext} - -% True conditional. Since \set globally defines its variables, we can -% just start and end a group (to keep the @end definition undefined at -% the outer level). -% -\def\conditionalsucceed#1{\begingroup - \expandafter\def\csname E#1\endcsname{\endgroup}% -} - -% @defininfoenclose. -\let\definfoenclose=\comment - - -\message{indexing,} -% Index generation facilities - -% Define \newwrite to be identical to plain tex's \newwrite -% except not \outer, so it can be used within \newindex. -{\catcode`\@=11 -\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}} - -% \newindex {foo} defines an index named foo. -% It automatically defines \fooindex such that -% \fooindex ...rest of line... puts an entry in the index foo. -% It also defines \fooindfile to be the number of the output channel for -% the file that accumulates this index. The file's extension is foo. -% The name of an index should be no more than 2 characters long -% for the sake of vms. -% -\def\newindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 % Open the file - \fi - \expandafter\xdef\csname#1index\endcsname{% % Define @#1index - \noexpand\doindex{#1}} -} - -% @defindex foo == \newindex{foo} -% -\def\defindex{\parsearg\newindex} - -% Define @defcodeindex, like @defindex except put all entries in @code. -% -\def\defcodeindex{\parsearg\newcodeindex} -% -\def\newcodeindex#1{% - \iflinks - \expandafter\newwrite \csname#1indfile\endcsname - \openout \csname#1indfile\endcsname \jobname.#1 - \fi - \expandafter\xdef\csname#1index\endcsname{% - \noexpand\docodeindex{#1}}% -} - - -% @synindex foo bar makes index foo feed into index bar. -% Do this instead of @defindex foo if you don't want it as a separate index. -% -% @syncodeindex foo bar similar, but put all entries made for index foo -% inside @code. -% -\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} -\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} - -% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), -% #3 the target index (bar). -\def\dosynindex#1#2#3{% - % Only do \closeout if we haven't already done it, else we'll end up - % closing the target index. - \expandafter \ifx\csname donesynindex#2\endcsname \undefined - % The \closeout helps reduce unnecessary open files; the limit on the - % Acorn RISC OS is a mere 16 files. - \expandafter\closeout\csname#2indfile\endcsname - \expandafter\let\csname\donesynindex#2\endcsname = 1 - \fi - % redefine \fooindfile: - \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname - \expandafter\let\csname#2indfile\endcsname=\temp - % redefine \fooindex: - \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% -} - -% Define \doindex, the driver for all \fooindex macros. -% Argument #1 is generated by the calling \fooindex macro, -% and it is "foo", the name of the index. - -% \doindex just uses \parsearg; it calls \doind for the actual work. -% This is because \doind is more useful to call from other macros. - -% There is also \dosubind {index}{topic}{subtopic} -% which makes an entry in a two-level index such as the operation index. - -\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} -\def\singleindexer #1{\doind{\indexname}{#1}} - -% like the previous two, but they put @code around the argument. -\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} -\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} - -% Take care of Texinfo commands that can appear in an index entry. -% Since there are some commands we want to expand, and others we don't, -% we have to laboriously prevent expansion for those that we don't. -% -\def\indexdummies{% - \def\@{@}% change to @@ when we switch to @ as escape char in index files. - \def\ {\realbackslash\space }% - % Need these in case \tex is in effect and \{ is a \delimiter again. - % But can't use \lbracecmd and \rbracecmd because texindex assumes - % braces and backslashes are used only as delimiters. - \let\{ = \mylbrace - \let\} = \myrbrace - % - % \definedummyword defines \#1 as \realbackslash #1\space, thus - % effectively preventing its expansion. This is used only for control - % words, not control letters, because the \space would be incorrect - % for control characters, but is needed to separate the control word - % from whatever follows. - % - % For control letters, we have \definedummyletter, which omits the - % space. - % - % These can be used both for control words that take an argument and - % those that do not. If it is followed by {arg} in the input, then - % that will dutifully get written to the index (or wherever). - % - \def\definedummyword##1{% - \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}% - }% - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% - }% - % - % Do the redefinitions. - \commondummies -} - -% For the aux file, @ is the escape character. So we want to redefine -% everything using @ instead of \realbackslash. When everything uses -% @, this will be simpler. -% -\def\atdummies{% - \def\@{@@}% - \def\ {@ }% - \let\{ = \lbraceatcmd - \let\} = \rbraceatcmd - % - % (See comments in \indexdummies.) - \def\definedummyword##1{% - \expandafter\def\csname ##1\endcsname{@##1\space}% - }% - \def\definedummyletter##1{% - \expandafter\def\csname ##1\endcsname{@##1}% - }% - % - % Do the redefinitions. - \commondummies -} - -% Called from \indexdummies and \atdummies. \definedummyword and -% \definedummyletter must be defined first. -% -\def\commondummies{% - % - \normalturnoffactive - % - % Control letters and accents. - \definedummyletter{_}% - \definedummyletter{,}% - \definedummyletter{"}% - \definedummyletter{`}% - \definedummyletter{'}% - \definedummyletter{^}% - \definedummyletter{~}% - \definedummyletter{=}% - \definedummyword{u}% - \definedummyword{v}% - \definedummyword{H}% - \definedummyword{dotaccent}% - \definedummyword{ringaccent}% - \definedummyword{tieaccent}% - \definedummyword{ubaraccent}% - \definedummyword{udotaccent}% - \definedummyword{dotless}% - % - % Other non-English letters. - \definedummyword{AA}% - \definedummyword{AE}% - \definedummyword{L}% - \definedummyword{OE}% - \definedummyword{O}% - \definedummyword{aa}% - \definedummyword{ae}% - \definedummyword{l}% - \definedummyword{oe}% - \definedummyword{o}% - \definedummyword{ss}% - % - % Although these internal commands shouldn't show up, sometimes they do. - \definedummyword{bf}% - \definedummyword{gtr}% - \definedummyword{hat}% - \definedummyword{less}% - \definedummyword{sf}% - \definedummyword{sl}% - \definedummyword{tclose}% - \definedummyword{tt}% - % - % Texinfo font commands. - \definedummyword{b}% - \definedummyword{i}% - \definedummyword{r}% - \definedummyword{sc}% - \definedummyword{t}% - % - \definedummyword{TeX}% - \definedummyword{acronym}% - \definedummyword{cite}% - \definedummyword{code}% - \definedummyword{command}% - \definedummyword{dfn}% - \definedummyword{dots}% - \definedummyword{emph}% - \definedummyword{env}% - \definedummyword{file}% - \definedummyword{kbd}% - \definedummyword{key}% - \definedummyword{math}% - \definedummyword{option}% - \definedummyword{samp}% - \definedummyword{strong}% - \definedummyword{uref}% - \definedummyword{url}% - \definedummyword{var}% - \definedummyword{w}% - % - % Assorted special characters. - \definedummyword{bullet}% - \definedummyword{copyright}% - \definedummyword{dots}% - \definedummyword{enddots}% - \definedummyword{equiv}% - \definedummyword{error}% - \definedummyword{expansion}% - \definedummyword{minus}% - \definedummyword{pounds}% - \definedummyword{point}% - \definedummyword{print}% - \definedummyword{result}% - % - % Handle some cases of @value -- where the variable name does not - % contain - or _, and the value does not contain any - % (non-fully-expandable) commands. - \let\value = \expandablevalue - % - % Normal spaces, not active ones. - \unsepspaces - % - % No macro expansion. - \turnoffmacros -} - -% If an index command is used in an @example environment, any spaces -% therein should become regular spaces in the raw index file, not the -% expansion of \tie (\leavevmode \penalty \@M \ ). -{\obeyspaces - \gdef\unsepspaces{\obeyspaces\let =\space}} - - -% \indexnofonts is used when outputting the strings to sort the index -% by, and when constructing control sequence names. It eliminates all -% control sequences and just writes whatever the best ASCII sort string -% would be for a given command (usually its argument). -% -\def\indexdummytex{TeX} -\def\indexdummydots{...} -% -\def\indexnofonts{% - \def\ { }% - \def\@{@}% - % how to handle braces? - \def\_{\normalunderscore}% - % - \let\,=\asis - \let\"=\asis - \let\`=\asis - \let\'=\asis - \let\^=\asis - \let\~=\asis - \let\==\asis - \let\u=\asis - \let\v=\asis - \let\H=\asis - \let\dotaccent=\asis - \let\ringaccent=\asis - \let\tieaccent=\asis - \let\ubaraccent=\asis - \let\udotaccent=\asis - \let\dotless=\asis - % - % Other non-English letters. - \def\AA{AA}% - \def\AE{AE}% - \def\L{L}% - \def\OE{OE}% - \def\O{O}% - \def\aa{aa}% - \def\ae{ae}% - \def\l{l}% - \def\oe{oe}% - \def\o{o}% - \def\ss{ss}% - \def\exclamdown{!}% - \def\questiondown{?}% - % - % Don't no-op \tt, since it isn't a user-level command - % and is used in the definitions of the active chars like <, >, |, etc. - % Likewise with the other plain tex font commands. - %\let\tt=\asis - % - % Texinfo font commands. - \let\b=\asis - \let\i=\asis - \let\r=\asis - \let\sc=\asis - \let\t=\asis - % - \let\TeX=\indexdummytex - \let\acronym=\asis - \let\cite=\asis - \let\code=\asis - \let\command=\asis - \let\dfn=\asis - \let\dots=\indexdummydots - \let\emph=\asis - \let\env=\asis - \let\file=\asis - \let\kbd=\asis - \let\key=\asis - \let\math=\asis - \let\option=\asis - \let\samp=\asis - \let\strong=\asis - \let\uref=\asis - \let\url=\asis - \let\var=\asis - \let\w=\asis -} - -\let\indexbackslash=0 %overridden during \printindex. -\let\SETmarginindex=\relax % put index entries in margin (undocumented)? - -% For \ifx comparisons. -\def\emptymacro{\empty} - -% Most index entries go through here, but \dosubind is the general case. -% -\def\doind#1#2{\dosubind{#1}{#2}\empty} - -% Workhorse for all \fooindexes. -% #1 is name of index, #2 is stuff to put there, #3 is subentry -- -% \empty if called from \doind, as we usually are. The main exception -% is with defuns, which call us directly. -% -\def\dosubind#1#2#3{% - % Put the index entry in the margin if desired. - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}% - \fi - {% - \count255=\lastpenalty - {% - \indexdummies % Must do this here, since \bf, etc expand at this stage - \escapechar=`\\ - {% - \let\folio = 0% We will expand all macros now EXCEPT \folio. - \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now - % so it will be output as is; and it will print as backslash. - % - % The main index entry text. - \toks0 = {#2}% - % - % If third arg is present, precede it with space in sort key. - \def\thirdarg{#3}% - \ifx\thirdarg\emptymacro \else - % If the third (subentry) arg is present, add it to the index - % line to write. - \toks0 = \expandafter{\the\toks0 \space #3}% - \fi - % - % Process the index entry with all font commands turned off, to - % get the string to sort by. - {\indexnofonts - \edef\temp{\the\toks0}% need full expansion - \xdef\indexsorttmp{\temp}% - }% - % - % Set up the complete index entry, with both the sort key and - % the original text, including any font commands. We write - % three arguments to \entry to the .?? file (four in the - % subentry case), texindex reduces to two when writing the .??s - % sorted result. - \edef\temp{% - \write\csname#1indfile\endcsname{% - \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}% - }% - % - % If a skip is the last thing on the list now, preserve it - % by backing up by \lastskip, doing the \write, then inserting - % the skip again. Otherwise, the whatsit generated by the - % \write will make \lastskip zero. The result is that sequences - % like this: - % @end defun - % @tindex whatever - % @defun ... - % will have extra space inserted, because the \medbreak in the - % start of the @defun won't see the skip inserted by the @end of - % the previous defun. - % - % But don't do any of this if we're not in vertical mode. We - % don't want to do a \vskip and prematurely end a paragraph. - % - % Avoid page breaks due to these extra skips, too. - % - \iflinks - \ifvmode - \skip0 = \lastskip - \ifdim\lastskip = 0pt \else \nobreak\vskip-\skip0 \fi - \fi - % - \temp % do the write - % - \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi - \fi - }% - }% - \penalty\count255 - }% -} - -% The index entry written in the file actually looks like -% \entry {sortstring}{page}{topic} -% or -% \entry {sortstring}{page}{topic}{subtopic} -% The texindex program reads in these files and writes files -% containing these kinds of lines: -% \initial {c} -% before the first topic whose initial is c -% \entry {topic}{pagelist} -% for a topic that is used without subtopics -% \primary {topic} -% for the beginning of a topic that is used with subtopics -% \secondary {subtopic}{pagelist} -% for each subtopic. - -% Define the user-accessible indexing commands -% @findex, @vindex, @kindex, @cindex. - -\def\findex {\fnindex} -\def\kindex {\kyindex} -\def\cindex {\cpindex} -\def\vindex {\vrindex} -\def\tindex {\tpindex} -\def\pindex {\pgindex} - -\def\cindexsub {\begingroup\obeylines\cindexsub} -{\obeylines % -\gdef\cindexsub "#1" #2^^M{\endgroup % -\dosubind{cp}{#2}{#1}}} - -% Define the macros used in formatting output of the sorted index material. - -% @printindex causes a particular index (the ??s file) to get printed. -% It does not print any chapter heading (usually an @unnumbered). -% -\def\printindex{\parsearg\doprintindex} -\def\doprintindex#1{\begingroup - \dobreak \chapheadingskip{10000}% - % - \smallfonts \rm - \tolerance = 9500 - \indexbreaks - % - % See if the index file exists and is nonempty. - % Change catcode of @ here so that if the index file contains - % \initial {@} - % as its first line, TeX doesn't complain about mismatched braces - % (because it thinks @} is a control sequence). - \catcode`\@ = 11 - \openin 1 \jobname.#1s - \ifeof 1 - % \enddoublecolumns gets confused if there is no text in the index, - % and it loses the chapter title and the aux file entries for the - % index. The easiest way to prevent this problem is to make sure - % there is some text. - \putwordIndexNonexistent - \else - % - % If the index file exists but is empty, then \openin leaves \ifeof - % false. We have to make TeX try to read something from the file, so - % it can discover if there is anything in it. - \read 1 to \temp - \ifeof 1 - \putwordIndexIsEmpty - \else - % Index files are almost Texinfo source, but we use \ as the escape - % character. It would be better to use @, but that's too big a change - % to make right now. - \def\indexbackslash{\rawbackslashxx}% - \catcode`\\ = 0 - \escapechar = `\\ - \begindoublecolumns - \input \jobname.#1s - \enddoublecolumns - \fi - \fi - \closein 1 -\endgroup} - -% These macros are used by the sorted index file itself. -% Change them to control the appearance of the index. - -\def\initial#1{{% - % Some minor font changes for the special characters. - \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt - % - % Remove any glue we may have, we'll be inserting our own. - \removelastskip - % - % We like breaks before the index initials, so insert a bonus. - \penalty -300 - % - % Typeset the initial. Making this add up to a whole number of - % baselineskips increases the chance of the dots lining up from column - % to column. It still won't often be perfect, because of the stretch - % we need before each entry, but it's better. - % - % No shrink because it confuses \balancecolumns. - \vskip 1.67\baselineskip plus .5\baselineskip - \leftline{\secbf #1}% - \vskip .33\baselineskip plus .1\baselineskip - % - % Do our best not to break after the initial. - \nobreak -}} - -% This typesets a paragraph consisting of #1, dot leaders, and then #2 -% flush to the right margin. It is used for index and table of contents -% entries. The paragraph is indented by \leftskip. -% -\def\entry#1#2{\begingroup - % - % Start a new paragraph if necessary, so our assignments below can't - % affect previous text. - \par - % - % Do not fill out the last line with white space. - \parfillskip = 0in - % - % No extra space above this paragraph. - \parskip = 0in - % - % Do not prefer a separate line ending with a hyphen to fewer lines. - \finalhyphendemerits = 0 - % - % \hangindent is only relevant when the entry text and page number - % don't both fit on one line. In that case, bob suggests starting the - % dots pretty far over on the line. Unfortunately, a large - % indentation looks wrong when the entry text itself is broken across - % lines. So we use a small indentation and put up with long leaders. - % - % \hangafter is reset to 1 (which is the value we want) at the start - % of each paragraph, so we need not do anything with that. - \hangindent = 2em - % - % When the entry text needs to be broken, just fill out the first line - % with blank space. - \rightskip = 0pt plus1fil - % - % A bit of stretch before each entry for the benefit of balancing columns. - \vskip 0pt plus1pt - % - % Start a ``paragraph'' for the index entry so the line breaking - % parameters we've set above will have an effect. - \noindent - % - % Insert the text of the index entry. TeX will do line-breaking on it. - #1% - % The following is kludged to not output a line of dots in the index if - % there are no page numbers. The next person who breaks this will be - % cursed by a Unix daemon. - \def\tempa{{\rm }}% - \def\tempb{#2}% - \edef\tempc{\tempa}% - \edef\tempd{\tempb}% - \ifx\tempc\tempd\ \else% - % - % If we must, put the page number on a line of its own, and fill out - % this line with blank space. (The \hfil is overwhelmed with the - % fill leaders glue in \indexdotfill if the page number does fit.) - \hfil\penalty50 - \null\nobreak\indexdotfill % Have leaders before the page number. - % - % The `\ ' here is removed by the implicit \unskip that TeX does as - % part of (the primitive) \par. Without it, a spurious underfull - % \hbox ensues. - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - \ #2% The page number ends the paragraph. - \fi - \fi% - \par -\endgroup} - -% Like \dotfill except takes at least 1 em. -\def\indexdotfill{\cleaders - \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} - -\def\primary #1{\line{#1\hfil}} - -\newskip\secondaryindent \secondaryindent=0.5cm -\def\secondary#1#2{{% - \parfillskip=0in - \parskip=0in - \hangindent=1in - \hangafter=1 - \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill - \ifpdf - \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. - \else - #2 - \fi - \par -}} - -% Define two-column mode, which we use to typeset indexes. -% Adapted from the TeXbook, page 416, which is to say, -% the manmac.tex format used to print the TeXbook itself. -\catcode`\@=11 - -\newbox\partialpage -\newdimen\doublecolumnhsize - -\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns - % Grab any single-column material above us. - \output = {% - % - % Here is a possibility not foreseen in manmac: if we accumulate a - % whole lot of material, we might end up calling this \output - % routine twice in a row (see the doublecol-lose test, which is - % essentially a couple of indexes with @setchapternewpage off). In - % that case we just ship out what is in \partialpage with the normal - % output routine. Generally, \partialpage will be empty when this - % runs and this will be a no-op. See the indexspread.tex test case. - \ifvoid\partialpage \else - \onepageout{\pagecontents\partialpage}% - \fi - % - \global\setbox\partialpage = \vbox{% - % Unvbox the main output page. - \unvbox\PAGE - \kern-\topskip \kern\baselineskip - }% - }% - \eject % run that output routine to set \partialpage - % - % Use the double-column output routine for subsequent pages. - \output = {\doublecolumnout}% - % - % Change the page size parameters. We could do this once outside this - % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 - % format, but then we repeat the same computation. Repeating a couple - % of assignments once per index is clearly meaningless for the - % execution time, so we may as well do it in one place. - % - % First we halve the line length, less a little for the gutter between - % the columns. We compute the gutter based on the line length, so it - % changes automatically with the paper format. The magic constant - % below is chosen so that the gutter has the same value (well, +-<1pt) - % as it did when we hard-coded it. - % - % We put the result in a separate register, \doublecolumhsize, so we - % can restore it in \pagesofar, after \hsize itself has (potentially) - % been clobbered. - % - \doublecolumnhsize = \hsize - \advance\doublecolumnhsize by -.04154\hsize - \divide\doublecolumnhsize by 2 - \hsize = \doublecolumnhsize - % - % Double the \vsize as well. (We don't need a separate register here, - % since nobody clobbers \vsize.) - \vsize = 2\vsize -} - -% The double-column output routine for all double-column pages except -% the last. -% -\def\doublecolumnout{% - \splittopskip=\topskip \splitmaxdepth=\maxdepth - % Get the available space for the double columns -- the normal - % (undoubled) page height minus any material left over from the - % previous page. - \dimen@ = \vsize - \divide\dimen@ by 2 - \advance\dimen@ by -\ht\partialpage - % - % box0 will be the left-hand column, box2 the right. - \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ - \onepageout\pagesofar - \unvbox255 - \penalty\outputpenalty -} -% -% Re-output the contents of the output page -- any previous material, -% followed by the two boxes we just split, in box0 and box2. -\def\pagesofar{% - \unvbox\partialpage - % - \hsize = \doublecolumnhsize - \wd0=\hsize \wd2=\hsize - \hbox to\pagewidth{\box0\hfil\box2}% -} -% -% All done with double columns. -\def\enddoublecolumns{% - \output = {% - % Split the last of the double-column material. Leave it on the - % current page, no automatic page break. - \balancecolumns - % - % If we end up splitting too much material for the current page, - % though, there will be another page break right after this \output - % invocation ends. Having called \balancecolumns once, we do not - % want to call it again. Therefore, reset \output to its normal - % definition right away. (We hope \balancecolumns will never be - % called on to balance too much material, but if it is, this makes - % the output somewhat more palatable.) - \global\output = {\onepageout{\pagecontents\PAGE}}% - }% - \eject - \endgroup % started in \begindoublecolumns - % - % \pagegoal was set to the doubled \vsize above, since we restarted - % the current page. We're now back to normal single-column - % typesetting, so reset \pagegoal to the normal \vsize (after the - % \endgroup where \vsize got restored). - \pagegoal = \vsize -} -% -% Called at the end of the double column material. -\def\balancecolumns{% - \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. - \dimen@ = \ht0 - \advance\dimen@ by \topskip - \advance\dimen@ by-\baselineskip - \divide\dimen@ by 2 % target to split to - %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% - \splittopskip = \topskip - % Loop until we get a decent breakpoint. - {% - \vbadness = 10000 - \loop - \global\setbox3 = \copy0 - \global\setbox1 = \vsplit3 to \dimen@ - \ifdim\ht3>\dimen@ - \global\advance\dimen@ by 1pt - \repeat - }% - %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% - \setbox0=\vbox to\dimen@{\unvbox1}% - \setbox2=\vbox to\dimen@{\unvbox3}% - % - \pagesofar -} -\catcode`\@ = \other - - -\message{sectioning,} -% Chapters, sections, etc. - -\newcount\chapno -\newcount\secno \secno=0 -\newcount\subsecno \subsecno=0 -\newcount\subsubsecno \subsubsecno=0 - -% This counter is funny since it counts through charcodes of letters A, B, ... -\newcount\appendixno \appendixno = `\@ -% \def\appendixletter{\char\the\appendixno} -% We do the following for the sake of pdftex, which needs the actual -% letter in the expansion, not just typeset. -\def\appendixletter{% - \ifnum\appendixno=`A A% - \else\ifnum\appendixno=`B B% - \else\ifnum\appendixno=`C C% - \else\ifnum\appendixno=`D D% - \else\ifnum\appendixno=`E E% - \else\ifnum\appendixno=`F F% - \else\ifnum\appendixno=`G G% - \else\ifnum\appendixno=`H H% - \else\ifnum\appendixno=`I I% - \else\ifnum\appendixno=`J J% - \else\ifnum\appendixno=`K K% - \else\ifnum\appendixno=`L L% - \else\ifnum\appendixno=`M M% - \else\ifnum\appendixno=`N N% - \else\ifnum\appendixno=`O O% - \else\ifnum\appendixno=`P P% - \else\ifnum\appendixno=`Q Q% - \else\ifnum\appendixno=`R R% - \else\ifnum\appendixno=`S S% - \else\ifnum\appendixno=`T T% - \else\ifnum\appendixno=`U U% - \else\ifnum\appendixno=`V V% - \else\ifnum\appendixno=`W W% - \else\ifnum\appendixno=`X X% - \else\ifnum\appendixno=`Y Y% - \else\ifnum\appendixno=`Z Z% - % The \the is necessary, despite appearances, because \appendixletter is - % expanded while writing the .toc file. \char\appendixno is not - % expandable, thus it is written literally, thus all appendixes come out - % with the same letter (or @) in the toc without it. - \else\char\the\appendixno - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} - -% Each @chapter defines this as the name of the chapter. -% page headings and footings can use it. @section does likewise. -\def\thischapter{} -\def\thissection{} - -\newcount\absseclevel % used to calculate proper heading level -\newcount\secbase\secbase=0 % @raise/lowersections modify this count - -% @raisesections: treat @section as chapter, @subsection as section, etc. -\def\raisesections{\global\advance\secbase by -1} -\let\up=\raisesections % original BFox name - -% @lowersections: treat @chapter as section, @section as subsection, etc. -\def\lowersections{\global\advance\secbase by 1} -\let\down=\lowersections % original BFox name - -% Choose a numbered-heading macro -% #1 is heading level if unmodified by @raisesections or @lowersections -% #2 is text for heading -\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \chapterzzz{#2} -\or - \seczzz{#2} -\or - \numberedsubseczzz{#2} -\or - \numberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \chapterzzz{#2} - \else - \numberedsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses appendix heading levels -\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \appendixzzz{#2} -\or - \appendixsectionzzz{#2} -\or - \appendixsubseczzz{#2} -\or - \appendixsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \appendixzzz{#2} - \else - \appendixsubsubseczzz{#2} - \fi -\fi -} - -% like \numhead, but chooses numberless heading levels -\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1 -\ifcase\absseclevel - \unnumberedzzz{#2} -\or - \unnumberedseczzz{#2} -\or - \unnumberedsubseczzz{#2} -\or - \unnumberedsubsubseczzz{#2} -\else - \ifnum \absseclevel<0 - \unnumberedzzz{#2} - \else - \unnumberedsubsubseczzz{#2} - \fi -\fi -} - -% @chapter, @appendix, @unnumbered. -\def\thischaptername{No Chapter Title} -\outer\def\chapter{\parsearg\chapteryyy} -\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz -\def\chapterzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% - \chapmacro {#1}{\the\chapno}% - \gdef\thissection{#1}% - \gdef\thischaptername{#1}% - % We don't substitute the actual chapter name into \thischapter - % because we don't want its macros evaluated now. - \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% - \writetocentry{chap}{#1}{{\the\chapno}} - \donoderef - \global\let\section = \numberedsec - \global\let\subsection = \numberedsubsec - \global\let\subsubsection = \numberedsubsubsec -} - -% we use \chapno to avoid indenting back -\def\appendixbox#1{% - \setbox0 = \hbox{\putwordAppendix{} \the\chapno}% - \hbox to \wd0{#1\hss}} - -\outer\def\appendix{\parsearg\appendixyyy} -\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz -\def\appendixzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - \global\advance \appendixno by 1 - \message{\putwordAppendix\space \appendixletter}% - \chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}% - \gdef\thissection{#1}% - \gdef\thischaptername{#1}% - \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% - \writetocentry{appendix}{#1}{{\appendixletter}} - \appendixnoderef - \global\let\section = \appendixsec - \global\let\subsection = \appendixsubsec - \global\let\subsubsection = \appendixsubsubsec -} - -% @centerchap is like @unnumbered, but the heading is centered. -\outer\def\centerchap{\parsearg\centerchapyyy} -\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}} - -% @top is like @unnumbered. -\outer\def\top{\parsearg\unnumberedyyy} - -\outer\def\unnumbered{\parsearg\unnumberedyyy} -\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz -\def\unnumberedzzz #1{% - \secno=0 \subsecno=0 \subsubsecno=0 - % - % This used to be simply \message{#1}, but TeX fully expands the - % argument to \message. Therefore, if #1 contained @-commands, TeX - % expanded them. For example, in `@unnumbered The @cite{Book}', TeX - % expanded @cite (which turns out to cause errors because \cite is meant - % to be executed, not expanded). - % - % Anyway, we don't want the fully-expanded definition of @cite to appear - % as a result of the \message, we just want `@cite' itself. We use - % \the to achieve this: TeX expands \the only once, - % simply yielding the contents of . (We also do this for - % the toc entries.) - \toks0 = {#1}\message{(\the\toks0)}% - % - \unnumbchapmacro {#1}% - \gdef\thischapter{#1}\gdef\thissection{#1}% - \writetocentry{unnumbchap}{#1}{{\the\chapno}} - \unnumbnoderef - \global\let\section = \unnumberedsec - \global\let\subsection = \unnumberedsubsec - \global\let\subsubsection = \unnumberedsubsubsec -} - -% Sections. -\outer\def\numberedsec{\parsearg\secyyy} -\def\secyyy #1{\numhead1{#1}} % normally calls seczzz -\def\seczzz #1{% - \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % - \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% - \writetocentry{sec}{#1}{{\the\chapno}{\the\secno}} - \donoderef - \nobreak -} - -\outer\def\appendixsection{\parsearg\appendixsecyyy} -\outer\def\appendixsec{\parsearg\appendixsecyyy} -\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz -\def\appendixsectionzzz #1{% - \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % - \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% - \writetocentry{sec}{#1}{{\appendixletter}{\the\secno}} - \appendixnoderef - \nobreak -} - -\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} -\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz -\def\unnumberedseczzz #1{% - \plainsecheading {#1}\gdef\thissection{#1}% - \writetocentry{unnumbsec}{#1}{{\the\chapno}{\the\secno}} - \unnumbnoderef - \nobreak -} - -% Subsections. -\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} -\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz -\def\numberedsubseczzz #1{% - \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % - \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% - \writetocentry{subsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}} - \donoderef - \nobreak -} - -\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy} -\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz -\def\appendixsubseczzz #1{% - \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % - \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% - \writetocentry{subsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}} - \appendixnoderef - \nobreak -} - -\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} -\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz -\def\unnumberedsubseczzz #1{% - \plainsubsecheading {#1}\gdef\thissection{#1}% - \writetocentry{unnumbsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}} - \unnumbnoderef - \nobreak -} - -% Subsubsections. -\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} -\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz -\def\numberedsubsubseczzz #1{% - \gdef\thissection{#1}\global\advance \subsubsecno by 1 % - \subsubsecheading {#1} - {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% - \writetocentry{subsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}} - \donoderef - \nobreak -} - -\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy} -\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz -\def\appendixsubsubseczzz #1{% - \gdef\thissection{#1}\global\advance \subsubsecno by 1 % - \subsubsecheading {#1} - {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% - \writetocentry{subsubsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}} - \appendixnoderef - \nobreak -} - -\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} -\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz -\def\unnumberedsubsubseczzz #1{% - \plainsubsubsecheading {#1}\gdef\thissection{#1}% - \writetocentry{unnumbsubsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}} - \unnumbnoderef - \nobreak -} - -% These are variants which are not "outer", so they can appear in @ifinfo. -% Actually, they should now be obsolete; ordinary section commands should work. -\def\infotop{\parsearg\unnumberedzzz} -\def\infounnumbered{\parsearg\unnumberedzzz} -\def\infounnumberedsec{\parsearg\unnumberedseczzz} -\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz} -\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz} - -\def\infoappendix{\parsearg\appendixzzz} -\def\infoappendixsec{\parsearg\appendixseczzz} -\def\infoappendixsubsec{\parsearg\appendixsubseczzz} -\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz} - -\def\infochapter{\parsearg\chapterzzz} -\def\infosection{\parsearg\sectionzzz} -\def\infosubsection{\parsearg\subsectionzzz} -\def\infosubsubsection{\parsearg\subsubsectionzzz} - -% These macros control what the section commands do, according -% to what kind of chapter we are in (ordinary, appendix, or unnumbered). -% Define them by default for a numbered chapter. -\global\let\section = \numberedsec -\global\let\subsection = \numberedsubsec -\global\let\subsubsection = \numberedsubsubsec - -% Define @majorheading, @heading and @subheading - -% NOTE on use of \vbox for chapter headings, section headings, and such: -% 1) We use \vbox rather than the earlier \line to permit -% overlong headings to fold. -% 2) \hyphenpenalty is set to 10000 because hyphenation in a -% heading is obnoxious; this forbids it. -% 3) Likewise, headings look best if no \parindent is used, and -% if justification is not attempted. Hence \raggedright. - - -\def\majorheading{\parsearg\majorheadingzzz} -\def\majorheadingzzz #1{% - {\advance\chapheadingskip by 10pt \chapbreak }% - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -\def\chapheading{\parsearg\chapheadingzzz} -\def\chapheadingzzz #1{\chapbreak % - {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\penalty 200} - -% @heading, @subheading, @subsubheading. -\def\heading{\parsearg\plainsecheading} -\def\subheading{\parsearg\plainsubsecheading} -\def\subsubheading{\parsearg\plainsubsubsecheading} - -% These macros generate a chapter, section, etc. heading only -% (including whitespace, linebreaking, etc. around it), -% given all the information in convenient, parsed form. - -%%% Args are the skip and penalty (usually negative) -\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} - -\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} - -%%% Define plain chapter starts, and page on/off switching for it -% Parameter controlling skip before chapter headings (if needed) - -\newskip\chapheadingskip - -\def\chapbreak{\dobreak \chapheadingskip {-4000}} -\def\chappager{\par\vfill\supereject} -\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} - -\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} - -\def\CHAPPAGoff{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chapbreak -\global\let\pagealignmacro=\chappager} - -\def\CHAPPAGon{% -\global\let\contentsalignmacro = \chappager -\global\let\pchapsepmacro=\chappager -\global\let\pagealignmacro=\chappager -\global\def\HEADINGSon{\HEADINGSsingle}} - -\def\CHAPPAGodd{ -\global\let\contentsalignmacro = \chapoddpage -\global\let\pchapsepmacro=\chapoddpage -\global\let\pagealignmacro=\chapoddpage -\global\def\HEADINGSon{\HEADINGSdouble}} - -\CHAPPAGon - -\def\CHAPFplain{ -\global\let\chapmacro=\chfplain -\global\let\unnumbchapmacro=\unnchfplain -\global\let\centerchapmacro=\centerchfplain} - -% Plain chapter opening. -% #1 is the text, #2 the chapter number or empty if unnumbered. -\def\chfplain#1#2{% - \pchapsepmacro - {% - \chapfonts \rm - \def\chapnum{#2}% - \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}% - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 \centerparametersmaybe - \unhbox0 #1\par}% - }% - \nobreak\bigskip % no page break after a chapter title - \nobreak -} - -% Plain opening for unnumbered. -\def\unnchfplain#1{\chfplain{#1}{}} - -% @centerchap -- centered and unnumbered. -\let\centerparametersmaybe = \relax -\def\centerchfplain#1{{% - \def\centerparametersmaybe{% - \advance\rightskip by 3\rightskip - \leftskip = \rightskip - \parfillskip = 0pt - }% - \chfplain{#1}{}% -}} - -\CHAPFplain % The default - -\def\unnchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt\raggedright - \rm #1\hfill}}\bigskip \par\nobreak -} - -\def\chfopen #1#2{\chapoddpage {\chapfonts -\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% -\par\penalty 5000 % -} - -\def\centerchfopen #1{% -\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 - \parindent=0pt - \hfill {\rm #1}\hfill}}\bigskip \par\nobreak -} - -\def\CHAPFopen{ -\global\let\chapmacro=\chfopen -\global\let\unnumbchapmacro=\unnchfopen -\global\let\centerchapmacro=\centerchfopen} - - -% Section titles. -\newskip\secheadingskip -\def\secheadingbreak{\dobreak \secheadingskip {-1000}} -\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}} -\def\plainsecheading#1{\sectionheading{sec}{}{#1}} - -% Subsection titles. -\newskip \subsecheadingskip -\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}} -\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}} -\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}} - -% Subsubsection titles. -\let\subsubsecheadingskip = \subsecheadingskip -\let\subsubsecheadingbreak = \subsecheadingbreak -\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}} -\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}} - - -% Print any size section title. -% -% #1 is the section type (sec/subsec/subsubsec), #2 is the section -% number (maybe empty), #3 the text. -\def\sectionheading#1#2#3{% - {% - \expandafter\advance\csname #1headingskip\endcsname by \parskip - \csname #1headingbreak\endcsname - }% - {% - % Switch to the right set of fonts. - \csname #1fonts\endcsname \rm - % - % Only insert the separating space if we have a section number. - \def\secnum{#2}% - \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}% - % - \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright - \hangindent = \wd0 % zero if no section number - \unhbox0 #3}% - }% - % Add extra space after the heading -- either a line space or a - % paragraph space, whichever is more. (Some people like to set - % \parskip to large values for some reason.) Don't allow stretch, though. - \nobreak - \ifdim\parskip>\normalbaselineskip - \kern\parskip - \else - \kern\normalbaselineskip - \fi - \nobreak -} - - -\message{toc,} -% Table of contents. -\newwrite\tocfile - -% Write an entry to the toc file, opening it if necessary. -% Called from @chapter, etc. We supply {\folio} at the end of the -% argument, which will end up as the last argument to the \...entry macro. -% -% Usage: \writetocentry{chap}{The Name of The Game}{{\the\chapno}} -% We open the .toc file for writing here instead of at @setfilename (or -% any other fixed time) so that @contents can be anywhere in the document. -% -\newif\iftocfileopened -\def\writetocentry#1#2#3{% - \iftocfileopened\else - \immediate\openout\tocfile = \jobname.toc - \global\tocfileopenedtrue - \fi - % - \iflinks - \toks0 = {#2}% - \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}#3{\folio}}}% - \temp - \fi - % - % Tell \shipout to create a page destination if we're doing pdf, which - % will be the target of the links in the table of contents. We can't - % just do it on every page because the title pages are numbered 1 and - % 2 (the page numbers aren't printed), and so are the first two pages - % of the document. Thus, we'd have two destinations named `1', and - % two named `2'. - \ifpdf \pdfmakepagedesttrue \fi -} - -\newskip\contentsrightmargin \contentsrightmargin=1in -\newcount\savepageno -\newcount\lastnegativepageno \lastnegativepageno = -1 - -% Finish up the main text and prepare to read what we've written -% to \tocfile. -% -\def\startcontents#1{% - % If @setchapternewpage on, and @headings double, the contents should - % start on an odd page, unlike chapters. Thus, we maintain - % \contentsalignmacro in parallel with \pagealignmacro. - % From: Torbjorn Granlund - \contentsalignmacro - \immediate\closeout\tocfile - % - % Don't need to put `Contents' or `Short Contents' in the headline. - % It is abundantly clear what they are. - \unnumbchapmacro{#1}\def\thischapter{}% - \savepageno = \pageno - \begingroup % Set up to handle contents files properly. - \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 - % We can't do this, because then an actual ^ in a section - % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. - %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi - \raggedbottom % Worry more about breakpoints than the bottom. - \advance\hsize by -\contentsrightmargin % Don't use the full line length. - % - % Roman numerals for page numbers. - \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi -} - - -% Normal (long) toc. -\def\contents{% - \startcontents{\putwordTOC}% - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \pdfmakeoutlines - \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno -} - -% And just the chapters. -\def\summarycontents{% - \startcontents{\putwordShortTOC}% - % - \let\chapentry = \shortchapentry - \let\appendixentry = \shortappendixentry - \let\unnumbchapentry = \shortunnumberedentry - % We want a true roman here for the page numbers. - \secfonts - \let\rm=\shortcontrm \let\bf=\shortcontbf - \let\sl=\shortcontsl \let\tt=\shortconttt - \rm - \hyphenpenalty = 10000 - \advance\baselineskip by 1pt % Open it up a little. - \def\secentry ##1##2##3##4{} - \def\subsecentry ##1##2##3##4##5{} - \def\subsubsecentry ##1##2##3##4##5##6{} - \let\unnumbsecentry = \secentry - \let\unnumbsubsecentry = \subsecentry - \let\unnumbsubsubsecentry = \subsubsecentry - \openin 1 \jobname.toc - \ifeof 1 \else - \closein 1 - \input \jobname.toc - \fi - \vfill \eject - \contentsalignmacro % in case @setchapternewpage odd is in effect - \endgroup - \lastnegativepageno = \pageno - \global\pageno = \savepageno -} -\let\shortcontents = \summarycontents - -\ifpdf - \pdfcatalog{/PageMode /UseOutlines}% -\fi - -% These macros generate individual entries in the table of contents. -% The first argument is the chapter or section name. -% The last argument is the page number. -% The arguments in between are the chapter number, section number, ... - -% Chapters, in the main contents. -\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} -% -% Chapters, in the short toc. -% See comments in \dochapentry re vbox and related settings. -\def\shortchapentry#1#2#3{% - \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% -} - -% Appendices, in the main contents. -\def\appendixentry#1#2#3{% - \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}} -% -% Appendices, in the short toc. -\let\shortappendixentry = \shortchapentry - -% Typeset the label for a chapter or appendix for the short contents. -% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter. -% We could simplify the code here by writing out an \appendixentry -% command in the toc file for appendices, instead of using \chapentry -% for both, but it doesn't seem worth it. -% -\newdimen\shortappendixwidth -% -\def\shortchaplabel#1{% - % This space should be enough, since a single number is .5em, and the - % widest letter (M) is 1em, at least in the Computer Modern fonts. - % But use \hss just in case. - % (This space doesn't include the extra space that gets added after - % the label; that gets put in by \shortchapentry above.) - \dimen0 = 1em - \hbox to \dimen0{#1\hss}% -} - -% Unnumbered chapters. -\def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}} -\def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}} - -% Sections. -\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} -\def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}} - -% Subsections. -\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} -\def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}} - -% And subsubsections. -\def\subsubsecentry#1#2#3#4#5#6{% - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} -\def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}} - -% This parameter controls the indentation of the various levels. -\newdimen\tocindent \tocindent = 3pc - -% Now for the actual typesetting. In all these, #1 is the text and #2 is the -% page number. -% -% If the toc has to be broken over pages, we want it to be at chapters -% if at all possible; hence the \penalty. -\def\dochapentry#1#2{% - \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip - \begingroup - \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% - \endgroup - \nobreak\vskip .25\baselineskip plus.1\baselineskip -} - -\def\dosecentry#1#2{\begingroup - \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsecentry#1#2{\begingroup - \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -\def\dosubsubsecentry#1#2{\begingroup - \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% -\endgroup} - -% Final typesetting of a toc entry; we use the same \entry macro as for -% the index entries, but we want to suppress hyphenation here. (We -% can't do that in the \entry macro, since index entries might consist -% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) -\def\tocentry#1#2{\begingroup - \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks - % Do not use \turnoffactive in these arguments. Since the toc is - % typeset in cmr, characters such as _ would come out wrong; we - % have to do the usual translation tricks. - \entry{#1}{#2}% -\endgroup} - -% Space between chapter (or whatever) number and the title. -\def\labelspace{\hskip1em \relax} - -\def\dopageno#1{{\rm #1}} -\def\doshortpageno#1{{\rm #1}} - -\def\chapentryfonts{\secfonts \rm} -\def\secentryfonts{\textfonts} -\let\subsecentryfonts = \textfonts -\let\subsubsecentryfonts = \textfonts - - -\message{environments,} -% @foo ... @end foo. - -% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. -% -% Since these characters are used in examples, it should be an even number of -% \tt widths. Each \tt character is 1en, so two makes it 1em. -% -\def\point{$\star$} -\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} -\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} -\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} -\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} - -% The @error{} command. -% Adapted from the TeXbook's \boxit. -% -\newbox\errorbox -% -{\tentt \global\dimen0 = 3em}% Width of the box. -\dimen2 = .55pt % Thickness of rules -% The text. (`r' is open on the right, `e' somewhat less so on the left.) -\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} -% -\global\setbox\errorbox=\hbox to \dimen0{\hfil - \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. - \advance\hsize by -2\dimen2 % Rules. - \vbox{ - \hrule height\dimen2 - \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. - \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. - \kern3pt\vrule width\dimen2}% Space to right. - \hrule height\dimen2} - \hfil} -% -\def\error{\leavevmode\lower.7ex\copy\errorbox} - -% @tex ... @end tex escapes into raw Tex temporarily. -% One exception: @ is still an escape character, so that @end tex works. -% But \@ or @@ will get a plain tex @ character. - -\def\tex{\begingroup - \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 - \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 - \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie - \catcode `\%=14 - \catcode `\+=\other - \catcode `\"=\other - \catcode `\==\other - \catcode `\|=\other - \catcode `\<=\other - \catcode `\>=\other - \escapechar=`\\ - % - \let\b=\ptexb - \let\bullet=\ptexbullet - \let\c=\ptexc - \let\,=\ptexcomma - \let\.=\ptexdot - \let\dots=\ptexdots - \let\equiv=\ptexequiv - \let\!=\ptexexclam - \let\i=\ptexi - \let\{=\ptexlbrace - \let\+=\tabalign - \let\}=\ptexrbrace - \let\*=\ptexstar - \let\t=\ptext - % - \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% - \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% - \def\@{@}% -\let\Etex=\endgroup} - -% Define @lisp ... @end lisp. -% @lisp does a \begingroup so it can rebind things, -% including the definition of @end lisp (which normally is erroneous). - -% Amount to narrow the margins by for @lisp. -\newskip\lispnarrowing \lispnarrowing=0.4in - -% This is the definition that ^^M gets inside @lisp, @example, and other -% such environments. \null is better than a space, since it doesn't -% have any width. -\def\lisppar{\null\endgraf} - -% Make each space character in the input produce a normal interword -% space in the output. Don't allow a line break at this space, as this -% is used only in environments like @example, where each line of input -% should produce a line of output anyway. -% -{\obeyspaces % -\gdef\sepspaces{\obeyspaces\let =\tie}} - -% Define \obeyedspace to be our active space, whatever it is. This is -% for use in \parsearg. -{\sepspaces% -\global\let\obeyedspace= } - -% This space is always present above and below environments. -\newskip\envskipamount \envskipamount = 0pt - -% Make spacing and below environment symmetrical. We use \parskip here -% to help in doing that, since in @example-like environments \parskip -% is reset to zero; thus the \afterenvbreak inserts no space -- but the -% start of the next paragraph will insert \parskip. -% -\def\aboveenvbreak{{% - % =10000 instead of <10000 because of a special case in \itemzzz, q.v. - \ifnum \lastpenalty=10000 \else - \advance\envskipamount by \parskip - \endgraf - \ifdim\lastskip<\envskipamount - \removelastskip - % it's not a good place to break if the last penalty was \nobreak - % or better ... - \ifnum\lastpenalty>10000 \else \penalty-50 \fi - \vskip\envskipamount - \fi - \fi -}} - -\let\afterenvbreak = \aboveenvbreak - -% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. -\let\nonarrowing=\relax - -% @cartouche ... @end cartouche: draw rectangle w/rounded corners around -% environment contents. -\font\circle=lcircle10 -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip -\circthick=\fontdimen8\circle -% -\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth -\def\ctr{{\hskip 6pt\circle\char'010}} -\def\cbl{{\circle\char'012\hskip -6pt}} -\def\cbr{{\hskip 6pt\circle\char'011}} -\def\carttop{\hbox to \cartouter{\hskip\lskip - \ctl\leaders\hrule height\circthick\hfil\ctr - \hskip\rskip}} -\def\cartbot{\hbox to \cartouter{\hskip\lskip - \cbl\leaders\hrule height\circthick\hfil\cbr - \hskip\rskip}} -% -\newskip\lskip\newskip\rskip - -\def\cartouche{% -\par % can't be in the midst of a paragraph. -\begingroup - \lskip=\leftskip \rskip=\rightskip - \leftskip=0pt\rightskip=0pt %we want these *outside*. - \cartinner=\hsize \advance\cartinner by-\lskip - \advance\cartinner by-\rskip - \cartouter=\hsize - \advance\cartouter by 18.4pt % allow for 3pt kerns on either -% side, and for 6pt waste from -% each corner char, and rule thickness - \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip - % Flag to tell @lisp, etc., not to narrow margin. - \let\nonarrowing=\comment - \vbox\bgroup - \baselineskip=0pt\parskip=0pt\lineskip=0pt - \carttop - \hbox\bgroup - \hskip\lskip - \vrule\kern3pt - \vbox\bgroup - \hsize=\cartinner - \kern3pt - \begingroup - \baselineskip=\normbskip - \lineskip=\normlskip - \parskip=\normpskip - \vskip -\parskip -\def\Ecartouche{% - \endgroup - \kern3pt - \egroup - \kern3pt\vrule - \hskip\rskip - \egroup - \cartbot - \egroup -\endgroup -}} - - -% This macro is called at the beginning of all the @example variants, -% inside a group. -\def\nonfillstart{% - \aboveenvbreak - \inENV % This group ends at the end of the body - \hfuzz = 12pt % Don't be fussy - \sepspaces % Make spaces be word-separators rather than space tokens. - \let\par = \lisppar % don't ignore blank lines - \obeylines % each line of input is a line of output - \parskip = 0pt - \parindent = 0pt - \emergencystretch = 0pt % don't try to avoid overfull boxes - % @cartouche defines \nonarrowing to inhibit narrowing - % at next level down. - \ifx\nonarrowing\relax - \advance \leftskip by \lispnarrowing - \exdentamount=\lispnarrowing - \let\exdent=\nofillexdent - \let\nonarrowing=\relax - \fi -} - -% Define the \E... control sequence only if we are inside the particular -% environment, so the error checking in \end will work. -% -% To end an @example-like environment, we first end the paragraph (via -% \afterenvbreak's vertical glue), and then the group. That way we keep -% the zero \parskip that the environments set -- \parskip glue will be -% inserted at the beginning of the next paragraph in the document, after -% the environment. -% -\def\nonfillfinish{\afterenvbreak\endgroup} - -% @lisp: indented, narrowed, typewriter font. -\def\lisp{\begingroup - \nonfillstart - \let\Elisp = \nonfillfinish - \tt - \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. - \gobble % eat return -} - -% @example: Same as @lisp. -\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} - -% @smallexample and @smalllisp: use smaller fonts. -% Originally contributed by Pavel@xerox. -\def\smalllisp{\begingroup - \def\Esmalllisp{\nonfillfinish\endgroup}% - \def\Esmallexample{\nonfillfinish\endgroup}% - \smallexamplefonts - \lisp -} -\let\smallexample = \smalllisp - - -% @display: same as @lisp except keep current font. -% -\def\display{\begingroup - \nonfillstart - \let\Edisplay = \nonfillfinish - \gobble -} -% -% @smalldisplay: @display plus smaller fonts. -% -\def\smalldisplay{\begingroup - \def\Esmalldisplay{\nonfillfinish\endgroup}% - \smallexamplefonts \rm - \display -} - -% @format: same as @display except don't narrow margins. -% -\def\format{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eformat = \nonfillfinish - \gobble -} -% -% @smallformat: @format plus smaller fonts. -% -\def\smallformat{\begingroup - \def\Esmallformat{\nonfillfinish\endgroup}% - \smallexamplefonts \rm - \format -} - -% @flushleft (same as @format). -% -\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format} - -% @flushright. -% -\def\flushright{\begingroup - \let\nonarrowing = t - \nonfillstart - \let\Eflushright = \nonfillfinish - \advance\leftskip by 0pt plus 1fill - \gobble -} - - -% @quotation does normal linebreaking (hence we can't use \nonfillstart) -% and narrows the margins. -% -\def\quotation{% - \begingroup\inENV %This group ends at the end of the @quotation body - {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \parindent=0pt - % We have retained a nonzero parskip for the environment, since we're - % doing normal filling. So to avoid extra space below the environment... - \def\Equotation{\parskip = 0pt \nonfillfinish}% - % - % @cartouche defines \nonarrowing to inhibit narrowing at next level down. - \ifx\nonarrowing\relax - \advance\leftskip by \lispnarrowing - \advance\rightskip by \lispnarrowing - \exdentamount = \lispnarrowing - \let\nonarrowing = \relax - \fi -} - - -% LaTeX-like @verbatim...@end verbatim and @verb{...} -% If we want to allow any as delimiter, -% we need the curly braces so that makeinfo sees the @verb command, eg: -% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org -% -% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. -% -% [Knuth] p.344; only we need to do the other characters Texinfo sets -% active too. Otherwise, they get lost as the first character on a -% verbatim line. -\def\dospecials{% - \do\ \do\\\do\{\do\}\do\$\do\&% - \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% - \do\<\do\>\do\|\do\@\do+\do\"% -} -% -% [Knuth] p. 380 -\def\uncatcodespecials{% - \def\do##1{\catcode`##1=12}\dospecials} -% -% [Knuth] pp. 380,381,391 -% Disable Spanish ligatures ?` and !` of \tt font -\begingroup - \catcode`\`=\active\gdef`{\relax\lq} -\endgroup -% -% Setup for the @verb command. -% -% Eight spaces for a tab -\begingroup - \catcode`\^^I=\active - \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} -\endgroup -% -\def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim - \def\par{\leavevmode\endgraf}% - \catcode`\`=\active - \tabeightspaces - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces -} - -% Setup for the @verbatim environment -% -% Real tab expansion -\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount -% -\def\starttabbox{\setbox0=\hbox\bgroup} -\begingroup - \catcode`\^^I=\active - \gdef\tabexpand{% - \catcode`\^^I=\active - \def^^I{\leavevmode\egroup - \dimen0=\wd0 % the width so far, or since the previous tab - \divide\dimen0 by\tabw - \multiply\dimen0 by\tabw % compute previous multiple of \tabw - \advance\dimen0 by\tabw % advance to next multiple of \tabw - \wd0=\dimen0 \box0 \starttabbox - }% - } -\endgroup -\def\setupverbatim{% - % Easiest (and conventionally used) font for verbatim - \tt - \def\par{\leavevmode\egroup\box0\endgraf}% - \catcode`\`=\active - \tabexpand - % Respect line breaks, - % print special symbols as themselves, and - % make each space count - % must do in this order: - \obeylines \uncatcodespecials \sepspaces - \everypar{\starttabbox}% -} - -% Do the @verb magic: verbatim text is quoted by unique -% delimiter characters. Before first delimiter expect a -% right brace, after last delimiter expect closing brace: -% -% \def\doverb'{'#1'}'{#1} -% -% [Knuth] p. 382; only eat outer {} -\begingroup - \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12 - \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] -\endgroup -% -\def\verb{\begingroup\setupverb\doverb} -% -% -% Do the @verbatim magic: define the macro \doverbatim so that -% the (first) argument ends when '@end verbatim' is reached, ie: -% -% \def\doverbatim#1@end verbatim{#1} -% -% For Texinfo it's a lot easier than for LaTeX, -% because texinfo's \verbatim doesn't stop at '\end{verbatim}': -% we need not redefine '\', '{' and '}'. -% -% Inspired by LaTeX's verbatim command set [latex.ltx] -%% Include LaTeX hack for completeness -- never know -%% \begingroup -%% \catcode`|=0 \catcode`[=1 -%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active -%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[ -%% #1|endgroup|def|Everbatim[]|end[verbatim]] -%% |endgroup -% -\begingroup - \catcode`\ =\active - \obeylines % - % ignore everything up to the first ^^M, that's the newline at the end - % of the @verbatim input line itself. Otherwise we get an extra blank - % line in the output. - \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}% -\endgroup -% -\def\verbatim{% - \def\Everbatim{\nonfillfinish\endgroup}% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim\doverbatim -} - -% @verbatiminclude FILE - insert text of file in verbatim environment. -% -% Allow normal characters that we make active in the argument (a file name). -\def\verbatiminclude{% - \begingroup - \catcode`\\=\other - \catcode`~=\other - \catcode`^=\other - \catcode`_=\other - \catcode`|=\other - \catcode`<=\other - \catcode`>=\other - \catcode`+=\other - \parsearg\doverbatiminclude -} -\def\setupverbatiminclude{% - \begingroup - \nonfillstart - \advance\leftskip by -\defbodyindent - \begingroup\setupverbatim -} -% -\def\doverbatiminclude#1{% - % Restore active chars for included file. - \endgroup - \begingroup - \let\value=\expandablevalue - \def\thisfile{#1}% - \expandafter\expandafter\setupverbatiminclude\input\thisfile - \endgroup - \nonfillfinish - \endgroup -} - -% @copying ... @end copying. -% Save the text away for @insertcopying later. Many commands won't be -% allowed in this context, but that's ok. -% -% We save the uninterpreted tokens, rather than creating a box. -% Saving the text in a box would be much easier, but then all the -% typesetting commands (@smallbook, font changes, etc.) have to be done -% beforehand -- and a) we want @copying to be done first in the source -% file; b) letting users define the frontmatter in as flexible order as -% possible is very desirable. -% -\def\copying{\begingroup - % Define a command to swallow text until we reach `@end copying'. - % \ is the escape char in this texinfo.tex file, so it is the - % delimiter for the command; @ will be the escape char when we read - % it, but that doesn't matter. - \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}% - % - % We must preserve ^^M's in the input file; see \insertcopying below. - \catcode`\^^M = \active - \docopying -} - -% What we do to finish off the copying text. -% -\def\enddocopying{\endgroup\ignorespaces} - -% @insertcopying. Here we must play games with ^^M's. On the one hand, -% we need them to delimit commands such as `@end quotation', so they -% must be active. On the other hand, we certainly don't want every -% end-of-line to be a \par, as would happen with the normal active -% definition of ^^M. On the third hand, two ^^M's in a row should still -% generate a \par. -% -% Our approach is to make ^^M insert a space and a penalty1 normally; -% then it can also check if \lastpenalty=1. If it does, then manually -% do \par. -% -% This messes up the normal definitions of @c[omment], so we redefine -% it. Similarly for @ignore. (These commands are used in the gcc -% manual for man page generation.) -% -% Seems pretty fragile, most line-oriented commands will presumably -% fail, but for the limited use of getting the copying text (which -% should be quite simple) inserted, we can hope it's ok. -% -{\catcode`\^^M=\active % -\gdef\insertcopying{\begingroup % - \parindent = 0pt % looks wrong on title page - \def^^M{% - \ifnum \lastpenalty=1 % - \par % - \else % - \space \penalty 1 % - \fi % - }% - % - % Fix @c[omment] for catcode 13 ^^M's. - \def\c##1^^M{\ignorespaces}% - \let\comment = \c % - % - % Don't bother jumping through all the hoops that \doignore does, it - % would be very hard since the catcodes are already set. - \long\def\ignore##1\end ignore{\ignorespaces}% - % - \copyingtext % -\endgroup}% -} - -\message{defuns,} -% @defun etc. - -% Allow user to change definition object font (\df) internally -\def\setdeffont#1 {\csname DEF#1\endcsname} - -\newskip\defbodyindent \defbodyindent=.4in -\newskip\defargsindent \defargsindent=50pt -\newskip\deflastargmargin \deflastargmargin=18pt - -\newcount\parencount - -% We want ()&[] to print specially on the defun line. -% -\def\activeparens{% - \catcode`\(=\active \catcode`\)=\active - \catcode`\&=\active - \catcode`\[=\active \catcode`\]=\active -} - -% Make control sequences which act like normal parenthesis chars. -\let\lparen = ( \let\rparen = ) - -{\activeparens % Now, smart parens don't turn on until &foo (see \amprm) - -% Be sure that we always have a definition for `(', etc. For example, -% if the fn name has parens in it, \boldbrax will not be in effect yet, -% so TeX would otherwise complain about undefined control sequence. -\global\let(=\lparen \global\let)=\rparen -\global\let[=\lbrack \global\let]=\rbrack - -\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 } -\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} -% This is used to turn on special parens -% but make & act ordinary (given that it's active). -\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr} - -% Definitions of (, ) and & used in args for functions. -% This is the definition of ( outside of all parentheses. -\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested - \global\advance\parencount by 1 -} -% -% This is the definition of ( when already inside a level of parens. -\gdef\opnested{\char`\(\global\advance\parencount by 1 } -% -\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0. - % also in that case restore the outer-level definition of (. - \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi - \global\advance \parencount by -1 } -% If we encounter &foo, then turn on ()-hacking afterwards -\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ } -% -\gdef\normalparens{\boldbrax\let&=\ampnr} -} % End of definition inside \activeparens -%% These parens (in \boldbrax) actually are a little bolder than the -%% contained text. This is especially needed for [ and ] -\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 } -\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 } -\let\ampnr = \& -\def\lbrb{{\bf\char`\[}} -\def\rbrb{{\bf\char`\]}} - -% Active &'s sneak into the index arguments, so make sure it's defined. -{ - \catcode`& = \active - \global\let& = \ampnr -} - -% \defname, which formats the name of the @def (not the args). -% #1 is the function name. -% #2 is the type of definition, such as "Function". -% -\def\defname#1#2{% - % How we'll output the type name. Putting it in brackets helps - % distinguish it from the body text that may end up on the next line - % just below it. - \ifempty{#2}% - \def\defnametype{}% - \else - \def\defnametype{[\rm #2]}% - \fi - % - % Get the values of \leftskip and \rightskip as they were outside the @def... - \dimen2=\leftskip - \advance\dimen2 by -\defbodyindent - % - % Figure out values for the paragraph shape. - \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}% - \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line - \dimen1=\hsize \advance \dimen1 by -\defargsindent % size for continuations - \parshape 2 0in \dimen0 \defargsindent \dimen1 - % - % Output arg 2 ("Function" or some such) but stuck inside a box of - % width 0 so it does not interfere with linebreaking. - \noindent - % - {% Adjust \hsize to exclude the ambient margins, - % so that \rightline will obey them. - \advance \hsize by -\dimen2 - \dimen3 = 0pt % was -1.25pc - \rlap{\rightline{\defnametype\kern\dimen3}}% - }% - % - % Allow all lines to be underfull without complaint: - \tolerance=10000 \hbadness=10000 - \advance\leftskip by -\defbodyindent - \exdentamount=\defbodyindent - {\df #1}\enskip % output function name - % \defunargs will be called next to output the arguments, if any. -} - -% Common pieces to start any @def... -% #1 is the \E... control sequence to end the definition (which we define). -% #2 is the \...x control sequence (which our caller defines). -% #3 is the control sequence to process the header, such as \defunheader. -% -\def\parsebodycommon#1#2#3{% - \begingroup\inENV - % If there are two @def commands in a row, we'll have a \nobreak, - % which is there to keep the function description together with its - % header. But if there's nothing but headers, we want to allow a - % break after all. Check for penalty 10002 (inserted by - % \defargscommonending) instead of 10000, since the sectioning - % commands insert a \penalty10000, and we don't want to allow a break - % between a section heading and a defun. - \ifnum\lastpenalty=10002 \penalty0 \fi - \medbreak - % - % Define the \E... end token that this defining construct specifies - % so that it will exit this group. - \def#1{\endgraf\endgroup\medbreak}% - % - \parindent=0in - \advance\leftskip by \defbodyindent - \exdentamount=\defbodyindent -} - -% Common part of the \...x definitions. -% -\def\defxbodycommon{% - % As with \parsebodycommon above, allow line break if we have multiple - % x headers in a row. It's not a great place, though. - \ifnum\lastpenalty=10000 \penalty1000 \fi - % - \begingroup\obeylines -} - -% Process body of @defun, @deffn, @defmac, etc. -% -\def\defparsebody#1#2#3{% - \parsebodycommon{#1}{#2}{#3}% - \def#2{\defxbodycommon \activeparens \spacesplit#3}% - \catcode\equalChar=\active - \begingroup\obeylines\activeparens - \spacesplit#3% -} - -% #1, #2, #3 are the common arguments (see \parsebodycommon above). -% #4, delimited by the space, is the class name. -% -\def\defmethparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}% - \begingroup\obeylines\activeparens - % The \empty here prevents misinterpretation of a construct such as - % @deffn {whatever} {Enharmonic comma} - % See comments at \deftpparsebody, although in our case we don't have - % to remove the \empty afterwards, since it is empty. - \spacesplit{#3{#4}}\empty -} - -% Used for @deftypemethod and @deftypeivar. -% #1, #2, #3 are the common arguments (see \defparsebody). -% #4, delimited by a space, is the class name. -% #5 is the method's return type. -% -\def\deftypemethparsebody#1#2#3#4 #5 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}% - \begingroup\obeylines\activeparens - \spacesplit{#3{#4}{#5}}% -} - -% Used for @deftypeop. The change from \deftypemethparsebody is an -% extra argument at the beginning which is the `category', instead of it -% being the hardwired string `Method' or `Instance Variable'. We have -% to account for this both in the \...x definition and in parsing the -% input at hand. Thus also need a control sequence (passed as #5) for -% the \E... definition to assign the category name to. -% -\def\deftypeopparsebody#1#2#3#4#5 #6 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 ##3 {\def#4{##1}% - \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}% - \begingroup\obeylines\activeparens - \spacesplit{#3{#5}{#6}}% -} - -% For @defop. -\def\defopparsebody #1#2#3#4#5 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 {\def#4{##1}% - \defxbodycommon \activeparens \spacesplit{#3{##2}}}% - \begingroup\obeylines\activeparens - \spacesplit{#3{#5}}% -} - -% These parsing functions are similar to the preceding ones -% except that they do not make parens into active characters. -% These are used for "variables" since they have no arguments. -% -\def\defvarparsebody #1#2#3{% - \parsebodycommon{#1}{#2}{#3}% - \def#2{\defxbodycommon \spacesplit#3}% - \catcode\equalChar=\active - \begingroup\obeylines - \spacesplit#3% -} - -% @defopvar. -\def\defopvarparsebody #1#2#3#4#5 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 ##2 {\def#4{##1}% - \defxbodycommon \spacesplit{#3{##2}}}% - \begingroup\obeylines - \spacesplit{#3{#5}}% -} - -\def\defvrparsebody#1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}% - \begingroup\obeylines - \spacesplit{#3{#4}}% -} - -% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the -% type is just `struct', because we lose the braces in `{struct -% termios}' when \spacesplit reads its undelimited argument. Sigh. -% \let\deftpparsebody=\defvrparsebody -% -% So, to get around this, we put \empty in with the type name. That -% way, TeX won't find exactly `{...}' as an undelimited argument, and -% won't strip off the braces. -% -\def\deftpparsebody #1#2#3#4 {% - \parsebodycommon{#1}{#2}{#3}% - \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}% - \begingroup\obeylines - \spacesplit{\parsetpheaderline{#3{#4}}}\empty -} - -% Fine, but then we have to eventually remove the \empty *and* the -% braces (if any). That's what this does. -% -\def\removeemptybraces\empty#1\relax{#1} - -% After \spacesplit has done its work, this is called -- #1 is the final -% thing to call, #2 the type name (which starts with \empty), and #3 -% (which might be empty) the arguments. -% -\def\parsetpheaderline#1#2#3{% - #1{\removeemptybraces#2\relax}{#3}% -}% - -% Split up #2 (the rest of the input line) at the first space token. -% call #1 with two arguments: -% the first is all of #2 before the space token, -% the second is all of #2 after that space token. -% If #2 contains no space token, all of it is passed as the first arg -% and the second is passed as empty. -% -{\obeylines % - \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}% - \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{% - \ifx\relax #3% - #1{#2}{}% - \else % - #1{#2}{#3#4}% - \fi}% -} - -% Define @defun. - -% This is called to end the arguments processing for all the @def... commands. -% -\def\defargscommonending{% - \interlinepenalty = 10000 - \advance\rightskip by 0pt plus 1fil - \endgraf - \nobreak\vskip -\parskip - \penalty 10002 % signal to \parsebodycommon. -} - -% This expands the args and terminates the paragraph they comprise. -% -\def\defunargs#1{\functionparens \sl -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Set the font temporarily and use \font in case \setfont made \tensl a macro. -{\tensl\hyphenchar\font=0}% -#1% -{\tensl\hyphenchar\font=45}% -\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% - \defargscommonending -} - -\def\deftypefunargs #1{% -% Expand, preventing hyphenation at `-' chars. -% Note that groups don't affect changes in \hyphenchar. -% Use \boldbraxnoamp, not \functionparens, so that & is not special. -\boldbraxnoamp -\tclose{#1}% avoid \code because of side effects on active chars - \defargscommonending -} - -% Do complete processing of one @defun or @defunx line already parsed. - -% @deffn Command forward-char nchars - -\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader} - -\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% -\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defun == @deffn Function - -\def\defun{\defparsebody\Edefun\defunx\defunheader} - -\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDeffunc}% -\defunargs {#2}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @deftypefun int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} - -% #1 is the data type. #2 is the name and args. -\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} -% #1 is the data type, #2 the name, #3 the args. -\def\deftypefunheaderx #1#2 #3\relax{% -\doind {fn}{\code{#2}}% Make entry in function index -\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% -\deftypefunargs {#3}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) - -\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} - -% \defheaderxcond#1\relax$.$ -% puts #1 in @code, followed by a space, but does nothing if #1 is null. -\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi} - -% #1 is the classification. #2 is the data type. #3 is the name and args. -\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} -% #1 is the classification, #2 the data type, #3 the name, #4 the args. -\def\deftypefnheaderx #1#2#3 #4\relax{% -\doind {fn}{\code{#3}}% Make entry in function index -\begingroup -\normalparens % notably, turn off `&' magic, which prevents -% at least some C++ text from working -\defname {\defheaderxcond#2\relax$.$#3}{#1}% -\deftypefunargs {#4}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defmac == @deffn Macro - -\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} - -\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDefmac}% -\defunargs {#2}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defspec == @deffn Special Form - -\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader} - -\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index -\begingroup\defname {#1}{\putwordDefspec}% -\defunargs {#2}\endgroup % -\catcode\equalChar=\other % Turn off change made in \defparsebody -} - -% @defop CATEGORY CLASS OPERATION ARG... -% -\def\defop #1 {\def\defoptype{#1}% -\defopparsebody\Edefop\defopx\defopheader\defoptype} -% -\def\defopheader#1#2#3{% - \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% function index entry - \begingroup - \defname{#2}{\defoptype\ \putwordon\ #1}% - \defunargs{#3}% - \endgroup -} - -% @deftypeop CATEGORY CLASS TYPE OPERATION ARG... -% -\def\deftypeop #1 {\def\deftypeopcategory{#1}% - \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader - \deftypeopcategory} -% -% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. -\def\deftypeopheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3} - {\deftypeopcategory\ \putwordon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup -} - -% @deftypemethod CLASS TYPE METHOD ARG... -% -\def\deftypemethod{% - \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} -% -% #1 is the class name, #2 the data type, #3 the method name, #4 the args. -\def\deftypemethodheader#1#2#3#4{% - \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}% - \deftypefunargs{#4}% - \endgroup -} - -% @deftypeivar CLASS TYPE VARNAME -% -\def\deftypeivar{% - \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} -% -% #1 is the class name, #2 the data type, #3 the variable name. -\def\deftypeivarheader#1#2#3{% - \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index - \begingroup - \defname{\defheaderxcond#2\relax$.$#3} - {\putwordInstanceVariableof\ \code{#1}}% - \defvarargs{#3}% - \endgroup -} - -% @defmethod == @defop Method -% -\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} -% -% #1 is the class name, #2 the method name, #3 the args. -\def\defmethodheader#1#2#3{% - \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index - \begingroup - \defname{#2}{\putwordMethodon\ \code{#1}}% - \defunargs{#3}% - \endgroup -} - -% @defcv {Class Option} foo-class foo-flag - -\def\defcv #1 {\def\defcvtype{#1}% -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype} - -\def\defcvarheader #1#2#3{% - \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% variable index entry - \begingroup - \defname{#2}{\defcvtype\ \putwordof\ #1}% - \defvarargs{#3}% - \endgroup -} - -% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME -% -\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader} -% -\def\defivarheader#1#2#3{% - \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% entry in var index - \begingroup - \defname{#2}{\putwordInstanceVariableof\ #1}% - \defvarargs{#3}% - \endgroup -} - -% @defvar -% First, define the processing that is wanted for arguments of @defvar. -% This is actually simple: just print them in roman. -% This must expand the args and terminate the paragraph they make up -\def\defvarargs #1{\normalparens #1% - \defargscommonending -} - -% @defvr Counter foo-count - -\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader} - -\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}% -\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup} - -% @defvar == @defvr Variable - -\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader} - -\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{\putwordDefvar}% -\defvarargs {#2}\endgroup % -} - -% @defopt == @defvr {User Option} - -\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader} - -\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index -\begingroup\defname {#1}{\putwordDefopt}% -\defvarargs {#2}\endgroup % -} - -% @deftypevar int foobar - -\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} - -% #1 is the data type. #2 is the name, perhaps followed by text that -% is actually part of the data type, which should not be put into the index. -\def\deftypevarheader #1#2{% -\dovarind#2 \relax% Make entry in variables index -\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% - \defargscommonending -\endgroup} -\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} - -% @deftypevr {Global Flag} int enable - -\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} - -\def\deftypevrheader #1#2#3{\dovarind#3 \relax% -\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} - \defargscommonending -\endgroup} - -% Now define @deftp -% Args are printed in bold, a slight difference from @defvar. - -\def\deftpargs #1{\bf \defvarargs{#1}} - -% @deftp Class window height width ... - -\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader} - -\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}% -\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup} - -% These definitions are used if you use @defunx (etc.) -% anywhere other than immediately after a @defun or @defunx. -% -\def\defcvx#1 {\errmessage{@defcvx in invalid context}} -\def\deffnx#1 {\errmessage{@deffnx in invalid context}} -\def\defivarx#1 {\errmessage{@defivarx in invalid context}} -\def\defmacx#1 {\errmessage{@defmacx in invalid context}} -\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}} -\def\defoptx #1 {\errmessage{@defoptx in invalid context}} -\def\defopx#1 {\errmessage{@defopx in invalid context}} -\def\defspecx#1 {\errmessage{@defspecx in invalid context}} -\def\deftpx#1 {\errmessage{@deftpx in invalid context}} -\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}} -\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}} -\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}} -\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}} -\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}} -\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}} -\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}} -\def\defunx#1 {\errmessage{@defunx in invalid context}} -\def\defvarx#1 {\errmessage{@defvarx in invalid context}} -\def\defvrx#1 {\errmessage{@defvrx in invalid context}} - - -\message{macros,} -% @macro. - -% To do this right we need a feature of e-TeX, \scantokens, -% which we arrange to emulate with a temporary file in ordinary TeX. -\ifx\eTeXversion\undefined - \newwrite\macscribble - \def\scanmacro#1{% - \begingroup \newlinechar`\^^M - % Undo catcode changes of \startcontents and \doprintindex - \catcode`\@=0 \catcode`\\=\other \escapechar=`\@ - % Append \endinput to make sure that TeX does not see the ending newline. - \toks0={#1\endinput}% - \immediate\openout\macscribble=\jobname.tmp - \immediate\write\macscribble{\the\toks0}% - \immediate\closeout\macscribble - \let\xeatspaces\eatspaces - \input \jobname.tmp - \endgroup -} -\else -\def\scanmacro#1{% -\begingroup \newlinechar`\^^M -% Undo catcode changes of \startcontents and \doprintindex -\catcode`\@=0 \catcode`\\=\other \escapechar=`\@ -\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} -\fi - -\newcount\paramno % Count of parameters -\newtoks\macname % Macro name -\newif\ifrecursive % Is it recursive? -\def\macrolist{} % List of all defined macros in the form - % \do\macro1\do\macro2... - -% Utility routines. -% Thisdoes \let #1 = #2, except with \csnames. -\def\cslet#1#2{% -\expandafter\expandafter -\expandafter\let -\expandafter\expandafter -\csname#1\endcsname -\csname#2\endcsname} - -% Trim leading and trailing spaces off a string. -% Concepts from aro-bend problem 15 (see CTAN). -{\catcode`\@=11 -\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} -\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} -\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} -\def\unbrace#1{#1} -\unbrace{\gdef\trim@@@ #1 } #2@{#1} -} - -% Trim a single trailing ^^M off a string. -{\catcode`\^^M=\other \catcode`\Q=3% -\gdef\eatcr #1{\eatcra #1Q^^MQ}% -\gdef\eatcra#1^^MQ{\eatcrb#1Q}% -\gdef\eatcrb#1Q#2Q{#1}% -} - -% Macro bodies are absorbed as an argument in a context where -% all characters are catcode 10, 11 or 12, except \ which is active -% (as in normal texinfo). It is necessary to change the definition of \. - -% It's necessary to have hard CRs when the macro is executed. This is -% done by making ^^M (\endlinechar) catcode 12 when reading the macro -% body, and then making it the \newlinechar in \scanmacro. - -\def\macrobodyctxt{% - \catcode`\~=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other - \catcode`\{=\other - \catcode`\}=\other - \catcode`\@=\other - \catcode`\^^M=\other - \usembodybackslash} - -\def\macroargctxt{% - \catcode`\~=\other - \catcode`\^=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\+=\other - \catcode`\@=\other - \catcode`\\=\other} - -% \mbodybackslash is the definition of \ in @macro bodies. -% It maps \foo\ => \csname macarg.foo\endcsname => #N -% where N is the macro parameter number. -% We define \csname macarg.\endcsname to be \realbackslash, so -% \\ in macro replacement text gets you a backslash. - -{\catcode`@=0 @catcode`@\=@active - @gdef@usembodybackslash{@let\=@mbodybackslash} - @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} -} -\expandafter\def\csname macarg.\endcsname{\realbackslash} - -\def\macro{\recursivefalse\parsearg\macroxxx} -\def\rmacro{\recursivetrue\parsearg\macroxxx} - -\def\macroxxx#1{% - \getargs{#1}% now \macname is the macname and \argl the arglist - \ifx\argl\empty % no arguments - \paramno=0% - \else - \expandafter\parsemargdef \argl;% - \fi - \if1\csname ismacro.\the\macname\endcsname - \message{Warning: redefining \the\macname}% - \else - \expandafter\ifx\csname \the\macname\endcsname \relax - \else \errmessage{Macro name \the\macname\space already defined}\fi - \global\cslet{macsave.\the\macname}{\the\macname}% - \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% - % Add the macroname to \macrolist - \toks0 = \expandafter{\macrolist\do}% - \xdef\macrolist{\the\toks0 - \expandafter\noexpand\csname\the\macname\endcsname}% - \fi - \begingroup \macrobodyctxt - \ifrecursive \expandafter\parsermacbody - \else \expandafter\parsemacbody - \fi} - -\def\unmacro{\parsearg\dounmacro} -\def\dounmacro#1{% - \if1\csname ismacro.#1\endcsname - \global\cslet{#1}{macsave.#1}% - \global\expandafter\let \csname ismacro.#1\endcsname=0% - % Remove the macro name from \macrolist: - \begingroup - \expandafter\let\csname#1\endcsname \relax - \let\do\unmacrodo - \xdef\macrolist{\macrolist}% - \endgroup - \else - \errmessage{Macro #1 not defined}% - \fi -} - -% Called by \do from \dounmacro on each macro. The idea is to omit any -% macro definitions that have been changed to \relax. -% -\def\unmacrodo#1{% - \ifx#1\relax - % remove this - \else - \noexpand\do \noexpand #1% - \fi -} - -% This makes use of the obscure feature that if the last token of a -% is #, then the preceding argument is delimited by -% an opening brace, and that opening brace is not consumed. -\def\getargs#1{\getargsxxx#1{}} -\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} -\def\getmacname #1 #2\relax{\macname={#1}} -\def\getmacargs#1{\def\argl{#1}} - -% Parse the optional {params} list. Set up \paramno and \paramlist -% so \defmacro knows what to do. Define \macarg.blah for each blah -% in the params list, to be ##N where N is the position in that list. -% That gets used by \mbodybackslash (above). - -% We need to get `macro parameter char #' into several definitions. -% The technique used is stolen from LaTeX: let \hash be something -% unexpandable, insert that wherever you need a #, and then redefine -% it to # just before using the token list produced. -% -% The same technique is used to protect \eatspaces till just before -% the macro is used. - -\def\parsemargdef#1;{\paramno=0\def\paramlist{}% - \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} -\def\parsemargdefxxx#1,{% - \if#1;\let\next=\relax - \else \let\next=\parsemargdefxxx - \advance\paramno by 1% - \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname - {\xeatspaces{\hash\the\paramno}}% - \edef\paramlist{\paramlist\hash\the\paramno,}% - \fi\next} - -% These two commands read recursive and nonrecursive macro bodies. -% (They're different since rec and nonrec macros end differently.) - -\long\def\parsemacbody#1@end macro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% -\long\def\parsermacbody#1@end rmacro% -{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% - -% This defines the macro itself. There are six cases: recursive and -% nonrecursive macros of zero, one, and many arguments. -% Much magic with \expandafter here. -% \xdef is used so that macro definitions will survive the file -% they're defined in; @include reads the file inside a group. -\def\defmacro{% - \let\hash=##% convert placeholders to macro parameter chars - \ifrecursive - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\scanmacro{\temp}}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup\noexpand\scanmacro{\temp}}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{\egroup\noexpand\scanmacro{\temp}}% - \fi - \else - \ifcase\paramno - % 0 - \expandafter\xdef\csname\the\macname\endcsname{% - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \or % 1 - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \noexpand\braceorline - \expandafter\noexpand\csname\the\macname xxx\endcsname}% - \expandafter\xdef\csname\the\macname xxx\endcsname##1{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \else % many - \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup\noexpand\macroargctxt - \expandafter\noexpand\csname\the\macname xx\endcsname}% - \expandafter\xdef\csname\the\macname xx\endcsname##1{% - \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% - \expandafter\expandafter - \expandafter\xdef - \expandafter\expandafter - \csname\the\macname xxx\endcsname - \paramlist{% - \egroup - \noexpand\norecurse{\the\macname}% - \noexpand\scanmacro{\temp}\egroup}% - \fi - \fi} - -\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} - -% \braceorline decides whether the next nonwhitespace character is a -% {. If so it reads up to the closing }, if not, it reads the whole -% line. Whatever was read is then fed to the next control sequence -% as an argument (by \parsebrace or \parsearg) -\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} -\def\braceorlinexxx{% - \ifx\nchar\bgroup\else - \expandafter\parsearg - \fi \next} - -% We mant to disable all macros during \shipout so that they are not -% expanded by \write. -\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% - \edef\next{\macrolist}\expandafter\endgroup\next} - - -% @alias. -% We need some trickery to remove the optional spaces around the equal -% sign. Just make them active and then expand them all to nothing. -\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx} -\def\aliasxxx #1{\aliasyyy#1\relax} -\def\aliasyyy #1=#2\relax{\ignoreactivespaces -\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=% - \expandafter\noexpand\csname#2\endcsname}% -\expandafter\endgroup\next} - - -\message{cross references,} -% @xref etc. - -\newwrite\auxfile - -\newif\ifhavexrefs % True if xref values are known. -\newif\ifwarnedxrefs % True if we warned once that they aren't known. - -% @inforef is relatively simple. -\def\inforef #1{\inforefzzz #1,,,,**} -\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, - node \samp{\ignorespaces#1{}}} - -% @node's job is to define \lastnode. -\def\node{\ENVcheck\parsearg\nodezzz} -\def\nodezzz#1{\nodexxx [#1,]} -\def\nodexxx[#1,#2]{\gdef\lastnode{#1}} -\let\nwnode=\node -\let\lastnode=\relax - -% The sectioning commands (@chapter, etc.) call these. -\def\donoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Ysectionnumberandtype}% - \global\let\lastnode=\relax - \fi -} -\def\unnumbnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}% - \global\let\lastnode=\relax - \fi -} -\def\appendixnoderef{% - \ifx\lastnode\relax\else - \expandafter\expandafter\expandafter\setref{\lastnode}% - {Yappendixletterandtype}% - \global\let\lastnode=\relax - \fi -} - - -% @anchor{NAME} -- define xref target at arbitrary point. -% -\newcount\savesfregister -\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} -\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} -\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} - -% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an -% anchor), namely NAME-title (the corresponding @chapter/etc. name), -% NAME-pg (the page number), and NAME-snt (section number and type). -% Called from \foonoderef. -% -% We have to set \indexdummies so commands such as @code in a section -% title aren't expanded. It would be nicer not to expand the titles in -% the first place, but there's so many layers that that is hard to do. -% -% Likewise, use \turnoffactive so that punctuation chars such as underscore -% and backslash work in node names. -% -\def\setref#1#2{{% - \atdummies - \pdfmkdest{#1}% - % - \turnoffactive - \dosetq{#1-title}{Ytitle}% - \dosetq{#1-pg}{Ypagenumber}% - \dosetq{#1-snt}{#2}% -}} - -% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is -% the node name, #2 the name of the Info cross-reference, #3 the printed -% node name, #4 the name of the Info file, #5 the name of the printed -% manual. All but the node name can be omitted. -% -\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} -\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} -\def\ref#1{\xrefX[#1,,,,,,,]} -\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup - \unsepspaces - \def\printedmanual{\ignorespaces #5}% - \def\printednodename{\ignorespaces #3}% - \setbox1=\hbox{\printedmanual}% - \setbox0=\hbox{\printednodename}% - \ifdim \wd0 = 0pt - % No printed node name was explicitly given. - \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax - % Use the node name inside the square brackets. - \def\printednodename{\ignorespaces #1}% - \else - % Use the actual chapter/section title appear inside - % the square brackets. Use the real section title if we have it. - \ifdim \wd1 > 0pt - % It is in another manual, so we don't have it. - \def\printednodename{\ignorespaces #1}% - \else - \ifhavexrefs - % We know the real title if we have the xref values. - \def\printednodename{\refx{#1-title}{}}% - \else - % Otherwise just copy the Info node name. - \def\printednodename{\ignorespaces #1}% - \fi% - \fi - \fi - \fi - % - % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not - % insert empty discretionaries after hyphens, which means that it will - % not find a line break at a hyphen in a node names. Since some manuals - % are best written with fairly long node names, containing hyphens, this - % is a loss. Therefore, we give the text of the node name again, so it - % is as if TeX is seeing it for the first time. - \ifpdf - \leavevmode - \getfilename{#4}% - {\turnoffactive \otherbackslash - \ifnum\filenamelength>0 - \startlink attr{/Border [0 0 0]}% - goto file{\the\filename.pdf} name{#1}% - \else - \startlink attr{/Border [0 0 0]}% - goto name{#1}% - \fi - }% - \linkcolor - \fi - % - \ifdim \wd1 > 0pt - \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}% - \else - % _ (for example) has to be the character _ for the purposes of the - % control sequence corresponding to the node, but it has to expand - % into the usual \leavevmode...\vrule stuff for purposes of - % printing. So we \turnoffactive for the \refx-snt, back on for the - % printing, back off for the \refx-pg. - {\turnoffactive \otherbackslash - % Only output a following space if the -snt ref is nonempty; for - % @unnumbered and @anchor, it won't be. - \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% - \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi - }% - % [mynode], - [\printednodename],\space - % page 3 - \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}% - \fi - \endlink -\endgroup} - -% \dosetq is called from \setref to do the actual \write (\iflinks). -% -\def\dosetq#1#2{% - {\let\folio=0% - \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% - \iflinks \next \fi - }% -} - -% \internalsetq{foo}{page} expands into -% CHARACTERS @xrdef{foo}{...expansion of \page...} -\def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}} - -% Things to be expanded by \internalsetq. -% -\def\Ypagenumber{\folio} -\def\Ytitle{\thissection} -\def\Ynothing{} -\def\Ysectionnumberandtype{% - \ifnum\secno=0 - \putwordChapter@tie \the\chapno - \else \ifnum\subsecno=0 - \putwordSection@tie \the\chapno.\the\secno - \else \ifnum\subsubsecno=0 - \putwordSection@tie \the\chapno.\the\secno.\the\subsecno - \else - \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno - \fi\fi\fi -} - -\def\Yappendixletterandtype{% - \ifnum\secno=0 - \putwordAppendix@tie @char\the\appendixno{}% - \else \ifnum\subsecno=0 - \putwordSection@tie @char\the\appendixno.\the\secno - \else \ifnum\subsubsecno=0 - \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno - \else - \putwordSection@tie - @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno - \fi\fi\fi -} - -% Use TeX 3.0's \inputlineno to get the line number, for better error -% messages, but if we're using an old version of TeX, don't do anything. -% -\ifx\inputlineno\thisisundefined - \let\linenumber = \empty % Pre-3.0. -\else - \def\linenumber{\the\inputlineno:\space} -\fi - -% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. -% If its value is nonempty, SUFFIX is output afterward. -% -\def\refx#1#2{% - {% - \indexnofonts - \otherbackslash - \expandafter\global\expandafter\let\expandafter\thisrefX - \csname X#1\endcsname - }% - \ifx\thisrefX\relax - % If not defined, say something at least. - \angleleft un\-de\-fined\angleright - \iflinks - \ifhavexrefs - \message{\linenumber Undefined cross reference `#1'.}% - \else - \ifwarnedxrefs\else - \global\warnedxrefstrue - \message{Cross reference values unknown; you must run TeX again.}% - \fi - \fi - \fi - \else - % It's defined, so just use it. - \thisrefX - \fi - #2% Output the suffix in any case. -} - -% This is the macro invoked by entries in the aux file. -% -\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname} - -% Read the last existing aux file, if any. No error if none exists. -\def\readauxfile{\begingroup - \catcode`\^^@=\other - \catcode`\^^A=\other - \catcode`\^^B=\other - \catcode`\^^C=\other - \catcode`\^^D=\other - \catcode`\^^E=\other - \catcode`\^^F=\other - \catcode`\^^G=\other - \catcode`\^^H=\other - \catcode`\^^K=\other - \catcode`\^^L=\other - \catcode`\^^N=\other - \catcode`\^^P=\other - \catcode`\^^Q=\other - \catcode`\^^R=\other - \catcode`\^^S=\other - \catcode`\^^T=\other - \catcode`\^^U=\other - \catcode`\^^V=\other - \catcode`\^^W=\other - \catcode`\^^X=\other - \catcode`\^^Z=\other - \catcode`\^^[=\other - \catcode`\^^\=\other - \catcode`\^^]=\other - \catcode`\^^^=\other - \catcode`\^^_=\other - % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. - % in xref tags, i.e., node names. But since ^^e4 notation isn't - % supported in the main text, it doesn't seem desirable. Furthermore, - % that is not enough: for node names that actually contain a ^ - % character, we would end up writing a line like this: 'xrdef {'hat - % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first - % argument, and \hat is not an expandable control sequence. It could - % all be worked out, but why? Either we support ^^ or we don't. - % - % The other change necessary for this was to define \auxhat: - % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter - % and then to call \auxhat in \setq. - % - \catcode`\^=\other - % - % Special characters. Should be turned off anyway, but... - \catcode`\~=\other - \catcode`\[=\other - \catcode`\]=\other - \catcode`\"=\other - \catcode`\_=\other - \catcode`\|=\other - \catcode`\<=\other - \catcode`\>=\other - \catcode`\$=\other - \catcode`\#=\other - \catcode`\&=\other - \catcode`\%=\other - \catcode`+=\other % avoid \+ for paranoia even though we've turned it off - % - % Make the characters 128-255 be printing characters - {% - \count 1=128 - \def\loop{% - \catcode\count 1=\other - \advance\count 1 by 1 - \ifnum \count 1<256 \loop \fi - }% - }% - % - % Turn off \ as an escape so we do not lose on - % entries which were dumped with control sequences in their names. - % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^ - % Reference to such entries still does not work the way one would wish, - % but at least they do not bomb out when the aux file is read in. - \catcode`\\=\other - % - % @ is our escape character in .aux files. - \catcode`\{=1 - \catcode`\}=2 - \catcode`\@=0 - % - \openin 1 \jobname.aux - \ifeof 1 \else - \closein 1 - \input \jobname.aux - \global\havexrefstrue - \global\warnedobstrue - \fi - % Open the new aux file. TeX will close it automatically at exit. - \openout\auxfile=\jobname.aux -\endgroup} - - -% Footnotes. - -\newcount \footnoteno - -% The trailing space in the following definition for supereject is -% vital for proper filling; pages come out unaligned when you do a -% pagealignmacro call if that space before the closing brace is -% removed. (Generally, numeric constants should always be followed by a -% space to prevent strange expansion errors.) -\def\supereject{\par\penalty -20000\footnoteno =0 } - -% @footnotestyle is meaningful for info output only. -\let\footnotestyle=\comment - -\let\ptexfootnote=\footnote - -{\catcode `\@=11 -% -% Auto-number footnotes. Otherwise like plain. -\gdef\footnote{% - \global\advance\footnoteno by \@ne - \edef\thisfootno{$^{\the\footnoteno}$}% - % - % In case the footnote comes at the end of a sentence, preserve the - % extra spacing after we do the footnote number. - \let\@sf\empty - \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi - % - % Remove inadvertent blank space before typesetting the footnote number. - \unskip - \thisfootno\@sf - \dofootnote -}% - -% Don't bother with the trickery in plain.tex to not require the -% footnote text as a parameter. Our footnotes don't need to be so general. -% -% Oh yes, they do; otherwise, @ifset and anything else that uses -% \parseargline fail inside footnotes because the tokens are fixed when -% the footnote is read. --karl, 16nov96. -% -% The start of the footnote looks usually like this: -\gdef\startfootins{\insert\footins\bgroup} -% -% ... but this macro is redefined inside @multitable. -% -\gdef\dofootnote{% - \startfootins - % We want to typeset this text as a normal paragraph, even if the - % footnote reference occurs in (for example) a display environment. - % So reset some parameters. - \hsize=\pagewidth - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox - \floatingpenalty\@MM - \leftskip\z@skip - \rightskip\z@skip - \spaceskip\z@skip - \xspaceskip\z@skip - \parindent\defaultparindent - % - \smallfonts \rm - % - % Because we use hanging indentation in footnotes, a @noindent appears - % to exdent this text, so make it be a no-op. makeinfo does not use - % hanging indentation so @noindent can still be needed within footnote - % text after an @example or the like (not that this is good style). - \let\noindent = \relax - % - % Hang the footnote text off the number. Use \everypar in case the - % footnote extends for more than one paragraph. - \everypar = {\hang}% - \textindent{\thisfootno}% - % - % Don't crash into the line above the footnote text. Since this - % expands into a box, it must come within the paragraph, lest it - % provide a place where TeX can split the footnote. - \footstrut - \futurelet\next\fo@t -} -}%end \catcode `\@=11 - -% @| inserts a changebar to the left of the current line. It should -% surround any changed text. This approach does *not* work if the -% change spans more than two lines of output. To handle that, we would -% have adopt a much more difficult approach (putting marks into the main -% vertical list for the beginning and end of each change). -% -\def\|{% - % \vadjust can only be used in horizontal mode. - \leavevmode - % - % Append this vertical mode material after the current line in the output. - \vadjust{% - % We want to insert a rule with the height and depth of the current - % leading; that is exactly what \strutbox is supposed to record. - \vskip-\baselineskip - % - % \vadjust-items are inserted at the left edge of the type. So - % the \llap here moves out into the left-hand margin. - \llap{% - % - % For a thicker or thinner bar, change the `1pt'. - \vrule height\baselineskip width1pt - % - % This is the space between the bar and the text. - \hskip 12pt - }% - }% -} - -% For a final copy, take out the rectangles -% that mark overfull boxes (in case you have decided -% that the text looks ok even though it passes the margin). -% -\def\finalout{\overfullrule=0pt} - -% @image. We use the macros from epsf.tex to support this. -% If epsf.tex is not installed and @image is used, we complain. -% -% Check for and read epsf.tex up front. If we read it only at @image -% time, we might be inside a group, and then its definitions would get -% undone and the next image would fail. -\openin 1 = epsf.tex -\ifeof 1 \else - \closein 1 - % Do not bother showing banner with epsf.tex v2.7k (available in - % doc/epsf.tex and on ctan). - \def\epsfannounce{\toks0 = }% - \input epsf.tex -\fi -% -% We will only complain once about lack of epsf.tex. -\newif\ifwarnednoepsf -\newhelp\noepsfhelp{epsf.tex must be installed for images to - work. It is also included in the Texinfo distribution, or you can get - it from ftp://tug.org/tex/epsf.tex.} -% -\def\image#1{% - \ifx\epsfbox\undefined - \ifwarnednoepsf \else - \errhelp = \noepsfhelp - \errmessage{epsf.tex not found, images will be ignored}% - \global\warnednoepsftrue - \fi - \else - \imagexxx #1,,,,,\finish - \fi -} -% -% Arguments to @image: -% #1 is (mandatory) image filename; we tack on .eps extension. -% #2 is (optional) width, #3 is (optional) height. -% #4 is (ignored optional) html alt text. -% #5 is (ignored optional) extension. -% #6 is just the usual extra ignored arg for parsing this stuff. -\newif\ifimagevmode -\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup - \catcode`\^^M = 5 % in case we're inside an example - \normalturnoffactive % allow _ et al. in names - % If the image is by itself, center it. - \ifvmode - \imagevmodetrue - \nobreak\bigskip - % Usually we'll have text after the image which will insert - % \parskip glue, so insert it here too to equalize the space - % above and below. - \nobreak\vskip\parskip - \nobreak - \line\bgroup\hss - \fi - % - % Output the image. - \ifpdf - \dopdfimage{#1}{#2}{#3}% - \else - % \epsfbox itself resets \epsf?size at each figure. - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi - \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi - \epsfbox{#1.eps}% - \fi - % - \ifimagevmode \hss \egroup \bigbreak \fi % space after the image -\endgroup} - - -\message{localization,} -% and i18n. - -% @documentlanguage is usually given very early, just after -% @setfilename. If done too late, it may not override everything -% properly. Single argument is the language abbreviation. -% It would be nice if we could set up a hyphenation file here. -% -\def\documentlanguage{\parsearg\dodocumentlanguage} -\def\dodocumentlanguage#1{% - \tex % read txi-??.tex file in plain TeX. - % Read the file if it exists. - \openin 1 txi-#1.tex - \ifeof1 - \errhelp = \nolanghelp - \errmessage{Cannot read language file txi-#1.tex}% - \let\temp = \relax - \else - \def\temp{\input txi-#1.tex }% - \fi - \temp - \endgroup -} -\newhelp\nolanghelp{The given language definition file cannot be found or -is empty. Maybe you need to install it? In the current directory -should work if nowhere else does.} - - -% @documentencoding should change something in TeX eventually, most -% likely, but for now just recognize it. -\let\documentencoding = \comment - - -% Page size parameters. -% -\newdimen\defaultparindent \defaultparindent = 15pt - -\chapheadingskip = 15pt plus 4pt minus 2pt -\secheadingskip = 12pt plus 3pt minus 2pt -\subsecheadingskip = 9pt plus 2pt minus 2pt - -% Prevent underfull vbox error messages. -\vbadness = 10000 - -% Don't be so finicky about underfull hboxes, either. -\hbadness = 2000 - -% Following George Bush, just get rid of widows and orphans. -\widowpenalty=10000 -\clubpenalty=10000 - -% Use TeX 3.0's \emergencystretch to help line breaking, but if we're -% using an old version of TeX, don't do anything. We want the amount of -% stretch added to depend on the line length, hence the dependence on -% \hsize. We call this whenever the paper size is set. -% -\def\setemergencystretch{% - \ifx\emergencystretch\thisisundefined - % Allow us to assign to \emergencystretch anyway. - \def\emergencystretch{\dimen0}% - \else - \emergencystretch = .15\hsize - \fi -} - -% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; -% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8) -% physical page width. -% -% We also call \setleading{\textleading}, so the caller should define -% \textleading. The caller should also set \parskip. -% -\def\internalpagesizes#1#2#3#4#5#6#7#8{% - \voffset = #3\relax - \topskip = #6\relax - \splittopskip = \topskip - % - \vsize = #1\relax - \advance\vsize by \topskip - \outervsize = \vsize - \advance\outervsize by 2\topandbottommargin - \pageheight = \vsize - % - \hsize = #2\relax - \outerhsize = \hsize - \advance\outerhsize by 0.5in - \pagewidth = \hsize - % - \normaloffset = #4\relax - \bindingoffset = #5\relax - % - \ifpdf - \pdfpageheight #7\relax - \pdfpagewidth #8\relax - \fi - % - \setleading{\textleading} - % - \parindent = \defaultparindent - \setemergencystretch -} - -% @letterpaper (the default). -\def\letterpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % If page is nothing but text, make it come out even. - \internalpagesizes{46\baselineskip}{6in}% - {\voffset}{.25in}% - {\bindingoffset}{36pt}% - {11in}{8.5in}% -}} - -% Use @smallbook to reset parameters for 7x9.5 (or so) format. -\def\smallbook{{\globaldefs = 1 - \parskip = 2pt plus 1pt - \textleading = 12pt - % - \internalpagesizes{7.5in}{5in}% - {\voffset}{.25in}% - {\bindingoffset}{16pt}% - {9.25in}{7in}% - % - \lispnarrowing = 0.3in - \tolerance = 700 - \hfuzz = 1pt - \contentsrightmargin = 0pt - \defbodyindent = .5cm -}} - -% Use @afourpaper to print on European A4 paper. -\def\afourpaper{{\globaldefs = 1 - \parskip = 3pt plus 2pt minus 1pt - \textleading = 13.2pt - % - % Double-side printing via postscript on Laserjet 4050 - % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. - % To change the settings for a different printer or situation, adjust - % \normaloffset until the front-side and back-side texts align. Then - % do the same for \bindingoffset. You can set these for testing in - % your texinfo source file like this: - % @tex - % \global\normaloffset = -6mm - % \global\bindingoffset = 10mm - % @end tex - \internalpagesizes{51\baselineskip}{160mm} - {\voffset}{\hoffset}% - {\bindingoffset}{44pt}% - {297mm}{210mm}% - % - \tolerance = 700 - \hfuzz = 1pt - \contentsrightmargin = 0pt - \defbodyindent = 5mm -}} - -% Use @afivepaper to print on European A5 paper. -% From romildo@urano.iceb.ufop.br, 2 July 2000. -% He also recommends making @example and @lisp be small. -\def\afivepaper{{\globaldefs = 1 - \parskip = 2pt plus 1pt minus 0.1pt - \textleading = 12.5pt - % - \internalpagesizes{160mm}{120mm}% - {\voffset}{\hoffset}% - {\bindingoffset}{8pt}% - {210mm}{148mm}% - % - \lispnarrowing = 0.2in - \tolerance = 800 - \hfuzz = 1.2pt - \contentsrightmargin = 0pt - \defbodyindent = 2mm - \tableindent = 12mm -}} - -% A specific text layout, 24x15cm overall, intended for A4 paper. -\def\afourlatex{{\globaldefs = 1 - \afourpaper - \internalpagesizes{237mm}{150mm}% - {\voffset}{4.6mm}% - {\bindingoffset}{7mm}% - {297mm}{210mm}% - % - % Must explicitly reset to 0 because we call \afourpaper. - \globaldefs = 0 -}} - -% Use @afourwide to print on A4 paper in landscape format. -\def\afourwide{{\globaldefs = 1 - \afourpaper - \internalpagesizes{241mm}{165mm}% - {\voffset}{-2.95mm}% - {\bindingoffset}{7mm}% - {297mm}{210mm}% - \globaldefs = 0 -}} - -% @pagesizes TEXTHEIGHT[,TEXTWIDTH] -% Perhaps we should allow setting the margins, \topskip, \parskip, -% and/or leading, also. Or perhaps we should compute them somehow. -% -\def\pagesizes{\parsearg\pagesizesxxx} -\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish} -\def\pagesizesyyy#1,#2,#3\finish{{% - \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi - \globaldefs = 1 - % - \parskip = 3pt plus 2pt minus 1pt - \setleading{\textleading}% - % - \dimen0 = #1 - \advance\dimen0 by \voffset - % - \dimen2 = \hsize - \advance\dimen2 by \normaloffset - % - \internalpagesizes{#1}{\hsize}% - {\voffset}{\normaloffset}% - {\bindingoffset}{44pt}% - {\dimen0}{\dimen2}% -}} - -% Set default to letter. -% -\letterpaper - - -\message{and turning on texinfo input format.} - -% Define macros to output various characters with catcode for normal text. -\catcode`\"=\other -\catcode`\~=\other -\catcode`\^=\other -\catcode`\_=\other -\catcode`\|=\other -\catcode`\<=\other -\catcode`\>=\other -\catcode`\+=\other -\catcode`\$=\other -\def\normaldoublequote{"} -\def\normaltilde{~} -\def\normalcaret{^} -\def\normalunderscore{_} -\def\normalverticalbar{|} -\def\normalless{<} -\def\normalgreater{>} -\def\normalplus{+} -\def\normaldollar{$}%$ font-lock fix - -% This macro is used to make a character print one way in ttfont -% where it can probably just be output, and another way in other fonts, -% where something hairier probably needs to be done. -% -% #1 is what to print if we are indeed using \tt; #2 is what to print -% otherwise. Since all the Computer Modern typewriter fonts have zero -% interword stretch (and shrink), and it is reasonable to expect all -% typewriter fonts to have this, we can check that font parameter. -% -\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} - -% Same as above, but check for italic font. Actually this also catches -% non-italic slanted fonts since it is impossible to distinguish them from -% italic fonts. But since this is only used by $ and it uses \sl anyway -% this is not a problem. -\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} - -% Turn off all special characters except @ -% (and those which the user can use as if they were ordinary). -% Most of these we simply print from the \tt font, but for some, we can -% use math or other variants that look better in normal text. - -\catcode`\"=\active -\def\activedoublequote{{\tt\char34}} -\let"=\activedoublequote -\catcode`\~=\active -\def~{{\tt\char126}} -\chardef\hat=`\^ -\catcode`\^=\active -\def^{{\tt \hat}} - -\catcode`\_=\active -\def_{\ifusingtt\normalunderscore\_} -% Subroutine for the previous macro. -\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } - -\catcode`\|=\active -\def|{{\tt\char124}} -\chardef \less=`\< -\catcode`\<=\active -\def<{{\tt \less}} -\chardef \gtr=`\> -\catcode`\>=\active -\def>{{\tt \gtr}} -\catcode`\+=\active -\def+{{\tt \char 43}} -\catcode`\$=\active -\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix - -% Set up an active definition for =, but don't enable it most of the time. -{\catcode`\==\active -\global\def={{\tt \char 61}}} - -\catcode`+=\active -\catcode`\_=\active - -% If a .fmt file is being used, characters that might appear in a file -% name cannot be active until we have parsed the command line. -% So turn them off again, and have \everyjob (or @setfilename) turn them on. -% \otherifyactive is called near the end of this file. -\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} - -\catcode`\@=0 - -% \rawbackslashxx outputs one backslash character in current font, -% as in \char`\\. -\global\chardef\rawbackslashxx=`\\ - -% \rawbackslash defines an active \ to do \rawbackslashxx. -% \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. -{\catcode`\\=\active - @gdef@rawbackslash{@let\=@rawbackslashxx} - @gdef@otherbackslash{@let\=@realbackslash} -} - -% \realbackslash is an actual character `\' with catcode other. -{\catcode`\\=\other @gdef@realbackslash{\}} - -% \normalbackslash outputs one backslash in fixed width font. -\def\normalbackslash{{\tt\rawbackslashxx}} - -\catcode`\\=\active - -% Used sometimes to turn off (effectively) the active characters -% even after parsing them. -@def@turnoffactive{% - @let"=@normaldoublequote - @let\=@realbackslash - @let~=@normaltilde - @let^=@normalcaret - @let_=@normalunderscore - @let|=@normalverticalbar - @let<=@normalless - @let>=@normalgreater - @let+=@normalplus - @let$=@normaldollar %$ font-lock fix -} - -% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of -% the literal character `\'. (Thus, \ is not expandable when this is in -% effect.) -% -@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash} - -% Make _ and + \other characters, temporarily. -% This is canceled by @fixbackslash. -@otherifyactive - -% If a .fmt file is being used, we don't want the `\input texinfo' to show up. -% That is what \eatinput is for; after that, the `\' should revert to printing -% a backslash. -% -@gdef@eatinput input texinfo{@fixbackslash} -@global@let\ = @eatinput - -% On the other hand, perhaps the file did not have a `\input texinfo'. Then -% the first `\{ in the file would cause an error. This macro tries to fix -% that, assuming it is called before the first `\' could plausibly occur. -% Also back turn on active characters that might appear in the input -% file name, in case not using a pre-dumped format. -% -@gdef@fixbackslash{% - @ifx\@eatinput @let\ = @normalbackslash @fi - @catcode`+=@active - @catcode`@_=@active -} - -% Say @foo, not \foo, in error messages. -@escapechar = `@@ - -% These look ok in all fonts, so just make them not special. -@catcode`@& = @other -@catcode`@# = @other -@catcode`@% = @other - -@c Set initial fonts. -@textfonts -@rm - - -@c Local variables: -@c eval: (add-hook 'write-file-hooks 'time-stamp) -@c page-delimiter: "^\\\\message" -@c time-stamp-start: "def\\\\texinfoversion{" -@c time-stamp-format: "%:y-%02m-%02d.%02H" -@c time-stamp-end: "}" -@c End: diff --git a/execute_cmd.c b/execute_cmd.c index 64911f658..f39181a34 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -4930,8 +4930,10 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */ } +#if defined (JOB_CONTROL) /* May need to reinitialize more of the job control state here. */ kill_current_pipeline (); +#endif wl = make_word_list (make_word (NOTFOUND_HOOK), words); exit (execute_shell_function (hookf, wl)); diff --git a/include/._ansi_stdlib.h b/include/._ansi_stdlib.h new file mode 100644 index 000000000..132307e6c Binary files /dev/null and b/include/._ansi_stdlib.h differ diff --git a/lib/readline/._COPYING b/lib/readline/._COPYING new file mode 100644 index 000000000..2e02b0cd6 Binary files /dev/null and b/lib/readline/._COPYING differ diff --git a/lib/readline/._ansi_stdlib.h b/lib/readline/._ansi_stdlib.h new file mode 100644 index 000000000..75312a888 Binary files /dev/null and b/lib/readline/._ansi_stdlib.h differ diff --git a/lib/readline/COPYING b/lib/readline/COPYING deleted file mode 120000 index 7d29222e4..000000000 --- a/lib/readline/COPYING +++ /dev/null @@ -1 +0,0 @@ -../../COPYING \ No newline at end of file diff --git a/lib/readline/COPYING b/lib/readline/COPYING new file mode 100644 index 000000000..94a9ed024 --- /dev/null +++ b/lib/readline/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/lib/readline/ansi_stdlib.h b/lib/readline/ansi_stdlib.h deleted file mode 120000 index 0bfba502e..000000000 --- a/lib/readline/ansi_stdlib.h +++ /dev/null @@ -1 +0,0 @@ -../../include/ansi_stdlib.h \ No newline at end of file diff --git a/lib/readline/ansi_stdlib.h b/lib/readline/ansi_stdlib.h new file mode 100644 index 000000000..7dc2ee0cf --- /dev/null +++ b/lib/readline/ansi_stdlib.h @@ -0,0 +1,54 @@ +/* ansi_stdlib.h -- An ANSI Standard stdlib.h. */ +/* A minimal stdlib.h containing extern declarations for those functions + that bash uses. */ + +/* Copyright (C) 1993 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 !defined (_STDLIB_H_) +#define _STDLIB_H_ 1 + +/* String conversion functions. */ +extern int atoi (); + +extern double atof (); +extern double strtod (); + +/* Memory allocation functions. */ +/* Generic pointer type. */ +#ifndef PTR_T + +#if defined (__STDC__) +# define PTR_T void * +#else +# define PTR_T char * +#endif + +#endif /* PTR_T */ + +extern PTR_T malloc (); +extern PTR_T realloc (); +extern void free (); + +/* Other miscellaneous functions. */ +extern void abort (); +extern void exit (); +extern char *getenv (); +extern void qsort (); + +#endif /* _STDLIB_H */ diff --git a/lib/readline/doc/fdl.texi b/lib/readline/doc/fdl.texi deleted file mode 120000 index 68e5eb548..000000000 --- a/lib/readline/doc/fdl.texi +++ /dev/null @@ -1 +0,0 @@ -../../../doc/fdl.texi \ No newline at end of file diff --git a/lib/readline/doc/fdl.texi b/lib/readline/doc/fdl.texi new file mode 100644 index 000000000..8805f1a47 --- /dev/null +++ b/lib/readline/doc/fdl.texi @@ -0,0 +1,506 @@ +@c The GNU Free Documentation License. +@center Version 1.3, 3 November 2008 + +@c This file is intended to be included within another document, +@c hence no sectioning command or @node. + +@display +Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. +@uref{http://fsf.org/} + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +@end display + +@enumerate 0 +@item +PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document @dfn{free} in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of ``copyleft'', which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + +@item +APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The ``Document'', below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as ``you''. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A ``Modified Version'' of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A ``Secondary Section'' is a named appendix or a front-matter section +of the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall +subject (or to related matters) and contains nothing that could fall +directly within that overall subject. (Thus, if the Document is in +part a textbook of mathematics, a Secondary Section may not explain +any mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The ``Invariant Sections'' are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The ``Cover Texts'' are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A ``Transparent'' copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not ``Transparent'' is called ``Opaque''. + +Examples of suitable formats for Transparent copies include plain +@sc{ascii} without markup, Texinfo input format, La@TeX{} input +format, @acronym{SGML} or @acronym{XML} using a publicly available +@acronym{DTD}, and standard-conforming simple @acronym{HTML}, +PostScript or @acronym{PDF} designed for human modification. Examples +of transparent image formats include @acronym{PNG}, @acronym{XCF} and +@acronym{JPG}. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, @acronym{SGML} or +@acronym{XML} for which the @acronym{DTD} and/or processing tools are +not generally available, and the machine-generated @acronym{HTML}, +PostScript or @acronym{PDF} produced by some word processors for +output purposes only. + +The ``Title Page'' means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, ``Title Page'' means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +The ``publisher'' means any person or entity that distributes copies +of the Document to the public. + +A section ``Entitled XYZ'' means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as ``Acknowledgements'', +``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title'' +of such a section when you modify the Document means that it remains a +section ``Entitled XYZ'' according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + +@item +VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + +@item +COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + +@item +MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +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: + +@enumerate A +@item +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 +of the Document). You may use the same title as a previous version +if the original publisher of that version gives permission. + +@item +List on the Title Page, as authors, one or more persons or entities +responsible for authorship of the modifications in the Modified +Version, together with at least five of the principal authors of the +Document (all of its principal authors, if it has fewer than five), +unless they release you from this requirement. + +@item +State on the Title page the name of the publisher of the +Modified Version, as the publisher. + +@item +Preserve all the copyright notices of the Document. + +@item +Add an appropriate copyright notice for your modifications +adjacent to the other copyright notices. + +@item +Include, immediately after the copyright notices, a license notice +giving the public permission to use the Modified Version under the +terms of this License, in the form shown in the Addendum below. + +@item +Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document's license notice. + +@item +Include an unaltered copy of this License. + +@item +Preserve the section Entitled ``History'', Preserve its Title, and add +to it an item stating at least the title, year, new authors, and +publisher of the Modified Version as given on the Title Page. If +there is no section Entitled ``History'' in the Document, create one +stating the title, year, authors, and publisher of the Document as +given on its Title Page, then add an item describing the Modified +Version as stated in the previous sentence. + +@item +Preserve the network location, if any, given in the Document for +public access to a Transparent copy of the Document, and likewise +the network locations given in the Document for previous versions +it was based on. These may be placed in the ``History'' section. +You may omit a network location for a work that was published at +least four years before the Document itself, or if the original +publisher of the version it refers to gives permission. + +@item +For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve +the Title of the section, and preserve in the section all the +substance and tone of each of the contributor acknowledgements and/or +dedications given therein. + +@item +Preserve all the Invariant Sections of the Document, +unaltered in their text and in their titles. Section numbers +or the equivalent are not considered part of the section titles. + +@item +Delete any section Entitled ``Endorsements''. Such a section +may not be included in the Modified Version. + +@item +Do not retitle any existing section to be Entitled ``Endorsements'' or +to conflict in title with any Invariant Section. + +@item +Preserve any Warranty Disclaimers. +@end enumerate + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled ``Endorsements'', provided it contains +nothing but endorsements of your Modified Version by various +parties---for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + +@item +COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled ``History'' +in the various original documents, forming one section Entitled +``History''; likewise combine any sections Entitled ``Acknowledgements'', +and any sections Entitled ``Dedications''. You must delete all +sections Entitled ``Endorsements.'' + +@item +COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + +@item +AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an ``aggregate'' if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + +@item +TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled ``Acknowledgements'', +``Dedications'', or ``History'', the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + +@item +TERMINATION + +You may not copy, modify, sublicense, or distribute the Document +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, or distribute it is void, and +will automatically terminate your rights under this License. + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, receipt of a copy of some or all of the same material does +not give you any rights to use it. + +@item +FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +@uref{http://www.gnu.org/copyleft/}. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License ``or any later version'' applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. If the Document +specifies that a proxy can decide which future versions of this +License can be used, that proxy's public statement of acceptance of a +version permanently authorizes you to choose that version for the +Document. + +@item +RELICENSING + +``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any +World Wide Web server that publishes copyrightable works and also +provides prominent facilities for anybody to edit those works. A +public wiki that anybody can edit is an example of such a server. A +``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the +site means any set of copyrightable works thus published on the MMC +site. + +``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0 +license published by Creative Commons Corporation, a not-for-profit +corporation with a principal place of business in San Francisco, +California, as well as future copyleft versions of that license +published by that same organization. + +``Incorporate'' means to publish or republish a Document, in whole or +in part, as part of another Document. + +An MMC is ``eligible for relicensing'' if it is licensed under this +License, and if all works that were first published under this License +somewhere other than this MMC, and subsequently incorporated in whole +or in part into the MMC, (1) had no cover texts or invariant sections, +and (2) were thus incorporated prior to November 1, 2008. + +The operator of an MMC Site may republish an MMC contained in the site +under CC-BY-SA on the same site at any time before August 1, 2009, +provided the MMC is eligible for relicensing. + +@end enumerate + +@page +@heading ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +@smallexample +@group + Copyright (C) @var{year} @var{your name}. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover + Texts. A copy of the license is included in the section entitled ``GNU + Free Documentation License''. +@end group +@end smallexample + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the ``with@dots{}Texts.'' line with this: + +@smallexample +@group + with the Invariant Sections being @var{list their titles}, with + the Front-Cover Texts being @var{list}, and with the Back-Cover Texts + being @var{list}. +@end group +@end smallexample + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +@c Local Variables: +@c ispell-local-pdict: "ispell-dict" +@c End: + diff --git a/lib/readline/posixdir.h b/lib/readline/posixdir.h deleted file mode 120000 index 8b1638454..000000000 --- a/lib/readline/posixdir.h +++ /dev/null @@ -1 +0,0 @@ -../../include/posixdir.h \ No newline at end of file diff --git a/lib/readline/posixdir.h b/lib/readline/posixdir.h new file mode 100644 index 000000000..0921c5d75 --- /dev/null +++ b/lib/readline/posixdir.h @@ -0,0 +1,71 @@ +/* posixdir.h -- Posix directory reading includes and defines. */ + +/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This file should be included instead of or . */ + +#if !defined (_POSIXDIR_H_) +#define _POSIXDIR_H_ + +#if defined (HAVE_DIRENT_H) +# include +# if defined (HAVE_STRUCT_DIRENT_D_NAMLEN) +# define D_NAMLEN(d) ((d)->d_namlen) +# else +# define D_NAMLEN(d) (strlen ((d)->d_name)) +# endif /* !HAVE_STRUCT_DIRENT_D_NAMLEN */ +#else +# if defined (HAVE_SYS_NDIR_H) +# include +# endif +# if defined (HAVE_SYS_DIR_H) +# include +# endif +# if defined (HAVE_NDIR_H) +# include +# endif +# if !defined (dirent) +# define dirent direct +# endif /* !dirent */ +# define D_NAMLEN(d) ((d)->d_namlen) +#endif /* !HAVE_DIRENT_H */ + +/* The bash code fairly consistenly uses d_fileno; make sure it's available */ +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO) +# define d_fileno d_ino +#endif + +/* Posix does not require that the d_ino field be present, and some + systems do not provide it. */ +#if !defined (HAVE_STRUCT_DIRENT_D_INO) || defined (BROKEN_DIRENT_D_INO) +# define REAL_DIR_ENTRY(dp) 1 +#else +# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) +#endif /* _POSIX_SOURCE */ + +#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (BROKEN_DIRENT_D_INO) +# define D_INO_AVAILABLE +#endif + +/* Signal the rest of the code that it can safely use dirent.d_fileno */ +#if defined (D_INO_AVAILABLE) || defined (HAVE_STRUCT_DIRENT_D_FILENO) +# define D_FILENO_AVAILABLE 1 +#endif + +#endif /* !_POSIXDIR_H_ */ diff --git a/lib/readline/posixjmp.h b/lib/readline/posixjmp.h deleted file mode 120000 index b4d3ee74b..000000000 --- a/lib/readline/posixjmp.h +++ /dev/null @@ -1 +0,0 @@ -../../include/posixjmp.h \ No newline at end of file diff --git a/lib/readline/posixjmp.h b/lib/readline/posixjmp.h new file mode 100644 index 000000000..98cf7185e --- /dev/null +++ b/lib/readline/posixjmp.h @@ -0,0 +1,42 @@ +/* posixjmp.h -- wrapper for setjmp.h with changes for POSIX systems. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXJMP_H_ +#define _POSIXJMP_H_ + +#include + +/* This *must* be included *after* config.h */ + +#if defined (HAVE_POSIX_SIGSETJMP) +# define procenv_t sigjmp_buf +# if !defined (__OPENNT) +# undef setjmp +# define setjmp(x) sigsetjmp((x), 1) +# define setjmp_nosigs(x) sigsetjmp((x), 0) +# undef longjmp +# define longjmp(x, n) siglongjmp((x), (n)) +# endif /* !__OPENNT */ +#else +# define procenv_t jmp_buf +# define setjmp_nosigs setjmp +#endif + +#endif /* _POSIXJMP_H_ */ diff --git a/lib/readline/posixselect.h b/lib/readline/posixselect.h deleted file mode 120000 index 56a0a2c69..000000000 --- a/lib/readline/posixselect.h +++ /dev/null @@ -1 +0,0 @@ -../../include/posixselect.h \ No newline at end of file diff --git a/lib/readline/posixselect.h b/lib/readline/posixselect.h new file mode 100644 index 000000000..da6a1ace0 --- /dev/null +++ b/lib/readline/posixselect.h @@ -0,0 +1,47 @@ +/* posixselect.h -- wrapper for select(2) includes and definitions */ + +/* Copyright (C) 2009 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +#ifndef _POSIXSELECT_H_ +#define _POSIXSELECT_H_ + +#if defined (FD_SET) && !defined (HAVE_SELECT) +# define HAVE_SELECT 1 +#endif + +#if defined (HAVE_SELECT) +# if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX) +# include +# endif +#endif /* HAVE_SELECT */ +#if defined (HAVE_SYS_SELECT_H) +# include +#endif + +#ifndef USEC_PER_SEC +# define USEC_PER_SEC 1000000 +#endif + +#define USEC_TO_TIMEVAL(us, tv) \ +do { \ + (tv).tv_sec = (us) / USEC_PER_SEC; \ + (tv).tv_usec = (us) % USEC_PER_SEC; \ +} while (0) + +#endif /* _POSIXSELECT_H_ */ diff --git a/lib/readline/posixstat.h b/lib/readline/posixstat.h deleted file mode 120000 index c6164b792..000000000 --- a/lib/readline/posixstat.h +++ /dev/null @@ -1 +0,0 @@ -../../include/posixstat.h \ No newline at end of file diff --git a/lib/readline/posixstat.h b/lib/readline/posixstat.h new file mode 100644 index 000000000..3eb7f2906 --- /dev/null +++ b/lib/readline/posixstat.h @@ -0,0 +1,142 @@ +/* posixstat.h -- Posix stat(2) definitions for systems that + don't have them. */ + +/* Copyright (C) 1987,1991 Free Software Foundation, Inc. + + This file is part of GNU Bash, the Bourne Again SHell. + + Bash is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Bash is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bash. If not, see . +*/ + +/* This file should be included instead of . + It relies on the local sys/stat.h to work though. */ +#if !defined (_POSIXSTAT_H_) +#define _POSIXSTAT_H_ + +#include + +#if defined (STAT_MACROS_BROKEN) +# undef S_ISBLK +# undef S_ISCHR +# undef S_ISDIR +# undef S_ISFIFO +# undef S_ISREG +# undef S_ISLNK +#endif /* STAT_MACROS_BROKEN */ + +/* These are guaranteed to work only on isc386 */ +#if !defined (S_IFDIR) && !defined (S_ISDIR) +# define S_IFDIR 0040000 +#endif /* !S_IFDIR && !S_ISDIR */ +#if !defined (S_IFMT) +# define S_IFMT 0170000 +#endif /* !S_IFMT */ + +/* Posix 1003.1 5.6.1.1 file types */ + +/* Some Posix-wannabe systems define _S_IF* macros instead of S_IF*, but + do not provide the S_IS* macros that Posix requires. */ + +#if defined (_S_IFMT) && !defined (S_IFMT) +#define S_IFMT _S_IFMT +#endif +#if defined (_S_IFIFO) && !defined (S_IFIFO) +#define S_IFIFO _S_IFIFO +#endif +#if defined (_S_IFCHR) && !defined (S_IFCHR) +#define S_IFCHR _S_IFCHR +#endif +#if defined (_S_IFDIR) && !defined (S_IFDIR) +#define S_IFDIR _S_IFDIR +#endif +#if defined (_S_IFBLK) && !defined (S_IFBLK) +#define S_IFBLK _S_IFBLK +#endif +#if defined (_S_IFREG) && !defined (S_IFREG) +#define S_IFREG _S_IFREG +#endif +#if defined (_S_IFLNK) && !defined (S_IFLNK) +#define S_IFLNK _S_IFLNK +#endif +#if defined (_S_IFSOCK) && !defined (S_IFSOCK) +#define S_IFSOCK _S_IFSOCK +#endif + +/* Test for each symbol individually and define the ones necessary (some + systems claiming Posix compatibility define some but not all). */ + +#if defined (S_IFBLK) && !defined (S_ISBLK) +#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */ +#endif + +#if defined (S_IFCHR) && !defined (S_ISCHR) +#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */ +#endif + +#if defined (S_IFDIR) && !defined (S_ISDIR) +#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */ +#endif + +#if defined (S_IFREG) && !defined (S_ISREG) +#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */ +#endif + +#if defined (S_IFIFO) && !defined (S_ISFIFO) +#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */ +#endif + +#if defined (S_IFLNK) && !defined (S_ISLNK) +#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */ +#endif + +#if defined (S_IFSOCK) && !defined (S_ISSOCK) +#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */ +#endif + +/* + * POSIX 1003.1 5.6.1.2 File Modes + */ + +#if !defined (S_IRWXU) +# if !defined (S_IREAD) +# define S_IREAD 00400 +# define S_IWRITE 00200 +# define S_IEXEC 00100 +# endif /* S_IREAD */ + +# if !defined (S_IRUSR) +# define S_IRUSR S_IREAD /* read, owner */ +# define S_IWUSR S_IWRITE /* write, owner */ +# define S_IXUSR S_IEXEC /* execute, owner */ + +# define S_IRGRP (S_IREAD >> 3) /* read, group */ +# define S_IWGRP (S_IWRITE >> 3) /* write, group */ +# define S_IXGRP (S_IEXEC >> 3) /* execute, group */ + +# define S_IROTH (S_IREAD >> 6) /* read, other */ +# define S_IWOTH (S_IWRITE >> 6) /* write, other */ +# define S_IXOTH (S_IEXEC >> 6) /* execute, other */ +# endif /* !S_IRUSR */ + +# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) +# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) +# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +#endif /* !S_IRWXU */ + +/* These are non-standard, but are used in builtins.c$symbolic_umask() */ +#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH) +#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH) +#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH) + +#endif /* _POSIXSTAT_H_ */ diff --git a/lib/readline/shell.c b/lib/readline/shell.c index a1b56b5e3..6947295e5 100644 --- a/lib/readline/shell.c +++ b/lib/readline/shell.c @@ -59,6 +59,8 @@ #include "rlstdc.h" #include "rlshell.h" +#include "rldefs.h" + #include "xmalloc.h" #if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS) diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c deleted file mode 120000 index 439ceedeb..000000000 --- a/lib/readline/tilde.c +++ /dev/null @@ -1 +0,0 @@ -../tilde/tilde.c \ No newline at end of file diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c new file mode 100644 index 000000000..1c53a457d --- /dev/null +++ b/lib/readline/tilde.c @@ -0,0 +1,502 @@ +/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */ + +/* Copyright (C) 1988-2009 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 . +*/ + +#if defined (HAVE_CONFIG_H) +# include +#endif + +#if defined (HAVE_UNISTD_H) +# ifdef _MINIX +# include +# endif +# include +#endif + +#if defined (HAVE_STRING_H) +# include +#else /* !HAVE_STRING_H */ +# include +#endif /* !HAVE_STRING_H */ + +#if defined (HAVE_STDLIB_H) +# include +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include +#if defined (HAVE_PWD_H) +#include +#endif + +#include "tilde.h" + +#if defined (TEST) || defined (STATIC_MALLOC) +static void *xmalloc (), *xrealloc (); +#else +# include "xmalloc.h" +#endif /* TEST || STATIC_MALLOC */ + +#if !defined (HAVE_GETPW_DECLS) +# if defined (HAVE_GETPWUID) +extern struct passwd *getpwuid PARAMS((uid_t)); +# endif +# if defined (HAVE_GETPWNAM) +extern struct passwd *getpwnam PARAMS((const char *)); +# endif +#endif /* !HAVE_GETPW_DECLS */ + +#if !defined (savestring) +#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) +#endif /* !savestring */ + +#if !defined (NULL) +# if defined (__STDC__) +# define NULL ((void *) 0) +# else +# define NULL 0x0 +# endif /* !__STDC__ */ +#endif /* !NULL */ + +/* If being compiled as part of bash, these will be satisfied from + variables.o. If being compiled as part of readline, they will + be satisfied from shell.o. */ +extern char *sh_get_home_dir PARAMS((void)); +extern char *sh_get_env_value PARAMS((const char *)); + +/* The default value of tilde_additional_prefixes. This is set to + whitespace preceding a tilde so that simple programs which do not + perform any word separation get desired behaviour. */ +static const char *default_prefixes[] = + { " ~", "\t~", (const char *)NULL }; + +/* The default value of tilde_additional_suffixes. This is set to + whitespace or newline so that simple programs which do not + perform any word separation get desired behaviour. */ +static const char *default_suffixes[] = + { " ", "\n", (const char *)NULL }; + +/* If non-null, this contains the address of a function that the application + wants called before trying the standard tilde expansions. The function + is called with the text sans tilde, and returns a malloc()'ed string + which is the expansion, or a NULL pointer if the expansion fails. */ +tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL; + +/* If non-null, this contains the address of a function to call if the + standard meaning for expanding a tilde fails. The function is called + with the text (sans tilde, as in "foo"), and returns a malloc()'ed string + which is the expansion, or a NULL pointer if there is no expansion. */ +tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL; + +/* When non-null, this is a NULL terminated array of strings which + are duplicates for a tilde prefix. Bash uses this to expand + `=~' and `:~'. */ +char **tilde_additional_prefixes = (char **)default_prefixes; + +/* When non-null, this is a NULL terminated array of strings which match + the end of a username, instead of just "/". Bash sets this to + `:' and `=~'. */ +char **tilde_additional_suffixes = (char **)default_suffixes; + +static int tilde_find_prefix PARAMS((const char *, int *)); +static int tilde_find_suffix PARAMS((const char *)); +static char *isolate_tilde_prefix PARAMS((const char *, int *)); +static char *glue_prefix_and_suffix PARAMS((char *, const char *, int)); + +/* Find the start of a tilde expansion in STRING, and return the index of + 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; +{ + register int i, j, string_len; + register char **prefixes; + + prefixes = tilde_additional_prefixes; + + string_len = strlen (string); + *len = 0; + + if (*string == '\0' || *string == '~') + return (0); + + if (prefixes) + { + for (i = 0; i < string_len; i++) + { + for (j = 0; prefixes[j]; j++) + { + if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0) + { + *len = strlen (prefixes[j]) - 1; + return (i + *len); + } + } + } + } + return (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; +{ + register int i, j, string_len; + register char **suffixes; + + suffixes = tilde_additional_suffixes; + string_len = strlen (string); + + for (i = 0; i < string_len; i++) + { +#if defined (__MSDOS__) + if (string[i] == '/' || string[i] == '\\' /* || !string[i] */) +#else + if (string[i] == '/' /* || !string[i] */) +#endif + break; + + for (j = 0; suffixes && suffixes[j]; j++) + { + if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0) + return (i); + } + } + return (i); +} + +/* Return a new string which is the result of tilde expanding STRING. */ +char * +tilde_expand (string) + const char *string; +{ + char *result; + int result_size, result_index; + + result_index = result_size = 0; + if (result = strchr (string, '~')) + result = (char *)xmalloc (result_size = (strlen (string) + 16)); + else + result = (char *)xmalloc (result_size = (strlen (string) + 1)); + + /* Scan through STRING expanding tildes as we come to them. */ + while (1) + { + register int start, end; + char *tilde_word, *expansion; + int len; + + /* Make START point to the tilde which starts the expansion. */ + start = tilde_find_prefix (string, &len); + + /* Copy the skipped text into the result. */ + if ((result_index + start + 1) > result_size) + result = (char *)xrealloc (result, 1 + (result_size += (start + 20))); + + strncpy (result + result_index, string, start); + result_index += start; + + /* Advance STRING to the starting tilde. */ + string += start; + + /* Make END be the index of one after the last character of the + username. */ + end = tilde_find_suffix (string); + + /* If both START and END are zero, we are all done. */ + if (!start && !end) + break; + + /* Expand the entire tilde word, and copy it into RESULT. */ + tilde_word = (char *)xmalloc (1 + end); + strncpy (tilde_word, string, end); + tilde_word[end] = '\0'; + string += end; + + expansion = tilde_expand_word (tilde_word); + xfree (tilde_word); + + len = strlen (expansion); +#ifdef __CYGWIN__ + /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when + $HOME for `user' is /. On cygwin, // denotes a network drive. */ + if (len > 1 || *expansion != '/' || *string != '/') +#endif + { + if ((result_index + len + 1) > result_size) + result = (char *)xrealloc (result, 1 + (result_size += (len + 20))); + + strcpy (result + result_index, expansion); + result_index += len; + } + xfree (expansion); + } + + result[result_index] = '\0'; + + return (result); +} + +/* Take FNAME and return the tilde prefix we want expanded. If LENP is + 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; +{ + char *ret; + int i; + + ret = (char *)xmalloc (strlen (fname)); +#if defined (__MSDOS__) + for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++) +#else + for (i = 1; fname[i] && fname[i] != '/'; i++) +#endif + ret[i - 1] = fname[i]; + ret[i - 1] = '\0'; + if (lenp) + *lenp = i; + return ret; +} + +#if 0 +/* Public function to scan a string (FNAME) beginning with a tilde and find + the portion of the string that should be passed to the tilde expansion + 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; +{ + int x; + char *r; + + x = tilde_find_suffix (fname); + if (x == 0) + { + r = savestring (fname); + if (lenp) + *lenp = 0; + } + else + { + r = (char *)xmalloc (1 + x); + strncpy (r, fname, x); + r[x] = '\0'; + if (lenp) + *lenp = x; + } + + return r; +} +#endif + +/* 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; +{ + char *ret; + int plen, slen; + + plen = (prefix && *prefix) ? strlen (prefix) : 0; + slen = strlen (suffix + suffind); + ret = (char *)xmalloc (plen + slen + 1); + if (plen) + strcpy (ret, prefix); + strcpy (ret + plen, suffix + suffind); + return ret; +} + +/* Do the work of tilde expansion on FILENAME. FILENAME starts with a + 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; +{ + char *dirname, *expansion, *username; + int user_len; + struct passwd *user_entry; + + if (filename == 0) + return ((char *)NULL); + + if (*filename != '~') + return (savestring (filename)); + + /* A leading `~/' or a bare `~' is *always* translated to the value of + $HOME or the home directory of the current user, regardless of any + preexpansion hook. */ + if (filename[1] == '\0' || filename[1] == '/') + { + /* Prefix $HOME to the rest of the string. */ + expansion = sh_get_env_value ("HOME"); + + /* If there is no HOME variable, look up the directory in + the password database. */ + if (expansion == 0) + expansion = sh_get_home_dir (); + + return (glue_prefix_and_suffix (expansion, filename, 1)); + } + + username = isolate_tilde_prefix (filename, &user_len); + + if (tilde_expansion_preexpansion_hook) + { + expansion = (*tilde_expansion_preexpansion_hook) (username); + if (expansion) + { + dirname = glue_prefix_and_suffix (expansion, filename, user_len); + xfree (username); + xfree (expansion); + return (dirname); + } + } + + /* No preexpansion hook, or the preexpansion hook failed. Look in the + password database. */ + dirname = (char *)NULL; +#if defined (HAVE_GETPWNAM) + user_entry = getpwnam (username); +#else + user_entry = 0; +#endif + if (user_entry == 0) + { + /* If the calling program has a special syntax for expanding tildes, + and we couldn't find a standard expansion, then let them try. */ + if (tilde_expansion_failure_hook) + { + expansion = (*tilde_expansion_failure_hook) (username); + if (expansion) + { + dirname = glue_prefix_and_suffix (expansion, filename, user_len); + xfree (expansion); + } + } + /* If we don't have a failure hook, or if the failure hook did not + expand the tilde, return a copy of what we were passed. */ + if (dirname == 0) + dirname = savestring (filename); + } +#if defined (HAVE_GETPWENT) + else + dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len); +#endif + + xfree (username); +#if defined (HAVE_GETPWENT) + endpwent (); +#endif + return (dirname); +} + + +#if defined (TEST) +#undef NULL +#include + +main (argc, argv) + int argc; + char **argv; +{ + char *result, line[512]; + int done = 0; + + while (!done) + { + printf ("~expand: "); + fflush (stdout); + + if (!gets (line)) + strcpy (line, "done"); + + if ((strcmp (line, "done") == 0) || + (strcmp (line, "quit") == 0) || + (strcmp (line, "exit") == 0)) + { + done = 1; + break; + } + + result = tilde_expand (line); + printf (" --> %s\n", result); + free (result); + } + exit (0); +} + +static void memory_error_and_abort (); + +static void * +xmalloc (bytes) + size_t bytes; +{ + void *temp = (char *)malloc (bytes); + + if (!temp) + memory_error_and_abort (); + return (temp); +} + +static void * +xrealloc (pointer, bytes) + void *pointer; + int bytes; +{ + void *temp; + + if (!pointer) + temp = malloc (bytes); + else + temp = realloc (pointer, bytes); + + if (!temp) + memory_error_and_abort (); + + return (temp); +} + +static void +memory_error_and_abort () +{ + fprintf (stderr, "readline: out of virtual memory\n"); + abort (); +} + +/* + * Local variables: + * compile-command: "gcc -g -DTEST -o tilde tilde.c" + * end: + */ +#endif /* TEST */ diff --git a/lib/readline/tilde.h b/lib/readline/tilde.h deleted file mode 120000 index 6fea2aeaa..000000000 --- a/lib/readline/tilde.h +++ /dev/null @@ -1 +0,0 @@ -../tilde/tilde.h \ No newline at end of file diff --git a/lib/readline/tilde.h b/lib/readline/tilde.h new file mode 100644 index 000000000..e26dd0476 --- /dev/null +++ b/lib/readline/tilde.h @@ -0,0 +1,80 @@ +/* tilde.h: Externally available variables and function in libtilde.a. */ + +/* Copyright (C) 1992-2009 Free Software Foundation, Inc. + + This file contains the Readline Library (Readline), a set of + routines for providing Emacs style line input to programs that ask + for it. + + 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 . +*/ + +#if !defined (_TILDE_H_) +# define _TILDE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* A function can be defined using prototypes and compile on both ANSI C + and traditional C compilers with something like this: + extern char *func PARAMS((char *, char *, int)); */ + +#if !defined (PARAMS) +# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) +# define PARAMS(protos) protos +# else +# define PARAMS(protos) () +# endif +#endif + +typedef char *tilde_hook_func_t PARAMS((char *)); + +/* If non-null, this contains the address of a function that the application + wants called before trying the standard tilde expansions. The function + is called with the text sans tilde, and returns a malloc()'ed string + which is the expansion, or a NULL pointer if the expansion fails. */ +extern tilde_hook_func_t *tilde_expansion_preexpansion_hook; + +/* If non-null, this contains the address of a function to call if the + standard meaning for expanding a tilde fails. The function is called + with the text (sans tilde, as in "foo"), and returns a malloc()'ed string + which is the expansion, or a NULL pointer if there is no expansion. */ +extern tilde_hook_func_t *tilde_expansion_failure_hook; + +/* When non-null, this is a NULL terminated array of strings which + are duplicates for a tilde prefix. Bash uses this to expand + `=~' and `:~'. */ +extern char **tilde_additional_prefixes; + +/* When non-null, this is a NULL terminated array of strings which match + the end of a username, instead of just "/". Bash sets this to + `:' and `=~'. */ +extern char **tilde_additional_suffixes; + +/* Return a new string which is the result of tilde expanding STRING. */ +extern char *tilde_expand PARAMS((const char *)); + +/* Do the work of tilde expansion on FILENAME. FILENAME starts with a + tilde. If there is no expansion, call tilde_expansion_failure_hook. */ +extern char *tilde_expand_word PARAMS((const char *)); + +/* Find the portion of the string beginning with ~ that should be expanded. */ +extern char *tilde_find_word PARAMS((const char *, int, int *)); + +#ifdef __cplusplus +} +#endif + +#endif /* _TILDE_H_ */ diff --git a/lib/sh/fdprintf.c b/lib/sh/fdprintf.c deleted file mode 100644 index 27d3a4b0a..000000000 --- a/lib/sh/fdprintf.c +++ /dev/null @@ -1,70 +0,0 @@ -/* fdprintf -- printf to a file descriptor */ - -/* Copyright (C) 2008,2009 Free Software Foundation, Inc. - - This file is part of GNU Bash, the Bourne Again SHell. - - Bash is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Bash is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Bash. If not, see . -*/ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include - -#if defined (HAVE_UNISTD_H) -# include -#endif - -#if defined (PREFER_STDARG) -# include -#else -# include -#endif - -#include - -int -#if defined (PREFER_STDARG) -fdprintf(int fd, const char *format, ...) -#else -fdprintf(fd, format, va_alist) - int fd; - const char *format; - va_dcl -#endif -{ - FILE *fp; - int fd2, rc, r2; - va_list args; - - if ((fd2 = dup(fd)) < 0) - return -1; - fp = fdopen (fd2, "w"); - if (fp == 0) - { - close (fd2); - return -1; - } - - SH_VA_START (args, format); - rc = vfprintf (fp, format, args); - fflush (fp); - va_end (args); - - r2 = fclose (fp); /* check here */ - - return rc; -} diff --git a/lib/sh/strindex.c b/lib/sh/strindex.c deleted file mode 100644 index 5cb80ad3e..000000000 --- a/lib/sh/strindex.c +++ /dev/null @@ -1,46 +0,0 @@ -/* strindex.c - Find if one string appears as a substring of another string, - without regard to case. */ - -/* Copyright (C) 2000 Free Software Foundation, Inc. - - This file is part of GNU Bash, the Bourne Again SHell. - - Bash is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Bash is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Bash. If not, see . -*/ - -#include - -#include -#include - -#include - -/* Determine if s2 occurs in s1. If so, return a pointer to the - match in s1. The compare is case insensitive. This is a - case-insensitive strstr(3). */ -char * -strindex (s1, s2) - const char *s1; - const char *s2; -{ - register int i, l, len, c; - - c = TOLOWER ((unsigned char)s2[0]); - len = strlen (s1); - l = strlen (s2); - for (i = 0; (len - i) >= l; i++) - if ((TOLOWER ((unsigned char)s1[i]) == c) && (strncasecmp (s1 + i, s2, l) == 0)) - return ((char *)s1 + i); - return ((char *)0); -} diff --git a/lib/sh/xstrchr.c b/lib/sh/xstrchr.c deleted file mode 100644 index 6dd4d8ed2..000000000 --- a/lib/sh/xstrchr.c +++ /dev/null @@ -1,78 +0,0 @@ -/* xstrchr.c - strchr(3) that handles multibyte characters. */ - -/* Copyright (C) 2002 Free Software Foundation, Inc. - - This file is part of GNU Bash, the Bourne Again SHell. - - Bash is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - Bash is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with Bash. If not, see . -*/ - -#include - -#ifdef HAVE_STDLIB_H -# include -#endif - -#include "bashansi.h" -#include "shmbutil.h" - -#undef xstrchr - -/* 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. */ - -char * -#if defined (PROTOTYPES) -xstrchr (const char *s, int c) -#else -xstrchr (s, c) - const char *s; - int c; -#endif -{ -#if HANDLE_MULTIBYTE - char *pos; - mbstate_t state; - size_t strlength, mblength; - - /* 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 - c <= 0x30. */ - if ((unsigned char)c >= '0' && MB_CUR_MAX > 1) - { - pos = (char *)s; - memset (&state, '\0', sizeof(mbstate_t)); - strlength = strlen (s); - - while (strlength > 0) - { - mblength = mbrlen (pos, strlength, &state); - if (mblength == (size_t)-2 || mblength == (size_t)-1 || mblength == (size_t)0) - mblength = 1; - - if (c == (unsigned char)*pos) - return pos; - - strlength -= mblength; - pos += mblength; - } - - return ((char *)NULL); - } - else -#endif - return (strchr (s, c)); -} diff --git a/nojobs.c b/nojobs.c index 16126be57..0c9bd751b 100644 --- a/nojobs.c +++ b/nojobs.c @@ -83,8 +83,8 @@ extern sigset_t top_level_mask; extern procenv_t wait_intr_buf; extern int wait_signal_received; -pid_t last_made_pid = NO_PID; -pid_t last_asynchronous_pid = NO_PID; +volatile pid_t last_made_pid = NO_PID; +volatile pid_t last_asynchronous_pid = NO_PID; /* Call this when you start making children. */ int already_making_children = 0; diff --git a/parse.y b/parse.y index 843c8180c..fd3f97f62 100644 --- a/parse.y +++ b/parse.y @@ -2264,7 +2264,7 @@ shell_getc (remove_quoted_newline) if (n <= 2) /* we have to save 1 for the newline added below */ { if (truncating == 0) - internal_warning("shell_getc: shell_input_line_size (%llu) exceeds SIZE_MAX (%llu): line truncated", shell_input_line_size, SIZE_MAX); + internal_warning("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%llu): line truncated", shell_input_line_size, SIZE_MAX); shell_input_line[i] = '\0'; truncating = 1; } diff --git a/parser-built b/parser-built index 0de3853ce..3121ddcf2 100644 --- a/parser-built +++ b/parser-built @@ -142,7 +142,7 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 323 "/Users/chet/src/bash/src/parse.y" +#line 323 "/usr/src/local/chet/src/bash/src/parse.y" { WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ diff --git a/po/._ja.po b/po/._ja.po new file mode 100644 index 000000000..0a793e8eb Binary files /dev/null and b/po/._ja.po differ diff --git a/po/._tr.po b/po/._tr.po new file mode 100644 index 000000000..f2e2af702 Binary files /dev/null and b/po/._tr.po differ diff --git a/po/af.gmo b/po/af.gmo index 39edcaeb0..08c9c91b6 100644 Binary files a/po/af.gmo and b/po/af.gmo differ diff --git a/po/af.po b/po/af.po index d3a2f4715..4c86370e6 100644 --- a/po/af.po +++ b/po/af.po @@ -6,36 +6,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2004-03-17 13:48+0200\n" "Last-Translator: Petri Jooste \n" "Language-Team: Afrikaans \n" -"Language: af\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Language: af\n" #: arrayfunc.c:51 #, fuzzy msgid "bad array subscript" msgstr "Os/2 Biskaart Skikking" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: illegal option -- %c\n" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -45,21 +45,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: kan nie %s skep nie" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 #, fuzzy msgid "too many arguments" msgstr "te veel parameters" @@ -147,7 +147,7 @@ msgstr "besig om te skryf" msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "%s: option `%s' requires an argument\n" @@ -162,7 +162,7 @@ msgstr "" msgid "%s: not found" msgstr "%s: bevel nie gevind nie" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%s: illegal option -- %c\n" @@ -187,7 +187,7 @@ msgstr "Die sein nommer wat was gevang het" msgid "invalid hex number" msgstr "Die sein nommer wat was gevang het" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 #, fuzzy msgid "invalid number" msgstr "Die sein nommer wat was gevang het" @@ -302,25 +302,35 @@ msgstr "" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: leesalleen-funksie" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -349,23 +359,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: is 'n gids" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" @@ -459,7 +469,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: kan nie %s skep nie" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -493,17 +503,17 @@ msgstr "%s: heelgetal-uitdrukking is verwag\n" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 #, fuzzy msgid "Unknown error" msgstr "Onbekende fout %d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 #, fuzzy msgid "expression expected" msgstr "Bools uitdrukking verwag" @@ -513,65 +523,65 @@ msgstr "Bools uitdrukking verwag" msgid "%s: not an indexed array" msgstr "Veranderlike boom" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: illegal option -- %c\n" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: illegal option -- %c\n" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "Die sein nommer wat was gevang het" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "Veranderlike boom" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: illegal option -- %c\n" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -581,21 +591,26 @@ msgstr "" msgid "no other directory" msgstr "boonste lêergids." -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: illegal option -- %c\n" + +#: builtins/pushd.def:468 #, fuzzy msgid "" msgstr "Nuutste gebruik word werksaam gids" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 #, fuzzy msgid "directory stack index" msgstr "Stapel grootte verhoog" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -619,7 +634,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -644,7 +659,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -665,12 +680,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "pypfout: %s" @@ -679,26 +694,26 @@ msgstr "pypfout: %s" msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:812 +#: builtins/set.def:826 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:829 +#: builtins/set.def:843 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan nie %s skep nie" -#: builtins/set.def:841 +#: builtins/set.def:854 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "Veranderlike boom" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: leesalleen-funksie" @@ -708,11 +723,11 @@ msgstr "%s: leesalleen-funksie" msgid "shift count" msgstr "Shift" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -844,136 +859,136 @@ msgstr "Spring na:" msgid "%s: unbound variable" msgstr "Veranderlike boom" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "pypfout: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: bevel nie gevind nie" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: is 'n gids" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan nie 'n binêre lêer uitvoer nie" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:282 +#: expr.c:286 #, fuzzy msgid "recursion stack underflow" msgstr "Stapel grootte verhoog" -#: expr.c:430 +#: expr.c:434 #, fuzzy msgid "syntax error in expression" msgstr "Sintaks fout in patroon" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 #, fuzzy msgid "division by 0" msgstr "devisie by nul." -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "" -#: expr.c:589 +#: expr.c:598 #, fuzzy msgid "`:' expected for conditional expression" msgstr "Soek die lêer vir 'n uitdrukking" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 #, fuzzy msgid "missing `)'" msgstr "Ontbrekende '>'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 #, fuzzy msgid "syntax error: operand expected" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" "Hierdie is die fout boodskap van %1:\n" "%2" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "waarde te groot vir basis" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: heelgetal-uitdrukking is verwag\n" @@ -983,167 +998,167 @@ msgstr "%s: heelgetal-uitdrukking is verwag\n" msgid "getcwd: cannot access parent directories" msgstr "Kan nie die program uitvoer nie:" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan nie fd %d na fd 0 dupliseer nie: %s" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "E108: Geen veranderlike: \"%s\"" -#: jobs.c:1447 +#: jobs.c:1448 #, fuzzy, c-format msgid "Signal %d" msgstr "Sein kwaliteit:" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Klaar" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 #, fuzzy msgid "Stopped" msgstr "Op gehou" -#: jobs.c:1470 +#: jobs.c:1471 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Op gehou" -#: jobs.c:1474 +#: jobs.c:1475 #, fuzzy msgid "Running" msgstr "aktief" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Verlaat %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Onbekende status" -#: jobs.c:1580 +#: jobs.c:1581 #, fuzzy, c-format msgid "(core dumped) " msgstr "Kern Ontwikkelaar" -#: jobs.c:1599 +#: jobs.c:1600 #, fuzzy, c-format msgid " (wd: %s)" msgstr "Aktiveer nou dadelik" -#: jobs.c:1807 +#: jobs.c:1817 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "Fout in die skryf van %s" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, fuzzy, c-format msgid "%s: job has terminated" msgstr "Die bediener beëindig Die verbinding." -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "3d modus" -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, fuzzy, c-format msgid " (core dumped)" msgstr "Kern Ontwikkelaar" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, fuzzy, c-format msgid "(wd now: %s)\n" msgstr "Aktiveer nou dadelik" -#: jobs.c:3642 +#: jobs.c:3770 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "Inisialisering van OpenGL het misluk." -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "geen taakbeheer in hierdie dop nie" @@ -1164,49 +1179,49 @@ msgstr "" msgid "unknown" msgstr "(onbekend)" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1254,17 +1269,17 @@ msgstr "" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" -#: mailcheck.c:433 +#: mailcheck.c:439 #, fuzzy msgid "You have mail in $_" msgstr "Bevestig Pos In" -#: mailcheck.c:458 +#: mailcheck.c:464 #, fuzzy msgid "You have new mail in $_" msgstr "Wanneer nuwe pos arriveer in" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "" @@ -1299,107 +1314,107 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4047 +#: parse.y:4095 #, fuzzy msgid "syntax error in conditional expression" msgstr "Sintaks fout in patroon" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 #, fuzzy msgid "expected `)'" msgstr "')' is verwag\n" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4211 +#: parse.y:4259 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4251 +#: parse.y:4299 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:4255 +#: parse.y:4303 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "Soek die lêer vir 'n uitdrukking" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5608 +#: parse.y:5667 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "Sintaks fout in patroon" -#: parse.y:5618 +#: parse.y:5677 #, fuzzy msgid "syntax error: unexpected end of file" msgstr "Onverwagte einde van lêer tydens inlees van hulpbron." -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "sintaksfout" -#: parse.y:5680 +#: parse.y:5739 #, fuzzy, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik Kaart na Los Tronk" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1428,115 +1443,115 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: dubbelsinnige herroetering" -#: redir.c:182 +#: redir.c:181 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "Jy het gespesifiseer 'n bestaande lêer" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "Pypfout.\n" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:888 +#: shell.c:890 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%s: illegal option -- %c\n" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Ek het nie 'n naam nie!" -#: shell.c:1807 +#: shell.c:1827 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "bedryfstelselkernweergawe" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1810 +#: shell.c:1830 #, fuzzy msgid "GNU long options:\n" msgstr "Gnu C Saamsteller Opsies" -#: shell.c:1814 +#: shell.c:1834 #, fuzzy msgid "Shell options:\n" msgstr "opneem opsies" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1830 +#: shell.c:1850 #, fuzzy, c-format msgid "\t-%s or -o option\n" msgstr "" "Gebruik so: %s LÊER \n" " of: %s OPSIE\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1742,237 +1757,238 @@ msgstr "Sein kwaliteit:" msgid "Unknown Signal #%d" msgstr "Sein kwaliteit:" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "Woord Substitusie" -#: subst.c:5039 +#: subst.c:5012 #, fuzzy msgid "cannot make child for process substitution" msgstr "Woord Substitusie" -#: subst.c:5084 +#: subst.c:5057 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5086 +#: subst.c:5059 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5104 +#: subst.c:5077 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: subst.c:5296 +#: subst.c:5273 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "Woord Substitusie" -#: subst.c:5334 +#: subst.c:5311 #, fuzzy msgid "cannot make child for command substitution" msgstr "Woord Substitusie" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, fuzzy, c-format msgid "%s: substring expression < 0" msgstr "ongeldige uitdrukking" -#: subst.c:7284 +#: subst.c:7356 #, fuzzy, c-format msgid "%s: bad substitution" msgstr "Woord Substitusie" -#: subst.c:7361 +#: subst.c:7433 #, fuzzy, c-format msgid "$%s: cannot assign in this way" msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "--Geen reëls in buffer--" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "" -#: test.c:146 +#: test.c:147 #, fuzzy msgid "argument expected" msgstr "argument verwag\n" -#: test.c:155 +#: test.c:156 #, fuzzy, c-format msgid "%s: integer expression expected" msgstr "%s: heelgetal-uitdrukking is verwag\n" -#: test.c:263 +#: test.c:264 #, fuzzy msgid "`)' expected" msgstr "')' is verwag\n" -#: test.c:265 +#: test.c:266 #, fuzzy, c-format msgid "`)' expected, found %s" msgstr "')' is verwag, maar %s gevind\n" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, fuzzy, c-format msgid "%s: unary operator expected" msgstr "%s: unitêre operator is verwag\n" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, fuzzy, c-format msgid "%s: binary operator expected" msgstr "%s: binêre operator is verwag\n" -#: test.c:816 +#: test.c:839 #, fuzzy msgid "missing `]'" msgstr "Ontbrekende '>'" -#: trap.c:209 +#: trap.c:217 #, fuzzy msgid "invalid signal number" msgstr "Die sein nommer wat was gevang het" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "Kan nie soek 'n handtekening in hierdie boodskap!" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan nie %s skep nie" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, fuzzy, c-format msgid "GNU bash, version %s (%s)\n" msgstr "bedryfstelselkernweergawe" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -2060,7 +2076,7 @@ msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "E418: Ongeldige waarde: %s" #: builtins.c:78 @@ -2178,7 +2194,7 @@ msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n" #: builtins.c:142 #, fuzzy -msgid "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "Volle Naam:" #: builtins.c:144 @@ -2247,12 +2263,12 @@ msgstr "Belmetode" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "Wag:" #: builtins.c:179 #, fuzzy -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "Wag:" #: builtins.c:182 @@ -2621,6 +2637,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2636,17 +2653,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2657,11 +2675,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2695,7 +2713,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2708,7 +2726,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2735,7 +2753,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2747,7 +2765,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2788,7 +2806,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2811,7 +2829,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2819,7 +2837,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2828,7 +2846,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2858,7 +2876,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2870,7 +2888,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2884,7 +2902,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2908,7 +2926,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2930,7 +2948,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2964,7 +2982,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2988,7 +3006,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3005,7 +3023,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3027,7 +3045,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3072,7 +3090,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3107,7 +3125,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3123,7 +3141,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3135,7 +3153,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3220,7 +3238,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3229,6 +3247,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3240,7 +3260,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3259,7 +3279,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3279,7 +3299,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3290,7 +3310,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3304,7 +3324,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3318,7 +3338,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3383,6 +3403,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3399,7 +3421,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3407,7 +3429,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3419,7 +3441,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3463,7 +3485,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3493,7 +3515,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3540,7 +3562,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3558,7 +3580,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3570,26 +3592,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3602,7 +3628,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3619,7 +3645,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3639,7 +3665,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3655,7 +3681,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3666,7 +3692,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3687,7 +3713,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3698,7 +3724,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3709,7 +3735,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3722,7 +3748,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3736,7 +3762,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3747,7 +3773,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3761,7 +3787,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3772,7 +3798,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3800,7 +3826,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3854,7 +3880,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3885,7 +3911,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3912,7 +3938,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3941,7 +3967,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3962,7 +3988,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3989,13 +4015,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4022,7 +4054,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4035,7 +4067,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4066,7 +4098,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4107,13 +4139,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "wait [pid]" +#~ msgstr "Wag:" + #, fuzzy #~ msgid " new current working directory." #~ msgstr "Nuutste gebruik word werksaam gids" diff --git a/po/bash.pot b/po/bash.pot index cc8efa3a7..93cc6e5e9 100644 --- a/po/bash.pot +++ b/po/bash.pot @@ -8,11 +8,10 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" -"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,22 +21,22 @@ msgstr "" msgid "bad array subscript" msgstr "" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -47,21 +46,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -124,7 +123,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "" @@ -147,7 +146,7 @@ msgstr "" msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "" @@ -162,7 +161,7 @@ msgstr "" msgid "%s: not found" msgstr "" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "" @@ -185,7 +184,7 @@ msgstr "" msgid "invalid hex number" msgstr "" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "" @@ -294,25 +293,35 @@ msgstr "" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -341,23 +350,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "" @@ -450,7 +459,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -484,16 +493,16 @@ msgstr "" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "" @@ -502,64 +511,64 @@ msgstr "" msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -568,19 +577,24 @@ msgstr "" msgid "no other directory" msgstr "" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, c-format +msgid "%s: invalid argument" +msgstr "" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -604,7 +618,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -629,7 +643,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -650,12 +664,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "" @@ -664,26 +678,26 @@ msgstr "" msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "" @@ -692,11 +706,11 @@ msgstr "" msgid "shift count" msgstr "" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -821,127 +835,127 @@ msgstr "" msgid "%s: unbound variable" msgstr "" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "" @@ -950,163 +964,163 @@ msgstr "" msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "" -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "" @@ -1126,49 +1140,49 @@ msgstr "" msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1216,15 +1230,15 @@ msgstr "" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "" @@ -1257,103 +1271,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1382,110 +1396,110 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1659,229 +1673,230 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" msgstr "" -#: version.c:47 +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." +msgstr "" + +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -1959,7 +1974,7 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" #: builtins.c:78 @@ -2061,7 +2076,7 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" #: builtins.c:144 @@ -2117,11 +2132,11 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:175 -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "" #: builtins.c:179 -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "" #: builtins.c:182 @@ -2481,6 +2496,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2496,17 +2512,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2517,11 +2534,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2555,7 +2572,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2568,7 +2585,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2595,7 +2612,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2607,7 +2624,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2648,7 +2665,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2671,7 +2688,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2679,7 +2696,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2688,7 +2705,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2718,7 +2735,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2730,7 +2747,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2744,7 +2761,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2768,7 +2785,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2790,7 +2807,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2824,7 +2841,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2848,7 +2865,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2865,7 +2882,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2887,7 +2904,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2932,7 +2949,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -2967,7 +2984,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -2983,7 +3000,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -2995,7 +3012,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3080,7 +3097,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3089,6 +3106,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3100,7 +3119,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3119,7 +3138,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3139,7 +3158,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3150,7 +3169,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3164,7 +3183,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3178,7 +3197,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3243,6 +3262,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3259,7 +3280,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3267,7 +3288,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3279,7 +3300,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3323,7 +3344,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3353,7 +3374,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3400,7 +3421,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3418,7 +3439,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3430,26 +3451,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3462,7 +3487,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3479,7 +3504,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3499,7 +3524,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3515,7 +3540,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3526,7 +3551,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3547,7 +3572,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3558,7 +3583,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3569,7 +3594,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3582,7 +3607,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3596,7 +3621,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3607,7 +3632,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3621,7 +3646,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3632,7 +3657,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3660,7 +3685,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3714,7 +3739,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3745,7 +3770,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3772,7 +3797,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3801,7 +3826,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3822,7 +3847,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3849,13 +3874,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3882,7 +3913,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3895,7 +3926,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -3926,7 +3957,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -3967,7 +3998,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/bg.gmo b/po/bg.gmo index 692ca52f5..131170b26 100644 Binary files a/po/bg.gmo and b/po/bg.gmo differ diff --git a/po/bg.po b/po/bg.po index 9e3a77ce2..c055b35a4 100644 --- a/po/bg.po +++ b/po/bg.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2007-07-26 07:18+0300\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" -"Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "неправилен индекс на масив" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: грешно име на действие" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не може да се присвоява на нецифров индекс" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -46,23 +46,23 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: не може да се създаде: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "изпълнение на команда на Юникс от bash: не може да се открие подредбата на\n" "функциите на клавишите за командата" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: първият непразен знак не е „\"“" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "в %2$s липсва затварящ знак „%1$c“" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: разделителят двоеточие липсва" @@ -126,7 +126,7 @@ msgstr "Връща контекста на текущото извикване msgid "HOME not set" msgstr "Променливата $HOME не зададена" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "прекалено много аргументи" @@ -149,7 +149,7 @@ msgstr "%s: предупреждение: " msgid "%s: usage: " msgstr "%s: предупреждение: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: опцията изисква аргумент" @@ -164,7 +164,7 @@ msgstr "%s: изисква се числов аргумент" msgid "%s: not found" msgstr "%s: не е открит" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: грешна опция" @@ -189,7 +189,7 @@ msgstr "неправилен номер на сигнал" msgid "invalid hex number" msgstr "грешно число" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "грешно число" @@ -298,25 +298,35 @@ msgstr "предупреждение: опцията „-C“ може да не msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "може да се използва само във функция" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "„-f“ не може да се използва за създаването на функции" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: функция с права само за четене" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: променливите за масиви не могат да се унищожават така" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -345,23 +355,23 @@ msgstr "%s: не е зареден динамично" msgid "%s: cannot delete: %s" msgstr "%s: не може да се изтрие: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: е директория" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: не е обикновен файл" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: файлът е прекалено голям" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: двоичният файл не може да бъде изпълнен" @@ -456,7 +466,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: не може да се отвори: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -499,16 +509,16 @@ msgstr "%s: неуспешно заместване чрез историята" msgid "no other options allowed with `-x'" msgstr "не е позволена друга опция с „-x“" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументите трябва да са идентификатори на процеси или задачи" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Неизвестна грешка" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "очаква се израз" @@ -517,65 +527,65 @@ msgstr "очаква се израз" msgid "%s: not an indexed array" msgstr "%s: не е променлива за масив" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: грешно указване на файловия дескриптор" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: грешен файлов дескриптор: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: грешна опция" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: грешна опция" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: грешно име на действие" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: не е променлива за масив" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s“: липсва форматиращ знак" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: грешно указване на изтичането на времето" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: грешен форматиращ знак" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: предупреждение: " -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "липсва шестнадесетична цифра за \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "липсва шестнадесетична цифра за \\x" @@ -584,20 +594,25 @@ msgstr "липсва шестнадесетична цифра за \\x" msgid "no other directory" msgstr "няма друга директория" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: неправилен аргумент за ограничение" + +#: builtins/pushd.def:468 msgid "" msgstr "«няма текуща директория»" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 #, fuzzy msgid "directory stack index" msgstr "отрицателно препълване на стека за рекурсии" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 #, fuzzy msgid "" "Display the list of currently remembered directories. Directories\n" @@ -644,7 +659,7 @@ msgstr "" " -N показва N-тия елемент отдясно в списъка показван от\n" " командата „dirs“, когато е стартирана без опции. Брои се от 0." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 #, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" @@ -689,7 +704,7 @@ msgstr "" " \n" " Можете да изведете стека на директорията с командата „dirs“." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 #, fuzzy msgid "" "Removes entries from the directory stack. With no arguments, removes\n" @@ -728,12 +743,12 @@ msgstr "" "\n" " Стекът с директориите се визуализира с командата „dirs“." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: грешно указване на изтичането на времето" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "грешка при четене: %d: %s" @@ -743,27 +758,27 @@ msgid "can only `return' from a function or sourced script" msgstr "" "„return“ е възможен само от функция или изпълнен в текущата обвивка скрипт" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "" "не може едновременно да се премахват задаванията на функция и променлива" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: не може да се премахне" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не може да се премахне: %s е само за четене" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: не е променлива за масив" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: не е функция" @@ -772,12 +787,12 @@ msgstr "%s: не е функция" msgid "shift count" msgstr "брой на преместванията" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" "не може едновременно да се задават и да се премахват опции на обвивката" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: грешно име на опция на обвивката" @@ -902,132 +917,132 @@ msgstr "неправилен преход" msgid "%s: unbound variable" msgstr "%s: променлива без стойност" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "^Gвремето за изчакване на вход изтече: следва автоматично излизане от " "системата\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "стандартният вход от /dev/null не може да бъде пренасочен: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "грешка при запис: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: ограничение: в имената на командите не може да присъства знакът „/“" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: командата не е открита" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s е %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: лош интерпретатор" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: двоичният файл не може да бъде изпълнен" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s е вградена команда в обвивката\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "файловият дескриптор %d не може да се дублира като дескриптор %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "максималният брой нива за рекурсия в израз бяха преминати" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "отрицателно препълване на стека за рекурсии" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "синтактична грешка в израз" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "опит за присвояване на стойност на нещо, което не е променлива" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "деление на 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "програмна грешка: неправилна лексема за присвояване на израз" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "за условен израз се изисква „:“" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "степента е по-малка от 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "очаква се идентификатор след предварително увеличаване или намаляване" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "липсва „)“" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "синтактична грешка: очаква се оператор" -#: expr.c:1353 +#: expr.c:1373 #, fuzzy msgid "syntax error: invalid arithmetic operator" msgstr "синтактична грешка: изисква се аритметичен израз" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "грешна аритметична основа на бройна система" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "стойността е прекалено голяма за основата" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: очаква се целочислен израз" @@ -1036,167 +1051,167 @@ msgstr "%s: очаква се целочислен израз" msgid "getcwd: cannot access parent directories" msgstr "getcwd: родителските директории не могат да бъдат достъпени" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не може да се изчисти режимът без забавяне на файловия дескриптор %d" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не може да се задели нов файлов дескриптор за вход на bash от дескриптор %d" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "запазване на входа на bash: вече съществува буфер за новия файлов дескриптор " "%d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "изтриване на спряната задача %d в групата процеси %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" "описателен идентификатор на процес: %ld: няма такъв идентификатор на процес" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "изчакване: процесът с идентификатор %ld не е дъщерен на тази обвивка" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "изчакване: липсват данни за процес с идентификатор %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "изчакване на задача: задачата %d е спряна" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: задачата е приключила" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: задача %d вече е във фонов режим" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: предупреждение: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "в тази обвивка няма управление на задачите" @@ -1219,57 +1234,57 @@ msgstr "" msgid "unknown" msgstr "%s: непознат хост" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" "заделяне на памет: блок в списъка със свободни блокове е зает или неподходящ" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" "изчистване на памет: извикано е с блоков аргумент, който вече е изчистен" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "изчистване на памет: извикано е с незаделен блоков аргумент" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "изчистване на памет: открито е отрицателно препълване с mh_nbytes извън\n" "допустимия диапазон" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" "изчистване на памет: късовете на началната и крайната области се различават" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "презаделяне: извикано е с аргумент с незаделен блок" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "презаделяне: открито е отрицателно препълване с mh_nbytes извън допустимия\n" "диапазон" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "презаделяне: късовете на началната и крайната области се различават" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" "регистриране на презаделяне: таблицата за заделянията е пълна с FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "регистриране на презаделяне: %p вече е в таблицата като заделен?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "регистриране на свободни: %p вече е в таблицата като свободен?\n" @@ -1317,15 +1332,15 @@ msgstr "презаделяне на памет: %s:%d: %lu байта не мо msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "презаделяне на памет: %s:%d: %lu байта не могат да се заделят" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Имате поща в $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Имате нова поща в $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Пощата в %s вече е прочетена\n" @@ -1359,104 +1374,104 @@ msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "пренасочване: инструкцията за пренасочване „%d“ е извън допустимия диапазон" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" "неочакван знак за край на файл „EOF“, а се очакваше съответстващ знак „%c“" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "неочакван знак за край на файл „EOF“, а се очакваше „]]“" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтактична грешка в условен израз: неочаквана лексема „%s“" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "синтактична грешка в условен израз" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочаквана лексема „%s“, а се очакваше знакът „)“" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "очакваше се „)“" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочакван аргумент „%s“ за унарен условен оператор" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "неочакван аргумент за унарен условен оператор" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочаквана лексема „%s“, очакваше се бинарен условен оператор" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "очакваше се бинарен условен оператор" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочакван аргумент „%s“ за бинарен условен оператор" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "неочакван аргумент за бинарен условен оператор" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочаквана лексема „%c“ в условна команда" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочаквана лексема „%s“ в условна команда" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочаквана лексема %d в условна команда" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтактична грешка в близост до неочакваната лексема „%s“" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "синтактична грешка в близост до „%s“" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "синтактична грешка: неочакван край на файл" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "синтактична грешка" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Използвайте „%s“, за да излезете от обвивката.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "неочакван знак за край на файл „EOF“, очакваше се знакът „)“" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "дописване: функцията „%s“ не е открита" @@ -1486,71 +1501,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "отпечатване: „%c“: неправилен форматиращ знак" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "файловият дескриптор е извън допустимия диапазон" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: двусмислено пренасочване" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не може да се презапише съществуващ файл" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: поради ограничение изходът не може да се пренасочи" -#: redir.c:192 +#: redir.c:191 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "не може да се създаде временен файл за вътрешен документ с „<<“: %s" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: на член от масив не може да се присвои списък" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не се поддържа, ако няма поддръжка на мрежа" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "грешка при пренасочване: файловият дескриптор не може да бъде дублиран" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "не е открита директорията /tmp. Създайте я!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp трябва да е директория" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: неправилна опция" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Не може да се получи името на текущия потребител!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1559,43 +1574,44 @@ msgstr "" "Употреба: %s [дълга опция на GNU] [опция] …\n" " %s [дълга опция на GNU] [опция] файл-скрипт …\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Дълги опции на GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Опции на обвивката:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" " -irsD или -c команда, или -O къса_опция (само при стартиране)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr " -%s или -o опция\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "За повече информация за опциите на обвивката въведете „%s -c \"help set\"“.\n" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "За повече информация за вградените в обвивката команди въведете „%s -c " "help“.\n" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "За да докладвате грешки използвайте командата „bashbug“.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "маска за обработката на сигнали: %d: невалидна операция" @@ -1771,132 +1787,137 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "лошо заместване: липсва затварящ знак „%s“ в %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: на член от масив не може да се присвои списък" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "не може да се създаде програмен канал за заместване на процеси" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "не може да се създаде дъщерен процес за заместване на процеси" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "именуваният програмен канал %s не може да се отвори за четене" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "именуваният програмен канал %s не може да се отвори за запис" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "именуваният програмен канал %s не може да се\n" "дублира като файловия дескриптор %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "не може да се създаде програмен канал за заместване на команди" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "не може да се създаде дъщерен процес за заместване на команди" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "заместване на команди: каналът не може да се дублира като fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: грешен файлов дескриптор: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: аргументът е null или не е зададен" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: изразът от подниза е < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: лошо заместване" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не може да се задава по този начин" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "лошо заместване: липсва затварящ знак „%s“ в %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "няма съвпадение: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "очаква се аргумент" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: очаква се целочислен израз" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "очаква се „)“" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "очаква се „)“, а е получено %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: очаква се унарен оператор" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: очаква се бинарен оператор" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "липсва „]“" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "неправилен номер на сигнал" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" "стартиране на предстоящите капани: неправилна стойност в trap_list[%d]: %p" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1904,115 +1925,111 @@ msgstr "" "стартиране на предстоящите капани: обработката на сигнали е SIG_DFL.\n" "%d (%s) е преизпратено на текущата обвивка" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "обработка на капани: неправилен сигнал %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "грешка при внасянето на дефиницията на функция за „%s“" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "нивото на обвивката (%d) е прекалено голямо. Задава се да е 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" "създаване на локална променлива: липсва контекст на функция в текущата " "област\n" "на видимост" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: на член от масив не може да се присвои списък" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" "всички локални променливи: липсва контекст на функция в текущата област на\n" "видимост" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: аргументът е null или не е зададен" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "неправилен знак на позиция %d в низа за изнасяне за %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "липсва „=“ в низа за изнасяне за %s" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "изваждане на контекст на променливи: в началото на структурата за променливи " "на\n" "обвивката (shell_variables) е нещо, което не е контекст на функция" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" "изваждане на контекст на променливи: липсва контекст за глобални променливи\n" "(global_variables)" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "изваждане на област: последният елемент структурата за променливи на " "обвивката\n" "(shell_variables) не е временна област в обкръжението" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: не може да се отвори: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: грешен файлов дескриптор: %s" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s е извън допустимия диапазон" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Авторски права (C) 2005 Free Software Foundation, Inc.\n" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Авторски права (C) 2005 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -2094,7 +2111,7 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" #: builtins.c:78 @@ -2196,7 +2213,7 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" #: builtins.c:144 @@ -2255,11 +2272,11 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:175 -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "" #: builtins.c:179 -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "" #: builtins.c:182 @@ -2713,6 +2730,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2728,7 +2746,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" " Обявяване на променливи и/или задаване на техните атрибути. Ако не са " "зададени\n" @@ -2761,14 +2780,14 @@ msgstr "" " функция ИМЕната стават локални, както при използването на командата " "„local“." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2779,11 +2798,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2837,7 +2856,7 @@ msgstr "" " Можете изрично да спрете интерпретирането на горните знаци с опцията „-" "E“." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2850,7 +2869,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2877,7 +2896,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2889,7 +2908,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 #, fuzzy msgid "" "Parse option arguments.\n" @@ -2972,7 +2991,7 @@ msgstr "" "са\n" " дадени повече аргументи, те биват анализирани вместо това." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2995,7 +3014,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 #, fuzzy msgid "" "Exit the shell.\n" @@ -3006,7 +3025,7 @@ msgstr "" " Изход от обвивката с код N. Ако N е изпуснат, то изходният код е този на\n" " последната изпълнена команда." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3015,7 +3034,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 #, fuzzy msgid "" "Display or execute commands from the history list.\n" @@ -3071,7 +3090,7 @@ msgstr "" "когато\n" " се въведе само „-r“, ще се изпълни последната команда." -#: builtins.c:751 +#: builtins.c:753 #, fuzzy msgid "" "Move job to the foreground.\n" @@ -3086,7 +3105,7 @@ msgstr "" " Изважда ЗАДАЧА от фонов режим и я прави текуща задача. Ако липсва\n" " аргумент ЗАДАЧА, се използва текущата задача според обвивката." -#: builtins.c:766 +#: builtins.c:768 #, fuzzy msgid "" "Move jobs to the background.\n" @@ -3103,7 +3122,7 @@ msgstr "" " Поставя всяка ЗАДАЧА във фонов режим, все едно е била стартирана с „&“.\n" " Ако липсва аргумент ЗАДАЧА, се използва текущата задача според обвивката." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3127,7 +3146,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3149,7 +3168,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3217,7 +3236,7 @@ msgstr "" "времето не\n" " се записва." -#: builtins.c:865 +#: builtins.c:867 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3258,7 +3277,7 @@ msgstr "" "като\n" " аргументи, се заменят с идентификатора на водача на групата процеси." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3275,7 +3294,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3307,7 +3326,7 @@ msgstr "" " за вас брой процеси, няма да ви се налага да пуснете още един процес,\n" " за да убиете друг." -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3391,7 +3410,7 @@ msgstr "" " Ако последният АРГУМЕНТ се изчислява като 0, „let“ връща 1. В\n" " противен случай - връща 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3427,7 +3446,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3478,7 +3497,7 @@ msgstr "" " ИНТЕРВАЛът за въвеждане или е зададен неправилен файлов дескриптор като\n" " аргумент на „-u“." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3490,7 +3509,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3662,7 +3681,7 @@ msgstr "" " съответно на $1, $2,… $n. Ако не са зададени АРГументи, се извеждат\n" " всички променливи на средата." -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3671,6 +3690,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3682,7 +3703,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3701,7 +3722,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3721,7 +3742,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3732,7 +3753,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3753,7 +3774,7 @@ msgstr "" " са зададени АРГУМЕНТИ, те се превръщат в позиционни аргументи при\n" " изпълнението на ФАЙЛа." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3767,7 +3788,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -3833,6 +3854,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3922,7 +3945,7 @@ msgstr "" " „-eq“ (=), „-ne“ (!=), „-lt“ (<),\n" " „-le“ (<=), „-gt“ (>) , „-ge“ (>=)." -#: builtins.c:1321 +#: builtins.c:1326 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -3934,7 +3957,7 @@ msgstr "" " задължително да е знакът „]“, който да съответства на отварящата скоба " "„[“." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3946,7 +3969,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4010,7 +4033,7 @@ msgstr "" "на\n" " обвивката с командата „kill -signal $$“." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4040,7 +4063,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4122,7 +4145,7 @@ msgstr "" " - опцията „-t“, при която стойността е в секунди;\n" " - опцията „-u“, при която стойността е точният брой процеси." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4140,7 +4163,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4153,6 +4176,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4165,19 +4191,20 @@ msgstr "" "се\n" " всички процеси в програмния канал на задачата." -#: builtins.c:1495 +#: builtins.c:1503 #, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" " Изчакване на указания процес и докладване за изходния код. Ако не е " "зададен N,\n" @@ -4187,7 +4214,7 @@ msgstr "" "се\n" " всички процеси в програмния канал на задачата." -#: builtins.c:1510 +#: builtins.c:1518 #, fuzzy msgid "" "Execute commands for each member in a list.\n" @@ -4207,7 +4234,7 @@ msgstr "" " всеки елемент в ДУМИте, ИМЕто се задава да е елементът и се изпълняват\n" " КОМАНДИте." -#: builtins.c:1524 +#: builtins.c:1532 #, fuzzy msgid "" "Arithmetic for loop.\n" @@ -4234,7 +4261,7 @@ msgstr "" "се\n" " изчислява да е 1." -#: builtins.c:1542 +#: builtins.c:1550 #, fuzzy msgid "" "Select words from a list and execute commands.\n" @@ -4272,7 +4299,7 @@ msgstr "" " изпълняват след всеки избор до изпълняването на команда за прекъсване\n" " (break)." -#: builtins.c:1563 +#: builtins.c:1571 #, fuzzy msgid "" "Report time consumed by pipeline's execution.\n" @@ -4296,7 +4323,7 @@ msgstr "" "според\n" " стойността на променливата на средата $TIMEFORMAT." -#: builtins.c:1580 +#: builtins.c:1588 #, fuzzy msgid "" "Execute commands based on pattern matching.\n" @@ -4310,7 +4337,7 @@ msgstr "" " Избирателно се изпълняват КОМАНДИ на база ДУМА, която напасва на ШАБЛОН.\n" " Шаблоните се разделят със знака „|“." -#: builtins.c:1592 +#: builtins.c:1600 #, fuzzy msgid "" "Execute commands based on conditional.\n" @@ -4347,7 +4374,7 @@ msgstr "" "ако\n" " никое тестово условие, не се е оценило като истина." -#: builtins.c:1609 +#: builtins.c:1617 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -4362,7 +4389,7 @@ msgstr "" "„while“\n" " е с изходен код, който е 0." -#: builtins.c:1621 +#: builtins.c:1629 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -4377,7 +4404,7 @@ msgstr "" "„until“\n" " е с изходен код, който не е 0." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4390,7 +4417,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4404,7 +4431,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -4419,7 +4446,7 @@ msgstr "" "се\n" " цял набор от команди." -#: builtins.c:1673 +#: builtins.c:1681 #, fuzzy msgid "" "Resume job in foreground.\n" @@ -4439,7 +4466,7 @@ msgstr "" " се изпълнява във фонов режим, все едно е била подадена като аргумент\n" " на командата „bg“." -#: builtins.c:1688 +#: builtins.c:1696 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -4453,7 +4480,7 @@ msgstr "" " ИЗРАЗът се изчислява според правилата на аритметичното оценяване.\n" " Еквивалентно на „let ИЗРАЗ“." -#: builtins.c:1700 +#: builtins.c:1708 #, fuzzy msgid "" "Execute conditional command.\n" @@ -4503,7 +4530,7 @@ msgstr "" " „&&“ и „||“ не оценят ИЗРАЗ2, ако ИЗРАЗ1 е достатъчен за определяне на\n" " стойността на израза." -#: builtins.c:1726 +#: builtins.c:1734 #, fuzzy msgid "" "Common shell variable names and usage.\n" @@ -4632,7 +4659,7 @@ msgstr "" "кои\n" " команди да не се запазват в историята.\n" -#: builtins.c:1783 +#: builtins.c:1791 #, fuzzy msgid "" "Add directories to stack.\n" @@ -4683,7 +4710,7 @@ msgstr "" " \n" " Можете да изведете стека на директорията с командата „dirs“." -#: builtins.c:1817 +#: builtins.c:1825 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -4728,7 +4755,7 @@ msgstr "" "\n" " Стекът с директориите се визуализира с командата „dirs“." -#: builtins.c:1847 +#: builtins.c:1855 #, fuzzy msgid "" "Display directory stack.\n" @@ -4780,7 +4807,7 @@ msgstr "" " -N показва N-тия елемент отдясно в списъка показван от\n" " командата „dirs“, когато е стартирана без опции. Брои се от 0." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -4801,7 +4828,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4829,6 +4856,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -4844,14 +4877,14 @@ msgstr "" "стандартните\n" " форматирания описани в ръководството на printf, „%b“ предизвиква " "заместването\n" -" на екраниранията с обратно наклонени черти в съответния аргумент, а " -"„%q“\n" +" на екраниранията с обратно наклонени черти в съответния аргумент, а „%" +"q“\n" " предизвиква цитирането на аргумента, така че да може да бъде използван " "като\n" " вход за обвивката. Ако е включена опцията „-v“, изходът се поставя в\n" " променливата на обвивката VAR, вместо да се извежда на стандартния изход." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4878,7 +4911,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -4899,7 +4932,7 @@ msgstr "" "с\n" " него." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4930,7 +4963,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4971,13 +5004,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Авторски права (C) 2005 Free Software Foundation, Inc.\n" + #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" #~ "презаделяне на памет: %lu байта не могат да се заделят наново (заделени " diff --git a/po/ca.gmo b/po/ca.gmo index 31ab04e96..649ff0717 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 75c41c2af..5542a9e1d 100644 --- a/po/ca.po +++ b/po/ca.po @@ -7,35 +7,35 @@ msgid "" msgstr "" "Project-Id-Version: bash-2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2003-12-28 19:59+0100\n" "Last-Translator: Montxo Vicente i Sempere \n" "Language-Team: Catalan \n" -"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "la matriu est? mal composta" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%c%c: opci? inv?lida" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: no es pot assignar a un ?ndex que no ?s num?ric" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -45,21 +45,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: no es pot crear: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "nombre excessiu de par?metres" @@ -146,7 +146,7 @@ msgstr "s'est? escrivint" msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "cal un par?metre per a l'opci?: -" @@ -161,7 +161,7 @@ msgstr "" msgid "%s: not found" msgstr "%s: no s'ha trobat l'ordre" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%c%c: opci? inv?lida" @@ -186,7 +186,7 @@ msgstr "n?mero inv?lid de senyal" msgid "invalid hex number" msgstr "n?mero inv?lid de senyal" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 #, fuzzy msgid "invalid number" msgstr "n?mero inv?lid de senyal" @@ -299,27 +299,37 @@ msgstr "" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 #, fuzzy msgid "can only be used in a function" msgstr "" "servir LOCAL dins d'una funci?; a?? restringir? la magnitud visible de la" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funci? nom?s de lectura" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: no es pot assignar d'aquesta manera" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -348,23 +358,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: no es pot crear: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: ?s un directori" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: no es pot executar el fitxer binari" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no es pot executar el fitxer binari" @@ -458,7 +468,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: no es pot crear: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -492,17 +502,17 @@ msgstr "%s: s'esperava una expressi? de nombre enter" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 #, fuzzy msgid "Unknown error" msgstr "Error desconegut %d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "s'esperava una expressi?" @@ -511,65 +521,65 @@ msgstr "s'esperava una expressi?" msgid "%s: not an indexed array" msgstr "%s: variable sense vincle" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%c%c: opci? inv?lida" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%c%c: opci? inv?lida" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "n?mero inv?lid de senyal" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: variable sense vincle" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%c%c: opci? inv?lida" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -579,21 +589,26 @@ msgstr "" msgid "no other directory" msgstr "seguent entrada de la pila (o sia, la nova primera entrada)." -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%c%c: opci? inv?lida" + +#: builtins/pushd.def:468 #, fuzzy msgid "" msgstr "\taquest ser? el nou directori actual de treball." -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 #, fuzzy msgid "directory stack index" msgstr "S'ha desbordat la base de la pila." -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -617,7 +632,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -642,7 +657,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -663,12 +678,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "error del conducte: %s" @@ -677,28 +692,28 @@ msgstr "error del conducte: %s" msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 #, fuzzy msgid "cannot simultaneously unset a function and a variable" msgstr "" "servir LOCAL dins d'una funci?; a?? restringir? la magnitud visible de la" -#: builtins/set.def:812 +#: builtins/set.def:826 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: no es pot crear: %s" -#: builtins/set.def:829 +#: builtins/set.def:843 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: no es pot crear: %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "%s: variable sense vincle" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: funci? nom?s de lectura" @@ -708,11 +723,11 @@ msgstr "%s: funci? nom?s de lectura" msgid "shift count" msgstr "shift [n]" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -844,133 +859,133 @@ msgstr "Salt incorrecte %d" msgid "%s: unbound variable" msgstr "%s: variable sense vincle" -#: eval.c:181 +#: eval.c:189 #, fuzzy, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "%c ha excedit el temps d'espera per una entrada: fi autom?tica de sessi?\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "error del conducte: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringit: no es pot especificar '/' en noms d'ordres" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: no s'ha trobat l'ordre" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: ?s un directori" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no es pot executar el fitxer binari" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" "no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 0: %s" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "s'ha excedit el nivell de recursivitat de l'expressi?" -#: expr.c:282 +#: expr.c:286 #, fuzzy msgid "recursion stack underflow" msgstr "S'ha desbordat la base de la pila." -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "error de sintaxi a l'expressi?" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "s'ha intentat assignar una variable inexistent" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "divisi? per 0" -#: expr.c:540 +#: expr.c:545 #, fuzzy msgid "bug: bad expassign token" msgstr "error de programaci?: pas incorrecte del senyal %d per a expassing()." -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "s'esperava ':' per a l'expressi? condicional" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "falta algun ')'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 #, fuzzy msgid "syntax error: operand expected" msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s: %s: %s (la prova d'error ?s \"%s\")\n" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "valor massa gran per a la base de numeraci?" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: s'esperava una expressi? de nombre enter" @@ -980,13 +995,13 @@ msgstr "%s: s'esperava una expressi? de nombre enter" msgid "getcwd: cannot access parent directories" msgstr "getwd: no s'ha pogut accedir als directoris pares" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" "no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 0: %s" -#: input.c:265 +#: input.c:267 #, fuzzy, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" @@ -994,159 +1009,159 @@ msgstr "" "bash\n" "a partir del descriptor de fitxer %d: %s" -#: input.c:273 +#: input.c:275 #, fuzzy, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "check_bash_input: ja hi existeix mem?ria interm?dia per a la nova\n" "descripci? de fitxer %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: L'identificador de proc?s (pid) no existeix (%d)!\n" -#: jobs.c:1447 +#: jobs.c:1448 #, fuzzy, c-format msgid "Signal %d" msgstr "Senyal desconeguda #%d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Fet" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Aturat" -#: jobs.c:1470 +#: jobs.c:1471 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Aturat" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "S'est? executant" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Fet (%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Fi d'execuci? amb l'estat %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Estat desconegut" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(la imatge del nucli ha estat bolcada) " -#: jobs.c:1599 +#: jobs.c:1600 #, fuzzy, c-format msgid " (wd: %s)" msgstr "(wd ara: %s)\n" -#: jobs.c:1807 +#: jobs.c:1817 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "error en l'execuci? de setpgid (%d a %d) en el proc?s fill %d: %s\n" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, fuzzy, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" "wait: l'identificador del proc?s (pid) %d no ?s un fill d'aquest int?rpret" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: s'ha finalitzat la tasca" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "encaix %3d:" -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (bolcat de la imatge del nucli)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd ara: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp ha fallat: %s" -#: jobs.c:3703 +#: jobs.c:3831 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_jobs: disciplina de l?nia: %s" -#: jobs.c:3713 +#: jobs.c:3841 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "initialize_jobs: getpgrp ha fallat: %s" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "no hi ha cap tasca de control dins d'aquest int?rpret" @@ -1167,49 +1182,49 @@ msgstr "" msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1257,15 +1272,15 @@ msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Teniu correu en $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Teniu correu nou en $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "S'ha llegit el correu a %s\n" @@ -1300,114 +1315,114 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, fuzzy, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" "s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" "es buscava per '%c'" -#: parse.y:4038 +#: parse.y:4086 #, fuzzy msgid "unexpected EOF while looking for `]]'" msgstr "" "s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" "es buscava per '%c'" -#: parse.y:4043 +#: parse.y:4091 #, fuzzy, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" -#: parse.y:4047 +#: parse.y:4095 #, fuzzy msgid "syntax error in conditional expression" msgstr "error de sintaxi a l'expressi?" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 #, fuzzy msgid "expected `)'" msgstr "s'esperava ')'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: s'esperava un operador binari" -#: parse.y:4211 +#: parse.y:4259 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: s'esperava un operador binari" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "s'esperava ':' per a l'expressi? condicional" -#: parse.y:4251 +#: parse.y:4299 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "s'esperava ':' per a l'expressi? condicional" -#: parse.y:4255 +#: parse.y:4303 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "s'esperava ':' per a l'expressi? condicional" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" -#: parse.y:5608 +#: parse.y:5667 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "hi ha un error inesperat de sintaxi prop del senyal '%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "error de sintaxi: s'ha arribat inesperadament a la fi del fitxer" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "error de sintaxi" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilitzeu ?%s? per a eixir de l'int?rpret d'ordres.\n" -#: parse.y:5842 +#: parse.y:5901 #, fuzzy msgid "unexpected EOF while looking for matching `)'" msgstr "" "s'ha arribat inesperadament a la fi del fitxer (EOF) mentre\n" "es buscava per '%c'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1436,73 +1451,73 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: Redirecci? ambigua" # No acabe d'entendre el significat de l'original "clobber" -#: redir.c:182 +#: redir.c:181 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: No s'ha pogut sobreescriure el fitxer existent" -#: redir.c:187 +#: redir.c:186 #, fuzzy, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringit: no es pot especificar '/' en noms d'ordres" -#: redir.c:192 +#: redir.c:191 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "no es pot establir un conducte per a la substituci? del proc?s: %s" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no es pot assignar la llista a un element de la matriu" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "error de redirecci?" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:888 +#: shell.c:890 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%c%c: opci? inv?lida" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "No tinc cap nom d'usuari!" -#: shell.c:1807 +#: shell.c:1827 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU %s, versi? %s\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1511,44 +1526,44 @@ msgstr "" "Sintaxi:\t%s [opci?-format-llarg GNU] [opci?] ...\n" "\t%s [opci?-format-llarg GNU] [opci?] fitxer_de_seq??ncies ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "opcions de formes llargues de GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opcions de l'int?rpret d'ordres:\n" -#: shell.c:1815 +#: shell.c:1835 #, fuzzy -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD o -c ordre\t\t(nom?s per a invocar)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opci?\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Per a obtindre m?s informaci? sobre les opcions de l'int?rpret\n" "d'ordres, teclegeu ?%s -c \"help set\"?.\n" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Per a obtindre m?s informaci? sobre les ordres integrades de l'int?rpret,\n" "teclegeu '%s -c help' .\n" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1728,239 +1743,240 @@ msgstr "Senyal desconeguda #" msgid "Unknown Signal #%d" msgstr "Senyal desconeguda #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituci? inv?lida: no existeix '%s' en %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: no es pot assignar la llista a un element de la matriu" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "no es pot establir un conducte per a la substituci? del proc?s: %s" -#: subst.c:5039 +#: subst.c:5012 #, fuzzy msgid "cannot make child for process substitution" msgstr "no es pot establir un proc?s fill per a la substituci? del proc?s: %s" -#: subst.c:5084 +#: subst.c:5057 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" -#: subst.c:5086 +#: subst.c:5059 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "no es pot obrir el conducte anomenat %s per a %s: %s" -#: subst.c:5104 +#: subst.c:5077 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "no es pot duplicar el conducte anomenat %s\n" "com a descripci? de fitxer %d: %s" -#: subst.c:5296 +#: subst.c:5273 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "no es poden establir conductes per a la substituci? de l'ordre: %s" -#: subst.c:5334 +#: subst.c:5311 #, fuzzy msgid "cannot make child for command substitution" msgstr "no es pot crear un proc?s fill per a la substituci? del proc?s: %s" -#: subst.c:5351 +#: subst.c:5330 #, fuzzy msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute(): el coducte no es pot duplicar\n" "com a descripci? de fitxer 1: %s" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: par?metre nul o no ajustat" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: la sub-cadena de l'expressi? ?s < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: substituci? inv?lida" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no es pot assignar d'aquesta manera" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituci? inv?lida: no existeix '%s' en %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "s'esperava un par?metre" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: s'esperava una expressi? de nombre enter" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "s'esperava ')'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "mentre es buscava ?)?, s'ha trobat %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: s'esperava un operador unari" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: s'esperava un operador binari" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "s'ha perdut algun ']'" -#: trap.c:209 +#: trap.c:217 #, fuzzy msgid "invalid signal number" msgstr "n?mero inv?lid de senyal" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:379 +#: trap.c:398 #, fuzzy, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Senyal inv?lida %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "'%s': error en importar la definici? de la funci?" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: no es pot assignar la llista a un element de la matriu" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: par?metre nul o no ajustat" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: no es pot crear: %s" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, fuzzy, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU %s, versi? %s\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -2046,7 +2062,7 @@ msgstr "command [-pVv] ordre [par?metre ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-afFrxi] [-p] nom[=valor] ..." #: builtins.c:78 @@ -2175,7 +2191,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o opci?] [par?metres ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nom ...]" #: builtins.c:144 @@ -2249,12 +2266,12 @@ msgstr "umask [-S] [mode]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [n]" #: builtins.c:179 #, fuzzy -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "wait [n]" #: builtins.c:182 @@ -2632,6 +2649,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2647,17 +2665,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2668,11 +2687,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2706,7 +2725,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2719,7 +2738,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2746,7 +2765,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2758,7 +2777,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2799,7 +2818,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2822,7 +2841,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 #, fuzzy msgid "" "Exit the shell.\n" @@ -2831,7 +2850,7 @@ msgid "" " is that of the last command executed." msgstr "Finalitza l'int?rpret d'ordres amb l'estat d'N. Si s'ometeix N," -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2840,7 +2859,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2870,7 +2889,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 #, fuzzy msgid "" "Move job to the foreground.\n" @@ -2883,7 +2902,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "Ubica la ID_TASCA en primer pla, i l'activa com a la tasca actual." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2897,7 +2916,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2921,7 +2940,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2943,7 +2962,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2977,7 +2996,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3001,7 +3020,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3018,7 +3037,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3040,7 +3059,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3085,7 +3104,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3120,7 +3139,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3136,7 +3155,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3148,7 +3167,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3233,7 +3252,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3242,6 +3261,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3253,7 +3274,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3272,7 +3293,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3292,7 +3313,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3303,7 +3324,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3317,7 +3338,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3331,7 +3352,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3396,6 +3417,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3412,7 +3435,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -3423,7 +3446,7 @@ msgstr "" "par?metre ha de ser el signe \"]\" perqu? es puga tancar l'expressi? que\n" "comen?a pel signe \"[\"." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3435,7 +3458,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3479,7 +3502,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3509,7 +3532,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3556,7 +3579,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3574,7 +3597,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3586,26 +3609,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3618,7 +3645,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3635,7 +3662,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3655,7 +3682,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3671,7 +3698,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 #, fuzzy msgid "" "Execute commands based on pattern matching.\n" @@ -3683,7 +3710,7 @@ msgid "" " Returns the status of the last command executed." msgstr "Executa selectivament les ordres especificades en ORDRES seguint una " -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3704,7 +3731,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -3718,7 +3745,7 @@ msgstr "" "Expandeix i executa les ordres especificades en ORDRES i els executa\n" "de tal manera que la darrera ordre" -#: builtins.c:1621 +#: builtins.c:1629 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -3732,7 +3759,7 @@ msgstr "" "Expandeix i executa les ordres especificades en ORDRES i els executa\n" "de tal manera que la darrera ordre" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3745,7 +3772,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3759,7 +3786,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3771,7 +3798,7 @@ msgid "" " Returns the status of the last command executed." msgstr "Executa un conjunt d'ordres en un grup. A?? ?s una manera de" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3785,7 +3812,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3796,7 +3823,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3824,7 +3851,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3878,7 +3905,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3909,7 +3936,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3936,7 +3963,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3965,7 +3992,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3986,7 +4013,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4013,13 +4040,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4046,7 +4079,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4059,7 +4092,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4090,7 +4123,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4131,13 +4164,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "wait [pid]" +#~ msgstr "wait [n]" + #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" #~ "xrealloc: no es poden reassignar %lu octets (%lu octets reassignats)" @@ -4414,8 +4451,8 @@ msgstr "" #~ msgid "cannot duplicate fd %d to fd 1: %s" #~ msgstr "" -#~ "no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 1: " -#~ "%s" +#~ "no es pot copiar per duplicat el descriptor del fitxer df %d cap a df 1: %" +#~ "s" #~ msgid "%s: output redirection restricted" #~ msgstr "%s: redirecci? d'eixida restringida" diff --git a/po/cs.gmo b/po/cs.gmo index a208ed92b..3e670e7dc 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index 0ee346a15..cfaf1e08c 100644 --- a/po/cs.po +++ b/po/cs.po @@ -13,36 +13,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-01-23 21:10+0100\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" -"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "chybný podskript pole" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: číslované pole nezle převést na pole asociativní" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný klíč asociativního pole" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: přes nečíselný indexu nelze dosadit" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, 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" @@ -52,21 +52,21 @@ msgstr "%s: %s: při přiřazovaní asociativního pole se musí použít podskr msgid "%s: cannot create: %s" msgstr "%s: nelze vytvořit: %s" -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: první nebílý znak není „\"“" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "ne zavírající „%c“ v %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: chybí dvojtečkový oddělovač" @@ -132,7 +132,7 @@ msgstr "" msgid "HOME not set" msgstr "není nestavena HOME" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "příliÅ¡ mnoho argumentů" @@ -155,7 +155,7 @@ msgstr "varování: " msgid "%s: usage: " msgstr "%s: užití: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: přepínač vyžaduje argument" @@ -170,7 +170,7 @@ msgstr "%s: vyžadován číselný argument" msgid "%s: not found" msgstr "%s: nenalezeno" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: chybný přepínač" @@ -193,7 +193,7 @@ msgstr "neplatné osmičkové číslo" msgid "invalid hex number" msgstr "chybné Å¡estnáctkové číslo" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "chybné číslo" @@ -302,25 +302,35 @@ msgstr "varování: přepínač -C možná nebude dělat, co jste čekali" msgid "not currently executing completion function" msgstr "doplňovací funkce se právě nevykonává" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "může být použito jen ve funkci" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "„-f“ nezle použít na výrobu funkce" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funkce jen pro čtení" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: takto nelze likvidovat pole" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: asociativní pole nelze převést na číslované pole" @@ -349,23 +359,23 @@ msgstr "%s: není dynamicky nahráno" msgid "%s: cannot delete: %s" msgstr "%s: nelze smazat: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: je adresářem" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: není obyčejný soubor" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: soubor je příliÅ¡ velký" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binární soubor nelze spustit" @@ -463,7 +473,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: nelze otevřít: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -505,16 +515,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:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Neznámá chyba" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "očekáván výraz" @@ -523,64 +533,64 @@ msgstr "očekáván výraz" msgid "%s: not an indexed array" msgstr "%s: není (proměnnou typu) indexované pole" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: chybné určení deskriptoru souboru" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný deskriptor souboru: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: chybný počet řádků" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: chybný počátek pole" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné množství mezi voláními" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "prázdný název proměnné typu pole" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "je vyžadována podpora proměnných typu pole" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s“: postrádám formátovací znak" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: chybné určení časového limitu" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "varování: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "u \\x chybí Å¡estnáctková číslovka" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "u \\%c chybí unikódová číslovka" @@ -589,19 +599,24 @@ msgstr "u \\%c chybí unikódová číslovka" msgid "no other directory" msgstr "žádný další adresář" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: chybný argument s limitou" + +#: builtins/pushd.def:468 msgid "" msgstr "<žádný aktuální adresář>" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "prázdný zásobník adresářů" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "pořadí v zásobníku adresářů" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -643,7 +658,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:705 +#: builtins/pushd.def:711 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" @@ -688,7 +703,7 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -727,12 +742,12 @@ msgstr "" " \n" " Zásobník adresářů si můžete prohlédnout příkazem „dirs“." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: chybné určení časového limitu" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "chyba čtení: %d: %s" @@ -741,26 +756,26 @@ msgstr "chyba čtení: %d: %s" 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:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "funkci i proměnnou nelze ruÅ¡it současně" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: nelze zruÅ¡it" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nelze zruÅ¡it: %s jen pro čtení" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: není (proměnnou typu) pole" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: není funkcí" @@ -769,11 +784,11 @@ msgstr "%s: není funkcí" msgid "shift count" msgstr "počet shiftů" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "přepínač shellu nelze zároveň nastavit a zruÅ¡it" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: chybný název přepínače shellu" @@ -898,127 +913,127 @@ msgstr "chybný skok" msgid "%s: unbound variable" msgstr "%s: nevázaná proměnná" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: chybný formátovací znak" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "chyba v rouře" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omezeno: v názvu příkazu nesmí být „/“" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: příkaz nenalezen" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpretr" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binární soubor nelze spustit" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je součást shellu\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "úroveň rekurze výrazu byla překročena" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "zásobník rekurze podtekl" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntaktická chyba ve výrazu" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "pokus o přiřazení do ne-proměnné" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "dělení nulou" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "chyba: chybný expassing token" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "v podmíněném výrazu očekávána „:“" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "mocnitel menší než 0" -#: expr.c:948 +#: expr.c:957 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:973 +#: expr.c:983 msgid "missing `)'" msgstr "postrádám „)“" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntaktická chyba: očekáván operand" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntaktická chyba: chybný aritmetický operátor" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s“)" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "chybný aritmetický základ" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "hodnot je pro základ příliÅ¡ velká" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" @@ -1027,165 +1042,165 @@ msgstr "%s: chyba výrazu\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: rodičovské adresáře nejsou přístupné" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "na deskriptoru %d nelze resetovat režim nodelay" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp roury" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forknutý PID %d se objevil v běžící úloze %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) do the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: žádný takový PID" -#: jobs.c:1447 +#: jobs.c:1448 #, 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:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Dokončena" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Pozastavena" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Pozastavena (%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Běží" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Dokončena (%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Ukončena %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Stav neznámý" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core dumped [obraz paměti uložen]) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (cwd: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid na potomku (z %ld na %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: PID %ld není potomkem tohoto shellu" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Žádný záznam o procesu %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je pozastavena" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d je již na pozadí" -#: jobs.c:3105 +#: jobs.c:3215 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:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: řádek %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core dumped [obraz paměti uložen])" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(cwd nyní: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp selhalo" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplína linky" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nelze nastavit skupinu procesů terminálu (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "žádná správa úloh v tomto shellu" @@ -1207,49 +1222,49 @@ msgstr "" msgid "unknown" msgstr "není známo" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: blok v seznamu uvolněných zbit" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: zavoláno s argumentem již uvolněného bloku" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: zjiÅ¡těno podtečení, mh_nbytes mimo rozsah" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: velikosti počátečního a koncového kusu se liší" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: tabulka alokací je plná FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p již obsažen v tabulce jako alokovaný?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p již obsažen v tabulce jako volný?\n" @@ -1297,15 +1312,15 @@ msgstr "setlocale: %s: národní prostředí nelze změnit (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "V $_ máte poÅ¡tu" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "V $_ máte novou poÅ¡tu" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je přečtená\n" @@ -1338,106 +1353,106 @@ msgstr "„here“ dokument na řádku %d ukončen koncem souboru (požadováno msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, 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:4038 +#: parse.y:4086 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:4043 +#: parse.y:4091 #, 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:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "chyba syntaxe ve výrazu podmínky" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekávaný token „%s“, očekávána „)“" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "očekávána „)“" -#: parse.y:4157 +#: parse.y:4205 #, 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:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "neočekávaný argument u podmínkového unárního operátoru" -#: parse.y:4207 +#: parse.y:4255 #, 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:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "očekáván podmínkový binární operátor" -#: parse.y:4233 +#: parse.y:4281 #, 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:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "neočekávaný argument u podmínkového binárního operátoru" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekávaný token „%c“ v podmínkovém příkazu" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekávaný token „%s“ v podmínkovém příkazu" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekávaný token %d v podmínkovém příkazu" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe poblíž neočekávaného tokenu „%s“" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe poblíž „%s“" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: nenadálý konec souboru" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Shell lze ukončit příkazem „%s“.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "nenadálý konec souboru při hledání odpovídající „)“" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "doplňování: funkce „%s“ nenalezena" @@ -1467,71 +1482,71 @@ msgstr "xtrace_set: nullový ukazatel na souboru" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace: fd (%d) != fileno fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: chybný formátovací znak" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "deskriptor souboru mimo rozsah" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné přesměrování" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: existující soubor nelze přepsat" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omezeno: výstup nelze přesměrovat" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: deskriptor souboru nelze přiřadit do proměnné" -#: redir.c:548 +#: redir.c:582 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:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "nelze nalézt /tmp, vytvořte jej, prosím!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp musí být platným názvem pro adresář" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: chybný přepínač" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Nemám žádné jméno!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verze %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1540,43 +1555,44 @@ 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:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Dlouhé GNU přepínače:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Přepínače shellu:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD nebo -c příkaz nebo -O shopt_přepínač\t(pouze při vyvolání)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nebo -o přepínač\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Chyby nahlásíte příkazem „bashbug“.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operace" @@ -1754,72 +1770,77 @@ msgstr "Neznámé číslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámý signál č. %d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: seznam nelze přiřadit do prvku pole" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "nelze vyrobit rouru za účelem substituce procesu" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "nelze vytvořit potomka za účelem substituce procesu" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "pojmenovanou rouru %s nelze otevřít pro čtení" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "pojmenovanou rouru %s nelze otevřít pro zápis" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "nelze vytvořit rouru pro substituci příkazu" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "nelze vytvořit potomka pro substituci příkazu" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr null nebo nenastaven" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podřetězce < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: chybná substituce" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: takto nelze přiřazovat" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1827,128 +1848,139 @@ msgstr "" "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou " "substituci" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substituce: v %s chybí uzavírací „`“" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "žádná shoda: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "očekáván argument" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: očekáván celočíselný výraz" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "očekávána „)“" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "očekávána „)“, nalezeno %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekáván unární operátor" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekáván binární operátor" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "postrádám „]“" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba při importu definice „%s“" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "úroveň shellu (%d) příliÅ¡ vysoká, resetuji na 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: deskriptor souboru nelze přiřadit do proměnné" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s: má nullový exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr pro %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "v exportstr pro %s chybí „=“" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: hlava shell_variables není kontextem funkce" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chybí kontext global_variables" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nelze otevřít jako SOUBOR" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s mimo rozsah" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright © 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1956,35 +1988,21 @@ msgstr "" "Licence GPLv3+: GNU GPL verze 3 nebo novější \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, verze %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Toto je svobodné programové vybavení: máte právo jej měnit a šířit.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "VEÅ KERÉ ZÁRUKY chybí, jak jen zákon dovoluje.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licence GPLv2+: GNU GPL verze 2 nebo novější \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2064,7 +2082,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] příkaz [argument…]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [název[=hodnota]…]" #: builtins.c:78 @@ -2172,7 +2191,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o název_přepínače] [--] [argument…]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [jméno…]" #: builtins.c:144 @@ -2230,12 +2250,13 @@ msgstr "umask [-p] [-S] [mód]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2759,6 +2780,7 @@ msgstr "" " Vrací návratový kód PŘÍKAZU, nebo selže, nebyl–li příkaz nalezen." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2778,6 +2800,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2793,7 +2816,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Nastaví hodnoty a atributy proměnných.\n" " \n" @@ -2830,7 +2854,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud nebyl zadán neplatný přepínač a nedoÅ¡lo k chybě." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2840,7 +2864,8 @@ msgstr "" " \n" " Příkaz je zastaralý. Vizte „help declare“." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2851,8 +2876,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Definuje lokální proměnné.\n" " \n" @@ -2868,7 +2893,7 @@ msgstr "" " Vrací úspěch, nebyl-li zadán neplatný přepínač, nenastala-li chyba a\n" " vykonává-li shell funkci." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2933,7 +2958,7 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, nedojde-li k chybě zápisu na výstup." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2954,7 +2979,7 @@ msgstr "" " \n" " Vrací úspěch, nedojte-li k chybě zápisu na výstup." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3008,7 +3033,7 @@ msgstr "" " Vrací úspěch, je-li NÁZEV vestavěným příkazem shellu a nevyskytne-li\n" " se chyba." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3026,7 +3051,7 @@ msgstr "" " Návratový kód:\n" " Vrátí návratový kód příkazu, nebo úspěch, byl-li příkaz prázdný." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3109,7 +3134,7 @@ msgstr "" "dojde\n" " na konec přepínačů nebo nastane-li chyba." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3150,7 +3175,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud byl PŘÍKAZ nalezen a nedoÅ¡lo k chybě přesměrování." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3162,7 +3187,7 @@ msgstr "" " Ukončí tento shell se stavem N. Bez N bude návratový kód roven kódu\n" " posledně prováděného příkazu." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3175,7 +3200,7 @@ msgstr "" " Ukončí přihlaÅ¡ovací (login) shell se stavem N. Nebyl-li příkaz zavolán\n" " z přihlaÅ¡ovacího shellu, vrátí chybu." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3228,7 +3253,7 @@ msgstr "" " Vrátí úspěch nebo kód provedeného příkazu. Nenulový kód, vyskytne-li se\n" " chyba." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3249,7 +3274,7 @@ msgstr "" " Návratový kód:\n" " Kód úlohy přesunuté do popředí, nebo doÅ¡lo-li k chybě, kód selhání." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3271,7 +3296,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud je správa úloh zapnuta a nedoÅ¡lo-li k nějaké chybě." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3315,7 +3340,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud byl NÁZEV nalezen a nebyl-li zadán neplatný přepínač." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3356,7 +3381,7 @@ msgstr "" " 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:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3421,7 +3446,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:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3466,7 +3491,7 @@ msgstr "" "chyba.\n" " Byl-ly použit přepínač -x, vrátí návratový kód PŘÍKAZU." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3496,7 +3521,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo ÚLOHA." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3537,7 +3562,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:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3624,7 +3649,7 @@ msgstr "" " Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n" " navrácena 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3660,7 +3685,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3717,7 +3742,7 @@ msgstr "" " pro čtení nevyprší nebo není poskytnut neplatný deskriptor souboru jako\n" " argument -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3739,7 +3764,7 @@ msgstr "" " Návratová hodnota:\n" " Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3912,7 +3937,8 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný argument." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3921,6 +3947,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3949,7 +3977,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač a JMÉNO není jen pro\n" " čtení." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3984,7 +4012,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4022,7 +4050,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud nebyl zadán neplatný přepínač nebo NÁZEV." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4040,7 +4068,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud N není záporný a není větší než $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4064,7 +4092,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:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4088,7 +4116,8 @@ msgstr "" " Návratový kód:\n" " Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4153,6 +4182,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4254,7 +4285,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:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4266,7 +4297,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:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4286,7 +4317,7 @@ msgstr "" " Návratový kód:\n" " Vždy uspěje." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4370,7 +4401,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud SIGSPEC a zadané přepínače jsou platné." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4426,7 +4457,7 @@ msgstr "" " Vrátí úspěch, pokud vÅ¡echny NÁZVY byly nalezeny. Selže, pokud některé\n" " nalezeny nebyly." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4514,7 +4545,7 @@ msgstr "" " Návratová hodnota:\n" " Vrací úspěch, pokud nebyl zadán neplatný přepínač a nevyskytla se chyba." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4547,7 +4578,7 @@ msgstr "" " Návratový kód\n" " Vrátí úspěch, pokud nebyl zadán neplatný MÓD nebo přepínač." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4560,6 +4591,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4576,18 +4610,20 @@ msgstr "" " Vrátí kód ID, selže, pokud ID není platný nebo byl zadán neplatný " "přepínač." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Počká na dokončení procesu a vrátí jeho návratový kód.\n" " \n" @@ -4600,7 +4636,7 @@ msgstr "" " Vrátí kód ID, selže, pokud ID není platný nebo byl zadán neplatný " "přepínač." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4624,7 +4660,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4653,7 +4689,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy vykonaného příkazu." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4695,7 +4731,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy prováděného příkazu." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4726,7 +4762,7 @@ msgstr "" " Návratový kód:\n" " Návratová hodnota je návratová hodnota KOLONY." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4744,7 +4780,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4779,7 +4815,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4798,7 +4834,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4816,7 +4852,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy provedeného příkazu." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4838,7 +4874,7 @@ msgstr "" " Návratový kód:\n" " Vrátí návratový kód PŘÍKAZU." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4863,7 +4899,7 @@ msgstr "" " Návratový kód:\n" " Vrátí úspěch, pokud NÁZEV není jen pro čtení." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4880,7 +4916,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód naposledy spuÅ¡těného příkazu." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4905,7 +4941,7 @@ msgstr "" " Návratový kód:\n" " Vrátí kód obnovené úlohy." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4927,7 +4963,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:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4979,7 +5015,7 @@ msgstr "" " Návratový kód:\n" " 0 nebo 1 podle hodnoty VÝRAZU." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5084,7 +5120,7 @@ msgstr "" " \t\trozliÅ¡ení, které příkazy by měly být uloženy do seznamu\n" " \t\thistorie.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5141,7 +5177,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n" " neselhala." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5191,7 +5227,7 @@ msgstr "" " Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n" " adresáře." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5242,7 +5278,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:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5280,7 +5316,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:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5308,6 +5344,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5341,7 +5383,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:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5390,7 +5432,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:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5411,7 +5453,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:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5469,7 +5511,7 @@ msgstr "" "definováno\n" " pravidlo doplňování." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5545,7 +5587,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:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5555,6 +5597,19 @@ msgstr "" " \n" " Synonymum pro „mapfile“." +#~ 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 "" +#~ "Licence GPLv2+: GNU GPL verze 2 nebo novější \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [pid]" + #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/da.gmo b/po/da.gmo index 51aba492d..560b52f96 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index d249d153d..0a97b7e64 100644 --- a/po/da.po +++ b/po/da.po @@ -12,14 +12,14 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-03-18 01:36+0100\n" "Last-Translator: Kenneth Nielsen \n" "Language-Team: Danish \n" -"Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: da\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -28,22 +28,22 @@ msgstr "" msgid "bad array subscript" msgstr "ugyldigt arrayindeks" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan ikke konvertere indekseret til associativt array" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ugyldig nøgle til associativt array" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: kan ikke tildele til ikkenumerisk indeks" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" @@ -53,23 +53,23 @@ msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array" msgid "%s: cannot create: %s" msgstr "%s: kan ikke oprette %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando" -#: bashline.c:3955 +#: bashline.c:4010 #, 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:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "ingen afsluttende \"%c\" i %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: manglende kolonseparator" @@ -135,7 +135,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME ikke indstillet" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "for mange argumenter" @@ -158,7 +158,7 @@ msgstr "advarsel: " msgid "%s: usage: " msgstr "%s: brug: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: tilvalg kræver et argument" @@ -173,7 +173,7 @@ msgstr "%s: numerisk argument pÃ¥krævet" msgid "%s: not found" msgstr "%s: ikke fundet" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: ugyldigt tilvalg" @@ -196,7 +196,7 @@ msgstr "ugyldigt oktaltal" msgid "invalid hex number" msgstr "ugyldigt heksadecimalt tal" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "ugyldigt tal" @@ -305,25 +305,35 @@ msgstr "advarsel: tilvalget -C vil mÃ¥ske ikke virke, som du forventer" msgid "not currently executing completion function" msgstr "ikke i gang med at eksekvere fuldførelsesfunktion" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "kan kun bruges i en funktion" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "kan ikke bruge \"-f\" til at lave funktioner" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: skrivebeskyttet funktion" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan ikke destruere arrayvariabel pÃ¥ denne mÃ¥de" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan ikke konvertere associativt til indekseret array" @@ -352,23 +362,23 @@ msgstr "%s: ikke dynamisk indlæst" msgid "%s: cannot delete: %s" msgstr "%s: kan ikke slette: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: er en mappe" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ikke en regulær fil" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: fil er for stor" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan ikke eksekvere binær fil" @@ -465,7 +475,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: kan ikke Ã¥bne: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -509,16 +519,16 @@ msgstr "%s: inlib fejlede" msgid "no other options allowed with `-x'" msgstr "ingen andre tilvalg er tilladt sammen med \"-x\"" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Ukendt fejl" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "forventede et udtryk" @@ -527,65 +537,65 @@ msgstr "forventede et udtryk" msgid "%s: not an indexed array" msgstr "%s: ikke en arrayvariabel" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ugyldig filbeskrivelsesspecifikation" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, 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:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: ugyldigt antal linjer" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: ugyldig array-startindeks" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ugyldigt tilbagekaldskvantum" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "tomt arrayvariabelnavn" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "understøttelse af arrayvariabel pÃ¥krævet" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manglende formattegn" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ugyldigt formattegn" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "advarsel: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "manglende heksciffer for \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "manglende heksciffer for \\x" @@ -594,19 +604,24 @@ msgstr "manglende heksciffer for \\x" msgid "no other directory" msgstr "ingen anden mappe" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: ugyldigt grænseargument" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "mappestak tom" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "mappestakindeks" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -649,7 +664,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:705 +#: builtins/pushd.def:711 #, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" @@ -696,7 +711,7 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -734,12 +749,12 @@ msgstr "" " \n" "Den indbyggede funktion \"dirs\" viser mappestakken." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ugyldig specifikation af tidsudløb" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "læsefejl: %d: %s" @@ -748,26 +763,26 @@ msgstr "læsefejl: %d: %s" 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:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "kan ikke fjerne en funktion og en variabel samtidig" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: kan ikke fjerne" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: kan ikke fjerne: skrivebeskyttet %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: ikke en arrayvariabel" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ikke en funktion" @@ -776,11 +791,11 @@ msgstr "%s: ikke en funktion" msgid "shift count" msgstr "skifttæller" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "kan ikke indstille og fjerne skaltilvalg samtidig" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ugyldigt navn for skaltilvalg" @@ -905,56 +920,56 @@ msgstr "dÃ¥rligt hop" msgid "%s: unbound variable" msgstr "%s: ubundet variabel" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan ikke videresende standardinput fra /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "datakanalfejl (pipe error)" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: kommando ikke fundet" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: dÃ¥rlig fortolker" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan ikke eksekvere binær fil" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s er indbygget i skallen\n" @@ -968,74 +983,74 @@ 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:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan ikke duplikere fd %d til fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "grænse for rekursion af udtryk overskredet" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "underløb i rekursionsstak" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntaksfejl i udtryk" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "forsøgte tildeling til ikke-variabel" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 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:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: dÃ¥rligt expassign-udtryk" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "\":\" forventet for betingede udtryk" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponent mindre end 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifikator forventet efter præforøgelse eller -formindskelse" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "manglende \")\"" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntaksfejl: operand forventet" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntaksfejl: ugyldig aritmetisk operator" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (fejlelement er \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "ugyldig aritmetisk grundtal" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "værdi for stor til grundtal" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: fejl i udtryk\n" @@ -1045,165 +1060,165 @@ msgid "getcwd: cannot access parent directories" msgstr "getcwd: kan ikke tilgÃ¥ overliggende mapper" # Har ladet nodelay stÃ¥, idet jeg gætter pÃ¥ at det er et navn -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d" # ?? -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-datakanal (pipe)" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forgrenet pid %d figurerer i kørende job %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "sletter stoppet job %d med procesgruppe %ld" # ?? -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) i the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen process med det pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Færdig" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stoppet" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Stoppet(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Kører" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Færdig(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Afslut %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Ukendt status" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(smed kerne) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "underproces setpgid (%ld til %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen optegnelse af proces %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d er stoppet" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: job er afbrudt" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d er allerede i baggrunden" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: linje %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (smed kerne)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd nu: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fejlede" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan ikke indstille terminal-procesgruppe (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "ingen jobkontrol i denne skal" @@ -1225,49 +1240,49 @@ msgstr "" msgid "unknown" msgstr "ukendt" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: blok i fri liste tværet ud" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: kaldt med blokargument som allerede er fri" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: størrelse pÃ¥ start- og slut-bid afviger" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: kaldt med ikke-allokeret blokargument" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underløb detekteret, mh_nbytes uden for interval" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: størrelse pÃ¥ start- og slut-bid afviger" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: alloc-tabel er fyldt med FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p allerede i tabel som allokeret?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p allerede i tabel som fri?\n" @@ -1315,15 +1330,15 @@ msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Du har post i $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Du har ny post i $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Posten i %s er blevet læst\n" @@ -1357,108 +1372,108 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "uventet EOF mens der ledtes efter samhørende \"%c\"" -#: parse.y:4038 +#: parse.y:4086 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:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\"" -#: parse.y:4047 +#: parse.y:4095 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:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "uventet element \"%s\", forventede \")\"" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "forventede \")\"" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "uventet argument \"%s\" til unær betingelsesoperator" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "uventet argument til unær betingelsesoperator" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "ventedet binær betingelsesoperator" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "uventet argument \"%s\" til binær betingelsesoperator" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "uventet argument til binær betingelsesoperator" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "uventet udtryk \"%c\" i betingelseskommando" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "uventet udtryk \"%s\" i betingelseskommando" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "uventet udtryk \"%d\" i betingelseskommando" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaksfejl nær uventet udtryk \"%s\"" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "syntaksfejl nær \"%s\"" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "syntaksfejl: uventet slutning pÃ¥ fil" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "syntaksfejl" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Brug \"%s\" for at forlade skallen.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "uventet EOF mens der ledtes efter samhørende \")\"" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funktion \"%s\" ikke fundet" @@ -1487,71 +1502,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ugyldigt formateringstegn" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "fil-deskriptor uden for interval" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig videresendelse" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan ikke overskrive eksisterende fil" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begrænset: kan ikke videresende output" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: redir.c:548 +#: redir.c:582 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:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "videresendelsesfejl: kan ikke duplikere fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "kan ikke finde /tmp, opret venligst mappen!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp skal være et gyldigt mappenavn" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ugyldigt tilvalg" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Jeg har ikke noget navn!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1560,42 +1575,43 @@ msgstr "" "Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n" "\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Lange GNU-tilvalg:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Skal-tilvalg:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\tTilvalg -%s eller -o\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ugyldig handling" @@ -1771,129 +1787,134 @@ msgstr "Ukendt signal #" msgid "Unknown Signal #%d" msgstr "Ukendt signal #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"%s\" i %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan ikke tildele liste til arrayelementer" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "kan ikke lave datakanal (pipe) til procesudskiftning" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "kan ikke danne underproces til procesudskiftning" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til læsning" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan ikke Ã¥bne navngiven datakanal (pipe) %s til skrivning" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "kan ikke danne underproces til kommandoudskiftning" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: ugyldig filbeskrivelse: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null eller ikke indstillet" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: understreng-udtryk < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: dÃ¥rlig udskiftning" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan ikke tildele pÃ¥ denne mÃ¥de" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "dÃ¥rlig udskiftning: ingen lukkende \"`\" i %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "intet match: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argument forventet" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: heltalsudtryk forventet" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "\")\" forventet" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "\")\" forventet, fandt %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: unær operator forventet" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: binær operator forventet" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "manglende \"]\"" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "ugyldigt signalnummer" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1901,73 +1922,83 @@ msgstr "" "run_pending_traps: signalhÃ¥ndtering er SIG_DFL, gensender %d (%s) til mig " "selv" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: ugyldigt signal %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "fejl under importering af funktionsdefinition for \"%s\"" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalniveau (%d) for højt, genindstiller til 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: kan ikke tildele liste til arrayelementer" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneomrÃ¥de" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameter null eller ikke indstillet" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ugyldigt tegn %d i exportstr for %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "intet \"=\" i exportstr for %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen global_variables-kontekst" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: kan ikke Ã¥bne: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: ugyldig filbeskrivelse: %s" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s udenfor rækkevidde" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1975,35 +2006,21 @@ msgstr "" "Licens GPLv3+: GNU GPL version 3 eller senere \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, version %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Dette er fri software; du kan frit ændre eller redistribuere det.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Der er INGEN GARANTI i det omfang loven tillader.\n" -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc." - -#: version2.c:87 -#, fuzzy, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licens GPLv3+: GNU GPL version 3 eller senere \n" - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2085,7 +2102,7 @@ msgstr "command [-pVv] kommando [arg ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [navn[=værdi] ...]" #: builtins.c:78 @@ -2199,7 +2216,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o tilvalgsnavn] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [navn ...]" #: builtins.c:144 @@ -2258,12 +2276,13 @@ msgstr "umask [-p] [-S] [tilstand]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2813,6 +2832,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2828,7 +2848,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Indstil variabelværdier og -attributter\n" " \n" @@ -2867,7 +2888,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2877,7 +2898,8 @@ msgstr "" " \n" " Forældet. Læs i \"help declare\"." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2888,8 +2910,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Definer lokale variable.\n" " \n" @@ -2905,7 +2927,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg, hvis der\n" " opstÃ¥r en fejl, eller hvis skallen ikke eksekverer en funktion." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2969,7 +2991,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der opstÃ¥r en skrivefejl." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2991,7 +3013,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der opstÃ¥r en skrivefejl." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3046,7 +3068,7 @@ msgstr "" " Returnerer succes med mindre NAVN ikke er en skal-indbygget eller hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3068,7 +3090,7 @@ msgstr "" "er\n" " null." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3148,7 +3170,7 @@ msgstr "" " Returnerer succes hvis et tilvalg findes, fejler hvis afslutningen\n" " af tilvalgene nÃ¥s eller hvis der opstÃ¥r en fejl." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3191,7 +3213,7 @@ msgstr "" "der\n" " opstÃ¥r en omdirigeringsfejl." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3203,7 +3225,7 @@ msgstr "" " Afslut skallen med status N. Hvis N udelades vil afslutningsstatus\n" " blive den samme som sidst eksekverede kommando." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3217,7 +3239,7 @@ msgstr "" "hvis\n" " den ikke eksekveres i en logindskal." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3278,7 +3300,7 @@ msgstr "" "hvis\n" " der opstod en fejl." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3301,7 +3323,7 @@ msgstr "" "der\n" " opstÃ¥r fejl." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3326,7 +3348,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3370,7 +3392,7 @@ msgstr "" "angives\n" " et ugyldig tilvalg." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3411,7 +3433,7 @@ msgstr "" " Returnerer succes med mindre MØNSTER ikke kan findes, eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3479,7 +3501,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3528,7 +3550,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3559,7 +3581,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3605,7 +3627,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3692,7 +3714,7 @@ msgstr "" " Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n" " returneres 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3728,7 +3750,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3788,7 +3810,7 @@ msgstr "" "indtræffer,\n" " eller hvis en ugyldig fildeskriptor gives som argument til -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3813,7 +3835,7 @@ msgstr "" "en\n" " funktion eller et skript." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3997,7 +4019,8 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre der angives et ugyldigt tilvalg." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4006,6 +4029,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4036,7 +4061,7 @@ msgstr "" "et\n" " givent navn er skrivebeskyttet." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4072,7 +4097,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldig." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4110,7 +4135,7 @@ msgstr "" " Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n" " NAVN er ugyldigt." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4129,7 +4154,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre N er negativ eller større end $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4155,7 +4180,7 @@ msgstr "" "hvis\n" " FILNAVN ikke kan læses." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4182,7 +4207,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4248,6 +4273,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4342,7 +4369,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:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4355,7 +4382,7 @@ msgstr "" "sidste\n" " argument skal være \"]\", for at den passer til den Ã¥bnende \"[\"." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4375,7 +4402,7 @@ msgstr "" " Afslutningsstatus:\n" " Lykkes altid." -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4456,7 +4483,7 @@ msgstr "" "angivet\n" " et ugyldigt tilvalg." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4518,7 +4545,7 @@ msgstr "" "enkelt\n" " ikke findes." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4612,7 +4639,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4650,7 +4677,7 @@ msgstr "" "ugyldigt\n" " tilvalg angives." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4663,6 +4690,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4682,18 +4712,20 @@ msgstr "" "angives\n" " et ugyldigt tilvalg." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Venter pÃ¥ færdiggørelse af proces og returnerer dens afslutningsstatus.\n" " \n" @@ -4706,7 +4738,7 @@ msgstr "" " Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n" " angives et ugyldigt tilvalg." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4731,7 +4763,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen for den sidst eksekverede kommando." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4761,7 +4793,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for den sidst eksekverede kommando." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4799,7 +4831,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4828,7 +4860,7 @@ msgstr "" " Afslutningsstatus:\n" " Afslutningsstatus er afslutningsstatus for DATAKANAL." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4847,7 +4879,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4886,7 +4918,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4904,7 +4936,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4922,7 +4954,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4945,7 +4977,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer afslutningsstatussen for KOMMANDO." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4969,7 +5001,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer succes med mindre NAVN er skrivebeskyttet." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4987,7 +5019,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen fra den sidst eksekverede kommando." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -5014,7 +5046,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer statussen af det genoptagede job." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5033,7 +5065,7 @@ msgstr "" " Afslutningsstatus:\n" " Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -5088,7 +5120,7 @@ msgstr "" " Afslutningsstatus:\n" " 0 eller 1 afhængigt af udtrykkets værdi." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5201,7 +5233,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:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5260,7 +5292,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5314,7 +5346,7 @@ msgstr "" "hvis\n" " mappeskiftet mislykkes." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5368,7 +5400,7 @@ msgstr "" "der\n" " opstÃ¥r en fejl." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5409,7 +5441,7 @@ msgstr "" "et\n" " ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5437,6 +5469,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5470,7 +5508,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en skrive- eller tildelingsfejl." -#: builtins.c:1926 +#: builtins.c:1939 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5518,7 +5556,7 @@ msgstr "" "hvis\n" " der opstÃ¥r en fejl." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5543,7 +5581,7 @@ msgstr "" " der opstÃ¥r en fejl." # Fejlrapport -#: builtins.c:1969 +#: builtins.c:1982 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5605,7 +5643,7 @@ msgstr "" "hvis\n" " der ikke er defineret en fuldførselsspecifikation for NAVN." -#: builtins.c:1999 +#: builtins.c:2012 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5683,7 +5721,7 @@ msgstr "" "hvis\n" " ARRAY er skrivebeskyttet." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5693,6 +5731,21 @@ msgstr "" " \n" " Et synonym for \"mapfile\"." +#, 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 1873bf450..c8d05e00c 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 20ebbae00..605755206 100644 --- a/po/de.po +++ b/po/de.po @@ -6,60 +6,64 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-09-24 19:12+0200\n" "Last-Translator: Nils Naumann \n" "Language-Team: German \n" -"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" +"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:50 +#: arrayfunc.c:51 msgid "bad array subscript" msgstr "Falscher Feldbezeichner." -#: arrayfunc.c:313 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln." -#: arrayfunc.c:480 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Ungültiger Schlüssel für das assoziative Array." -#: arrayfunc.c:482 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen." -#: arrayfunc.c:518 +#: arrayfunc.c:586 #, 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." +msgstr "" +"%s: %s: Ein Feldbezeicher wird zum Zuweisen eines assoziativen Arrays " +"benötigt." -#: bashhist.c:387 +#: bashhist.c:388 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Kann die Datei %s nicht erzeugen." -#: bashline.c:3498 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando finden." +msgstr "" +"bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " +"finden." -#: bashline.c:3584 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr " %s: Das erste Zeichen ist nicht `\\'." -#: bashline.c:3613 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "fehlende schließende `%c' in %s." -#: bashline.c:3647 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: Fehlender Doppelpunkt." @@ -69,36 +73,36 @@ msgstr "%s: Fehlender Doppelpunkt." msgid "`%s': invalid alias name" msgstr "`%s': Ungültiger Alias Name." -#: builtins/bind.def:120 builtins/bind.def:123 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "Zeileneditierung ist nicht aktiviert." -#: builtins/bind.def:206 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': Ungültiger KEYMAP Name." -#: builtins/bind.def:245 +#: builtins/bind.def:251 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Nicht lesbar: %s" -#: builtins/bind.def:260 +#: builtins/bind.def:266 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': Bindung kann nicht gelöst werden." -#: builtins/bind.def:295 builtins/bind.def:325 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s: Unbekannter Funktionsname." -#: builtins/bind.def:303 +#: 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:307 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s kann aufgerufen werden durch " @@ -119,11 +123,15 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:235 +#: builtins/cd.def:239 msgid "HOME not set" msgstr "HOME ist nicht zugewiesen." -#: builtins/cd.def:247 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 +msgid "too many arguments" +msgstr "Zu viele Argumente." + +#: builtins/cd.def:258 msgid "OLDPWD not set" msgstr "OLDPWD ist nicht zugewiesen." @@ -133,7 +141,7 @@ msgstr "OLDPWD ist nicht zugewiesen." msgid "line %d: " msgstr "Zeile %d: " -#: builtins/common.c:139 error.c:261 +#: builtins/common.c:139 error.c:265 #, c-format msgid "warning: " msgstr "Warnung: " @@ -143,11 +151,7 @@ msgstr "Warnung: " msgid "%s: usage: " msgstr "%s: Gebrauch: " -#: builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "Zu viele Argumente." - -#: builtins/common.c:191 shell.c:500 shell.c:782 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: Ein numerischer Paremeter ist erforderlich." @@ -162,7 +166,7 @@ msgstr "%s: Ein numerischer Parameter ist erforderlich." msgid "%s: not found" msgstr "%s: Nicht gefunden." -#: builtins/common.c:214 shell.c:795 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: Ungültige Option" @@ -172,7 +176,7 @@ msgstr "%s: Ungültige Option" msgid "%s: invalid option name" msgstr "%s: Ungültiger Optionsname." -#: builtins/common.c:228 general.c:231 general.c:236 +#: builtins/common.c:228 general.c:234 general.c:239 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': Ist kein gültiger Bezeichner." @@ -185,7 +189,7 @@ msgstr "Ungültige Oktalzahl." msgid "invalid hex number" msgstr "Ungültige hexadezimale Zahl." -#: builtins/common.c:242 expr.c:1362 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "Ungültige Zahl." @@ -199,7 +203,7 @@ msgstr "%s: Ungültige Signalbezeichnung." msgid "`%s': not a pid or valid job spec" msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung." -#: builtins/common.c:264 error.c:454 +#: builtins/common.c:264 error.c:458 #, c-format msgid "%s: readonly variable" msgstr "%s: Schreibgeschützte Variable." @@ -271,51 +275,62 @@ msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n" msgid "%s: ambiguous job spec" msgstr "%s: Mehrdeutige Job Bezeichnung." -#: builtins/complete.def:276 +#: builtins/complete.def:277 #, c-format msgid "%s: invalid action name" msgstr "%s: Ungültige Methode." -#: builtins/complete.def:449 builtins/complete.def:644 -#: builtins/complete.def:853 +#: builtins/complete.def:450 builtins/complete.def:645 +#: builtins/complete.def:855 #, c-format msgid "%s: no completion specification" msgstr "%s: Keine Komplettierung angegeben." -#: builtins/complete.def:696 +#: builtins/complete.def:697 msgid "warning: -F option may not work as you expect" msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:698 +#: builtins/complete.def:699 msgid "warning: -C option may not work as you expect" msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:826 +#: builtins/complete.def:828 msgid "not currently executing completion function" msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "kann nur innerhalb einer Funktion benutzt werden." -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "Mit `-f' können keine Funktionen erzeugt werden." -#: builtins/declare.def:378 execute_cmd.c:5105 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: Schreibgeschützte Funktion." -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." -#: builtins/declare.def:481 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." +msgstr "" +"%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." #: builtins/enable.def:137 builtins/enable.def:145 msgid "dynamic loading not available" @@ -341,24 +356,23 @@ msgstr "%s: Ist nicht dynamisch geladen." msgid "%s: cannot delete: %s" msgstr "%s: Kann nicht löschen: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 -#: shell.c:1457 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: ist ein Verzeichnis." -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: Ist keine normale Datei." -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: Die Datei ist zu groß." -#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 -#: shell.c:1467 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Kann die Datei nicht ausführen." @@ -442,15 +456,18 @@ msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `" #: builtins/help.def:168 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' oder `info %s'." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' " +"oder `info %s'." #: builtins/help.def:185 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Kann die Datei nicht öffnen: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -478,7 +495,7 @@ msgstr "Es darf nur eine Option aus -anrw angegeben werden." msgid "history position" msgstr "Kommandostapelposition." -#: builtins/history.def:365 +#: builtins/history.def:366 #, c-format msgid "%s: history expansion failed" msgstr "%s: Kommandoersetzung gescheitert." @@ -492,16 +509,16 @@ msgstr "%s: inlib gescheitert." msgid "no other options allowed with `-x'" msgstr "Keine weiteren Optionen mit `-x' erlaubt." -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Unbekannter Fehler." -#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "Ausdruck erwartet." @@ -510,64 +527,64 @@ msgstr "Ausdruck erwartet." msgid "%s: not an indexed array" msgstr "%s: Ist kein indiziertes Array." -#: builtins/mapfile.def:256 builtins/read.def:279 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Ungültige Datei-Deskriptor Angabe." -#: builtins/mapfile.def:264 builtins/read.def:286 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Ungültiger Datei-Deskriptor: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: Ungültige Zeilenanzahlangabe." -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: Ungültiger Zeilenindex für den Array Beginn." -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "Fehlender Name für die Array Variable." -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden." -#: builtins/printf.def:394 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': Fehlendes Formatierungszeichen." -#: builtins/printf.def:448 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': Ungültige Zeitformatangabe." -#: builtins/printf.def:635 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': Ungültiges Formatierungszeichen." -#: builtins/printf.def:662 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "Warnung: %s: %s" -#: builtins/printf.def:840 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "Fehlende hexadezimale Ziffer nach \\x." -#: builtins/printf.def:855 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "Fehlendes Unicode Zeichen für \\%c." @@ -576,19 +593,24 @@ msgstr "Fehlendes Unicode Zeichen für \\%c." msgid "no other directory" msgstr "kein anderes Verzeichnis" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: Ungültiges Grenzwertargument." + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "Der Verzeichnisstapel ist leer." -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "Verzeichnisstapelindex" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -603,10 +625,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse an. Durch\n" @@ -628,7 +652,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:705 +#: builtins/pushd.def:711 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" @@ -674,7 +698,7 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verueichnisstapel an." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -715,40 +739,43 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verzeichnisstapel an." -#: builtins/read.def:252 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Ungültige Wartezeitangebe." -#: builtins/read.def:588 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "Lesefehler: %d: %s" -#: builtins/return.def:73 +#: builtins/return.def:75 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." +msgstr "" +"»Return« ist nur aus einer Funktion oder einem mit »source« ausgefühten Skript " +"möglich." -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" -msgstr "Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." +msgstr "" +"Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." -#: builtins/set.def:808 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: `unset' nicht möglich." -#: builtins/set.def:815 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s" -#: builtins/set.def:826 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: Ist keine Feldvariable." -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: Ist keine Funktion." @@ -757,11 +784,11 @@ msgstr "%s: Ist keine Funktion." msgid "shift count" msgstr "Verschiebezähler" -#: builtins/shopt.def:264 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren." -#: builtins/shopt.def:329 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Ungültiger Shell Optionen Name." @@ -804,7 +831,7 @@ msgstr "%s ist eine Funktion.\n" msgid "%s is a shell builtin\n" msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" -#: builtins/type.def:317 builtins/type.def:391 +#: builtins/type.def:317 builtins/type.def:393 #, c-format msgid "%s is %s\n" msgstr "%s ist %s\n" @@ -814,26 +841,26 @@ msgstr "%s ist %s\n" msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:376 +#: builtins/ulimit.def:379 #, c-format msgid "%s: invalid limit argument" msgstr "%s: Ungültiges Grenzwertargument." -#: builtins/ulimit.def:402 +#: builtins/ulimit.def:405 #, c-format msgid "`%c': bad command" msgstr "`%c': Falsches Kommando." -#: builtins/ulimit.def:431 +#: builtins/ulimit.def:434 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Kann die nicht Grenze setzen: %s" -#: builtins/ulimit.def:457 +#: builtins/ulimit.def:460 msgid "limit" msgstr "Grenze" -#: builtins/ulimit.def:469 builtins/ulimit.def:769 +#: builtins/ulimit.def:472 builtins/ulimit.def:772 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Kann die Grenze nicht ändern: %s" @@ -852,7 +879,7 @@ msgstr "`%c': Ungültiger Operator für den symbolischen Modus." msgid "`%c': invalid symbolic mode character" msgstr "`%c': Ungültiges Zeichen im symbolischen Modus." -#: error.c:90 error.c:321 error.c:323 error.c:325 +#: error.c:90 error.c:325 error.c:327 error.c:329 msgid " line " msgstr " Zeile " @@ -866,134 +893,150 @@ msgstr "Letztes Kommando: %s\n" msgid "Aborting..." msgstr "Abbruch..." -#: error.c:406 +#: error.c:410 msgid "unknown command error" msgstr "Unbekanntes Kommando" -#: error.c:407 +#: error.c:411 msgid "bad command type" msgstr "" # Programmierfehler -#: error.c:408 +#: error.c:412 msgid "bad connector" msgstr "" -#: error.c:409 +#: error.c:413 msgid "bad jump" msgstr "Falscher Sprung" -#: error.c:447 +#: error.c:451 #, c-format msgid "%s: unbound variable" msgstr "%s ist nicht gesetzt." -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" -#: execute_cmd.c:1168 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen." -#: execute_cmd.c:2121 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "Pipe-Fehler" -#: execute_cmd.c:4640 +#: execute_cmd.c:4347 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig." -#: execute_cmd.c:4735 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: Kommando nicht gefunden." -#: execute_cmd.c:4959 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:4995 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Defekter Interpreter" -#: execute_cmd.c:5144 +#: execute_cmd.c:5234 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: Kann die Datei nicht ausführen." + +#: execute_cmd.c:5306 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" + +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Kann fd %d nicht auf fd %d verdoppeln." -#: expr.c:256 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "Zu viele Rekursionen in Ausdruck." -#: expr.c:280 +#: expr.c:286 msgid "recursion stack underflow" msgstr "Rekursionsstapel leer." -#: expr.c:422 +#: expr.c:434 msgid "syntax error in expression" msgstr "Syntaxfehler im Ausdruck." -#: expr.c:463 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "Versuchte Zuweisung zu keiner Variablen." -#: expr.c:486 expr.c:491 expr.c:807 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "Division durch 0." -#: expr.c:517 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "Fehler: Falscher Zuweisungsoperator." -#: expr.c:564 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "`:' für ein bedingten Ausdruck erwaret." -#: expr.c:832 +#: expr.c:904 msgid "exponent less than 0" msgstr "Der Exponent ist kleiner als 0." -#: expr.c:887 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." +msgstr "" +"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." -#: expr.c:910 +#: expr.c:983 msgid "missing `)'" msgstr "Fehlende `)'" -#: expr.c:959 expr.c:1282 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "Syntax Fehler: Operator erwartet." -#: expr.c:1284 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." -#: expr.c:1308 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")." -#: expr.c:1366 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "Ungültige Basis." -#: expr.c:1386 +#: expr.c:1475 msgid "value too great for base" msgstr "Der Wert ist für die aktuelle Basis zu groß." -#: expr.c:1435 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: Fehler im Ausdruck.\n" @@ -1002,170 +1045,170 @@ msgstr "%s: Fehler im Ausdruck.\n" msgid "getcwd: cannot access parent directories" msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen." -#: input.c:94 subst.c:5082 +#: input.c:101 subst.c:5067 #, 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:260 +#: input.c:267 #, 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:268 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d." -#: jobs.c:468 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:889 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." -#: jobs.c:1007 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." -#: jobs.c:1112 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1115 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" # Programmierfehler -#: jobs.c:1430 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: Prozeßnummer existiert nicht." -#: jobs.c:1445 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1459 jobs.c:1484 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Fertig" -#: jobs.c:1464 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Angehalten" -#: jobs.c:1468 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Angehalten(%s)" -#: jobs.c:1472 +#: jobs.c:1475 msgid "Running" msgstr "Läuft" -#: jobs.c:1486 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Fertig(%d)" -#: jobs.c:1488 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1491 +#: jobs.c:1494 msgid "Unknown status" msgstr "Unbekannter Status" -#: jobs.c:1578 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(Speicherabzug geschrieben) " -#: jobs.c:1597 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" # interner Fehler -#: jobs.c:1805 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2133 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: Prozeß %ld wurde nicht von dieser Shell gestartet." -#: jobs.c:2360 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2637 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2859 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: Programm ist beendet." -#: jobs.c:2868 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3089 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" # Debug Ausgabe -#: jobs.c:3538 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: Zeile %d: " -#: jobs.c:3552 nojobs.c:814 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (Speicherabzug geschrieben)" -#: jobs.c:3564 jobs.c:3577 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" # interner Fehler -#: jobs.c:3609 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp war nicht erfolgreich." # interner Fehler -#: jobs.c:3669 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" # interner Fehler -#: jobs.c:3679 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3707 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." -#: jobs.c:3712 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "Keine Job Steuerung in dieser Shell." @@ -1187,54 +1230,61 @@ msgstr "" msgid "unknown" msgstr "Unbekannt" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben." +msgstr "" +"Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben." -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich." -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen." -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." +msgstr "" +"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n" +msgstr "" +"register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt gekennzeichnet?\n" +msgstr "" +"register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt " +"gekennzeichnet?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "register_free: %p ist bereits in der Speicherzuordnungstabelle als frei gekennzeichnet?\n" +msgstr "" +"register_free: %p ist bereits in der Speicherzuordnungstabelle als frei " +"gekennzeichnet?\n" -#: lib/sh/fmtulong.c:101 +#: lib/sh/fmtulong.c:102 msgid "invalid base" msgstr "Ungültige Basis" @@ -1257,36 +1307,36 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe." msgid "network operations not supported" msgstr "Der Netzwerkbetrieb ist nicht unterstützt." -#: locale.c:192 +#: locale.c:204 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s)." -#: locale.c:194 +#: locale.c:206 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s): %s" -#: locale.c:247 +#: locale.c:263 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: Kann die Standorteinstellungen nicht ändern (%s)." -#: locale.c:249 +#: locale.c:265 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: Kann nicht die Locale ändern (%s): %s" # Du oder Sie? -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Sie haben Post in $_." -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Sie haben neue Post in $_." -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Die Post in %s wurde bereits gelesen.\n" @@ -1305,119 +1355,121 @@ msgid "syntax error: `((%s))'" msgstr "Syntax Fehler: `((%s))'." # interner Fehler -#: make_cmd.c:575 +#: make_cmd.c:578 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Falscher Befehlstyp %d." -#: make_cmd.c:659 +#: make_cmd.c:662 #, 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')." +msgstr "" +"Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende " +"(erwartet wird `%s')." -#: make_cmd.c:756 +#: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3444 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Dateiende beim Suchen nach `%c' erreicht." -#: parse.y:4025 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "Dateiende beim Suchen nach `]]' erreicht." -#: parse.y:4030 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'." -#: parse.y:4034 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "Syntaxfehler im bedingen Ausdruck." -#: parse.y:4112 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'" -#: parse.y:4116 +#: parse.y:4177 msgid "expected `)'" msgstr "`)' erwartet." -#: parse.y:4144 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4148 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4194 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4198 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4220 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4224 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4235 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4238 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4242 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5566 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:5584 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "Syntax Fehler: Unerwartetes Dateiende." -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error" msgstr "Syntax Fehler" # Du oder Sie? -#: parse.y:5656 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Benutze \"%s\" um die Shell zu verlassen.\n" -#: parse.y:5818 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "Dateiende beim Suchen nach passender `)' erreicht." -#: pcomplete.c:1030 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1427,90 +1479,90 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:296 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: Falsches Verbindungszeichen `%d'." -#: print_cmd.c:368 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: Ungültige Dateibeschreibung." -#: print_cmd.c:373 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:377 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1478 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: Mehrdeutige Umlenkung." -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Kann existierende Datei nicht überschreiben." -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden." -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: Kann fd keiner Variable zuweisen." -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1136 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:333 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen." -#: shell.c:337 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp muß ein gültiger Verzeichnisname sein." -#: shell.c:884 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: Ungültige Option" -#: shell.c:1652 +#: shell.c:1682 msgid "I have no name!" msgstr "Ich habe keinen Benutzernamen!" -#: shell.c:1795 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, Version %s-(%s)\n" -#: shell.c:1796 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1519,39 +1571,40 @@ msgstr "" "Benutzung:\t%s [Lange GNU Option] [Option] ...\n" "\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n" -#: shell.c:1798 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Lange GNU Optionen:\n" -#: shell.c:1802 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Shell-Optionen:\n" -#: shell.c:1803 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD oder -c Kommando\t\t(Nur Aufruf)\n" -#: shell.c:1818 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s oder Option -o\n" -#: shell.c:1824 +#: shell.c:1856 #, 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:1825 +#: shell.c:1857 #, 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:1826 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n" -#: sig.c:638 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Ungültige Operation" @@ -1725,227 +1778,242 @@ msgstr "Unbekannte Signalnummer." msgid "Unknown Signal #%d" msgstr "Unbekanntes Signal Nr.: %d." -#: subst.c:1333 subst.c:1502 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten." -#: subst.c:2795 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Kann einem Feldelement keine Liste zuweisen." -#: subst.c:4979 subst.c:4995 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "Kann keine Pipe für die Prozeßersetzung erzeugen." -#: subst.c:5027 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "Kann den Kindsprozess für die Prozeßersetzung nicht erzeugen." -#: subst.c:5072 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen." -#: subst.c:5074 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen." -#: subst.c:5092 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kann die benannte Pipe %s nicht auf fd %d." -#: subst.c:5284 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." -#: subst.c:5322 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." # interner Fehler -#: subst.c:5339 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "Kommandoersetzung: Kann Pipe nicht als fd 1 duplizieren." -#: subst.c:5859 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parameter ist Null oder nicht gesetzt." # interner Fehler -#: subst.c:6125 subst.c:6140 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: Teilstring-Ausdruck < 0." -#: subst.c:7271 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: Falsche Variablenersetzung." -#: subst.c:7347 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: Kann so nicht zuweisen." -#: subst.c:7684 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer Ersetzungen erzwingen." +#: subst.c:7767 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " +"Ersetzungen erzwingen." -#: subst.c:8149 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." -#: subst.c:9036 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "Keine Entsprechung: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "Argument erwartet." -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: Ganzzahliger Ausdruck erwartet." -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "`)' erwartet." -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "`)' erwartet, %s gefunden." -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: Einstelliger (unärer) Operator erwartet." -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: Zweistelliger (binärer) Operator erwartet." -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "Fehlende `]'" -#: trap.c:207 +#: trap.c:217 msgid "invalid signal number" msgstr "Ungültige Signalnummer." -#: trap.c:337 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:341 +#: trap.c:352 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" # Programmierfehler -#: trap.c:393 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Falsches Signal %d." -#: variables.c:363 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'." -#: variables.c:755 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1932 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3182 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: Kann fd keiner Variable zuweisen." + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3427 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3432 variables.c:3441 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3447 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3891 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3904 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:3978 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4786 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Kann nicht als Datei geöffnet werden." -#: variables.c:4791 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Lizenz GPLv3+: GNU GPL Version 3 oder jünger \n" +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Lizenz GPLv3+: GNU GPL Version 3 oder jünger \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, Version %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Dies ist freie Software. Sie darf verändert und verteilt werden.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Für dieses Programm besteht keinerlei Garantie.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "License GPLv2+: GNU GPL version 2 or later \n" -msgstr "Lizenz GPLv2+: GNU GPL Version 2 oder jünger \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1975,8 +2043,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] Name [Name ...]" #: builtins.c:51 -msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpvsPVS] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u Name] [-r Tastenfolge:Shell Kommando] [Tastenfolge:readline Funktion oder Kommando]" +#, 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 Tastaturtabelle] [-f Dateiname] [-q Name] [-u Name] [-r " +"Tastenfolge:Shell Kommando] [Tastenfolge:readline Funktion oder Kommando]" #: builtins.c:54 msgid "break [n]" @@ -2019,7 +2092,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] Kommando [Argument ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] Name[=Wert] ..." # @@ -2065,7 +2139,9 @@ msgstr "logout [n]" #: builtins.c:103 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] [Kommando]" +msgstr "" +"fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] " +"[Kommando]" #: builtins.c:107 msgid "fg [job_spec]" @@ -2084,8 +2160,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [Muster ...]" #: builtins.c:121 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps Argument [Argument...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps " +"Argument [Argument...]" #: builtins.c:125 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2096,16 +2176,24 @@ msgid "disown [-h] [-ar] [jobspec ...]" msgstr "disown [-h] [-ar] [Jobbezeichnung ...]" #: builtins.c:132 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder kill -l [Signalname]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s Signalname | -n Signalnummer | -Signalname] [pid | job] ... oder " +"kill -l [Signalname]" #: builtins.c:134 msgid "let arg [arg ...]" msgstr "let Argument [Argument ...]" #: builtins.c:136 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N " +"Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]" #: builtins.c:138 msgid "return [n]" @@ -2116,7 +2204,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o Option] [--] [Argument ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [NAME ...]" #: builtins.c:144 @@ -2164,7 +2253,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] Name [Name ...]" #: builtins.c:169 -msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [Grenzwert]" #: builtins.c:172 @@ -2172,11 +2262,13 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [Modus]" #: builtins.c:175 -msgid "wait [id]" +#, fuzzy +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" msgstr "wait [pid]" #: builtins.c:182 @@ -2200,8 +2292,12 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case Wort in [Muster [| Muster]...) Kommandos ;;]... esac" #: builtins.c:192 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else Kommandos; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else " +"Kommandos; ] fi" #: builtins.c:194 msgid "while COMMANDS; do COMMANDS; done" @@ -2260,24 +2356,43 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] Format [Argumente]" #: builtins.c:229 -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 Option] [-A Aktion] [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]" +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 Option] [-A Aktion] [-G Suchmuster] " +"[-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-" +"S Suffix] [Name ...]" #: builtins.c:233 -msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S Suffix] [Wort]" +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "" +"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W " +"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " +"Suffix] [Wort]" #: builtins.c:237 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o Option] [-DE] [Name ...]" #: builtins.c:240 -msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C Callback] [-c Menge] [Feldvariable]" +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C Callback] [-c " +"Menge] [Feldvariable]" #: builtins.c:242 -msgid "readarray [-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]" +msgid "" +"readarray [-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]" # alias #: builtins.c:254 @@ -2296,7 +2411,8 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Definiert Aliase oder zeigt sie an.\n" @@ -2334,6 +2450,7 @@ msgstr "" # bind #: builtins.c:289 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2345,24 +2462,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" +" -X\t\t List key sequences bound with -x and associated commands\n" +" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." @@ -2376,27 +2499,41 @@ msgstr "" " '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" " Optionen:\n" -" -m Keymap Benutzt KEYMAP as Tastaturbelegung für die Laufzeit\n" -" dieses Kommandos. Gültige Keymap Namen sind: emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" -m Keymap Benutzt KEYMAP as Tastaturbelegung für die " +"Laufzeit\n" +" dieses Kommandos. Gültige Keymap Namen sind: " +"emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command und vi-insert.\n" " -l Listet Funktionsnamen auf.\n" " -P Listet Funktionsnamen und Tastenzuordnungen auf.\n" -" -p Listet Funktionsnamen und Tastenzuordnungen so auf,\n" -" dass sie direkt als Eingabe verwendet werden können.\n" -" -S Listet Tastenfolgen und deren Werte auf, die Makros \n" +" -p Listet Funktionsnamen und Tastenzuordnungen so " +"auf,\n" +" dass sie direkt als Eingabe verwendet werden " +"können.\n" +" -S Listet Tastenfolgen und deren Werte auf, die " +"Makros \n" " aufrufen.\n" -" -s Listet Tastenfolgen und deren Werte auf, die Makros \n" -" aufrufen, dass sie als Eingabe wiederverwendet werden\n" +" -s Listet Tastenfolgen und deren Werte auf, die " +"Makros \n" +" aufrufen, dass sie als Eingabe wiederverwendet " +"werden\n" " können.\n" " -V Listet Variablennamen und Werte auf.\n" -" -v Listet Variablennamen und Werte so auf, dass sie als\n" +" -v Listet Variablennamen und Werte so auf, dass sie " +"als\n" " Eingabe verwendet werden können.\n" -" -q Funktionsname Sucht die Tastenfolgen, welche die angegebene Funktion aufrufen.\n" -" -u Funktionsname Entfernt alle der Funktion zugeordneten Tastenfolgen.\n" -" -r Tastenfolge Entfernt die Zuweisungen der angegebeben Tastenfolge.\n" -" -f Dateiname Liest die Tastenzuordnungen aus der angegebenen Datei.\n" -" -x Tastenfolge:Shellkommando\tWeist der Tastenfolge das Shellkommando\n" +" -q Funktionsname Sucht die Tastenfolgen, welche die angegebene " +"Funktion aufrufen.\n" +" -u Funktionsname Entfernt alle der Funktion zugeordneten " +"Tastenfolgen.\n" +" -r Tastenfolge Entfernt die Zuweisungen der angegebeben " +"Tastenfolge.\n" +" -f Dateiname Liest die Tastenzuordnungen aus der angegebenen " +"Datei.\n" +" -x Tastenfolge:Shellkommando\tWeist der Tastenfolge das " +"Shellkommando\n" " \t\t\t\t\tzu.\n" " \n" " Rückgabewert: \n" @@ -2404,7 +2541,7 @@ msgstr "" " oder ein Fehler eintrat." # break -#: builtins.c:326 +#: builtins.c:328 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2424,7 +2561,7 @@ msgstr "" " Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1." # continue -#: builtins.c:338 +#: builtins.c:340 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2444,13 +2581,14 @@ msgstr "" " Der Rückgabewert ist 0, außer wenn »n« nicht größer oder gleich 1 ist." # builtin -#: builtins.c:350 +#: builtins.c:352 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2468,7 +2606,7 @@ msgstr "" " dieses nicht existiert." # caller -#: builtins.c:365 +#: builtins.c:367 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2485,33 +2623,46 @@ msgid "" msgstr "" # cd -#: builtins.c:383 +#: builtins.c:385 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed\n" +" -L\tforce symbolic links to be followed: resolve symbolic links in\n" +" \tDIR after processing instances of `..'\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks\n" +" \tlinks: resolve symbolic links in DIR before processing instances\n" +" \tof `..'\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Wechselt das Arbeitsverzeichnis.\n" @@ -2548,7 +2699,7 @@ msgstr "" " werden konnte." # pwd -#: builtins.c:414 +#: builtins.c:420 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2577,7 +2728,7 @@ msgstr "" " Verzeichnis nicht lesbar ist." # colon -#: builtins.c:431 +#: builtins.c:437 msgid "" "Null command.\n" " \n" @@ -2594,7 +2745,7 @@ msgstr "" " Das Kommando ist immer »wahr«." # true -#: builtins.c:442 +#: builtins.c:448 msgid "" "Return a successful result.\n" " \n" @@ -2606,7 +2757,7 @@ msgstr "" " Rückgabewert:\n" " Immer »wahr«." -#: builtins.c:451 +#: builtins.c:457 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2618,12 +2769,13 @@ msgstr "" " Rückgabewert:\n" " Immer »falsch«." -#: builtins.c:460 +#: builtins.c:466 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2636,7 +2788,7 @@ msgid "" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:479 +#: builtins.c:485 msgid "" "Set variable values and attributes.\n" " \n" @@ -2656,6 +2808,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2666,14 +2819,16 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:517 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2683,7 +2838,8 @@ msgstr "" "\n" " Veraltet. Siehe `help declare'." -#: builtins.c:525 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2694,26 +2850,31 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Definiert lokale Variablen.\n" " \n" -" Erzeugt eine Lokale Variable NAME und weist ihr den Wert VALUE zu. OPTION\n" +" Erzeugt eine Lokale Variable NAME und weist ihr den Wert VALUE zu. " +"OPTION\n" " kann eine beliebige von `declare' akzeptierte Option sein.\n" "\n" -" Lokale Variablen können nur innerhalb einer Funktion benutzt werden. Sie\n" -" sind nur in der sie erzeugenden Funktion und ihren Kindern sichtbar. \n" +" Lokale Variablen können nur innerhalb einer Funktion benutzt werden. " +"Sie\n" +" sind nur in der sie erzeugenden Funktion und ihren Kindern " +"sichtbar. \n" " \n" " Rückgabewert:\n" " Liefert \"Erfolg\" außer bei einer ungültigen Option, einem Fehler oder\n" " die Shell führt keine Funktion aus." -#: builtins.c:542 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs on the standard output followed by a newline.\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" @@ -2725,6 +2886,7 @@ msgid "" " \\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" @@ -2740,7 +2902,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:576 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2753,7 +2915,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2780,11 +2942,12 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:619 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -2799,7 +2962,7 @@ msgstr "" " Rückgabewert:\n" " Der Status des Kommandoe oder Erfolg wenn das Kommando leer war." -#: builtins.c:631 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2840,12 +3003,13 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:673 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2853,15 +3017,17 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" # exit -#: builtins.c:694 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2870,29 +3036,33 @@ msgid "" msgstr "" "Beendet die aktuelle Shell.\n" "\n" -" Beendt die die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht angegeben ist,\n" +" Beendt die die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " +"angegeben ist,\n" " wird der Rückgabewert des letzten ausgeführten Kommandos übernommen." -#: builtins.c:703 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" # fc -#: builtins.c:713 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -2906,10 +3076,11 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" -#: builtins.c:743 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2929,12 +3100,14 @@ msgstr "" " Rückgabewert:\n" " Status des in den Vordergrund geholten Jobs oder Fehler." -#: builtins.c:758 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -2949,12 +3122,13 @@ msgstr "" " Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n" " oder ein Fehler auftritt." -#: builtins.c:772 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -2972,7 +3146,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:797 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2990,10 +3164,11 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" -#: builtins.c:821 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3020,13 +3195,14 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:857 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3050,7 +3226,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:884 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3067,7 +3243,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:903 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3089,14 +3265,15 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:926 +#: builtins.c:936 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" +" 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" @@ -3133,18 +3310,21 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:971 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3156,26 +3336,32 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" -" \t\tif input is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +" \t\twithout trying to read any data, returning success only if\n" +" \t\tinput is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1014 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3187,7 +3373,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1027 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3230,7 +3416,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3252,7 +3439,7 @@ msgid "" " -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 follow symbolic links when executing commands\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" @@ -3271,7 +3458,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1112 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3280,8 +3467,11 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" 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" @@ -3290,12 +3480,13 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1132 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3308,7 +3499,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1151 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3328,7 +3519,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1172 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3339,7 +3530,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1184 builtins.c:1199 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3353,7 +3544,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1215 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3367,8 +3558,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -# test -#: builtins.c:1231 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3402,7 +3592,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3423,7 +3614,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3431,6 +3623,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3448,7 +3642,7 @@ msgid "" msgstr "" # [ -#: builtins.c:1311 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3462,11 +3656,12 @@ msgstr "" " schließt." # times -#: builtins.c:1320 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -3480,11 +3675,12 @@ msgstr "" " Rückgabewert:\n" " Immer 0." -#: builtins.c:1332 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -3493,29 +3689,37 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" -#: builtins.c:1368 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3541,14 +3745,16 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" -#: builtins.c:1399 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -3572,6 +3778,9 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" +" -T the maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -3587,7 +3796,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1444 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3605,35 +3814,42 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1464 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for the process identified by ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\n" -" in the job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." msgstr "" -#: builtins.c:1482 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1497 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3646,7 +3862,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1511 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3663,7 +3879,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1529 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3683,7 +3899,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1550 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3699,7 +3915,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1567 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3710,23 +3926,28 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1579 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1596 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3737,7 +3958,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1608 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3748,7 +3969,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3761,12 +3982,13 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1634 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -3774,7 +3996,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1648 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3785,7 +4007,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1660 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3799,7 +4021,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1675 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3810,13 +4032,16 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1687 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -3836,7 +4061,7 @@ msgid "" msgstr "" # variable_help -#: builtins.c:1713 +#: builtins.c:1734 #, fuzzy msgid "" "Common shell variable names and usage.\n" @@ -3946,7 +4171,7 @@ msgstr "" " \talle eingegebenen Zeilen im Kommandospeicher abgelegt." # pushd -#: builtins.c:1770 +#: builtins.c:1791 #, fuzzy msgid "" "Add directories to stack.\n" @@ -3998,12 +4223,13 @@ msgstr "" " -befindet.\n" " \n" "\n" -" DIR\tLegt DIR auf die Spitze des Verzeichnisstapels und wechselt dorthin.\n" +" DIR\tLegt DIR auf die Spitze des Verzeichnisstapels und wechselt " +"dorthin.\n" "\n" " Der Verzeichnisstapel kann mit dem Kommando `dirs' angezeigt werden." # popd -#: builtins.c:1804 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4057,7 +4283,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # dirs -#: builtins.c:1834 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -4074,22 +4300,25 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1863 +#: builtins.c:1884 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" +" arguments, list all shell options with an indication of whether or not " +"each\n" " is set.\n" " \n" " Options:\n" @@ -4104,7 +4333,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1884 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4112,31 +4341,45 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1)\n" -" and printf(3), printf interprets:\n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" +" %(fmt)T output the date-time string resulting from using FMT as a " +"format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" -#: builtins.c:1913 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -4156,25 +4399,29 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1941 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1956 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -4196,22 +4443,28 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1986 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -4221,15 +4474,17 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" -#: builtins.c:2020 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4238,3 +4493,13 @@ msgstr "" "Liest Zeilen einer Datei in eine Array Variable.\n" "\n" " Ist ein Synonym für `mapfile'." + +#~ 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 "" +#~ "Lizenz GPLv2+: GNU GPL Version 2 oder jünger \n" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo index cce9edc4f..5b16969b4 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 6deb295e1..b1f0988c3 100644 --- a/po/en@boldquot.po +++ b/po/en@boldquot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2012 Free Software Foundation, Inc. +# Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2012. +# Automatically generated, 2013. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -30,13 +30,12 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.2-maint\n" +"Project-Id-Version: GNU bash 4.3-alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" -"PO-Revision-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" +"PO-Revision-Date: 2013-03-08 16:00-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" -"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -46,22 +45,22 @@ msgstr "" msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" @@ -71,21 +70,21 @@ msgstr "%s: %s: must use subscript when assigning associative array" msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" @@ -151,7 +150,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "too many arguments" @@ -174,7 +173,7 @@ msgstr "warning: " msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" @@ -189,7 +188,7 @@ msgstr "%s: numeric argument required" msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" @@ -212,7 +211,7 @@ msgstr "invalid octal number" msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "invalid number" @@ -321,25 +320,35 @@ msgstr "warning: -C option may not work as you expect" msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: reference variable cannot be an array" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: nameref variable self references not allowed" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" @@ -368,23 +377,23 @@ msgstr "%s: not dynamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" @@ -479,7 +488,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -522,16 +531,16 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "expression expected" @@ -540,64 +549,64 @@ msgstr "expression expected" msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -606,19 +615,24 @@ msgstr "missing unicode digit for \\%c" msgid "no other directory" msgstr "no other directory" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: invalid argument" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -663,7 +677,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -709,7 +723,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -749,12 +763,12 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" @@ -763,26 +777,26 @@ msgstr "read error: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: not a function" @@ -791,11 +805,11 @@ msgstr "%s: not a function" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" @@ -920,127 +934,127 @@ msgstr "bad jump" msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "expression recursion level exceeded" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "division by 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" @@ -1049,163 +1063,163 @@ msgstr "%s: expression error\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Done" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Running" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "no job control in this shell" @@ -1227,49 +1241,49 @@ msgstr "" msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p already in table as allocated?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p already in table as free?\n" @@ -1317,15 +1331,15 @@ msgstr "setlocale: %s: cannot change locale (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "You have mail in $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "You have new mail in $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" @@ -1358,103 +1372,103 @@ msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "syntax error" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" @@ -1483,71 +1497,71 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1556,42 +1570,42 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1765,72 +1779,77 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: invalid variable name for name reference" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: bad substitution" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1838,129 +1857,139 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "no match: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argument expected" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: integer expression expected" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "‘)’ expected" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:3192 +#: variables.c:2217 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variable may not be assigned value" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: compatibility value out of range" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." +msgstr "Copyright (C) 2012 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1968,34 +1997,18 @@ msgstr "" "License GPLv3+: GNU GPL version 3 or later \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, version %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "This is free software; you are free to change and redistribute it.\n" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." #: xmalloc.c:91 #, c-format @@ -2074,8 +2087,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" #: builtins.c:78 msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." @@ -2182,8 +2195,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" -msgstr "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" #: builtins.c:144 msgid "export [-fn] [name[=value] ...] or export -p" @@ -2238,12 +2251,12 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:175 -msgid "wait [id ...]" -msgstr "wait [id ...]" +msgid "wait [-n] [id ...]" +msgstr "wait [-n] [id ...]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +msgid "wait [pid ...]" +msgstr "wait [pid ...]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2791,6 +2804,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2806,7 +2820,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Set variable values and attributes.\n" " \n" @@ -2826,6 +2841,7 @@ msgstr "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the ‘integer’ attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the ‘trace’ attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2842,9 +2858,10 @@ msgstr "" " command. The ‘-g’ option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2854,7 +2871,7 @@ msgstr "" " \n" " Obsolete. See ‘help declare’." -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2865,8 +2882,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Define local variables.\n" " \n" @@ -2877,10 +2894,10 @@ msgstr "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2944,7 +2961,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2966,7 +2983,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3016,7 +3033,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3036,7 +3053,7 @@ msgstr "" " Exit Status:\n" " Returns exit status of command or success if command is null." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3117,7 +3134,7 @@ msgstr "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3159,7 +3176,7 @@ msgstr "" " Returns success unless COMMAND is not found or a redirection error " "occurs." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3171,7 +3188,7 @@ msgstr "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3185,7 +3202,7 @@ msgstr "" "executed\n" " in a login shell." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3243,7 +3260,7 @@ msgstr "" " Returns success or status of executed command; non-zero if an error " "occurs." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3263,7 +3280,7 @@ msgstr "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3287,7 +3304,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3331,7 +3348,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3371,7 +3388,7 @@ msgstr "" " Returns success unless PATTERN is not found or an invalid option is " "given." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3436,7 +3453,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3480,7 +3497,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:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3510,7 +3527,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3550,7 +3567,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3636,7 +3653,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3671,7 +3688,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3719,7 +3736,7 @@ msgstr "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3734,7 +3751,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3754,7 +3771,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3920,7 +3937,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3929,6 +3946,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3946,6 +3965,8 @@ msgstr "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3956,7 +3977,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3990,7 +4011,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4026,7 +4047,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4044,7 +4065,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4068,7 +4089,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4092,7 +4113,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4157,6 +4178,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4235,6 +4258,8 @@ msgstr "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4250,7 +4275,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4263,7 +4288,7 @@ msgstr "" "must\n" " be a literal ‘]’, to match the opening ‘[’." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4283,7 +4308,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4368,7 +4393,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4426,7 +4451,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -4517,7 +4542,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4549,7 +4574,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4561,6 +4586,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4575,35 +4603,40 @@ msgstr "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4627,7 +4660,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4657,7 +4690,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4694,7 +4727,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4722,7 +4755,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4740,7 +4773,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4778,7 +4811,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4796,7 +4829,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4814,7 +4847,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4836,7 +4869,7 @@ msgstr "" " Exit Status:\n" " Returns the exit status of COMMAND." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4860,7 +4893,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4878,7 +4911,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4903,7 +4936,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4921,7 +4954,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4975,7 +5008,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5079,7 +5112,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:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5137,7 +5170,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5189,7 +5222,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5244,7 +5277,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5282,7 +5315,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5309,6 +5342,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5339,12 +5378,18 @@ msgstr "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5394,7 +5439,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5416,7 +5461,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5475,7 +5520,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5553,7 +5598,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2033 +#: builtins.c:2046 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 520d28a3a..3082c6588 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 c5de93347..7d6db8f9c 100644 --- a/po/en@quot.po +++ b/po/en@quot.po @@ -1,7 +1,7 @@ # English translations for GNU bash package. -# Copyright (C) 2012 Free Software Foundation, Inc. +# Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the GNU bash package. -# Automatically generated, 2012. +# Automatically generated, 2013. # # All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation @@ -27,13 +27,12 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU bash 4.2-maint\n" +"Project-Id-Version: GNU bash 4.3-alpha\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" -"PO-Revision-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" +"PO-Revision-Date: 2013-03-08 16:00-0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" -"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -43,22 +42,22 @@ msgstr "" msgid "bad array subscript" msgstr "bad array subscript" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: cannot convert indexed to associative array" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: invalid associative array key" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: cannot assign to non-numeric index" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: must use subscript when assigning associative array" @@ -68,21 +67,21 @@ msgstr "%s: %s: must use subscript when assigning associative array" msgid "%s: cannot create: %s" msgstr "%s: cannot create: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: cannot find keymap for command" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: first non-whitespace character is not ‘\"’" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "no closing ‘%c’ in %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: missing colon separator" @@ -148,7 +147,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME not set" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "too many arguments" @@ -171,7 +170,7 @@ msgstr "warning: " msgid "%s: usage: " msgstr "%s: usage: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: option requires an argument" @@ -186,7 +185,7 @@ msgstr "%s: numeric argument required" msgid "%s: not found" msgstr "%s: not found" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: invalid option" @@ -209,7 +208,7 @@ msgstr "invalid octal number" msgid "invalid hex number" msgstr "invalid hex number" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "invalid number" @@ -318,25 +317,35 @@ msgstr "warning: -C option may not work as you expect" msgid "not currently executing completion function" msgstr "not currently executing completion function" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "can only be used in a function" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "%s: reference variable cannot be an array" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "%s: nameref variable self references not allowed" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "cannot use ‘-f’ to make functions" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: readonly function" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: cannot destroy array variables in this way" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: cannot convert associative to indexed array" @@ -365,23 +374,23 @@ msgstr "%s: not dynamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: cannot delete: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: is a directory" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: not a regular file" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: file is too large" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: cannot execute binary file" @@ -475,7 +484,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: cannot open: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -516,16 +525,16 @@ msgstr "%s: inlib failed" msgid "no other options allowed with `-x'" msgstr "no other options allowed with ‘-x’" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Unknown error" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "expression expected" @@ -534,64 +543,64 @@ msgstr "expression expected" msgid "%s: not an indexed array" msgstr "%s: not an indexed array" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: invalid file descriptor specification" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid file descriptor: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: invalid line count" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: invalid array origin" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: invalid callback quantum" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "empty array variable name" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "array variable support required" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "‘%s’: missing format character" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "‘%c’: invalid time format specification" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "‘%c’: invalid format character" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "warning: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "missing hex digit for \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "missing unicode digit for \\%c" @@ -600,19 +609,24 @@ msgstr "missing unicode digit for \\%c" msgid "no other directory" msgstr "no other directory" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, c-format +msgid "%s: invalid argument" +msgstr "%s: invalid argument" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "directory stack empty" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "directory stack index" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -656,7 +670,7 @@ msgstr "" "by\n" "\tdirs when invoked without options, starting with zero." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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 +716,7 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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,12 +754,12 @@ msgstr "" " \n" " The ‘dirs’ builtin displays the directory stack." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: invalid timeout specification" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "read error: %d: %s" @@ -754,26 +768,26 @@ msgstr "read error: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "can only ‘return’ from a function or sourced script" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "cannot simultaneously unset a function and a variable" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: cannot unset" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: cannot unset: readonly %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: not an array variable" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: not a function" @@ -782,11 +796,11 @@ msgstr "%s: not a function" msgid "shift count" msgstr "shift count" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "cannot set and unset shell options simultaneously" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: invalid shell option name" @@ -911,127 +925,127 @@ msgstr "bad jump" msgid "%s: unbound variable" msgstr "%s: unbound variable" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\atimed out waiting for input: auto-logout\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "cannot redirect standard input from /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: ‘%c’: invalid format character" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximum function nesting level exceeded (%d)" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restricted: cannot specify ‘/’ in command names" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: command not found" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bad interpreter" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: cannot execute binary file: %s" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "‘%s’: is a special builtin" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "cannot duplicate fd %d to fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "expression recursion level exceeded" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "recursion stack underflow" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntax error in expression" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "attempted assignment to non-variable" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "division by 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: bad expassign token" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "‘:’ expected for conditional expression" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "exponent less than 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identifier expected after pre-increment or pre-decrement" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "missing ‘)’" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntax error: operand expected" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: invalid arithmetic operator" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token is “%s”)" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "invalid arithmetic base" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "value too great for base" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: expression error\n" @@ -1040,163 +1054,163 @@ msgstr "%s: expression error\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: cannot access parent directories" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "cannot reset nodelay mode for fd %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer already exists for new fd %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d appears in running job %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "deleting stopped job %d with process group %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) in the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no such pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Done" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stopped" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Stopped(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Running" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Done(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Unknown status" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "child setpgid (%ld to %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No record of process %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: job %d is stopped" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: job has terminated" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: job %d already in background" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: turning on WNOHANG to avoid indefinite block" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: line %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp failed" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "cannot set terminal process group (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "no job control in this shell" @@ -1218,49 +1232,49 @@ msgstr "" msgid "unknown" msgstr "unknown" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: block on free list clobbered" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: called with already freed block argument" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: called with unallocated block argument" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: start and end chunk sizes differ" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: called with unallocated block argument" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow detected; mh_nbytes out of range" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start and end chunk sizes differ" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p already in table as allocated?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p already in table as free?\n" @@ -1308,15 +1322,15 @@ msgstr "setlocale: %s: cannot change locale (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: cannot change locale (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "You have mail in $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "You have new mail in $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "The mail in %s has been read\n" @@ -1349,103 +1363,103 @@ msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: redirection instruction ‘%d’ out of range" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "unexpected EOF while looking for matching ‘%c’" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "unexpected EOF while looking for ‘]]’" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error in conditional expression: unexpected token ‘%s’" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "syntax error in conditional expression" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "unexpected token ‘%s’, expected ‘)’" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "expected ‘)’" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "unexpected argument ‘%s’ to conditional unary operator" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "unexpected argument to conditional unary operator" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "unexpected token ‘%s’, conditional binary operator expected" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "conditional binary operator expected" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "unexpected argument ‘%s’ to conditional binary operator" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "unexpected argument to conditional binary operator" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "unexpected token ‘%c’ in conditional command" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "unexpected token ‘%s’ in conditional command" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "unexpected token %d in conditional command" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error near unexpected token ‘%s’" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "syntax error near ‘%s’" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "syntax error: unexpected end of file" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "syntax error" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use “%s” to leave the shell.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "unexpected EOF while looking for matching ‘)’" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: function ‘%s’ not found" @@ -1474,71 +1488,71 @@ msgstr "xtrace_set: NULL file pointer" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ‘%c’: invalid format character" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "file descriptor out of range" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: cannot overwrite existing file" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: cannot redirect output" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: cannot assign fd to variable" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port not supported without networking" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: cannot duplicate fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "could not find /tmp, please create!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp must be a valid directory name" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: invalid option" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "I have no name!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1547,39 +1561,39 @@ msgstr "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU long options:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Shell options:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o option\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use the ‘bashbug’ command to report bugs.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: invalid operation" @@ -1753,72 +1767,77 @@ msgstr "Unknown Signal #" msgid "Unknown Signal #%d" msgstr "Unknown Signal #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "bad substitution: no closing ‘%s’ in %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: cannot assign list to array member" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "cannot make pipe for process substitution" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "cannot make child for process substitution" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "cannot open named pipe %s for reading" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "cannot open named pipe %s for writing" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "cannot duplicate named pipe %s as fd %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "cannot make pipe for command substitution" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "cannot make child for command substitution" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: cannot duplicate pipe as fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: invalid variable name for name reference" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter null or not set" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: bad substitution" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: cannot assign in this way" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1826,129 +1845,139 @@ msgstr "" "future versions of the shell will force evaluation as an arithmetic " "substitution" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "bad substitution: no closing “`” in %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "no match: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argument expected" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: integer expression expected" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "‘)’ expected" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "‘)’ expected, found %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: unary operator expected" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: binary operator expected" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "missing ‘]’" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "invalid signal number" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: bad signal %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "error importing function definition for ‘%s’" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell level (%d) too high, resetting to 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: no function context at current scope" -#: variables.c:3192 +#: variables.c:2217 +#, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: variable may not be assigned value" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: no function context at current scope" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s has null exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "invalid character %d in exportstr for %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "no ‘=’ in exportstr for %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no global_variables context" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: cannot open as FILE" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: invalid value for trace file descriptor" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." -msgstr "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s: compatibility value out of range" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." +msgstr "Copyright (C) 2012 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1956,34 +1985,18 @@ msgstr "" "License GPLv3+: GNU GPL version 3 or later \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, version %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "This is free software; you are free to change and redistribute it.\n" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." +msgstr "This is free software; you are free to change and redistribute it." -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "There is NO WARRANTY, to the extent permitted by law." #: xmalloc.c:91 #, c-format @@ -2062,8 +2075,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" -msgstr "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" #: builtins.c:78 msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." @@ -2170,8 +2183,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" -msgstr "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unset [-f] [-v] [-n] [name ...]" #: builtins.c:144 msgid "export [-fn] [name[=value] ...] or export -p" @@ -2226,12 +2239,12 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:175 -msgid "wait [id ...]" -msgstr "wait [id ...]" +msgid "wait [-n] [id ...]" +msgstr "wait [-n] [id ...]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +msgid "wait [pid ...]" +msgstr "wait [pid ...]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2775,6 +2788,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2790,7 +2804,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Set variable values and attributes.\n" " \n" @@ -2810,6 +2825,7 @@ msgstr "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the ‘integer’ attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the ‘trace’ attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2825,9 +2841,10 @@ msgstr "" " command. The ‘-g’ option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2837,7 +2854,7 @@ msgstr "" " \n" " Obsolete. See ‘help declare’." -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2848,8 +2865,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Define local variables.\n" " \n" @@ -2860,10 +2877,10 @@ msgstr "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2927,7 +2944,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2949,7 +2966,7 @@ msgstr "" " Exit Status:\n" " Returns success unless a write error occurs." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2999,7 +3016,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3019,7 +3036,7 @@ msgstr "" " Exit Status:\n" " Returns exit status of command or success if command is null." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3097,7 +3114,7 @@ msgstr "" " Returns success if an option is found; fails if the end of options is\n" " encountered or an error occurs." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3139,7 +3156,7 @@ msgstr "" " Returns success unless COMMAND is not found or a redirection error " "occurs." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3151,7 +3168,7 @@ msgstr "" " Exits the shell with a status of N. If N is omitted, the exit status\n" " is that of the last command executed." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3165,7 +3182,7 @@ msgstr "" "executed\n" " in a login shell." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3221,7 +3238,7 @@ msgstr "" " Returns success or status of executed command; non-zero if an error " "occurs." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3241,7 +3258,7 @@ msgstr "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3265,7 +3282,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3309,7 +3326,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is not found or an invalid option is given." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3349,7 +3366,7 @@ msgstr "" " Returns success unless PATTERN is not found or an invalid option is " "given." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3413,7 +3430,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3457,7 +3474,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:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3487,7 +3504,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3527,7 +3544,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3613,7 +3630,7 @@ msgstr "" " Exit Status:\n" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3648,7 +3665,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3696,7 +3713,7 @@ msgstr "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3711,7 +3728,7 @@ msgstr "" "occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3731,7 +3748,7 @@ msgstr "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3897,7 +3914,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given." -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3906,6 +3923,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3923,6 +3942,8 @@ msgstr "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3933,7 +3954,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or a NAME is read-only." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3967,7 +3988,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4003,7 +4024,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is given or NAME is invalid." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4021,7 +4042,7 @@ msgstr "" " Exit Status:\n" " Returns success unless N is negative or greater than $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4045,7 +4066,7 @@ msgstr "" " Returns the status of the last command executed in FILENAME; fails if\n" " FILENAME cannot be read." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4069,7 +4090,7 @@ msgstr "" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4134,6 +4155,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4212,6 +4235,8 @@ msgstr "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4227,7 +4252,7 @@ msgstr "" " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n" " false or an invalid argument is given." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4239,7 +4264,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:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4259,7 +4284,7 @@ msgstr "" " Exit Status:\n" " Always succeeds." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4343,7 +4368,7 @@ msgstr "" " Returns success unless a SIGSPEC is invalid or an invalid option is " "given." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4399,7 +4424,7 @@ msgstr "" " Returns success if all of the NAMEs are found; fails if any are not " "found." -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -4489,7 +4514,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4521,7 +4546,7 @@ msgstr "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -4533,6 +4558,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4547,35 +4575,40 @@ msgstr "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4597,7 +4630,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4627,7 +4660,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4663,7 +4696,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4691,7 +4724,7 @@ msgstr "" " Exit Status:\n" " The return status is the return status of PIPELINE." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4709,7 +4742,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4747,7 +4780,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4765,7 +4798,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4783,7 +4816,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4805,7 +4838,7 @@ msgstr "" " Exit Status:\n" " Returns the exit status of COMMAND." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4829,7 +4862,7 @@ msgstr "" " Exit Status:\n" " Returns success unless NAME is readonly." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4847,7 +4880,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the last command executed." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4871,7 +4904,7 @@ msgstr "" " Exit Status:\n" " Returns the status of the resumed job." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4889,7 +4922,7 @@ msgstr "" " Exit Status:\n" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4941,7 +4974,7 @@ msgstr "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5045,7 +5078,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:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5103,7 +5136,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5153,7 +5186,7 @@ msgstr "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5207,7 +5240,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5245,7 +5278,7 @@ msgstr "" " Returns success if OPTNAME is enabled; fails if an invalid option is\n" " given or OPTNAME is disabled." -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5272,6 +5305,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5302,12 +5341,18 @@ msgstr "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5357,7 +5402,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5379,7 +5424,7 @@ msgstr "" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5437,7 +5482,7 @@ msgstr "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5515,7 +5560,7 @@ msgstr "" "or\n" " not an indexed array." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/eo.gmo b/po/eo.gmo index c73ba2c1b..000066dc0 100644 Binary files a/po/eo.gmo and b/po/eo.gmo differ diff --git a/po/eo.po b/po/eo.po index 84101d80c..cc2b55e8c 100644 --- a/po/eo.po +++ b/po/eo.po @@ -26,61 +26,61 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-12-15 11:36+0700\n" "Last-Translator: Sergio Pokrovskij \n" "Language-Team: Esperanto \n" -"Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:50 +#: arrayfunc.c:51 msgid "bad array subscript" msgstr "Misa tabel-indico" -#: arrayfunc.c:313 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon" -#: arrayfunc.c:480 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Misa asocitabela ŝlosilo" -#: arrayfunc.c:482 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Valorizato havu nombran indicon" -#: arrayfunc.c:518 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: Valorizante per asocitabelo uzu indicon" -#: bashhist.c:387 +#: bashhist.c:388 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Ne prosperis krei: %s" # XXX: internal_error -#: bashline.c:3498 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: Mankas klavartabelo por komando" -#: bashline.c:3584 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟" -#: bashline.c:3613 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "Mankas ferma „%c‟ en %s" -#: bashline.c:3647 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: Mankas disiga dupunkto" @@ -90,36 +90,36 @@ msgstr "%s: Mankas disiga dupunkto" msgid "`%s': invalid alias name" msgstr "%s: MaltaÅ­gas por uzi kiel alinomon" -#: builtins/bind.def:120 builtins/bind.def:123 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "liniredaktado ne estas ebligita" -#: builtins/bind.def:206 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s‟: Misa nomo por klavartabelo" -#: builtins/bind.def:245 +#: builtins/bind.def:251 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Ne eblas legi: %s" -#: builtins/bind.def:260 +#: builtins/bind.def:266 #, c-format msgid "`%s': cannot unbind" msgstr "%s: Ne eblas malligi" -#: builtins/bind.def:295 builtins/bind.def:325 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s: Nekonata funkcinomo" -#: builtins/bind.def:303 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s malhavas klavligon\n" -#: builtins/bind.def:307 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s vokeblas per " @@ -142,11 +142,15 @@ msgstr "" "\n" " Sen ESPR liveras " -#: builtins/cd.def:235 +#: builtins/cd.def:239 msgid "HOME not set" msgstr "HOME malhavas valoron" -#: builtins/cd.def:247 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 +msgid "too many arguments" +msgstr "Tro multe da argumentoj" + +#: builtins/cd.def:258 msgid "OLDPWD not set" msgstr "OLDPWD malhavas valoron" @@ -155,7 +159,7 @@ msgstr "OLDPWD malhavas valoron" msgid "line %d: " msgstr "linio %dª: " -#: builtins/common.c:139 error.c:261 +#: builtins/common.c:139 error.c:265 #, c-format msgid "warning: " msgstr "Averto: " @@ -165,11 +169,7 @@ msgstr "Averto: " msgid "%s: usage: " msgstr "%s: Uzmaniero: " -#: builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "Tro multe da argumentoj" - -#: builtins/common.c:191 shell.c:500 shell.c:782 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: La opcio bezonas argumenton" @@ -184,7 +184,7 @@ msgstr "%s: Necesas nombra argumento" msgid "%s: not found" msgstr "%s: Ne trovita" -#: builtins/common.c:214 shell.c:795 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: Misa opcio" @@ -194,7 +194,7 @@ msgstr "%s: Misa opcio" msgid "%s: invalid option name" msgstr "%s: Misa opcinomo" -#: builtins/common.c:228 general.c:231 general.c:236 +#: builtins/common.c:228 general.c:234 general.c:239 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s‟ ne estas taÅ­ga nomo" @@ -207,7 +207,7 @@ msgstr "Misa okuma nombro" msgid "invalid hex number" msgstr "Misa 16uma nombro" -#: builtins/common.c:242 expr.c:1362 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "Misa nombro" @@ -221,7 +221,7 @@ msgstr "%s: Misa signalindiko" msgid "`%s': not a pid or valid job spec" msgstr "„%s‟: Nek proceznumero, nek taÅ­ga laborindiko" -#: builtins/common.c:264 error.c:454 +#: builtins/common.c:264 error.c:458 #, c-format msgid "%s: readonly variable" msgstr "%s: Nurlega variablo" @@ -293,48 +293,58 @@ msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n" msgid "%s: ambiguous job spec" msgstr "%s: Ambigua laborindiko" -#: builtins/complete.def:276 +#: builtins/complete.def:277 #, c-format msgid "%s: invalid action name" msgstr "%s: Misa nomo de ago" -#: builtins/complete.def:449 builtins/complete.def:644 -#: builtins/complete.def:853 +#: builtins/complete.def:450 builtins/complete.def:645 +#: builtins/complete.def:855 #, c-format msgid "%s: no completion specification" msgstr "%s: Kompletigo ne estas specifita" -#: builtins/complete.def:696 +#: builtins/complete.def:697 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:698 +#: builtins/complete.def:699 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:826 +#: builtins/complete.def:828 msgid "not currently executing completion function" msgstr "Ni ne estas en plenumado de kompletiga funkcio" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "Uzeblas nur ene de funkcio" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "„-f‟ ne estas uzebla por fari funkciojn" -#: builtins/declare.def:378 execute_cmd.c:5105 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: Nurlega funkcio" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: ĉi tiel ne eblas neniigi variablojn" -#: builtins/declare.def:481 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon" @@ -363,24 +373,23 @@ msgstr "%s: Ne ŝargita dinamike" msgid "%s: cannot delete: %s" msgstr "%s: Ne eblas forigi: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 -#: shell.c:1457 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s estas dosierujo" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: Ne ordinara dosiero" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: Tro granda dosiero" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 -#: shell.c:1467 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Neplenumebla duuma dosiero" @@ -465,7 +474,8 @@ msgstr[1] "Ŝelaj komandoj kongruaj kun la ŝlosilvortoj '" #: builtins/help.def:168 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" "Helpaĵo pri „%s‟ malestas.\n" "Provu «help help» aÅ­ «man -k %s» aÅ­ «info %s»." @@ -475,7 +485,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: Fiaskis malfermo de %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,7 +512,7 @@ msgstr "Ne pli ol unu el -anrw estas uzebla" msgid "history position" msgstr "pozicio en la historio" -#: builtins/history.def:365 +#: builtins/history.def:366 #, c-format msgid "%s: history expansion failed" msgstr "%s: Historia malvolvo fiaskis" @@ -516,16 +526,16 @@ msgstr "%s: inlib fiaskis" msgid "no other options allowed with `-x'" msgstr "La uzo de „-x‟ malebligas aliajn opciojn" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nekonata eraro" -#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "Mankas esprimo" @@ -534,65 +544,65 @@ msgstr "Mankas esprimo" msgid "%s: not an indexed array" msgstr "%s: ĝi ne estas entjerindica tabelo" -#: builtins/mapfile.def:256 builtins/read.def:279 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Misa indiko de dosiernumero" -#: builtins/mapfile.def:264 builtins/read.def:286 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Misa dosiernumero: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: Misa lininombro" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: Misa tabelbazo" # Supozeble callback => retrovoko ?? -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: Misa kvanto ĉe retrovoko" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "Mankas nomo de tabelvariablo" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "necesas subteno de tabelvariabloj" -#: builtins/printf.def:394 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s‟: Mankas formata signo" -#: builtins/printf.def:448 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "%c: Misa tempoformato" -#: builtins/printf.def:635 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c‟: Misa signo formata" -#: builtins/printf.def:662 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "Averto: %s: %s" -#: builtins/printf.def:840 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "Mankas 16uma cifero por \\x" -#: builtins/printf.def:855 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "Post „%c‟ mankas unikoda cifero" @@ -601,20 +611,25 @@ msgstr "Post „%c‟ mankas unikoda cifero" msgid "no other directory" msgstr "Ne estas alia dosierujo" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: MaltaÅ­ga argumento por limo" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "Dosierujstako malplenas" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "indico de dosierujstako" # dirs [-clpv] [+N] [-N] -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -629,10 +644,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Listigu la kurantan dosierujstakon. La dosierujoj trafas en\n" @@ -655,7 +672,7 @@ msgstr "" "\tper „dirs‟ sen opcioj, numerante ekde 0." # pushd [dir | +N | -N] [-n] -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -701,7 +718,7 @@ msgstr "" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." # popd [+N | -N] [-n] -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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,40 +757,41 @@ msgstr "" "\n" " Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟." -#: builtins/read.def:252 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Misa indiko de atendotempo" -#: builtins/read.def:588 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "Lega (read) eraro: %d: %s" -#: builtins/return.def:73 +#: builtins/return.def:75 msgid "can only `return' from a function or sourced script" -msgstr "„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" +msgstr "" +"„return‟ sencas nur en funkcio aÅ­ punkte vokita („.‟, „source‟) skripto" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon" -#: builtins/set.def:808 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: Malaktivigo fiaskis" -#: builtins/set.def:815 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: Malaktivigo fiaskis: nurlega %s" -#: builtins/set.def:826 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: Ne tabela variablo" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: Ne funkcio" @@ -782,11 +800,11 @@ msgstr "%s: Ne funkcio" msgid "shift count" msgstr "Nombrilo de „shift‟" -#: builtins/shopt.def:264 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "Maleblas samtempe ŝalti kaj malŝalti ŝelan opcion" -#: builtins/shopt.def:329 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Misa nomo de ŝela opcio" @@ -828,7 +846,7 @@ msgstr "%s estas funkcio\n" msgid "%s is a shell builtin\n" msgstr "„%s‟ estas primitiva komando de la ŝelo\n" -#: builtins/type.def:317 builtins/type.def:391 +#: builtins/type.def:317 builtins/type.def:393 #, c-format msgid "%s is %s\n" msgstr "„%s‟ estas „%s‟\n" @@ -838,26 +856,26 @@ msgstr "„%s‟ estas „%s‟\n" msgid "%s is hashed (%s)\n" msgstr "„%s‟ estas metita en hakettabelon (%s)\n" -#: builtins/ulimit.def:376 +#: builtins/ulimit.def:379 #, c-format msgid "%s: invalid limit argument" msgstr "%s: MaltaÅ­ga argumento por limo" -#: builtins/ulimit.def:402 +#: builtins/ulimit.def:405 #, c-format msgid "`%c': bad command" msgstr "„%c‟: Misa komando" -#: builtins/ulimit.def:431 +#: builtins/ulimit.def:434 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Fiaskis provo legi limon: %s" -#: builtins/ulimit.def:457 +#: builtins/ulimit.def:460 msgid "limit" msgstr "limo" -#: builtins/ulimit.def:469 builtins/ulimit.def:769 +#: builtins/ulimit.def:472 builtins/ulimit.def:772 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Malprosperis ŝanĝi limon: %s" @@ -878,7 +896,7 @@ msgstr "„%c‟: MaltaÅ­ga simbolo por atingorajta modifilo" msgid "`%c': invalid symbolic mode character" msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio" -#: error.c:90 error.c:321 error.c:323 error.c:325 +#: error.c:90 error.c:325 error.c:327 error.c:329 msgid " line " msgstr " linio " @@ -892,136 +910,151 @@ msgstr "La ĵusa komando: %s\n" msgid "Aborting..." msgstr "Ĉesigado ..." -#: error.c:406 +#: error.c:410 msgid "unknown command error" msgstr "Nekonata komand-eraro" -#: error.c:407 +#: error.c:411 msgid "bad command type" msgstr "Misa komandotipo" -#: error.c:408 +#: error.c:412 msgid "bad connector" msgstr "Misa stir-operacio" -#: error.c:409 +#: error.c:413 msgid "bad jump" msgstr "Misa salto" -#: error.c:447 +#: error.c:451 #, c-format msgid "%s: unbound variable" msgstr "%s: Neligita variablo" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1168 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c‟: Misa formatsigno" -#: execute_cmd.c:2121 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "Eraro en dukto" -#: execute_cmd.c:4640 +#: execute_cmd.c:4347 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj" -#: execute_cmd.c:4735 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: Komando ne trovita" # XXX: internal error: -#: execute_cmd.c:4959 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:4995 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Misa interpretilo" -#: execute_cmd.c:5144 +#: execute_cmd.c:5234 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: Neplenumebla duuma dosiero" + +#: execute_cmd.c:5306 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "„%s‟ estas primitiva komando de la ŝelo\n" + +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d" -#: expr.c:256 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "Tro profunda rekursio en esprimo" -#: expr.c:280 +#: expr.c:286 msgid "recursion stack underflow" msgstr "Rekursistako elĉerpita" -#: expr.c:422 +#: expr.c:434 msgid "syntax error in expression" msgstr "Sintaksa eraro en esprimo" -#: expr.c:463 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "Provo valorizi ne-variablon" -#: expr.c:486 expr.c:491 expr.c:807 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "Divido per 0" -#: expr.c:517 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo" -#: expr.c:564 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "„:‟ mankas kondiĉa esprimo" -#: expr.c:832 +#: expr.c:904 msgid "exponent less than 0" msgstr "Negativa eksponento" -#: expr.c:887 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "Post antaÅ­kremento aperu nomo de variablo" -#: expr.c:910 +#: expr.c:983 msgid "missing `)'" msgstr "Mankas „)‟" -#: expr.c:959 expr.c:1282 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "Sintaksa eraro: Mankas operando" -#: expr.c:1284 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika" -#: expr.c:1308 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (misa simbolo estas „%s‟)" -#: expr.c:1366 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "MaltaÅ­ga bazo nombrosistema" -#: expr.c:1386 +#: expr.c:1475 msgid "value too great for base" msgstr "Tro granda valoro por bazo de nombrosistemo" -#: expr.c:1435 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: Misa esprimo\n" @@ -1030,167 +1063,167 @@ msgstr "%s: Misa esprimo\n" msgid "getcwd: cannot access parent directories" msgstr "getwd: Ne eblas atingi patrajn dosierujojn" -#: input.c:94 subst.c:5082 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Ne eblas reŝalti senprokrastan reĝimon por dosiernumero %d" -#: input.c:260 +#: input.c:267 #, 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:268 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: La nova dosiernumero (fd %d) jam havas bufron" # ZZZ: sys_error (_("start_pipeline: pgrp pipe")); -#: jobs.c:468 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: procezgrupo dukto" -#: jobs.c:889 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Forke farita proceznumero %d aperas en rulata laboro %d" -#: jobs.c:1007 +#: jobs.c:1010 #, 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:1112 +#: jobs.c:1115 #, 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:1115 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marked as still alive" -#: jobs.c:1430 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Ne estas tia proceznumero (%ld)!" -#: jobs.c:1445 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signalo %d" -#: jobs.c:1459 jobs.c:1484 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Farite" -#: jobs.c:1464 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Haltigita" -#: jobs.c:1468 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Haltigita(%s)" -#: jobs.c:1472 +#: jobs.c:1475 msgid "Running" msgstr "Rulata" -#: jobs.c:1486 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Farite(%d)" -#: jobs.c:1488 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Eliro %d" -#: jobs.c:1491 +#: jobs.c:1494 msgid "Unknown status" msgstr "Nekonata stato" -#: jobs.c:1578 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(nekropsio elŝutita)" -#: jobs.c:1597 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (labordosierujo: %s)" -#: jobs.c:1805 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld" -#: jobs.c:2133 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2360 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Malestas informoj pri procezo %ld" -#: jobs.c:2637 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: La laboro %d estas haltigita" -#: jobs.c:2859 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: La laboro finiĝis" -#: jobs.c:2868 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: La laboro %d jam estas fona" # XXX: internal warning: -#: jobs.c:3089 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG iĝas ŝaltita por eviti nedifintan pendiĝon" -#: jobs.c:3538 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: linio %dª: " -#: jobs.c:3552 nojobs.c:814 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "(nekropsio elŝutita)" -#: jobs.c:3564 jobs.c:3577 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(nun labordosierujo estas: %s)\n" -#: jobs.c:3609 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp fiaskis" -#: jobs.c:3669 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: liniaranĝo" -#: jobs.c:3679 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:3707 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne prosperis atribui grupon (%d) de terminala procezo" -#: jobs.c:3712 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "Ĉi tiu ŝelo ne disponigas laborregadon" @@ -1215,64 +1248,64 @@ msgid "unknown" msgstr "nekonata" # XXX: debug? -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)" # XXX: debug? -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: La argumento montras blokon jam malokupitan" # XXX: debug? -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: La argumento ne montras generitan memoron" # XXX: debug? -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 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:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj" # XXX: debug? -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: „alloc‟-tabelo elĉerpiĝis je FIND_ALLOC?\n" # XXX: debug? -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p jam en la tabelo kvazaÅ­ kreita (?)\n" # XXX: debug? -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p jam en la tabelo kvazaÅ­ malokupita (?)\n" -#: lib/sh/fmtulong.c:101 +#: lib/sh/fmtulong.c:102 msgid "invalid base" msgstr "Misa bazo nombrosistema" @@ -1300,38 +1333,38 @@ msgid "network operations not supported" msgstr "Reta funkciado ne disponeblas" # XXX: internal warning: -#: locale.c:192 +#: locale.c:204 #, 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:194 +#: locale.c:206 #, 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:247 +#: locale.c:263 #, 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:249 +#: locale.c:265 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ne eblas ŝanĝi la lokaĵaron (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Vi havas poŝton en $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Nova poŝto en $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "La poŝto en %s estas jam legita\n" @@ -1349,121 +1382,121 @@ msgstr "Sintaksa eraro: Neatendita „;‟" msgid "syntax error: `((%s))'" msgstr "Sintaksa eraro: „((%s))‟" -#: make_cmd.c:575 +#: make_cmd.c:578 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Misa ordontipo %d" # internal_warning(): -#: make_cmd.c:659 +#: make_cmd.c:662 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)" # XXX: programming_error -#: make_cmd.c:756 +#: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo" -#: parse.y:3173 parse.y:3444 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Neatendita dosierfino dum serĉo de responda „%c‟" -#: parse.y:4025 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "Neatendita dosierfino dum serĉo de „]]‟" -#: parse.y:4030 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟" -#: parse.y:4034 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "Sintaksa eraro en kondiĉa esprimo" -#: parse.y:4112 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Nekonvena simbolo „%s‟ anstataÅ­ „)‟" -#: parse.y:4116 +#: parse.y:4177 msgid "expected `)'" msgstr "Mankas „)‟" -#: parse.y:4144 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo" -#: parse.y:4148 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "MaltaÅ­ga argumento por unuloka kondiĉa operacisimbolo" -#: parse.y:4194 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "Misa simbolo „%s‟ anstataÅ­ duloka kondiĉa operacisigno" -#: parse.y:4198 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "ĉi tie devas esti duloka kondiĉa operacisigno" -#: parse.y:4220 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo" -#: parse.y:4224 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr " # getopts OPCIĈENO NOMO [ARG] -#: builtins.c:631 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3138,12 +3252,13 @@ msgstr "" # exec [-cl] [-a name] [command [arguments ...]] [redirection ...] # exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...] -#: builtins.c:673 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3151,11 +3266,13 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "AnstataÅ­igu la ŝelon je la donita komando\n" "\n" @@ -3177,7 +3294,7 @@ msgstr "" " alirektado." # exit [n] -#: builtins.c:694 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3190,11 +3307,12 @@ msgstr "" " estas tiu de la plej ĵuse plenumita komando." # logout [N] -#: builtins.c:703 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "AdiaÅ­, saluta ŝelo!\n" @@ -3206,17 +3324,19 @@ msgstr "" # fc -s [pat=rep] [command] => # fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­ # fc -s [ŜABLONO=ANST] [KOMANDO] -#: builtins.c:713 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3230,7 +3350,8 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Eligu aÅ­ plenumu komandojn el la historilisto\n" "\n" @@ -3258,7 +3379,7 @@ msgstr "" " eraro." # fg [job_spec] => fg [LABORINDIKO] -#: builtins.c:743 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3279,12 +3400,14 @@ msgstr "" " Tiu de la dialogigita komando; aÅ­ malsukceso, se okazis eraro." # bg [job_spec] => bg [LABORINDIKO] -#: builtins.c:758 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3301,12 +3424,13 @@ msgstr "" " eraro." # hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...] -#: builtins.c:772 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -3346,7 +3470,7 @@ msgstr "" # help [-ds] [pattern ...] # help [-ds] [ŜABLONO ...] -#: builtins.c:797 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3364,7 +3488,8 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Vidigu informon pri prmitivaj komandoj\n" "\n" @@ -3390,7 +3515,7 @@ msgstr "" # history [-c] [-d DEŜOVO] [n] aÅ­ # history -awr [DOSIERNOMO] aÅ­ # history -ps ARG [ARG...] -#: builtins.c:821 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3417,7 +3542,8 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3462,7 +3588,7 @@ msgstr "" # jobs -x command [args] => # jobs [-lnprs] [LABORINDIKO ...] aÅ­ # jobs -x KOMANDO [ARGS] -#: builtins.c:857 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3508,7 +3634,7 @@ msgstr "" " Ĉe „-x‟, la elirstato de la KOMANDO." # disown [-h] [-ar] [jobspec ...] -#: builtins.c:884 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3544,7 +3670,7 @@ msgstr "" # kill -l [sigspec] => # kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aÅ­ # kill -l [SIGNOM] -#: builtins.c:903 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3588,14 +3714,15 @@ msgstr "" # let arg [arg ...] # let ARG [ARG ...] -#: builtins.c:926 +#: builtins.c:936 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" +" 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" @@ -3677,18 +3804,22 @@ 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:971 +#: builtins.c:981 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3700,22 +3831,28 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" -" \t\tif input is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +" \t\twithout trying to read any data, returning success only if\n" +" \t\tinput is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "Legu linion el la ĉefenigujo kaj disigu ĝin en kampojn\n" @@ -3761,7 +3898,7 @@ msgstr "" # return [n] # return [N] -#: builtins.c:1014 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3783,7 +3920,8 @@ msgstr "" # set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...] # set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...] -#: builtins.c:1027 +#: builtins.c:1039 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3826,7 +3964,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3848,7 +3987,7 @@ msgid "" " -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 follow symbolic links when executing commands\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" @@ -3951,7 +4090,8 @@ msgstr "" # unset [-f] [-v] [name ...] # unset [-f] [-v] [NOMO ...] -#: builtins.c:1112 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3960,8 +4100,11 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" 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" @@ -3988,12 +4131,13 @@ msgstr "" # export [-fn] [name[=value] ...] or export -p # export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p -#: builtins.c:1132 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4023,7 +4167,7 @@ msgstr "" # readonly [-af] [name[=value] ...] or readonly -p # readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p -#: builtins.c:1151 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4060,7 +4204,7 @@ msgstr "" " Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio." # shift [n] -#: builtins.c:1172 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4077,7 +4221,7 @@ msgstr "" # source filename [arguments] # source DOSIERNOMO [ARGUMENTOJ] -#: builtins.c:1184 builtins.c:1199 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4102,7 +4246,7 @@ msgstr "" " DOSIERNOMO ne legeblas." # suspend [-f] -#: builtins.c:1215 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4128,7 +4272,8 @@ msgstr "" # test [expr] # test [ESPRIMO] -#: builtins.c:1231 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4162,7 +4307,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4183,7 +4329,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4191,6 +4338,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4279,7 +4428,7 @@ msgstr "" " argumento." # [ arg... ] -#: builtins.c:1311 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4289,11 +4438,12 @@ msgstr "" "Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n" " argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟." -#: builtins.c:1320 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4309,11 +4459,12 @@ msgstr "" # trap [-lp] [[arg] signal_spec ...] # trap [-lp] [[ARG] SIGNALINDIKO ...] -#: builtins.c:1332 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4322,26 +4473,34 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Kaptu signalojn kaj aliajn eventojn\n" "\n" @@ -4379,7 +4538,7 @@ msgstr "" # type [-afptP] name [name ...] # type [-afptP] NOMO [NOMO ...] -#: builtins.c:1368 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4405,7 +4564,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Vidigu informon pri tipo de komando\n" "\n" @@ -4436,11 +4596,13 @@ msgstr "" # ulimit [-SHacdefilmnpqrstuvx] [limit] # ulimit [-SHacdefilmnpqrstuvx] [LIMO] -#: builtins.c:1399 +#: builtins.c:1414 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4464,6 +4626,9 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" +" -T the maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -4519,7 +4684,7 @@ msgstr "" # umask [-p] [-S] [mode] # umask [-p] [-S] [REĜIMO] -#: builtins.c:1444 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4554,19 +4719,25 @@ msgstr "" # wait [id] # wait [IND] -#: builtins.c:1464 +#: builtins.c:1482 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for the process identified by ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\n" -" in the job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." msgstr "" "Atendu ke laboro finiĝu, kaj liveru elirstaton\n" "\n" @@ -4582,17 +4753,20 @@ msgstr "" # wait [pid] # wait [PN] -#: builtins.c:1482 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Atendu ke procezo finiĝu, kaj liveru elirstaton\n" "\n" @@ -4606,7 +4780,7 @@ msgstr "" # for NAME [in WORDS ... ] ; do COMMANDS; done # for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done -#: builtins.c:1497 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4630,7 +4804,7 @@ msgstr "" # for (( exp1; exp2; exp3 )); do COMMANDS; done # for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done -#: builtins.c:1511 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4662,7 +4836,7 @@ msgstr "" # select NAME [in WORDS ... ;] do COMMANDS; done # select NONO [in VORTOJ ... ;] do KOMANDOJ; done -#: builtins.c:1529 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4699,7 +4873,7 @@ msgstr "" # time [-p] PIPELINE # time [-p] DUKTO -#: builtins.c:1550 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4730,7 +4904,7 @@ msgstr "" # case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac # case VORTO in [ŜABLONO [| ŜABLONO]...) KOMANDOJ ;;]... esac -#: builtins.c:1567 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4752,16 +4926,21 @@ msgstr "" # [ else COMMANDS; ] fi # if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]... # [ else KOMANDOJ; ] fi -#: builtins.c:1579 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4779,7 +4958,7 @@ msgstr "" # while COMMANDS; do COMMANDS; done # while KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1596 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4799,7 +4978,7 @@ msgstr "" # until COMMANDS; do COMMANDS; done # until KOMANDOJ; do KOMANDOJ; done -#: builtins.c:1608 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4819,7 +4998,7 @@ msgstr "" # coproc [NAME] command [redirections] # coproc [NOMO] KOMANDO [ALIDIREKTADOJ] -#: builtins.c:1620 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4843,12 +5022,13 @@ msgstr "" # function name { COMMANDS ; } or name () { COMMANDS ; } # function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; } -#: builtins.c:1634 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4867,7 +5047,7 @@ msgstr "" # grouping_braces: { COMMANDS ; } # { KOMANDOJ ; } -#: builtins.c:1648 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4887,7 +5067,7 @@ msgstr "" # job_spec [&] # LABORINDIKO [&] -#: builtins.c:1660 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4912,7 +5092,7 @@ msgstr "" # (( expression )) # (( ESPRIMO )) -#: builtins.c:1675 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4932,13 +5112,16 @@ msgstr "" # [[ expression ]] # [[ ESPRIMO ]] -#: builtins.c:1687 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4980,7 +5163,7 @@ msgstr "" # help var # variables - Names and meanings of some shell variables -#: builtins.c:1713 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5087,7 +5270,7 @@ msgstr "" # pushd [-n] [+N | -N | dir] # pushd [-n] [+N | -N | DOSIERUJO] -#: builtins.c:1770 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5146,7 +5329,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # popd [-n] [+N | -N] -#: builtins.c:1804 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5195,7 +5378,7 @@ msgstr "" " Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas." # dirs [-clpv] [+N] [-N] -#: builtins.c:1834 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5212,10 +5395,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" @@ -5247,12 +5432,13 @@ msgstr "" # shopt [-pqsu] [-o] [optname ...] # shopt [-pqsu] [-o] [OPCINOMO ...] -#: builtins.c:1863 +#: builtins.c:1884 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" +" arguments, list all shell options with an indication of whether or not " +"each\n" " is set.\n" " \n" " Options:\n" @@ -5285,7 +5471,8 @@ msgstr "" # printf [-v var] format [arguments] # printf [-v VAR] FORMATO [ARGUMENTOJ] -#: builtins.c:1884 +#: builtins.c:1905 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5293,22 +5480,34 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1)\n" -" and printf(3), printf interprets:\n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" +" %(fmt)T output the date-time string resulting from using FMT as a " +"format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Aranĝu kaj eligu argumentojn argumentojn laÅ­ formato\n" @@ -5334,12 +5533,14 @@ msgstr "" # complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBŜAB] # [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB] # [-P PREFIKSO] [-S SUFFIKSO] [NOMO ...] -#: builtins.c:1913 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5385,12 +5586,13 @@ msgstr "" # compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBŜAB] # [-W vORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROŜAB] # [-P PREFIKSO] [-S SUFFIKSO] [VORTO] -#: builtins.c:1941 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5405,13 +5607,16 @@ msgstr "" " Sukceso, krom se aperas misa opcio aÅ­ okazas eraro." # compopt [-o|+o OPCIO] [-DE] [NOMO ...] -#: builtins.c:1956 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5461,22 +5666,28 @@ msgstr "" # [-c quantum] [array] # mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO] # [-c KVANTO] [TABELO] -#: builtins.c:1986 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -5486,11 +5697,13 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Legu liniojn el la ĉefenigujo en tabelvariablon\n" @@ -5527,7 +5740,7 @@ msgstr "" # readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] # [-c quantum] [array] -#: builtins.c:2020 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5536,3 +5749,13 @@ msgstr "" "Legu liniojn el la ĉefenigujo en tabelvariablon\n" "\n" " Sinonimo de „mapfile‟." + +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 ĉe «Free Software Foundation, Inc.»\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "La permesilo estas GPLv2+; t.e. GNU GPL, versio 2ª aÅ­ pli nova.\n" +#~ "Ties tekston vd ĉe \n" diff --git a/po/es.gmo b/po/es.gmo index 580e0daef..b39d0d811 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 85518227b..3fb3bec5b 100644 --- a/po/es.po +++ b/po/es.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-08-14 11:55-0500\n" "Last-Translator: Cristian Othón Martínez Vera \n" "Language-Team: Spanish \n" -"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" +"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: no se puede convertir la matriz de indizada a asociativa" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: índice de matriz asociativa inválido" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, 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:557 +#: arrayfunc.c:586 #, 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" @@ -46,23 +46,23 @@ msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa" msgid "%s: cannot create: %s" msgstr "%s: no se puede crear: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: no se puede encontrar la combinación de teclas " "para la orden" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: el primer carácter que no es espacio en blanco no es `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "no hay un `%c' que cierre en %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" @@ -128,7 +128,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME no está definido" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "demasiados argumentos" @@ -151,7 +151,7 @@ msgstr "aviso: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: la opción requiere un argumento" @@ -166,7 +166,7 @@ msgstr "%s: se requiere un argumento numérico" msgid "%s: not found" msgstr "%s: no se encontró" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: opción inválida" @@ -189,7 +189,7 @@ msgstr "número octal inválido" msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "número inválido" @@ -300,25 +300,35 @@ msgstr "no se está ejecutando la función de completado" # sólo se puede usar. sv # De acuerdo. cfuga -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "sólo se puede usar dentro de una función" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "no se puede usar `-f' para hacer funciones" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: función de sólo lectura" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: no se puede convertir una matriz asociativa a indizada" @@ -347,25 +357,25 @@ msgstr "%s: no se cargó dinámicamente" msgid "%s: cannot delete: %s" msgstr "%s: no se puede borrar: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: es un directorio" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: no es un fichero regular" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, 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:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no se puede ejecutar el fichero binario" @@ -452,15 +462,15 @@ msgstr[1] "Órdenes del shell que coinciden con la palabra `" msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k " -"%s' o `info %s'." +"no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %" +"s' o `info %s'." #: builtins/help.def:185 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no se puede abrir: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -504,16 +514,16 @@ msgstr "%s: falló inlib" msgid "no other options allowed with `-x'" msgstr "no se permiten otras opciones con `-x'" -#: builtins/kill.def:198 +#: 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" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Error desconocido" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "se esperaba una expresión" @@ -522,64 +532,64 @@ msgstr "se esperaba una expresión" msgid "%s: not an indexed array" msgstr "%s: no es una matriz indizada" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descriptor de fichero inválida" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descriptor de fichero inválido: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: cuenta de líneas inválida" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: origen de matriz inválido" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de llamada inválido" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "nombre de variable de matriz vacío" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "se requiere el soporte de variable de matriz" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta el carácter de formato" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tiempo inválida" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato inválido" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "falta el dígito hexadecimal para \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta el dígito unicode para \\%c" @@ -588,19 +598,24 @@ msgstr "falta el dígito unicode para \\%c" msgid "no other directory" msgstr "no hay otro directorio" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: límite de argumento inválido" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "la pila de directorios está vacía" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "índice de la pila de directorios" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -644,7 +659,7 @@ msgstr "" "\tla lista mostrada por dirs cuando se llama sin opciones,\n" "\tempezando desde cero." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -686,7 +701,7 @@ msgstr "" " \n" " La orden interna `dirs' muestra la pila de directorios." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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,12 +741,12 @@ msgstr "" " \n" " La orden interna `dirs' muestra la pila de directorios." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación de tiempo de expiración inválida" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" @@ -741,26 +756,26 @@ 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'" -#: builtins/set.def:771 +#: builtins/set.def:782 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:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: no se puede borrar" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: no se puede borrar: %s es de solo lectura" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: no es una variable de matriz" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: no es una función" @@ -769,11 +784,11 @@ msgstr "%s: no es una función" msgid "shift count" msgstr "cuenta de shift" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nombre de opción del shell inválido" @@ -898,102 +913,102 @@ msgstr "salto erróneo" msgid "%s: unbound variable" msgstr "%s: variable sin asignar" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "no se puede redirigir la salida estándar desde /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato inválido" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "error de tubería" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: no se encontró la orden" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, 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:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: no se puede ejecutar el fichero binario" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s es una orden interna del shell\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se puede duplicar el df %d al df %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "se ha excedido el nivel de recursión de la expresión" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "desbordamiento de la base de la pila de recursión" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "error sintáctico en la expresión" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "se intentó asignar a algo que no es una variable" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 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:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bicho: elemento de asignación de expresión erróneo" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "se esperaba `:' para la expresión condicional" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "se esperaba un identificador después del pre-incremento o pre-decremento" @@ -1001,32 +1016,32 @@ msgstr "" # falta , singular em+ # mmmh, puede faltar más de un paréntesis cfuga # tiene razón Enrique, es singular. cfuga -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "error sintáctico: se esperaba un operando" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "error sintáctico: operador aritmético inválido" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (el elemento de error es \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "valor demasiado grande para la base" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: error de expresión\n" @@ -1035,12 +1050,12 @@ msgstr "%s: error de expresión\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: no se puede acceder a los directorios padre" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no se puede reestablecer el modo nodelay para el df %d" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" @@ -1050,155 +1065,155 @@ msgstr "" # buffer: espacio intermedio , alojamiento intermedio ( me gusta menos ) # em+ # almacenamiento intermedio. cfuga -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: el almacenamiento intermedio ya existe para el nuevo df %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: el proceso %5ld (%s) en the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existe tal pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Señal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Hecho" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Detenido" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Detenido(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Ejecutando" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Hecho(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Salida %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Estado desconocido" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(`core' generado) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (dir ahora: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid hijo (%ld a %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No hay un registro del proceso %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: el trabajo %d está detenido" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: el trabajo ha terminado" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: el trabajo %d ya está en segundo plano" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: línea %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (`core' generado)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ahora: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: falló getpgrp" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de línea" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no se puede establecer el grupo de proceso de terminal (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "no hay control de trabajos en este shell" @@ -1220,51 +1235,51 @@ msgstr "" msgid "unknown" msgstr "desconocido" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque en la lista libre sobreescrito" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: se llamó con un argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: los tamaños de los pedazos de inicio y fin son diferentes" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 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:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: ¿la tabla alloc está llena con FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: ¿%p ya está en la tabla como asignado?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: ¿%p ya está en la tabla como libre?\n" @@ -1312,15 +1327,15 @@ msgstr "setlocale: %s: no se puede cambiar el local (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no se puede cambiar el local (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Tiene correo en $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Tiene correo nuevo en $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "El correo en %s fue leído\n" @@ -1356,71 +1371,71 @@ 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:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mientras se buscaba `]]'" -#: parse.y:4043 +#: parse.y:4091 #, 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:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "error sintáctico en la expresión condicional" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', se esperaba `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "se esperaba `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para el operador unario condicional" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para el operador unario condicional" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "se esperaba un operador binario condicional" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para el operador binario condicional" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para el operador binario condicional" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' en la orden condicional" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' en la orden condicional" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d en la orden condicional" @@ -1431,12 +1446,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:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error sintáctico cerca del elemento inesperado `%s'" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "error sintáctico cerca de `%s'" @@ -1445,24 +1460,24 @@ 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:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "error sintáctico: no se esperaba el final del fichero" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "error sintáctico" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para dejar el shell.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperado mientras se buscaba un `)' coincidente" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: no se encuentra la función `%s'" @@ -1491,57 +1506,57 @@ msgstr "xtrace_set: puntero a fichero NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato inválido" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "descriptor de fichero fuera de rango" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamiento ambiguo" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no se puede sobreescribir un fichero existente" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringido: no se puede redirigir la salida" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no se puede asignar el fd a la variable" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "error de redirección: no se puede duplicar el df" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "¡no se puede encontrar /tmp, crear por favor!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nombre de directorio válido" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción inválida" @@ -1549,11 +1564,11 @@ msgstr "%c%c: opción inválida" # 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:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "¡No tengo nombre de usuario!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" @@ -1563,7 +1578,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:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1572,43 +1587,44 @@ 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:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Opciones GNU largas:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opciones del shell:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +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" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opción\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Teclee `%s -c help' para más información sobre las órdenes internas del " "shell.\n" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use la orden `bashbug' para reportar bichos.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación inválida" @@ -1793,72 +1809,77 @@ msgstr "Señal Desconocida #" msgid "Unknown Signal #%d" msgstr "Señal Desconocida #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sustitución errónea: no hay un `%s' que cierre en %s" -#: subst.c:2801 +#: subst.c:2823 #, 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:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "no se puede crear la tubería para la sustitución del proceso" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "no se puede crear un proceso hijo para la sustitución del proceso" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "no se puede abrir la tubería llamada %s para lectura" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "no se puede abrir la tubería llamada %s para escritura" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "no se puede duplicar la tubería llamada %s como df %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "no se pueden crear la tubería para la sustitución de la orden" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "no se puede crear un proceso hijo para la sustitución de la orden" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no se puede duplicar la tubería como df 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo o no establecido" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadena < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: sustitución errónea" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no se puede asignar de esta forma" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1866,40 +1887,40 @@ msgstr "" "versiones futuras del intérprete obligarán la evaluación como una " "sustitución aritmética" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "no hay coincidencia: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "se esperaba un argumento" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: se esperaba una expresión entera" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "se esperaba `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "se esperaba `)', se encontró %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: se esperaba un operador unario" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: se esperaba un operador binario" @@ -1911,20 +1932,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:816 +#: test.c:839 msgid "missing `]'" msgstr "falta un `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "número de señal inválido" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1932,73 +1953,84 @@ msgstr "" "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí " "mismo" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: señal errónea %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "error al importar la definición de la función para `%s'" -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 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:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: no se puede asignar el fd a la variable" + +#: variables.c:3554 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:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s tiene exportstr nulo" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter inválido %d en exportstr para %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "no hay `=' en exportstr para %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no es un contexto global_variables" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no se puede abrir como FICHERO" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s fuera de rango" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -2006,36 +2038,22 @@ msgstr "" "Licencia GPLv3+: GPL de GNU versión 3 o posterior \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versión %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\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" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: 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" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licencia GPLv2+: GPL de GNU versión 2 o posterior \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2115,7 +2133,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] orden [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] nombre[=valor] ..." #: builtins.c:78 @@ -2228,7 +2247,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nombre ...]" #: builtins.c:144 @@ -2288,12 +2308,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2833,6 +2854,7 @@ msgstr "" " la ORDEN." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2852,6 +2874,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2867,7 +2890,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Establece valores de variable y atributos.\n" " \n" @@ -2906,7 +2930,7 @@ msgstr "" " Devuelve con éxito a menos que se de una opción inválida o\n" " suceda un error." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2916,7 +2940,8 @@ msgstr "" " \n" " Obsoleto. Consulte `help declare'." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2927,8 +2952,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Define variables locales.\n" " \n" @@ -2942,7 +2967,7 @@ msgstr "" " Devuelve con éxito a menos que se de una opción inválida, suceda\n" " un error, o el shell no esté ejecutando una función." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -3007,7 +3032,7 @@ msgstr "" " Estado de salida:\n" " Devuelve con éxito a menos que suceda un error de escritura." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -3029,7 +3054,7 @@ msgstr "" " Estado de salida:\n" " Devuelve con éxito a menos que suceda un error de escritura." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3084,7 +3109,7 @@ msgstr "" "shell\n" " o suceda un error." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3109,7 +3134,7 @@ msgstr "" # en una de dos formas -> en una de las dos formas siguientes em+ # dar argumentos -> especificar em+ # De acuerdo. cfuga -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3189,7 +3214,7 @@ msgstr "" " Devuelve con éxito si se encuentra una opción; falla si se encuentra\n" " el final de las opciones o sucede un error." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3230,7 +3255,7 @@ msgstr "" " Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n" " error de redirección." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3243,7 +3268,7 @@ msgstr "" "salida\n" " es el mismo de la última orden ejecutada." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3256,7 +3281,7 @@ msgstr "" " Termina un shell de entrada con un estado de salida de N. Devuelve un\n" " error si no se ejecuta en un shell de entrada." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3312,7 +3337,7 @@ msgstr "" "error\n" " es diferente de cero." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3333,7 +3358,7 @@ msgstr "" " El estado del comando ubicado en primer plano, o falla si sucede un " "error." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3356,7 +3381,7 @@ msgstr "" " Devuelve éxito a menos que el control de trabajos no esté activado o\n" " suceda un error." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3401,7 +3426,7 @@ msgstr "" " Devuelve con éxito a menos que no se encuentre NOMBRE o se proporcione\n" " una opción inválida." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3442,7 +3467,7 @@ msgstr "" " Devuelve con éxito a menos que no se encuentre PATRÓN o se proporcione\n" " una opción inválida." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3505,7 +3530,7 @@ msgstr "" " tiempo asociada con cada entrada de historia mostrada. No se muestra\n" " ninguna marca de tiempo de otra forma." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3551,7 +3576,7 @@ msgstr "" " 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." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3582,7 +3607,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcionen una opción o un\n" " IDTRABAJO inválidos." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3632,7 +3657,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:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3719,7 +3744,7 @@ msgstr "" " Si el último ARGumento se evalúa como 0, let devuelve 1; de otra\n" " forma, let devuelve 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3755,7 +3780,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3814,7 +3839,7 @@ msgstr "" " línea, el tiempo de read expire, o se proporcione un descriptor de\n" " fichero inválido como el argumento de -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3836,7 +3861,7 @@ msgstr "" " Devuelve N, o falla si el shell no está ejecutando una función o un " "guión." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4018,7 +4043,8 @@ msgstr "" " Estado de Salida:\n" " Devuelve con éxito a menos que se proporcione una opción inválida." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4027,6 +4053,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4054,7 +4082,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " un NOMBRE sea de sólo lectura." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4090,7 +4118,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o que\n" " NOMBRE sea inválido." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4129,7 +4157,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " el NOMBRE sea inválido." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4147,7 +4175,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve con éxito a menos que N sea negativo o mayor que $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4171,7 +4199,7 @@ msgstr "" " Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" " no se puede leer el FICHERO." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4197,7 +4225,8 @@ msgstr "" " Devuelve con éxito a menos que no esté activo el control de trabajos o\n" " suceda un error." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4262,6 +4291,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4359,7 +4390,7 @@ msgstr "" " Devuelve con éxito si EXPR evalúa a verdadero; falla si EXPR evalúa a\n" " falso o se proporciona un argumento inválido." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4371,7 +4402,7 @@ msgstr "" " Este es un sinónimo para la orden interna \"test\", pero el último\n" " argumento debe ser un `]' literal, que coincida con el `[' inicial." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4391,7 +4422,7 @@ msgstr "" " Estado de salida:\n" " Siempre con éxito." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4473,7 +4504,7 @@ msgstr "" # No he visto que este fichero incluya la posibilidad de traducir las # palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4531,7 +4562,7 @@ msgstr "" " Devuelve con éxito si se encuentran todos los NOMBREs; falla si no se\n" " encuentra alguno." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4624,7 +4655,7 @@ msgstr "" "suceda\n" " un error." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4658,7 +4689,7 @@ msgstr "" " Devuelve con éxito a menos que el MODO sea inválido o se proporcione\n" " una opción inválida." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4671,6 +4702,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4687,18 +4721,20 @@ msgstr "" " Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" " opción inválida." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Espera la terminación del trabajo y devuelve el estado de salida.\n" " \n" @@ -4710,7 +4746,7 @@ msgstr "" " Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n" " opción inválida." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4732,7 +4768,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4762,7 +4798,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4799,7 +4835,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4826,7 +4862,7 @@ msgstr "" " Estado de Salida:\n" " El estado de devolución es el estado de devolución de la TUBERÍA." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4844,7 +4880,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4880,7 +4916,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4898,7 +4934,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4916,7 +4952,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4940,7 +4976,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de salida de la ORDEN." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4963,7 +4999,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve con éxito a menos que NOMBRE sea de sólo lectura" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4981,7 +5017,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado de la última orden ejecutada." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -5006,7 +5042,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve el estado del trabajo reiniciado." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5024,7 +5060,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -5077,7 +5113,7 @@ msgstr "" " Estado de Salida:\n" " 0 o 1 dependiendo del valor de la EXPRESIÓN." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5192,7 +5228,7 @@ msgstr "" " \t\tpara decidir cuáles órdenes se deben guardar en la lista de\n" " \t\thistoria.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5251,7 +5287,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione un argumento inválido o\n" " falle el cambio de directorio." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5305,7 +5341,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione un argumento inválido o\n" " falle el cambio de directorio." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5361,7 +5397,7 @@ msgstr "" " Devuelve con éxito, a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5398,7 +5434,7 @@ msgstr "" " Devuelve con éxito si se activa NOMBRE_OPCIÓN; falla si se proporciona\n" " una opción inválida o NOMBRE_OPCIÓN está desactivado." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5426,6 +5462,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5459,7 +5501,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " suceda un error de escritura o de asignación." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5511,7 +5553,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5533,7 +5575,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5590,7 +5632,7 @@ msgstr "" " 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." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5663,7 +5705,7 @@ msgstr "" " Devuelve con éxito a menos que se proporcione una opción inválida o\n" " la MATRIZ sea de sólo lectura o no sea una matriz indizada." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5673,6 +5715,19 @@ msgstr "" " \n" " Un sinónimo de `mapfile'." +#~ 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" #~ " " @@ -6480,8 +6535,8 @@ msgstr "" #~ 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" +#~ "no se pueden crear las tuberías (pipes) para la sustitución del proceso: %" +#~ "s" #~ msgid "reading" #~ msgstr "leyendo" diff --git a/po/et.gmo b/po/et.gmo index f56d7534a..b1c7eb574 100644 Binary files a/po/et.gmo and b/po/et.gmo differ diff --git a/po/et.po b/po/et.po index de90a9014..4986a3191 100644 --- a/po/et.po +++ b/po/et.po @@ -6,35 +6,35 @@ msgid "" msgstr "" "Project-Id-Version: bash 3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2006-11-11 16:38+0200\n" "Last-Translator: Toomas Soome \n" "Language-Team: Estonian \n" -"Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8-bit\n" +"Language: et\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "vigane massiivi indeks" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: vigane tegevuse nimi" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: mitte-numbrilisele indeksile ei saa omistada" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -44,21 +44,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: ei saa luua: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: esimine mitte-tühemik sümbol pole `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "sulgev `%c' puudub %s sees" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: puudub eraldav koolon" @@ -122,7 +122,7 @@ msgstr "Tagastab jooksva alamprotseduuri konteksti." msgid "HOME not set" msgstr "HOME pole seatud" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "liiga palju argumente" @@ -145,7 +145,7 @@ msgstr "%s: hoiatus: " msgid "%s: usage: " msgstr "%s: hoiatus: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: võti nõuab argumenti" @@ -160,7 +160,7 @@ msgstr "%s: n msgid "%s: not found" msgstr "%s: ei leitud" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: vigane võti" @@ -185,7 +185,7 @@ msgstr "vigane signaali number" msgid "invalid hex number" msgstr "vigane number" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "vigane number" @@ -294,25 +294,35 @@ msgstr "hoiatus: v msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "saab kasutada ainult funktsioonis" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funktsioon ei ole muudetav" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: masiivi muutujaid ei saa nii kustutada" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -341,23 +351,23 @@ msgstr "%s: pole d msgid "%s: cannot delete: %s" msgstr "%s: ei saa kustutada: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: on kataloog" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ei ole tavaline fail" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: fail on liiga suur" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kahendfaili ei õnnestu käivitada" @@ -450,7 +460,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: ei saa avada: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -484,16 +494,16 @@ msgstr "%s: vigane teenus" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Tundmatu viga" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "oodati avaldist" @@ -502,65 +512,65 @@ msgstr "oodati avaldist" msgid "%s: not an indexed array" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: vigane võti" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: vigane võti" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: vigane tegevuse nimi" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: pole massiiv" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: vigane signaali spetsifikatsioon" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: hoiatus: " -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -569,19 +579,24 @@ msgstr "" msgid "no other directory" msgstr "teist kataloogi pole" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: vigane number" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -605,7 +620,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -630,7 +645,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -651,12 +666,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "viga lugemisel: %d: %s" @@ -665,26 +680,26 @@ msgstr "viga lugemisel: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: ei saa eemaldada" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: pole massiiv" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktsioon" @@ -693,11 +708,11 @@ msgstr "%s: ei ole funktsioon" msgid "shift count" msgstr "shift arv" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -822,128 +837,128 @@ msgstr "" msgid "%s: unbound variable" msgstr "%s: sidumata muutuja" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "kirjutamise viga: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: käsku ei ole" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s on %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: halb interpretaator" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kahendfaili ei õnnestu käivitada" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on shelli sisekäsk\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "avaldise rekursioon on liiga sügav" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "süntaksi viga avaldises" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "üritati omistada mitte-muutujale" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "nulliga jagamine" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponent on väiksem kui 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "puudub `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "süntaksi viga: oodati operandi" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "süntaksi viga: vigane aritmeetiline operaator" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "vigane aritmeetiline baas" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "väärtus on baasiks liiga suur" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: oodati täisarvude avaldist" @@ -952,163 +967,163 @@ msgstr "%s: oodati t msgid "getcwd: cannot access parent directories" msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid puudub" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: töö %d on peatatud" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: töö on lõpetatud" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: töö %d on juba taustal" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: hoiatus: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "" @@ -1129,49 +1144,49 @@ msgstr "" msgid "unknown" msgstr "%s: tundmatu masin" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1219,15 +1234,15 @@ msgstr "" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Teil on kiri kaustas $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Teil on uus kiri kaustas $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Kiri kaustas %s on loetud\n" @@ -1260,103 +1275,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "süntaksi viga tingimuslikus avaldises" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "ootamatu märk `%s', oodati `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "oodati `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "süntaksi viga kohal `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "süntaksi viga: ootamatu faililõpp" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "süntaksi viga" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1385,71 +1400,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "faili deskriptor on piiridest väljas" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: segane ümbersuunamine" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: fail on olemas, ei kirjuta üle" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: piiratud: väljundit ei saa ümber suunata" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "$%s: sedasi ei saa omistada" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "/tmp puudub, palun looge see!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp peab olema kataloogi nimi" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: vigane võti" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Mul ei ole nime!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1458,39 +1473,40 @@ msgstr "" "Kasuta:\t%s [GNU pikk võti] [võti] ...\n" "\t%s [GNU pikk võti] [võti] skript-fail ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU pikad võtmed:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Käsuinterpretaatori võtmed:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s või -o võti\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: vigane operatsioon" @@ -1666,231 +1682,232 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameeter on null või pole seatud" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: halb asendus" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: sedasi ei saa omistada" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sulgev `%c' puudub %s sees" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "ei leitud: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "oodati argumenti" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: oodati täisarvude avaldist" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "oodati `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "oodati `)', saadi %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: eeldati unaarset operaatorit" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: eeldati binaarset operaatorit" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "puudub `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "vigane signaali number" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: vigane signaal %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "$%s: sedasi ei saa omistada" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parameeter on null või pole seatud" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: pole global_variables kontekst" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei saa avada: %s" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s on piiridest väljas" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -1968,7 +1985,7 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" #: builtins.c:78 @@ -2070,7 +2087,7 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" #: builtins.c:144 @@ -2128,11 +2145,11 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:175 -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "" #: builtins.c:179 -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "" #: builtins.c:182 @@ -2494,6 +2511,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2509,17 +2527,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2530,11 +2549,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2568,7 +2587,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2581,7 +2600,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2608,7 +2627,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2620,7 +2639,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2661,7 +2680,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2684,7 +2703,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2692,7 +2711,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2701,7 +2720,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2731,7 +2750,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2743,7 +2762,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2757,7 +2776,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2781,7 +2800,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2803,7 +2822,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2837,7 +2856,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2861,7 +2880,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2878,7 +2897,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2900,7 +2919,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2945,7 +2964,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -2980,7 +2999,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -2996,7 +3015,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3008,7 +3027,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3093,7 +3112,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3102,6 +3121,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3113,7 +3134,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3132,7 +3153,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3152,7 +3173,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3163,7 +3184,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3177,7 +3198,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3191,7 +3212,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3256,6 +3277,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3272,7 +3295,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3280,7 +3303,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3292,7 +3315,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3336,7 +3359,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3366,7 +3389,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3413,7 +3436,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3431,7 +3454,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3443,26 +3466,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3475,7 +3502,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3492,7 +3519,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3512,7 +3539,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3528,7 +3555,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3539,7 +3566,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3560,7 +3587,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3571,7 +3598,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3582,7 +3609,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3595,7 +3622,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3609,7 +3636,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3620,7 +3647,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3634,7 +3661,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3645,7 +3672,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3673,7 +3700,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3727,7 +3754,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3758,7 +3785,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3785,7 +3812,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3814,7 +3841,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3835,7 +3862,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3862,13 +3889,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3895,7 +3928,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3908,7 +3941,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -3939,7 +3972,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -3980,18 +4013,19 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n" + #~ msgid " " #~ msgstr " " -#~ msgid "%s: invalid number" -#~ msgstr "%s: vigane number" - #~ msgid "freed" #~ msgstr "vabastatud" diff --git a/po/fi.gmo b/po/fi.gmo index 098218e6e..875813cac 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 3001bdde3..0c28d463b 100644 --- a/po/fi.po +++ b/po/fi.po @@ -9,14 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2009-05-09 15:13+0300\n" "Last-Translator: Pekka Niemi \n" "Language-Team: Finnish \n" -"Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 0.3\n" @@ -24,22 +24,22 @@ msgstr "" msgid "bad array subscript" msgstr "virheellinen taulukkoindeksi" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: virheellinen assosiatiivinen indeksi" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -51,21 +51,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: ei voida luoda: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole ”\"”" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "ei loppumerkkiä ”%c” rivissä %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: puuttuva kaksoispiste-erotin" @@ -131,7 +131,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME-ympäristömuuttujaa ei ole asetettu" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "liian monta argumenttia" @@ -154,7 +154,7 @@ msgstr "varoitus: " msgid "%s: usage: " msgstr "%s: käyttö: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: valitsin vaatii argumentin" @@ -169,7 +169,7 @@ msgstr "%s: vaaditaan numeerinen argumentti" msgid "%s: not found" msgstr "%s: ei löytynyt" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: virheellinen valitsin" @@ -192,7 +192,7 @@ msgstr "virheellinen oktaaliluku" msgid "invalid hex number" msgstr "virheellinen heksadesimaaliluku" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "virheellinen luku" @@ -301,25 +301,35 @@ msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti" msgid "not currently executing completion function" msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "voidaan käyttää ainoastaan funktiossa" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "”-f”:ää ei voida käyttää funktioiden luomiseen" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: kirjoitussuojattu funktio" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: taulukkomuuttujia ei voi tuhota näin" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi" @@ -348,23 +358,23 @@ msgstr "%s: ei dynaamisesti ladattu" msgid "%s: cannot delete: %s" msgstr "%s: ei voida poistaa: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: on hakemisto" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ei tavallinen tiedosto" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: tiedosto on liian iso" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: binääritiedostoa ei voida suorittaa" @@ -459,7 +469,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: ei voida avata: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -502,16 +512,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:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Tuntematon virhe" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "odotettiin lauseketta" @@ -520,64 +530,64 @@ msgstr "odotettiin lauseketta" msgid "%s: not an indexed array" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: virheellinen tiedostokahvamääritys" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: virheellinen tiedostokahva: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: virheellinen rivimäärä" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: virheellinen taulukkoindeksi" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: virheellinen paluukutsumäärä" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "tyhjä taulukkomuuttujan nimi" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "vaaditaan tukea taulukkomuuttujille" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "”%s”: puuttuva muotoilumerkki" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "”%c”: virheellinen muotoilumerkki" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "varoitus: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "\\x:stä puuttuu heksadesimaalinumero" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "\\x:stä puuttuu heksadesimaalinumero" @@ -586,19 +596,24 @@ msgstr "\\x:stä puuttuu heksadesimaalinumero" msgid "no other directory" msgstr "ei toista hakemistoa" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: virheellinen rajoitusargumentti" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "hakemistopino on tyhjä" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "hakemistopinon indeksi" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -640,7 +655,7 @@ msgstr "" " -N\tNäyttää listan N:nnen alkion (laskien oikealta dirs-komennon\n" " \tantamasta listasta). Valitsimetta kutsuttaessa aloitetaan nollasta." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -682,7 +697,7 @@ msgstr "" " \n" " Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -720,12 +735,12 @@ msgstr "" " \n" " Sisäänrakennettu ”dirs”-komento näyttää hakemistopinon sisällön." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: virheellinen aikakatkaisumääritys" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "lukuvirhe: %d: %s" @@ -734,26 +749,26 @@ msgstr "lukuvirhe: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "”return” on käytettävissä vain funktiossa tai ladatussa skriptissä" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: ei voida poistaa" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ei voida poistaa: kirjoitussuojattu %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: ei ole taulukkomuuttuja" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ei ole funktio" @@ -762,13 +777,13 @@ msgstr "%s: ei ole funktio" msgid "shift count" msgstr "siirtolaskuri" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 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:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: virheellinen komentotulkin valitsimen nimi" @@ -893,127 +908,127 @@ msgstr "virheellinen hyppy" msgid "%s: unbound variable" msgstr "%s: sitomaton muuttuja" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "AJAN MUOTOMÄÄRITYS: ”%c”: virheellinen muotoilumerkki" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "putkitusvirhe" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää ”/”-merkkiä" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: komentoa ei löydy" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s on %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: virheellinen tulkki" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: binääritiedostoa ei voida suorittaa" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s on komentotulkin sisäänrakennettu komento\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "lausekkeen rekursiomäärä ylittyi" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "rekursiopinon alivuoto" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "lauseoppivirhe lausekkeessa" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "jako nollalla" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bugi: virheellinen sijoitusavainsana" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "”:”:ttä odotettiin ehdolliseen lausekkeeseen" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponentti on pienempi kuin 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "puuttuva ”)”" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "lauseoppivirhe: odotettiin operandia" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (virheellinen avainsana on ”%s”)" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "virheellinen lukujärjestelmä" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "liian iso luku lukujärjestelmälle" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: virhe lausekkeessa\n" @@ -1022,163 +1037,163 @@ msgstr "%s: virhe lausekkeessa\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: ylempiin hakemistoihin ei päästä" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp-putki" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: prosessi %5ld (%s) putkijonossa" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: prosessitunnusta ei löydy." -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signaali %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Valmis" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Pysäytetty" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Pysäytetty(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Ajossa" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Valmis(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Poistui %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Tuntematon tila" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(luotiin core-tiedosto)" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (työhakemisto: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "lapsiprosessin setpgid (%ld => %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Prosessista %ld ei ole tietoja" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: työ %d on pysäytetty" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: työ on lopetettu" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: työ %d on jo taustalla" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: rivi %d:" -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (luotiin core-tiedosto)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(työhakemisto nyt: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp epäonnistui" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vuonhallinta" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "tällä komentotulkilla ei ole työnohjausta" @@ -1200,49 +1215,49 @@ msgstr "" msgid "unknown" msgstr "tuntematon" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: vapaitten listan lohko ylikirjoittui" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: kutsuttiin argumenttina jo vapautettu lohko" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: kutsuttuun argumenttina varaamaton lohko" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: alku- ja loppulohkojen koot eroavat" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: kutsuargumentti on varaamaton lohko" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: alku- ja loppulohkojen koot eroavat" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: varaustaulukko on täynnä FIND_ALLOCeja?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p on merkitty taulukossa jo varatuksi?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p on jo taulukossa vapaana?\n" @@ -1290,15 +1305,15 @@ msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: ei voida varata %lu tavua" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Sinulle on postia laatikossa $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Sinulla on uutta postia laatikossa $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Posti laatikossa %s on luettu\n" @@ -1332,104 +1347,104 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: uudelleenohjaus ”%d” rajojen ulkopuolella" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa ”%c”" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "odottamaton EOF odotettaessa ”]]”" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana ”%s”" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "lauseoppivirhe ehdollisessa lausekkeessa" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "odottamaton avainsana ”%s”, odotettiin ”)”" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "odototettiin ”)”" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle unaariselle operaattorille" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "odottamaton avainsana ”%s”, odotettiin ehdollista binääristä operaattoria" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "odotettiin ehdollista binääristä operaattoria" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "odottamaton argumentti ”%s” ehdolliselle binääriselle operaattorille" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "odottamaton avainsana ”%c” ehdollisessa komennossa" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "odottamaton avainsana ”%s” ehdollisessa komennossa" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "odottamaton avainsana %d ehdollisessa komennossa" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa ”%s”" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "lauseoppivirhe lähellä ”%s”" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "lauseoppivirhe: odottamaton tiedostonloppu" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "lauseoppivirhe" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kirjoita ”%s” poistuaksesi komentotulkista.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "Odottamaton EOF odotettaessa vastaavaa ”)”" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "täydennys: funktiota ”%s” ei löytynyt" @@ -1458,71 +1473,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: ”%c”: virheellinen muotoilumerkki" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "tiedostokahva rajojen ulkopuolella" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: epämääräinen uudelleenohjaus" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "/tmp-hakemistoa ei löytynyt, luo se!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: virheellinen valitsin" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Minulla ei ole nimeä!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versio %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1531,44 +1546,45 @@ msgstr "" "Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n" "\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU:n pitkät valitsimet:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Komentotulkin valitsimet:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s tai -o -valitsin\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Raportoi virheet komennolla ”bashbug”.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: virheellinen operaatio" @@ -1742,129 +1758,134 @@ msgstr "Tuntematon signaali #" msgid "Unknown Signal #%d" msgstr "Tuntematon signaali #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "virheellinen korvaus: ei sulkevaa ”%s” jonossa %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "putkea ei voida luoda prosessin korvaamista varten" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nimettyä putkea %s ei voida avata lukemista varten" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "putkea ei voida luoda komennon korvaamista varten" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: virheellinen tiedostokahva: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: alimerkkijonolauseke < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: virheellinen korvaus" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ei voida asettaa näin" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "virheellinen korvaus: ei sulkevaa ”`” jonossa %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "ei osumia: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "odotettiin argumenttia" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: odotettiin kokonaislukuilmaisua" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "odotettiin ”)”" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "odotettiin ”)”, löydettiin %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: odotettiin unaarista operaattoria" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: odotettiin binääristä operaattoria" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "puuttuva ”]”" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "virheellinen signaalinumero" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1872,74 +1893,84 @@ msgstr "" "run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen " "itselleni" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: virheellinen signaali %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "virhe tuotaessa ”%s”:n funktiomääritystä" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ei funktiokontekstia nykytilassa" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: listaa ei voida sijoittaa taulukon alkioon" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ei funktiokontekstia nykytilassa" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametria ei ole tai sitä ei ole asetettu" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "virheellinen merkki %d %s:n exportstr:ssä" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "ei =:ä kohteen %s exportstr:ssä" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ei global_variables-kontekstia" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ei voida avata: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: virheellinen tiedostokahva: %s" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s rajojen ulkopuolella" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright © 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1947,35 +1978,21 @@ msgstr "" "Lisenssi GPLv3+: GNU GPL versio 3 tai uudempi \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versio %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Tämä on vapaa ohjelma; saat muutella ja levittää sitä vapaasti.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Takuuta ei ole lain määräämissä rajoissa.\n" -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright © 2009 Free Software Foundation, Inc." - -#: version2.c:87 -#, fuzzy, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Lisenssi GPLv3+: GNU GPL versio 3 tai uudempi \n" - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2057,7 +2074,7 @@ msgstr "command [-pVv] komento [arg ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [niemi[=arvo] ...]" #: builtins.c:78 @@ -2170,7 +2187,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o valitsinnimi] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nimi ...]" #: builtins.c:144 @@ -2229,12 +2247,13 @@ msgstr "umask [-p] [-S] [tila]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2775,6 +2794,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2790,7 +2810,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Asettaa muuttujien arvot ja attribuutit.\n" " \n" @@ -2828,7 +2849,7 @@ msgstr "" "tule \n" " virhetilannetta." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2838,7 +2859,8 @@ msgstr "" " \n" " Vanhentunut. Katso ”help declare”." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2849,8 +2871,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Määrittele paikallisia muuttujia.\n" " \n" @@ -2865,7 +2887,7 @@ msgstr "" " Palauttaa onnistuneen, ellei ole annettu virheellistä valitsinta,\n" " tapahtuu virhe tai komentotulkki ei ole suorittamassa funktiota." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2928,7 +2950,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei tapahdu virhettä." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2950,7 +2972,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei tapahdu virhettä." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3004,7 +3026,7 @@ msgstr "" "sisäänrakennettu\n" " komento tai tapahtuu virhe." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3023,7 +3045,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa komennon paluuarvon tai onnistuneen jos komento on tyhjä." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3103,7 +3125,7 @@ msgstr "" "valitsimet\n" " loppuvat tai tapahtuu virhe." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3145,7 +3167,7 @@ msgstr "" "uudelleenohjauksessa\n" " tapahtuu virhe." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3157,7 +3179,7 @@ msgstr "" " Poistuu komentotulkista paluuarvolla N. Jos N:ää ei anneta, paluuarvo\n" " on viimeisen komennon paluuarvo." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3170,7 +3192,7 @@ msgstr "" " Poistuu sisäänkirjautumiskomentotulkista paluuarvolla N. Palauttaa\n" " virheen jos ei olla sisäänkirjautumiskomentotulkissa." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3224,7 +3246,7 @@ msgstr "" " Palauttaa onnistuneen tai suoritetun komennon paluuarvon; nollasta\n" " poikkeava virhetilanteessa." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3245,7 +3267,7 @@ msgstr "" " Paluuarvo:\n" " Edustalle tuodun työn paluuarvo, tai epäonnistuminen virhetilanteessa." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3271,7 +3293,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3316,7 +3338,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos NIMEÄ ei löydy tai on annettu " "virheellinen valitsin." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3357,7 +3379,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos MALLINETTA ei löydy tai valitsin on\n" " virheellinen." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3422,7 +3444,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin " "tai tapahtuu virhe." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3466,7 +3488,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3498,7 +3520,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on " "virheellinen." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3540,7 +3562,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai " "tapahtuu virhe." -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3629,7 +3651,7 @@ msgstr "" " Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n" " tapauksessa 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3665,7 +3687,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3719,7 +3741,7 @@ msgstr "" " Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n" " ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3743,7 +3765,7 @@ msgstr "" "suorittamassa\n" " funktiota tai skriptiä." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3913,7 +3935,8 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3922,6 +3945,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3949,7 +3974,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on kirjoitussuojattu." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3983,7 +4008,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4020,7 +4045,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai NIMI on virheellinen." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4039,7 +4064,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4064,7 +4089,7 @@ msgstr "" "epäonnistuu\n" " mikäli TIEDOSTOA ei voida lukea." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4091,7 +4116,7 @@ msgstr "" "tapahtuu\n" " virhe." -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4157,6 +4182,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4252,7 +4279,7 @@ msgstr "" " Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n" " LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4264,7 +4291,7 @@ msgstr "" " Tämä on sisäänrakennetun ”test”-komennon synonyymi, mutta viimeisen\n" " argumentin pitää olla ”]”, joka sulkee avaavan ”[”:n." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4284,7 +4311,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu aina." -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4366,7 +4393,7 @@ msgstr "" "annettu\n" " virheellinen valitsin." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4422,7 +4449,7 @@ msgstr "" " Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n" " epäonnistuu." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4511,7 +4538,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4546,7 +4573,7 @@ msgstr "" " Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n" " virheellinen valitsin." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4559,6 +4586,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4577,18 +4607,20 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Odottaa työn valmistumista ja palauttaa paluuarvon.\n" " \n" @@ -4601,7 +4633,7 @@ msgstr "" " Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n" " virheellinen valitsin." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4623,7 +4655,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4655,7 +4687,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4692,7 +4724,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4721,7 +4753,7 @@ msgstr "" " Paluuarvo:\n" " KOMENTOKETJUN paluuarvo." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4740,7 +4772,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4774,7 +4806,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4792,7 +4824,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen komennon paluuarvo." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4810,7 +4842,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4832,7 +4864,7 @@ msgstr "" " Paluuarvo:\n" " KOMENNON paluuarvo." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4855,7 +4887,7 @@ msgstr "" " Paluuarvo:\n" " Onnistuu, ellei NIMI ole kirjoitussuojattu." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4874,7 +4906,7 @@ msgstr "" " Paluuarvo:\n" " Viimeisen suoritetun komennon paluuarvo." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4900,7 +4932,7 @@ msgstr "" " Paluuarvo:\n" " Työn tila." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4918,7 +4950,7 @@ msgstr "" " Paluuarvo:\n" " Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4972,7 +5004,7 @@ msgstr "" " Paluuarvo:\n" " 0 tai 1 riippuen LAUSEKKEEN arvosta." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5075,7 +5107,7 @@ msgstr "" " HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n" " \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5133,7 +5165,7 @@ msgstr "" "tai\n" " hakemiston vaihtaminen epäonnistuu." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5180,7 +5212,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n" " hakemiston vaihto epäonnistuu." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5234,7 +5266,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n" " tai tapahtuu virhe." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5272,7 +5304,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:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5300,6 +5332,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5326,7 +5364,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu kirjoitus- tai sijoitusvirhe." -#: builtins.c:1926 +#: builtins.c:1939 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5374,7 +5412,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n" " tapahtuu virhe." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5397,7 +5435,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " tapahtuu virhe." -#: builtins.c:1969 +#: builtins.c:1982 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5451,7 +5489,7 @@ msgstr "" " Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n" " NIMELLE ei ole määritetty täydennysmääritystä." -#: builtins.c:1999 +#: builtins.c:2012 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5524,7 +5562,7 @@ msgstr "" " tai TAULUKKO on kirjoitussuojattu." # Changed " characters into ”... -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5534,6 +5572,21 @@ msgstr "" " \n" " ”mapfile”:n synonyymi." +#, 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)" diff --git a/po/fr.gmo b/po/fr.gmo index c79e04e82..845e5aadb 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index ec86df8e3..91b2145b3 100644 --- a/po/fr.po +++ b/po/fr.po @@ -8,60 +8,63 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-07-07 21:52+0100\n" "Last-Translator: Christophe Combelles \n" "Language-Team: French \n" -"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: arrayfunc.c:50 +#: arrayfunc.c:51 msgid "bad array subscript" msgstr "mauvais indice de tableau" -#: arrayfunc.c:313 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s : impossible de convertir un tableau indexé en associatif" -#: arrayfunc.c:480 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s : clé non valable pour le tableau associatif" -#: arrayfunc.c:482 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s : impossible d'assigner à un index non numérique" -#: arrayfunc.c:518 +#: arrayfunc.c:586 #, 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" +msgstr "" +"%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice" -#: bashhist.c:387 +#: bashhist.c:388 #, c-format msgid "%s: cannot create: %s" msgstr "%s : impossible de créer : %s" -#: bashline.c:3498 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command : impossible de trouver le mappage clavier pour la commande" +msgstr "" +"bash_execute_unix_command : impossible de trouver le mappage clavier pour la " +"commande" -#: bashline.c:3584 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s : le premier caractère non vide n'est pas « \" »" -#: bashline.c:3613 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "pas de « %c » de fermeture dans %s" -#: bashline.c:3647 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s : virgule de séparation manquante" @@ -71,36 +74,36 @@ msgstr "%s : virgule de séparation manquante" msgid "`%s': invalid alias name" msgstr "« %s » : nom d'alias non valable" -#: builtins/bind.def:120 builtins/bind.def:123 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "édition de ligne non activée" -#: builtins/bind.def:206 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "« %s » : nom du mappage clavier invalide" -#: builtins/bind.def:245 +#: builtins/bind.def:251 #, c-format msgid "%s: cannot read: %s" msgstr "%s : impossible de lire : %s" -#: builtins/bind.def:260 +#: builtins/bind.def:266 #, c-format msgid "`%s': cannot unbind" msgstr "%s : impossible à délier" -#: builtins/bind.def:295 builtins/bind.def:325 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "%s : nom de fonction inconnu" -#: builtins/bind.def:303 +#: 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:307 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s peut être appelé via " @@ -123,11 +126,15 @@ msgstr "" " \n" " Sans EXPR, renvoie" -#: builtins/cd.def:235 +#: builtins/cd.def:239 msgid "HOME not set" msgstr "« HOME » non défini" -#: builtins/cd.def:247 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 +msgid "too many arguments" +msgstr "trop d'arguments" + +#: builtins/cd.def:258 msgid "OLDPWD not set" msgstr "« OLDPWD » non défini" @@ -136,7 +143,7 @@ msgstr "« OLDPWD » non défini" msgid "line %d: " msgstr "ligne %d : " -#: builtins/common.c:139 error.c:261 +#: builtins/common.c:139 error.c:265 #, c-format msgid "warning: " msgstr "avertissement :" @@ -146,11 +153,7 @@ msgstr "avertissement :" msgid "%s: usage: " msgstr "%s : utilisation :" -#: builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "trop d'arguments" - -#: builtins/common.c:191 shell.c:500 shell.c:782 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s : l'option nécessite un argument" @@ -165,7 +168,7 @@ msgstr "%s : argument numérique nécessaire" msgid "%s: not found" msgstr "%s : non trouvé" -#: builtins/common.c:214 shell.c:795 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s : option non valable" @@ -175,7 +178,7 @@ msgstr "%s : option non valable" msgid "%s: invalid option name" msgstr "%s : nom d'option non valable" -#: builtins/common.c:228 general.c:231 general.c:236 +#: builtins/common.c:228 general.c:234 general.c:239 #, c-format msgid "`%s': not a valid identifier" msgstr "« %s » : identifiant non valable" @@ -188,7 +191,7 @@ msgstr "nombre octal non valable" msgid "invalid hex number" msgstr "nombre hexadécimal non valable" -#: builtins/common.c:242 expr.c:1362 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "nombre non valable" @@ -200,9 +203,10 @@ msgstr "%s : indication de signal non valable" #: builtins/common.c:257 #, 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" +msgstr "" +"« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable" -#: builtins/common.c:264 error.c:454 +#: builtins/common.c:264 error.c:458 #, c-format msgid "%s: readonly variable" msgstr "%s : variable en lecture seule" @@ -274,48 +278,62 @@ msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n" msgid "%s: ambiguous job spec" msgstr "%s : spécification de tâche ambiguë" -#: builtins/complete.def:276 +#: builtins/complete.def:277 #, c-format msgid "%s: invalid action name" msgstr "%s : nom d'action non valable" -#: builtins/complete.def:449 builtins/complete.def:644 -#: builtins/complete.def:853 +#: builtins/complete.def:450 builtins/complete.def:645 +#: builtins/complete.def:855 #, c-format msgid "%s: no completion specification" msgstr "%s : pas d'indication de complètement" -#: builtins/complete.def:696 +#: builtins/complete.def:697 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" +msgstr "" +"avertissement : l'option « -F » peut fonctionner différemment de ce à quoi " +"vous vous attendez" -#: builtins/complete.def:698 +#: builtins/complete.def:699 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" +msgstr "" +"avertissement : l'option « -C » peut fonctionner différemment de ce à quoi " +"vous vous attendez" -#: builtins/complete.def:826 +#: builtins/complete.def:828 msgid "not currently executing completion function" msgstr "fonction de completion actuellement non en cours d'exécution" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "utilisable seulement dans une fonction" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions" -#: builtins/declare.def:378 execute_cmd.c:5105 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s : fonction en lecture seule" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s : impossible de convertir un tableau indexé en tableau associatif" @@ -344,24 +362,23 @@ msgstr "%s : non chargé dynamiquement" msgid "%s: cannot delete: %s" msgstr "%s : impossible d'effacer : %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 -#: shell.c:1457 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s : ceci est un répertoire" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s : ceci n'est pas un fichier régulier" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s : le fichier est trop grand" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 -#: shell.c:1467 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s : fichier binaire impossible à lancer" @@ -445,15 +462,18 @@ msgstr[1] "Commandes du shell correspondant aux mots-clés « " #: builtins/help.def:168 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %s » ou « info %s »." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %" +"s » ou « info %s »." #: builtins/help.def:185 #, c-format msgid "%s: cannot open: %s" msgstr "%s : impossible d'ouvrir : %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -464,7 +484,8 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Ces commandes de shell sont définies de manière interne. Saisissez « help » pour voir cette liste.\n" +"Ces commandes de shell sont définies de manière interne. Saisissez « help » " +"pour voir cette liste.\n" "Tapez « help nom » pour en savoir plus sur la fonction qui s'appelle « nom ».\n" "Utilisez « info bash » pour en savoir plus sur le shell en général.\n" "Utilisez « man -k » ou « info » pour en savoir plus sur les commandes qui\n" @@ -481,7 +502,7 @@ msgstr "impossible d'utiliser plus d'une option parmi « -anrw »" msgid "history position" msgstr "position dans l'historique" -#: builtins/history.def:365 +#: builtins/history.def:366 #, c-format msgid "%s: history expansion failed" msgstr "%s : l'expansion de l'historique a échoué" @@ -495,16 +516,17 @@ msgstr "%s : « inlib » a échoué" msgid "no other options allowed with `-x'" msgstr "pas d'autre option permise avec « -x »" -#: builtins/kill.def:198 +#: 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" +msgstr "" +"%s : les arguments doivent être des identifiants de tâche ou de processus" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Erreur inconnue" -#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "une expression est attendue" @@ -513,64 +535,64 @@ msgstr "une expression est attendue" msgid "%s: not an indexed array" msgstr "%s : n'est pas un tableau indexé" -#: builtins/mapfile.def:256 builtins/read.def:279 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s : spécification de descripteur de fichier non valable" -#: builtins/mapfile.def:264 builtins/read.def:286 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d : descripteur de fichier non valable : %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s : nombre de lignes non valable" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s : origine de tableau non valable" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s : quantum de callback non valable" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "nom de variable tableau vide" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "nécessité de prise en charge des variables tableaux" -#: builtins/printf.def:394 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "« %s » : caractère de format manquant" -#: builtins/printf.def:448 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c' : spécification de format d'heure incorrecte" -#: builtins/printf.def:635 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "« %c » : caractère de format non permis" -#: builtins/printf.def:662 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "avertissement : %s: %s" -#: builtins/printf.def:840 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "chiffre hexadécimal manquant pour \\x" -#: builtins/printf.def:855 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "chiffre unicode manquant pour \\%c" @@ -579,19 +601,24 @@ msgstr "chiffre unicode manquant pour \\%c" msgid "no other directory" msgstr "pas d'autre répertoire" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s : argument de limite non valable" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "pile de répertoire vide" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "indice de pile de répertoire" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -606,14 +633,17 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Affiche la liste des répertoires actuellement mémorisés. Les répertoires\n" -" sont insérés dans la liste avec la commande « pushd ». Vous pouvez remonter\n" +" sont insérés dans la liste avec la commande « pushd ». Vous pouvez " +"remonter\n" " dans la liste en enlevant des éléments avec la commande « popd ».\n" " \n" " Options :\n" @@ -625,13 +655,15 @@ msgstr "" " \tavec la position dans la pile\n" " \n" " Arguments :\n" -" +N\t affiche le Nième élément en comptant de zéro depuis la gauche de la\n" +" +N\t affiche le Nième élément en comptant de zéro depuis la gauche de " +"la\n" " liste affichée par « dirs » lorsque celle-ci est appelée sans option.\n" " \n" -" -N\t affiche le Nième élément en comptant de zéro depuis la droite de la\n" +" -N\t affiche 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:705 +#: builtins/pushd.def:711 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" @@ -671,12 +703,13 @@ msgstr "" " -N\tPermute la pile de façon que le Nième répertoire se place en haut,\n" " \ten comptant de zéro depuis la droite de la liste fournie par « dirs ».\n" " \n" -" dir\tajoute le répertoire DIR en haut de la pile, et en fait le nouveau\n" +" dir\tajoute le répertoire DIR en haut de la pile, et en fait le " +"nouveau\n" " \trépertoire de travail.\n" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -715,40 +748,44 @@ msgstr "" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs »." -#: builtins/read.def:252 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s : spécification de délai d'expiration non valable" -#: builtins/read.def:588 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "Erreur de lecture : %d : %s" -#: builtins/return.def:73 +#: builtins/return.def:75 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 »" +msgstr "" +"« return » n'est possible que depuis une fonction ou depuis un script exécuté " +"par « source »" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" -msgstr "« unset » ne peut pas s'appliquer simultanément à une fonction et à une variable" +msgstr "" +"« unset » ne peut pas s'appliquer simultanément à une fonction et à une " +"variable" -#: builtins/set.def:808 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s : « unset » impossible" -#: builtins/set.def:815 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s : « unset » impossible : %s est en lecture seule" -#: builtins/set.def:826 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s : n'est pas une variable tableau" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s : n'est pas une fonction" @@ -757,11 +794,13 @@ msgstr "%s : n'est pas une fonction" msgid "shift count" msgstr "nombre de « shift »" -#: builtins/shopt.def:264 +#: builtins/shopt.def:279 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" +msgstr "" +"les options du shell ne peuvent pas être simultanément activées et " +"désactivées" -#: builtins/shopt.def:329 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s : nom d'option du shell non valable" @@ -803,7 +842,7 @@ msgstr "%s est une fonction\n" msgid "%s is a shell builtin\n" msgstr "%s est une primitive du shell\n" -#: builtins/type.def:317 builtins/type.def:391 +#: builtins/type.def:317 builtins/type.def:393 #, c-format msgid "%s is %s\n" msgstr "%s est %s\n" @@ -813,26 +852,26 @@ msgstr "%s est %s\n" msgid "%s is hashed (%s)\n" msgstr "%s est haché (%s)\n" -#: builtins/ulimit.def:376 +#: builtins/ulimit.def:379 #, c-format msgid "%s: invalid limit argument" msgstr "%s : argument de limite non valable" -#: builtins/ulimit.def:402 +#: builtins/ulimit.def:405 #, c-format msgid "`%c': bad command" msgstr "« %c » : mauvaise commande" -#: builtins/ulimit.def:431 +#: builtins/ulimit.def:434 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s : impossible d'obtenir la limite : %s" -#: builtins/ulimit.def:457 +#: builtins/ulimit.def:460 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:469 builtins/ulimit.def:769 +#: builtins/ulimit.def:472 builtins/ulimit.def:772 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s : impossible de modifier la limite : %s" @@ -851,7 +890,7 @@ msgstr "« %c » : opérateur de mode symbolique non valable" msgid "`%c': invalid symbolic mode character" msgstr "« %c » : caractère de mode symbolique non valable" -#: error.c:90 error.c:321 error.c:323 error.c:325 +#: error.c:90 error.c:325 error.c:327 error.c:329 msgid " line " msgstr " ligne " @@ -865,133 +904,149 @@ msgstr "dernière commande : %s\n" msgid "Aborting..." msgstr "Annulation..." -#: error.c:406 +#: error.c:410 msgid "unknown command error" msgstr "erreur de commande inconnue" -#: error.c:407 +#: error.c:411 msgid "bad command type" msgstr "mauvais type de commande" -#: error.c:408 +#: error.c:412 msgid "bad connector" msgstr "mauvais connecteur" -#: error.c:409 +#: error.c:413 msgid "bad jump" msgstr "mauvais saut" -#: error.c:447 +#: error.c:451 #, c-format msgid "%s: unbound variable" msgstr "%s : variable sans liaison" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1168 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT : « %c » : caractère de format non valable" -#: execute_cmd.c:2121 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "erreur de tube" -#: execute_cmd.c:4640 +#: execute_cmd.c:4347 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" +msgstr "" +"%s : restriction : « / » ne peut pas être spécifié dans un nom de commande" -#: execute_cmd.c:4735 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s : commande introuvable" -#: execute_cmd.c:4959 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: execute_cmd.c:4995 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s : %s : mauvais interpréteur" -#: execute_cmd.c:5144 +#: execute_cmd.c:5234 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s : fichier binaire impossible à lancer" + +#: execute_cmd.c:5306 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s est une primitive du shell\n" + +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossible de dupliquer le fd %d vers le fd %d" -#: expr.c:256 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "dépassement du niveau de récursivité dans l'expression" -#: expr.c:280 +#: expr.c:286 msgid "recursion stack underflow" msgstr "débordement négatif de la pile de récursivité" -#: expr.c:422 +#: expr.c:434 msgid "syntax error in expression" msgstr "erreur de syntaxe dans l'expression" -#: expr.c:463 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "tentative d'affectation à une non-variable" -#: expr.c:486 expr.c:491 expr.c:807 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "division par 0" -#: expr.c:517 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bogue : mauvais symbole pour expassign" -#: expr.c:564 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "« : » attendu pour une expression conditionnelle." -#: expr.c:832 +#: expr.c:904 msgid "exponent less than 0" msgstr "exposant négatif" -#: expr.c:887 +#: expr.c:957 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:910 +#: expr.c:983 msgid "missing `)'" msgstr "« ) » manquante" -#: expr.c:959 expr.c:1282 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "erreur de syntaxe : opérande attendue" -#: expr.c:1284 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "erreur de syntaxe : opérateur arithmétique non valable" -#: expr.c:1308 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s : %s (le symbole erroné est \"%s\")" -#: expr.c:1366 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "base arithmétique non valable" -#: expr.c:1386 +#: expr.c:1475 msgid "value too great for base" msgstr "valeur trop grande pour la base" -#: expr.c:1435 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s : erreur d'expression\n" @@ -1000,163 +1055,165 @@ msgstr "%s : erreur d'expression\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd : ne peut accéder aux répertoires parents" -#: input.c:94 subst.c:5082 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "Impossible de réinitialiser le mode « nodelay » pour le fd %d" -#: input.c:260 +#: input.c:267 #, 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" +msgstr "" +"impossible d'allouer un nouveau descripteur de fichier pour l'entrée de bash " +"depuis le fd %d" -#: input.c:268 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d" -#: jobs.c:468 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline : pgrp pipe" -#: jobs.c:889 +#: jobs.c:892 #, 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:1007 +#: jobs.c:1010 #, 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:1112 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process : processus %5ld (%s) dans le_pipeline" -#: jobs.c:1115 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process : pid %5ld (%s) signalé toujours en vie" -#: jobs.c:1430 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid : %ld : n° de processus inexistant" -#: jobs.c:1445 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1459 jobs.c:1484 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Fini" -#: jobs.c:1464 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stoppé" -#: jobs.c:1468 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Stoppé(%s)" -#: jobs.c:1472 +#: jobs.c:1475 msgid "Running" msgstr "En cours d'exécution" -#: jobs.c:1486 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Fini(%d)" -#: jobs.c:1488 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Termine %d" -#: jobs.c:1491 +#: jobs.c:1494 msgid "Unknown status" msgstr "État inconnu" -#: jobs.c:1578 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core dumped)" -#: jobs.c:1597 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd : %s)" -#: jobs.c:1805 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "fils setpgid (%ld à %ld)" -#: jobs.c:2133 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2360 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for : aucun enregistrement du processus n°%ld" -#: jobs.c:2637 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job : la tâche %d est stoppée" -#: jobs.c:2859 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s : la tâche s'est terminée" -#: jobs.c:2868 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s : la tâche %d est déjà en arrière plan" -#: jobs.c:3089 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif" -#: jobs.c:3538 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s : ligne %d : " -#: jobs.c:3552 nojobs.c:814 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3564 jobs.c:3577 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(maintenant, wd : %s)\n" -#: jobs.c:3609 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control : getpgrp a échoué" -#: jobs.c:3669 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control : discipline de ligne" -#: jobs.c:3679 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control : setpgid" -#: jobs.c:3707 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossible de régler le groupe de processus du terminlal (%d)" -#: jobs.c:3712 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "pas de contrôle de tâche dans ce shell" @@ -1178,54 +1235,55 @@ msgstr "" msgid "unknown" msgstr "inconnu" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc : bloc écrasé sur liste libre" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free : appelé avec un bloc déjà libéré comme argument" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc : appelé avec un bloc non alloué comme argument" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 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:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "realloc : les tailles de fragment au début et à la fin sont différentes" +msgstr "" +"realloc : les tailles de fragment au début et à la fin sont différentes" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc : la table d'allocation est pleine avec FIND_ALLOC ?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc : %p déjà alloué selon la table ?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free : %p déjà libre selon la table ?\n" -#: lib/sh/fmtulong.c:101 +#: lib/sh/fmtulong.c:102 msgid "invalid base" msgstr "base non valable" @@ -1248,35 +1306,37 @@ 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:192 +#: locale.c:204 #, 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:194 +#: locale.c:206 #, 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" +msgstr "" +"setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s" -#: locale.c:247 +#: locale.c:263 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)" -#: locale.c:249 +#: locale.c:265 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s) : %s" +msgstr "" +"setlocale : %s : impossible de changer le paramètre de langue (%s) : %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Vous avez du courrier dans $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Vous avez du nouveau courrier dans $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Le courrier dans %s a été lu.\n" @@ -1294,118 +1354,127 @@ msgstr "erreur de syntaxe : « ; » non attendu" msgid "syntax error: `((%s))'" msgstr "erreur de syntaxe : « ((%s)) »" -#: make_cmd.c:575 +#: make_cmd.c:578 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document : le type d'instruction %d est incorrect" -#: make_cmd.c:659 +#: make_cmd.c:662 #, 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 »)" +msgstr "" +"« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %" +"s »)" -#: make_cmd.c:756 +#: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection : l'instruction de redirection « %d » est hors plage" -#: parse.y:3173 parse.y:3444 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "caractère de fin de fichier (EOF) prématuré lors de la recherche du « %c » correspondant" +msgstr "" +"caractère de fin de fichier (EOF) prématuré lors de la recherche du « %c » " +"correspondant" -#: parse.y:4025 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" -msgstr "caractère de fin de fichier (EOF) prématuré lors de la recherche de « ]] »" +msgstr "" +"caractère de fin de fichier (EOF) prématuré lors de la recherche de « ]] »" -#: parse.y:4030 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" -msgstr "erreur de syntaxe dans une expression conditionnelle : symbole « %s » inattendu" +msgstr "" +"erreur de syntaxe dans une expression conditionnelle : symbole « %s » " +"inattendu" -#: parse.y:4034 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "erreur de syntaxe dans une expression conditionnelle" -#: parse.y:4112 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "symbole inattendu « %s » au lieu de « ) »" -#: parse.y:4116 +#: parse.y:4177 msgid "expected `)'" msgstr "« ) » attendu" -#: parse.y:4144 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument" -#: parse.y:4148 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "argument inattendu pour l'opérateur conditionnel à un argument" -#: parse.y:4194 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel" -#: parse.y:4198 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "opérateur binaire conditionnel attendu" -#: parse.y:4220 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4224 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "argument inattendu pour l'opérateur binaire conditionnel" -#: parse.y:4235 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "symbole « %c » inattendu dans la commande conditionnelle" -#: parse.y:4238 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "symbole « %s » inattendu dans la commande conditionnelle" -#: parse.y:4242 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "symbole « %d » inattendu dans la commande conditionnelle" -#: parse.y:5566 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erreur de syntaxe près du symbole inattendu « %s »" -#: parse.y:5584 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "erreur de syntaxe près de « %s »" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "erreur de syntaxe : fin de fichier prématurée" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error" msgstr "erreur de syntaxe" -#: parse.y:5656 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Utilisez « %s » pour quitter le shell.\n" -#: parse.y:5818 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" -msgstr "caractère de fin de fichier (EOF) prématuré lors de la recherche d'un « ) » correspondant" +msgstr "" +"caractère de fin de fichier (EOF) prématuré lors de la recherche d'un « ) » " +"correspondant" -#: pcomplete.c:1030 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "complètement : fonction « %s » non trouvée" @@ -1415,90 +1484,92 @@ msgstr "complètement : fonction « %s » non trouvée" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert : %s : NULL COMPSPEC" -#: print_cmd.c:296 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command : mauvais connecteur « %d »" -#: print_cmd.c:368 +#: 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:373 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set : pointeur de fichier NULL" -#: print_cmd.c:377 +#: 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:1478 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf : « %c » : caractère de format invalide" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "descripteur de fichier hors plage" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s : redirection ambiguë" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s : impossible d'écraser le fichier existant" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s : restreint : impossible de rediriger la sortie" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" -msgstr "impossible de créer un fichier temporaire pour le « here-document » : %s" +msgstr "" +"impossible de créer un fichier temporaire pour le « here-document » : %s" -#: redir.c:196 +#: redir.c:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" -#: redir.c:548 +#: redir.c:582 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:818 redir.c:930 redir.c:993 redir.c:1136 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" -msgstr "erreur de redirection : impossible de dupliquer le descripteur de fichier" +msgstr "" +"erreur de redirection : impossible de dupliquer le descripteur de fichier" -#: shell.c:333 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "« /tmp » introuvable, veuillez le créer !" -#: shell.c:337 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "« /tmp » doit être un nom de répertoire correct" -#: shell.c:884 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c : option non valable" -#: shell.c:1652 +#: shell.c:1682 msgid "I have no name!" msgstr "Je n'ai pas de nom !" -#: shell.c:1795 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1796 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1507,39 +1578,43 @@ msgstr "" "Utilisation :\t%s [option longue GNU] [option] ...\n" "\t%s [option longue GNU] [option] fichier-script ...\n" -#: shell.c:1798 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Options longues GNU :\n" -#: shell.c:1802 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Options du shell :\n" -#: shell.c:1803 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n" -#: shell.c:1818 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o option\n" -#: shell.c:1824 +#: shell.c:1856 #, 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" +msgstr "" +"Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" " +"».\n" -#: shell.c:1825 +#: shell.c:1857 #, 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" +msgstr "" +"Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n" -#: shell.c:1826 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n" -#: sig.c:638 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask : %d : operation non valable" @@ -1713,223 +1788,252 @@ msgstr "N° de signal inconnu" msgid "Unknown Signal #%d" msgstr "Signal n°%d inconnu" -#: subst.c:1333 subst.c:1502 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s" -#: subst.c:2795 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s : impossible d'affecter une liste à un élément de tableau" -#: subst.c:4979 subst.c:4995 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "impossible de fabriquer un tube pour une substitution de processus" -#: subst.c:5027 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "impossible de fabriquer un fils pour une substitution de processus" -#: subst.c:5072 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossible d'ouvrir le tube nommé « %s » en lecture" -#: subst.c:5074 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossible d'ouvrir le tube nommé « %s » en écriture" -#: subst.c:5092 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d" -#: subst.c:5284 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "impossible de fabriquer un tube pour une substitution de commande" -#: subst.c:5322 +#: subst.c:5311 msgid "cannot make child for command substitution" -msgstr "impossible de fabriquer un processus fils pour une substitution de commande" +msgstr "" +"impossible de fabriquer un processus fils pour une substitution de commande" -#: subst.c:5339 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1" -#: subst.c:5859 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s : paramètre vide ou non défini" -#: subst.c:6125 subst.c:6140 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s : expression de sous-chaîne négative" -#: subst.c:7271 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s : mauvaise substitution" -#: subst.c:7347 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s : affectation impossible de cette façon" -#: subst.c:7684 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "Les versions futures du shell forceront l'évaluation comme une substitution arithmétique" +#: subst.c:7767 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"Les versions futures du shell forceront l'évaluation comme une substitution " +"arithmétique" -#: subst.c:8149 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Mauvais remplacement : pas de « ` » de fermeture dans %s" -#: subst.c:9036 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "pas de correspondance : %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argument attendu" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s : nombre entier attendu comme expression" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "« ) » attendue" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "« ) » attendu au lieu de %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s : opérateur unaire attendu" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s : opérateur binaire attendu" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "« ] » manquant" -#: trap.c:207 +#: trap.c:217 msgid "invalid signal number" msgstr "numéro de signal non valable" -#: trap.c:337 +#: trap.c:348 #, 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:341 +#: trap.c:352 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "run_pending_traps : le gestionnaire de signal est SIG_DFL, %d (%s) renvoyé à moi-même" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "" +"run_pending_traps : le gestionnaire de signal est SIG_DFL, %d (%s) renvoyé à " +"moi-même" -#: trap.c:393 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler : mauvais signal %d" -#: variables.c:363 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "erreur lors de l'import de la définition de fonction pour « %s »" -#: variables.c:755 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "niveau de shell trop élevé (%d), initialisation à 1" -#: variables.c:1932 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" -msgstr "make_local_variable : aucun contexte de fonction dans le champ d'application actuel" +msgstr "" +"make_local_variable : aucun contexte de fonction dans le champ d'application " +"actuel" -#: variables.c:3182 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s : impossible d'affecter le descripteur de fichier à la variable" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" -msgstr "all_local_variables : aucun contexte de fonction dans le champ d'application actuel" +msgstr "" +"all_local_variables : aucun contexte de fonction dans le champ d'application " +"actuel" -#: variables.c:3427 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s a un « exportstr » vide" -#: variables.c:3432 variables.c:3441 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "caractère %d non valable dans « exportstr » pour %s" -#: variables.c:3447 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "Pas de « = » dans « exportstr » pour %s" -#: variables.c:3891 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "pop_var_context : le début de « shell_variables » n'est pas un contexte de fonction" +msgstr "" +"pop_var_context : le début de « shell_variables » n'est pas un contexte de " +"fonction" -#: variables.c:3904 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context : aucun contexte à « global_variables »" -#: variables.c:3978 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "pop_scope : le début de « shell_variables » n'est pas un champ d'application temporaire d'environnement" +msgstr "" +"pop_scope : le début de « shell_variables » n'est pas un champ d'application " +"temporaire d'environnement" -#: variables.c:4786 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s : %s : impossible d'ouvrir comme FILE" -#: variables.c:4791 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s : %s hors plage" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Licence GPLv3+ : GNU GPL version 3 ou ultérieure \n" +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licence GPLv3+ : GNU GPL version 3 ou ultérieure \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, version %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "Ceci est un logiciel libre ; vous être libre de le modifier et de le redistribuer.\n" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "Aucune garantie n'est fournie, dans la mesure de ce que la loi autorise.\n" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." +msgstr "" +"Ceci est un logiciel libre ; vous être libre de le modifier et de le " +"redistribuer.\n" -#: version2.c:87 -#, c-format -msgid "License GPLv2+: GNU GPL version 2 or later \n" -msgstr "Licence GPLv2+ : GNU GPL version 2 ou ultérieure \n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." +msgstr "" +"Aucune garantie n'est fournie, dans la mesure de ce que la loi autorise.\n" #: xmalloc.c:91 #, c-format @@ -1960,8 +2064,14 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nom [nom ...]" #: builtins.c:51 -msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpvsPVS] [-m keymap] [-f nomfichier] [-q nom] [-u nom] [-r seqtouche] [-x seqtouche:commande-shell] [seqtouche:fonction-readline ou commande-readline]" +#, fuzzy +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "" +"bind [-lpvsPVS] [-m keymap] [-f nomfichier] [-q nom] [-u nom] [-r seqtouche] " +"[-x seqtouche:commande-shell] [seqtouche:fonction-readline ou commande-" +"readline]" #: builtins.c:54 msgid "break [n]" @@ -2004,7 +2114,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] commande [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [nom[=valeur] ...]" #: builtins.c:78 @@ -2049,7 +2160,8 @@ msgstr "logout [n]" #: builtins.c:103 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e ename] [-lnr] [premier] [dernier] ou fc -s [ancien=nouveau] [commande]" +msgstr "" +"fc [-e ename] [-lnr] [premier] [dernier] ou fc -s [ancien=nouveau] [commande]" #: builtins.c:107 msgid "fg [job_spec]" @@ -2068,8 +2180,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [motif ...]" #: builtins.c:121 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d décalage] [n] ou history -anrw [nomfichier] ou history -ps arg [arg...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d décalage] [n] ou history -anrw [nomfichier] ou history -ps " +"arg [arg...]" #: builtins.c:125 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2080,16 +2196,24 @@ msgid "disown [-h] [-ar] [jobspec ...]" msgstr "disown [-h] [-ar] [jobspec ...]" #: builtins.c:132 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ou kill -l [sigspec]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ou kill -l " +"[sigspec]" #: builtins.c:134 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" #: builtins.c:136 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a tableau] [-d delim] [-i texte] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [nom ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a tableau] [-d delim] [-i texte] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [nom ...]" #: builtins.c:138 msgid "return [n]" @@ -2100,7 +2224,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nom ...]" #: builtins.c:144 @@ -2148,7 +2273,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] nom [nom ...]" #: builtins.c:169 -msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [limite]" #: builtins.c:172 @@ -2156,11 +2282,13 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:175 -msgid "wait [id]" +#, fuzzy +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" msgstr "wait [pid]" #: builtins.c:182 @@ -2184,8 +2312,12 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case MOT in [MOTIF [| MOTIF]...) COMMANDES ;;]... esac" #: builtins.c:192 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else COMMANDES; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else " +"COMMANDES; ] fi" #: builtins.c:194 msgid "while COMMANDS; do COMMANDS; done" @@ -2244,24 +2376,43 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" #: builtins.c:229 -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 option] [-A action] [-G motif_glob] [-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] [-S suffixe] [nom ...]" +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 option] [-A action] [-G motif_glob] " +"[-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] " +"[-S suffixe] [nom ...]" #: builtins.c:233 -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 motif_glob] [-W liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] [-S suffixe] [mot]" +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 motif_glob] [-W " +"liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] [-S " +"suffixe] [mot]" #: builtins.c:237 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o option] [-DE] [nom ...]" #: builtins.c:240 -msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C callback] [-c quantum] [tableau]" +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n nombre] [-O origine] [-s nombre] [-t] [-u fd] [-C callback] [-c " +"quantum] [tableau]" #: builtins.c:242 -msgid "readarray [-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]" +msgid "" +"readarray [-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]" #: builtins.c:254 msgid "" @@ -2278,23 +2429,27 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Définit ou affiche des alias.\n" " \n" -" Sans argument, « alias » affiche la liste des alias avec le format réutilisable\n" +" Sans argument, « alias » affiche la liste des alias avec le format " +"réutilisable\n" " « alias NOM=VALEUR » sur la sortie standard.\n" " \n" " Sinon, un alias est défini pour chaque NOM dont la VALEUR est donnée.\n" -" Une espace à la fin de la VALEUR entraine le remplacement d'alias dans le mot\n" +" Une espace à la fin de la VALEUR entraine le remplacement d'alias dans " +"le mot\n" " suivant, lorsque l'alias est développé.\n" " \n" " Options :\n" " -p\tAfficher tous les alias actuels dans un format réutilisable\n" " \n" " Code de sortie :\n" -" « alias » renvoie la valeur vraie à moins que NOM ne soit fourni et que celui-ci n'aie\n" +" « alias » renvoie la valeur vraie à moins que NOM ne soit fourni et que " +"celui-ci n'aie\n" " pas d'alias." #: builtins.c:276 @@ -2314,6 +2469,7 @@ msgstr "" " Renvoie le code de succès à moins que NOM ne soit pas un alias existant." #: builtins.c:289 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2325,61 +2481,82 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" +" -X\t\t List key sequences bound with -x and associated commands\n" +" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" "Définit les associations de touches et les variables de « Readline ».\n" " \n" -" Associe une séquence de touches à une fonction « Readline » ou définit une\n" -" variable « Readline ». Les arguments non-options suivent une syntaxe équivalente à celle\n" -" du fichier ~/.inputrc, mais doivent être transmis comme arguments uniques :\n" +" Associe une séquence de touches à une fonction « Readline » ou définit " +"une\n" +" variable « Readline ». Les arguments non-options suivent une syntaxe " +"équivalente à celle\n" +" du fichier ~/.inputrc, mais doivent être transmis comme arguments " +"uniques :\n" " ex : bind '\"\\C-x\\C-r\" : re-read-init-file'.\n" " Options :\n" " -m keymap Utilise KEYMAP comme mappage clavier pendant la\n" -" durée de cette commande. Des noms de mappage valables sont « emacs », « emacs-standard », « emacs-meta », \n" +" durée de cette commande. Des noms de mappage " +"valables sont « emacs », « emacs-standard », « emacs-" +"meta », \n" " « emacs-ctlx », « vi », « vi-move », « vi-command » et\n" " « vi-insert ».\n" " -l Affiche les noms de fonctions.\n" " -P Affiche les noms et associations des fonctions.\n" -" -p Affiche les fonctions et associations dans une forme qui\n" +" -p Affiche les fonctions et associations dans une " +"forme qui\n" " peut être réutilisée comme entrée.\n" -" -S Affiche les séquences de touches qui invoquent des macros,\n" +" -S Affiche les séquences de touches qui invoquent des " +"macros,\n" " et leurs valeurs.\n" -" -s Affiche les séquences de touches qui invoquent des macros,\n" -" et leurs valeurs sous une forme qui peut être utilisée comme entrée. -r seqtouche Enlève l'association pour « seqtouche ».\n" +" -s Affiche les séquences de touches qui invoquent des " +"macros,\n" +" et leurs valeurs sous une forme qui peut être " +"utilisée comme entrée. -r seqtouche Enlève l'association pour « " +"seqtouche ».\n" " -V Affiche les noms et valeurs des variables\n" -" -v Affiche les noms et valeurs des variables dans une forme qui peut\n" +" -v Affiche les noms et valeurs des variables dans une " +"forme qui peut\n" " être réutilisée comme entrée.\n" -" -q nom-fonction Permet de savoir quelles touches appellent la fonction.\n" -" -u nom-fonction Enlève toutes les associations de touches liée à la fonction.\n" +" -q nom-fonction Permet de savoir quelles touches appellent la " +"fonction.\n" +" -u nom-fonction Enlève toutes les associations de touches liée à la " +"fonction.\n" " -r seqtouches Supprime l'association pour SEQTOUCHES.\n" " -f nomfichier Lit l'association de touches depuis NOMFICHIER.\n" -" -x seqtouche:commande-shell\tEntraîne l'exécution de la commande-shell\n" +" -x seqtouche:commande-shell\tEntraîne l'exécution de la commande-" +"shell\n" " \t\t\t\tlorsque « seqtouche » est entrée.\n" " \n" " Code de sortie :\n" -" « bind » renvoie 0 à moins qu'une option non reconnue ne soit donnée ou qu'une erreur ne survienne." +" « bind » renvoie 0 à moins qu'une option non reconnue ne soit donnée ou " +"qu'une erreur ne survienne." -#: builtins.c:326 +#: builtins.c:328 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2391,13 +2568,14 @@ msgid "" msgstr "" "Sort des boucles for, while, ou until.\n" " \n" -" Sort d'une boucle FOR, WHILE ou UNTIL. Si N est spécifié, sort de N boucles\n" +" Sort d'une boucle FOR, WHILE ou UNTIL. Si N est spécifié, sort de N " +"boucles\n" " imbriquées.\n" " \n" " Code de retour :\n" " Le code de retour est 0 à moins que N ne soit pas supérieur ou égal à 1." -#: builtins.c:338 +#: builtins.c:340 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2409,19 +2587,21 @@ msgid "" msgstr "" "Reprend l'exécution des boucles for, while ou until.\n" " \n" -" Reprend l'itération suivante de la boucle FOR, WHILE ou UNTIL de niveau supérieur.\n" +" Reprend l'itération suivante de la boucle FOR, WHILE ou UNTIL de niveau " +"supérieur.\n" " Si N est précisé, reprend à N-ième boucle supérieure.\n" " \n" " Code de sortie :\n" " Le code de sortie est 0 à moins que N ne soit pas supérieur ou égale à 1." -#: builtins.c:350 +#: builtins.c:352 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2429,16 +2609,20 @@ msgid "" msgstr "" "Exécute des commandes shell intégrées.\n" " \n" -" Exécute SHELL-BUILTIN avec les arguments ARGs sans effectuer de recherche\n" -" de commande. Ceci est utile lorsque vous souhaitez remplacer une commande\n" -" intégrée par une fonction shell, mais nécessite d'exécuter la commande intégrée\n" +" Exécute SHELL-BUILTIN avec les arguments ARGs sans effectuer de " +"recherche\n" +" de commande. Ceci est utile lorsque vous souhaitez remplacer une " +"commande\n" +" intégrée par une fonction shell, mais nécessite d'exécuter la commande " +"intégrée\n" " dans la fonction.\n" " \n" " Code de retour :\n" -" Renvoie le code de retour de SHELL-BUILTIN, ou false si SHELL-BUILTIN n'est\n" +" Renvoie le code de retour de SHELL-BUILTIN, ou false si SHELL-BUILTIN " +"n'est\n" " pas une commande intégrée.." -#: builtins.c:365 +#: builtins.c:367 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2456,72 +2640,97 @@ msgstr "" "Renvoie le contexte de l'appel de sous-routine actuel.\n" " \n" " Sans EXPR, renvoie « $ligne $nomfichier ». Avec EXPR,\n" -" renvoie « $ligne $sousroutine $nomfichier »; ces informations supplémentaires\n" +" renvoie « $ligne $sousroutine $nomfichier »; ces informations " +"supplémentaires\n" " peuvent être utilisées pour fournir une trace de la pile.\n" " \n" -" La valeur de EXPR indique le nombre de cadres d'appels duquel il faut revenir en arrière\n" +" La valeur de EXPR indique le nombre de cadres d'appels duquel il faut " +"revenir en arrière\n" " avant le cadre actuel ; le cadre supérieur est le cadre 0.\n" " \n" " Code de sortie :\n" -" Renvoie 0 à moins que le shell ne soit pas en train d'exécuter une fonction ou que EXPR\n" +" Renvoie 0 à moins que le shell ne soit pas en train d'exécuter une " +"fonction ou que EXPR\n" " ne soit pas valable." -#: builtins.c:383 +#: builtins.c:385 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed\n" +" -L\tforce symbolic links to be followed: resolve symbolic links in\n" +" \tDIR after processing instances of `..'\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks\n" +" \tlinks: resolve symbolic links in DIR before processing instances\n" +" \tof `..'\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Change le répertoire de travail du shell.\n" " \n" " Change le répertoire actuel vers DIR. Le répertoire DIR par défaut\n" " est donné par la variable « $HOME ». \n" -" La variable CDPATH définit le chemin de recherche du répertoire contenant\n" -" DIR. Les noms de répertoires alternatifs dans CDPATH sont séparés par un deux-point « : ».\n" -" Un nom de répertoire vide est identique au répertoire actuel. Si DIR commence\n" +" La variable CDPATH définit le chemin de recherche du répertoire " +"contenant\n" +" DIR. Les noms de répertoires alternatifs dans CDPATH sont séparés par un " +"deux-point « : ».\n" +" Un nom de répertoire vide est identique au répertoire actuel. Si DIR " +"commence\n" " avec une barre oblique « / », alors CDPATH n'est pas utilisé.\n" " \n" -" Si le répertoire n'est pas trouvé et que l'option « cdable_vars » du shell est définie,\n" -" alors le mot est essayé comme nom de variable. Si la variable possède une valeur,\n" +" Si le répertoire n'est pas trouvé et que l'option « cdable_vars » du " +"shell est définie,\n" +" alors le mot est essayé comme nom de variable. Si la variable possède " +"une valeur,\n" " alors cette valeur est utilisée pour DIR.\n" " \n" " Options :\n" " -L\tforcer le suivi des liens symboliques.\n" " -P\tutiliser la structure physique des répertoires sans suivre\n" " les liens symboliques\n" -" -e\tsi l'option -P est fournie et que le répertoire de travail actuel ne peut pas\n" -" \têtre déterminé avec succès, alors sortir avec un code de retour non nul\n" +" -e\tsi l'option -P est fournie et que le répertoire de travail " +"actuel ne peut pas\n" +" \têtre déterminé avec succès, alors sortir avec un code de retour non " +"nul\n" " \n" -" Le comportement par défaut est de suivre les liens symboliques, comme si « -L » était précisé.\n" +" Le comportement par défaut est de suivre les liens symboliques, comme si " +"« -L » était précisé.\n" " \n" " Code de sortie :\n" -" Renvoie 0 si le répertoire est changé et si $PWD est correctement défini\n" +" Renvoie 0 si le répertoire est changé et si $PWD est correctement " +"défini\n" " quand -P est utilisé ; sinon autre chose que 0." -#: builtins.c:414 +#: builtins.c:420 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2539,17 +2748,19 @@ msgstr "" "Affiche le nom du répertoire de travail courant.\n" " \n" " Options :\n" -" -L\taffiche la valeur de $PWD s'il nomme le répertoire de travail courant\n" +" -L\taffiche la valeur de $PWD s'il nomme le répertoire de travail " +"courant\n" " \t\n" " -P\taffiche le répertoire physique, sans aucun lien symbolique\n" " \n" " Par défaut, « pwd » se comporte comme si « -L » était spécifié.\n" " \n" " Code de retour :\n" -" Renvoie 0 à moins qu'une option non valable ne soit donnée ou que le répertoire\n" +" Renvoie 0 à moins qu'une option non valable ne soit donnée ou que le " +"répertoire\n" " courant ne peut pas être lu." -#: builtins.c:431 +#: builtins.c:437 msgid "" "Null command.\n" " \n" @@ -2565,7 +2776,7 @@ msgstr "" " Code de retour :\n" " Renvoie toujours le code de succès." -#: builtins.c:442 +#: builtins.c:448 msgid "" "Return a successful result.\n" " \n" @@ -2577,7 +2788,7 @@ msgstr "" " Code de retour :\n" " Succès." -#: builtins.c:451 +#: builtins.c:457 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2589,12 +2800,13 @@ msgstr "" " Code de sortie :\n" " Toujours l'échec." -#: builtins.c:460 +#: builtins.c:466 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2608,20 +2820,26 @@ msgid "" msgstr "" "Exécute une simple commande ou affiche des informations sur les commandes.\n" " \n" -" Lance la COMMANDE avec des ARGS en court-circuitant la recherche de commande, ou affiche\n" -" des informations sur les COMMANDEs spécifiées. Ceci peut être utilisé pour invoquer des commandes\n" -" sur le disque lorsqu'il y a conflit avec une fonction portant le même nom.\n" +" Lance la COMMANDE avec des ARGS en court-circuitant la recherche de " +"commande, ou affiche\n" +" des informations sur les COMMANDEs spécifiées. Ceci peut être utilisé " +"pour invoquer des commandes\n" +" sur le disque lorsqu'il y a conflit avec une fonction portant le même " +"nom.\n" " \n" " Options :\n" " -p\tutilise une valeur par défaut pour CHEMIN qui garantit de trouver\n" " \ttous les utilitaires standards\n" -" -v\taffiche une description de la COMMANDE similaire à la commande intégrée « type »\n" +" -v\taffiche une description de la COMMANDE similaire à la commande " +"intégrée « type »\n" " -V\taffiche une description plus détaillées de chaque COMMANDE\n" " \n" " Code de retour :\n" -" Renvoie le code de sortie de la COMMANDE, ou le code d'échec si la COMMANDE est introuvable." +" Renvoie le code de sortie de la COMMANDE, ou le code d'échec si la " +"COMMANDE est introuvable." -#: builtins.c:479 +#: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2641,6 +2859,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2651,22 +2870,28 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Définit les valeurs et les attributs des variables.\n" " \n" -" Permet de déclarer des variables et de leur donner des attributs. Si aucun NOM n'est donné,\n" +" Permet de déclarer des variables et de leur donner des attributs. Si " +"aucun NOM n'est donné,\n" " affiche les attributs et les valeurs de toutes les variables.\n" " \n" " Options :\n" -" -f\trestreint l'action ou l'affichage aux noms et définitions de fonctions\n" -" -F\trestreint l'affichage aux noms des fonctions uniquement (avec le numéro de ligne\n" +" -f\trestreint l'action ou l'affichage aux noms et définitions de " +"fonctions\n" +" -F\trestreint l'affichage aux noms des fonctions uniquement (avec le " +"numéro de ligne\n" " \tet le fichier source lors du débogage)\n" -" -g\tcrée des variables globales lorsqu'utilisée dans une fonction shell ; ignoré sinon\n" +" -g\tcrée des variables globales lorsqu'utilisée dans une fonction " +"shell ; ignoré sinon\n" " -p\taffiche les attributs et la valeur de chaque NOM\n" " \n" " Options qui définissent des attributs :\n" @@ -2681,16 +2906,21 @@ msgstr "" " \n" " Utiliser « + » au lieu de « - » permet de désactiver l'attribut donné.\n" " \n" -" Les variables avec l'attribut « integer » ont une évaluation arithmétique (voir\n" -" la commande « let ») effectuée lorsqu'un valeur est affectée à la variable.\n" +" Les variables avec l'attribut « integer » ont une évaluation arithmétique " +"(voir\n" +" la commande « let ») effectuée lorsqu'un valeur est affectée à la " +"variable.\n" " \n" -" Lorsqu'utilisée dans une fonction, « declare » permet aux NOMs d'être locaux,\n" -" comme avec la commande « local ». L'option « -g » supprime ce comportement.\n" +" Lorsqu'utilisée dans une fonction, « declare » permet aux NOMs d'être " +"locaux,\n" +" comme avec la commande « local ». L'option « -g » supprime ce " +"comportement.\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'un option non valable soit fournie ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'un option non valable soit fournie " +"ou qu'une erreur ne survienne." -#: builtins.c:517 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2700,7 +2930,8 @@ msgstr "" " \n" " Obsolète. Essayez « help declare »." -#: builtins.c:525 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2711,26 +2942,33 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Définit des variables locales.\n" " \n" -" Crée une variable locale nommée NOM, avec une valeur VALEUR. OPTION peut\n" +" Crée une variable locale nommée NOM, avec une valeur VALEUR. OPTION " +"peut\n" " être n'importe quelle option acceptée par « declare ».\n" " \n" -" Les variables locales peut seulement être utilisée à l'intérieur d'une fonction; elles ne sont visibles\n" -" que des fonctions où elles ont été définies et dans ses fonctions filles.\n" +" Les variables locales peut seulement être utilisée à l'intérieur d'une " +"fonction; elles ne sont visibles\n" +" que des fonctions où elles ont été définies et dans ses fonctions " +"filles.\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit fournie, qu'une erreur ne survienne,\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie, qu'une erreur ne survienne,\n" " ou que l'inteprète ne soit pas dans une fonction." -#: builtins.c:542 +#: builtins.c:550 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs on the standard output followed by a newline.\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" @@ -2742,6 +2980,7 @@ msgid "" " \\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" @@ -2762,10 +3001,13 @@ msgstr "" " \n" " Options :\n" " -n\tne pas ajouter de saut de ligne\n" -" -e\tactive l'interpretation des barres contre-obliques d'échappement ci-dessous\n" -" -E\tsupprime explicitement l'interpretation des barres contre-obliques d'échappement\n" +" -e\tactive l'interpretation des barres contre-obliques d'échappement " +"ci-dessous\n" +" -E\tsupprime explicitement l'interpretation des barres contre-obliques " +"d'échappement\n" " \n" -" « echo » interprète les caractères suivants comme des séquences d'échappement :\n" +" « echo » interprète les caractères suivants comme des séquences " +"d'échappement :\n" " \\a\talerte (cloche)\n" " \\b\tretour arrière\n" " \\c\tsupprime caractère suivant\n" @@ -2776,7 +3018,8 @@ msgstr "" " \\t\ttabulation horizontale\n" " \\v\ttabulation verticale\n" " \\\\\tbarre contre-oblique\n" -" \\0nnn\tle caractère dont le code ASCII est NNN (en octal). NNN peut être\n" +" \\0nnn\tle caractère dont le code ASCII est NNN (en octal). NNN peut " +"être\n" " \tlong de 0 à 3 chiffres octaux\n" " \\xHH\tle caractère à 8 bits dont la valeur est HH (hexadecimal). HH\n" " \tpeut être long de 1 ou 2 chiffres hexadécimaux\n" @@ -2784,7 +3027,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de succès à moins qu'une erreur ne survienne." -#: builtins.c:576 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2806,7 +3049,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de succès à moins qu'une erreur ne survienne." -#: builtins.c:591 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2834,33 +3077,41 @@ msgid "" msgstr "" "Active et désactive les commandes intégrées.\n" " \n" -" Active et désactive les commandes intégrées du shell. Les désactiver vous permet\n" -" d'exécuter une commande du disque ayant le même nom qu'une commande du shell\n" +" Active et désactive les commandes intégrées du shell. Les désactiver " +"vous permet\n" +" d'exécuter une commande du disque ayant le même nom qu'une commande du " +"shell\n" " sans utiliser le chemin compler vers le fichier.\n" " \n" " Options :\n" -" -a\taffiche la liste des commandes intégrées et leur état d'activation\n" -" -n\tdésactive chaque NOM ou affiche la liste des commandes désactivées\n" +" -a\taffiche la liste des commandes intégrées et leur état " +"d'activation\n" +" -n\tdésactive chaque NOM ou affiche la liste des commandes " +"désactivées\n" " -p\taffiche la liste des commandes dans un format réutilisable\n" " -s\taffiche seulement les noms des commandes Posix de type « special »\n" " \n" " Options contrôlant le chargement dynamique :\n" -" -f\tCharge la commande intégrée NOM depuis la bibliothèque partagée FILENAME\n" +" -f\tCharge la commande intégrée NOM depuis la bibliothèque partagée " +"FILENAME\n" " -d\tDécharge une commande chargée avec « -f »\n" " \n" " S'il n'y a pas d'option, chaque commande NOM est activée.\n" " \n" -" Pour utiliser le « test » trouvé dans $PATH au lieu de celui intégré au shell,\n" +" Pour utiliser le « test » trouvé dans $PATH au lieu de celui intégré au " +"shell,\n" " saisissez « enable -n test ».\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins que NOM ne soit pas une commande intégrée ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins que NOM ne soit pas une commande " +"intégrée ou qu'une erreur ne survienne." -#: builtins.c:619 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -2868,13 +3119,15 @@ msgid "" msgstr "" "Exécute des arguments comme s'ils étaient une commande du shell.\n" " \n" -" Combine des ARGs en une chaîne unique, utilise le résultat comme entrée du shell,\n" +" Combine des ARGs en une chaîne unique, utilise le résultat comme entrée " +"du shell,\n" " puis exécute la commande résultante.\n" " \n" " Code de sortie :\n" -" Renvoie le même code de sortie que la commande, ou le code de succès si la commande est vide." +" Renvoie le même code de sortie que la commande, ou le code de succès si " +"la commande est vide." -#: builtins.c:631 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2924,40 +3177,58 @@ msgstr "" " argument séparé d'elle par une espace.\n" " \n" " À chaque fois qu'elle est appelée, « getopts » place l'option suivante\n" -" dans la variable de shell « $nom », en l'initialisant si elle n'existe pas,\n" -" et place l'index de l'argument suivant dans la variable de shell OPTIND.\n" -" OPTIND est initialisé à 1 à chaque fois que le shell ou qu'un script shell\n" -" est appelé. Lorsqu'une option nécessite un argument, « getopts » place cet\n" +" dans la variable de shell « $nom », en l'initialisant si elle n'existe " +"pas,\n" +" et place l'index de l'argument suivant dans la variable de shell " +"OPTIND.\n" +" OPTIND est initialisé à 1 à chaque fois que le shell ou qu'un script " +"shell\n" +" est appelé. Lorsqu'une option nécessite un argument, « getopts » place " +"cet\n" " argument dans la variable de shell OPTARG.\n" " \n" -" « getopts » signale les erreurs d'une façon parmi deux. Si le premier caractère\n" -" d'OPTSTRING est un deux-points, « getopts » utilise un signalement d'erreur\n" -" silencieux. Dans ce mode aucun message d'erreur n'est affiché. Si une option\n" -" incorrecte est rencontrée, « getopts » place dans OPTARG le caractère d'option\n" -" trouvé. Si un argument nécessaire n'est pas trouvé, « getopts » place un « : »\n" -" dans NOM et place dans OPTARG le caractère d'option trouvé. Si « getopts »\n" -" n'est pas en mode silencieux et qu'une option incorrecte est rencontrée, il\n" -" place « ? » dans NAME et efface OPTARG. Si un argument nécessaire n'est pas\n" -" trouvé, un « ? » est placé dans NAME, OPTARG est effacé et un message de diagnostic\n" +" « getopts » signale les erreurs d'une façon parmi deux. Si le premier " +"caractère\n" +" d'OPTSTRING est un deux-points, « getopts » utilise un signalement " +"d'erreur\n" +" silencieux. Dans ce mode aucun message d'erreur n'est affiché. Si une " +"option\n" +" incorrecte est rencontrée, « getopts » place dans OPTARG le caractère " +"d'option\n" +" trouvé. Si un argument nécessaire n'est pas trouvé, « getopts » place un " +"« : »\n" +" dans NOM et place dans OPTARG le caractère d'option trouvé. Si « getopts " +"»\n" +" n'est pas en mode silencieux et qu'une option incorrecte est rencontrée, " +"il\n" +" place « ? » dans NAME et efface OPTARG. Si un argument nécessaire n'est " +"pas\n" +" trouvé, un « ? » est placé dans NAME, OPTARG est effacé et un message de " +"diagnostic\n" " est affiché.\n" " \n" -" Si la variable de shell OPTERR possède la valeur 0, « getopts » désactive\n" -" l'affichage des messages d'erreur, même si le premier caractère d'OPTSTRING\n" +" Si la variable de shell OPTERR possède la valeur 0, « getopts » " +"désactive\n" +" l'affichage des messages d'erreur, même si le premier caractère " +"d'OPTSTRING\n" " n'est pas un deux-points. OPTERR possède la valeur 1 par défaut.\n" " \n" -" « getopts » analyse habituellement les paramètres de position ($0 - $9), mais\n" +" « getopts » analyse habituellement les paramètres de position ($0 - $9), " +"mais\n" " si plus d'argument sont données, ils sont analysés à la place.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès si une option est trouvée, le code d'échec si la fin des options\n" +" Renvoie le code de succès si une option est trouvée, le code d'échec si " +"la fin des options\n" " est rencontrée ou si une erreur survient." -#: builtins.c:673 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2965,16 +3236,19 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "Remplace le shell par la commande fournie.\n" " \n" " Exécute la COMMANDE, en remplaçant ce shell par le programme spécifiée.\n" -" Les ARGUMENTS deviennent ceux de la COMMANDE. Si la COMMANDE n'est pas fournie,\n" +" Les ARGUMENTS deviennent ceux de la COMMANDE. Si la COMMANDE n'est pas " +"fournie,\n" " les redirections prennent effet dans le shell courant.\n" " \n" " Options :\n" @@ -2982,13 +3256,15 @@ msgstr "" " -c\t\texécute la COMMANDE avec un environnement vide\n" " -l\t\tplace un tiret comme argument numéro 0 de la COMMANDE\n" " \n" -" Si la commande ne peut pas être exécutée, un shell non-interactif se termine, à moins\n" +" Si la commande ne peut pas être exécutée, un shell non-interactif se " +"termine, à moins\n" " que l'option « execfail » ne soit définie.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins que la COMMANDE ne soit pas trouvée ou qu'une erreur de redirection ne survienne." +" Renvoie le code de succès à moins que la COMMANDE ne soit pas trouvée ou " +"qu'une erreur de redirection ne survienne." -#: builtins.c:694 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3000,29 +3276,33 @@ msgstr "" " Termine le shell avec le code de retour « N ». Si N est omis, le code\n" " de retour est celui de la dernière commande exécutée." -#: builtins.c:703 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Termine un shell de connexion.\n" " \n" -" Termine un shell de connexion avec le code de sortie N. Renvoie une erreur s'il n'est pas exécuté\n" +" Termine un shell de connexion avec le code de sortie N. Renvoie une " +"erreur s'il n'est pas exécuté\n" " dans un shell de connexion." -#: builtins.c:713 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3036,34 +3316,41 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Affiche ou exécute des commandes issues de l'historique.\n" " \n" -" « fc » est utilisé pour afficher ou modifier puis ré-exécuter les commandes\n" -" de l'historique des commandes. PREMIER et DERNIER peuvent être des nombres\n" +" « fc » est utilisé pour afficher ou modifier puis ré-exécuter les " +"commandes\n" +" de l'historique des commandes. PREMIER et DERNIER peuvent être des " +"nombres\n" " indiquant la plage ou PREMIER peut être une chaîne donnant le début de la\n" " commande la plus récente recherchée.\n" " \n" " Options :\n" -" -e ENAME définit quel éditeur utiliser. Par défaut il s'agit de « FCEDIT »\n" +" -e ENAME définit quel éditeur utiliser. Par défaut il s'agit de « " +"FCEDIT »\n" " puis « EDITOR », puis « vi ».\n" " \n" " -l affiche les les lignes au lieu de les éditer.\n" " -n n'affiche pas les numéros de ligne.\n" " -r inverse l'ordre des lignes (les plus récentes en premier).\n" " \n" -" En tapant « fc -s [ancien=nouveau ...] [commande] », la commande est ré-exécutée\n" +" En tapant « fc -s [ancien=nouveau ...] [commande] », la commande est ré-" +"exécutée\n" " après avoir effectué le remplacement ANCIEN=NOUVEAU.\n" " \n" " Un alias utile est « r='fc -s' » de sorte qu'en tapant « r cc »,\n" -" la dernière commande commençant par « cc » est ré-exécutée et avec « r », la\n" +" la dernière commande commençant par « cc » est ré-exécutée et avec « r », " +"la\n" " dernière commande est ré-exécutée.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès ou le code de sortie de la commande exécutée ; autre chose que 0 si une erreur survient." +" Renvoie le code de succès ou le code de sortie de la commande exécutée ; " +"autre chose que 0 si une erreur survient." -#: builtins.c:743 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3081,14 +3368,17 @@ msgstr "" " de tâche actuelle.\n" " \n" " Code de sortie :\n" -" celui de la commande placée au premier plan ou le code d'échec si une erreur survient." +" celui de la commande placée au premier plan ou le code d'échec si une " +"erreur survient." -#: builtins.c:758 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3096,19 +3386,22 @@ msgid "" msgstr "" "Déplace des tâches vers l'arrière plan.\n" " \n" -" Place chaque JOB_SPEC en arrière plan comme s'il avait été démarré avec « & ».\n" +" Place chaque JOB_SPEC en arrière plan comme s'il avait été démarré avec « " +"& ».\n" " Si JOB_SPEC n'est pas fourni, le shell utilise sa propre notion\n" " de tâche actuelle.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas activé ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas " +"activé ou qu'une erreur ne survienne." -#: builtins.c:772 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -3128,7 +3421,8 @@ msgstr "" "Mémorise ou affiche l'emplacement des programmes.\n" " \n" " Détermine et mémorise le chemin complet de chaque commande NOM. Si\n" -" aucun argument n'est donné, une information sur les commandes mémorisées est affichée.\n" +" aucun argument n'est donné, une information sur les commandes mémorisées " +"est affichée.\n" " \n" " Options :\n" " -d\t\toublier l'emplacement mémorisé de chaque NOM\n" @@ -3143,9 +3437,10 @@ msgstr "" " \t\tdes commandes mémorisée.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins que le NOM ne soit pas trouvé ou qu'une option non valable ne soit donnée." +" Renvoie le code de succès à moins que le NOM ne soit pas trouvé ou " +"qu'une option non valable ne soit donnée." -#: builtins.c:797 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3163,7 +3458,8 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Affiche des informations sur les commandes intégrées.\n" " \n" @@ -3181,10 +3477,11 @@ msgstr "" " MOTIF\tMotif spécifiant un sujet d'aide\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins que le MOTIF ne soit pas trouvé ou qu'une\n" +" Renvoie le code de succès à moins que le MOTIF ne soit pas trouvé ou " +"qu'une\n" " option non valable ne soit donnée." -#: builtins.c:821 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3211,41 +3508,53 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" "Affiche ou manipule l''historique.\n" " \n" -" Affiche l'historique avec les numéros de lignes en préfixant chaque élément\n" -" modifié d'un « * ». Un argument égal à N limite la liste aux N derniers éléments.\n" +" Affiche l'historique avec les numéros de lignes en préfixant chaque " +"élément\n" +" modifié d'un « * ». Un argument égal à N limite la liste aux N derniers " +"éléments.\n" " \n" " Options :\n" " -c\tefface la liste d'historique en effaçant tous les éléments\n" " -d offset\tefface l'élément d'historique à l'emplacement OFFSET.\n" " \n" -" -a\tajouter les lignes d'historique de cette session au fichier d'historique\n" -" -n\tlire toutes les lignes d'historique non déjà lues depuis le fichier d'historique\n" -" -r\tlire le fichier d'historique et ajouter le contenu à la liste d'historique\n" +" -a\tajouter les lignes d'historique de cette session au fichier " +"d'historique\n" +" -n\tlire toutes les lignes d'historique non déjà lues depuis le " +"fichier d'historique\n" +" -r\tlire le fichier d'historique et ajouter le contenu à la liste " +"d'historique\n" " -w\técrire l'historique actuel dans le fichier d'historique\n" " \tet l'ajoute à la liste d'historique\n" " \n" -" -p\teffectuer un développement de l'historique sur chaque ARG et afficher le résultat\n" +" -p\teffectuer un développement de l'historique sur chaque ARG et " +"afficher le résultat\n" " \tsans le stocker dans la liste d'historique\n" " -s\tajoute les ARGs à la liste d'historique comme entrée unique\n" " \n" -" Si NOMFICHIER est donné, il est utilisé comme fichier d'historique. Sinon,\n" -" si $HISTFILE contient une valeur, celle-ci est utilisée, sinon ~/.bash_history.\n" +" Si NOMFICHIER est donné, il est utilisé comme fichier d'historique. " +"Sinon,\n" +" si $HISTFILE contient une valeur, celle-ci est utilisée, sinon ~/." +"bash_history.\n" " \n" -" Si la variable $HISTTIMEFORMAT est définie et n'est pas vide, sa valeur est utillisée\n" -" comme chaîne de format pour que strftime(3) affiche l'horodatage associé\n" +" Si la variable $HISTTIMEFORMAT est définie et n'est pas vide, sa valeur " +"est utillisée\n" +" comme chaîne de format pour que strftime(3) affiche l'horodatage " +"associé\n" " à chaque entrée d'historique. Sinin, aucun horodatage n'est affiché.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable soit donnée ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une option non valable soit donnée " +"ou qu'une erreur ne survienne." -#: builtins.c:857 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3270,26 +3579,32 @@ msgid "" msgstr "" "Affiche l'état des tâches.\n" " \n" -" Affiche la liste des tâches actives. JOBSPEC restreint l'affichage à cette tâche.\n" -" S'il n'y a pas d'option, l'état de toutes les tâches actives est affiché.\n" +" Affiche la liste des tâches actives. JOBSPEC restreint l'affichage à " +"cette tâche.\n" +" S'il n'y a pas d'option, l'état de toutes les tâches actives est " +"affiché.\n" " \n" " Options :\n" " -l\tafficher les IDs de processus en plus des informations normales\n" -" -n\tafficher seulement les processus dont l'état a changé depuis la dernière\n" +" -n\tafficher seulement les processus dont l'état a changé depuis la " +"dernière\n" " \tnotification\n" " -p\tafficher seulement les IDs de processus\n" " -r\trestreindre l'affichage aux tâches en cours d'exécution\n" " -s\trestreindre l'affichage aux tâches stoppées\n" " \n" -" Si « -x » est fournie, la COMMANDE est lancée après que toutes les spécifications\n" -" qui apparaissent dans ARGs ont été remplacées par l'ID de processus du leader de groupe\n" +" Si « -x » est fournie, la COMMANDE est lancée après que toutes les " +"spécifications\n" +" qui apparaissent dans ARGs ont été remplacées par l'ID de processus du " +"leader de groupe\n" " de processus de cette tâche.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou qu'une erreur ne survienne.\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée ou qu'une erreur ne survienne.\n" " Si « -x » est utilisée, le code de sortie de la COMMANDE est renvoyé." -#: builtins.c:884 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3312,14 +3627,16 @@ msgstr "" " \n" " Options :\n" " -a\tretirer toutes lestâches si JOBSPEC n'est pas fourni\n" -" -h\tmarque chaque JOBSPEC de façon que SIGHUP ne soit pas envoyé à la tâche\n" +" -h\tmarque chaque JOBSPEC de façon que SIGHUP ne soit pas envoyé à la " +"tâche\n" " \tsi le shell reçoit un SIGHUP\n" " -r\tretire seulement les tâches en cours de fonctionnement\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option ou un JOBSPEC non valable ne soit donné." +" Renvoie le code de succès à moins qu'une option ou un JOBSPEC non " +"valable ne soit donné." -#: builtins.c:903 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3342,30 +3659,36 @@ msgid "" msgstr "" "Envoie un signal à une tâche.\n" " \n" -" Envoie le signal nommé par SIGSPEC ou SIGNUM au processus identifié par PID ou JOBSPEC.\n" +" Envoie le signal nommé par SIGSPEC ou SIGNUM au processus identifié par " +"PID ou JOBSPEC.\n" " Si SIGSPEC et SIGNUM ne sont pas donnés, alors SIGTERM est envoyé.\n" " \n" " Options :\n" " -s sig\tSIG est un nom de signal\n" " -n sig\tSIG est un numéro de signal\n" -" -l\tafficher la liste des noms de signaux ; si des arguments suivent « -l », ils sont supposés être\n" +" -l\tafficher la liste des noms de signaux ; si des arguments suivent « -" +"l », ils sont supposés être\n" " \tdes numéro de signaux pour lesquels les noms doivent être affichés\n" " \n" -" « kill » est une commande intégrée pour deux raisons : elle permet aux IDs de tâches d'être utilisées\n" -" à la place des IDs de processus et elle permet aux processus d'être tués si la limite du nombre de processus\n" +" « kill » est une commande intégrée pour deux raisons : elle permet aux " +"IDs de tâches d'être utilisées\n" +" à la place des IDs de processus et elle permet aux processus d'être tués " +"si la limite du nombre de processus\n" " que vous pouvez créer est atteinte.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable soit donnée ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une option non valable soit donnée " +"ou qu'une erreur ne survienne." -#: builtins.c:926 +#: builtins.c:936 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" +" 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" @@ -3432,29 +3755,37 @@ msgstr "" " \t&=, ^=, |=\taffectation\n" " \n" " Les variables de shell sont autorisées comme opérandes. Le nom de la\n" -" variable est remplacé par sa valeur (contrainte à un entier de largeur fixe)\n" -" à l'intérieur d'une expression. La variable n'a pas besoin d'avoir son attribut\n" +" variable est remplacé par sa valeur (contrainte à un entier de largeur " +"fixe)\n" +" à l'intérieur d'une expression. La variable n'a pas besoin d'avoir son " +"attribut\n" " d'entier activé pour être utilisée dans une expression.\n" " \n" -" Les opérateurs sont évalués dans leur ordre de priorité. Les sous-expressions entre\n" -" parenthèses sont évaluées en premier et peuvent être prioritaires sur les règles\n" +" Les opérateurs sont évalués dans leur ordre de priorité. Les sous-" +"expressions entre\n" +" parenthèses sont évaluées en premier et peuvent être prioritaires sur " +"les règles\n" " ci-dessus.\n" " \n" " Code de sortie :\n" " Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé." -#: builtins.c:971 +#: builtins.c:981 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3466,64 +3797,88 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" -" \t\tif input is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +" \t\twithout trying to read any data, returning success only if\n" +" \t\tinput is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out,\n" +" 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 "" "Lit une ligne depuis l'entrée standard et la découper en morceaux.\n" " \n" -" Lit une simple ligne depuis l'entrée standard ou depuis le descripteur de fichier FD\n" -" si l'option « -u » est fournie. La ligne est découpée en morceaux comme des mots,\n" -" et le premier mot est assigné au premier NOM, le deuxième mot au deuxième NOM,\n" -" et ainsi de suite, le dernier NOM récupérant la liste des mots restants.\n" +" Lit une simple ligne depuis l'entrée standard ou depuis le descripteur " +"de fichier FD\n" +" si l'option « -u » est fournie. La ligne est découpée en morceaux comme " +"des mots,\n" +" et le premier mot est assigné au premier NOM, le deuxième mot au " +"deuxième NOM,\n" +" et ainsi de suite, le dernier NOM récupérant la liste des mots " +"restants.\n" " Seul les caractères trouvés dans $IFS sont reconnus comme délimiteurs\n" " de mots\n" " \n" -" Si aucun NOM n'est fourni, la ligne lue est stockée dans la variable REPLY.\n" +" Si aucun NOM n'est fourni, la ligne lue est stockée dans la variable " +"REPLY.\n" " \n" " Options :\n" -" -a tableau\taffecter les indices de la variable tableau séquentiellement aux mots lus,\n" +" -a tableau\taffecter les indices de la variable tableau " +"séquentiellement aux mots lus,\n" " \t\ten commançant à 0\n" -" -d délim\tcontinuer jusqu'à ce que le premier caractère de DELIM soit lu,\n" +" -d délim\tcontinuer jusqu'à ce que le premier caractère de DELIM soit " +"lu,\n" " \t\tau lieu du retour à la ligne\n" -" -e\t\tutiliser « Readline » pour obtenir la ligne dans un shell interactif\n" +" -e\t\tutiliser « Readline » pour obtenir la ligne dans un shell " +"interactif\n" " -i texte\tUtiliser TEXTE comme texte initial pour « Readline »\n" " -n n\tterminer après avoir lu N caractères plutôt que d'attendre\n" -" \t\tun retour à la ligne, mais obéir à un délimiteur si moins de N caractères\n" +" \t\tun retour à la ligne, mais obéir à un délimiteur si moins de N " +"caractères\n" " \t\tsont lus avant le délimiteur\n" -" -N n\ttermine seulement après avoir lu exactement N caractères, à moins\n" -" \t\tque le caractère EOF soit recontré ou que le délai de lecture n'expire, en ignorant tout délimiteur\n" -" -p prompt\taffiche la chaîne PROMPT sans retour à la ligne final, avant de tenter une\n" +" -N n\ttermine seulement après avoir lu exactement N caractères, à " +"moins\n" +" \t\tque le caractère EOF soit recontré ou que le délai de lecture " +"n'expire, en ignorant tout délimiteur\n" +" -p prompt\taffiche la chaîne PROMPT sans retour à la ligne final, " +"avant de tenter une\n" " \t\tlecture\n" -" -r\t\tne pas permettre aux barres obliques inverses de se comporter comme des caractères d'échappement\n" +" -r\t\tne pas permettre aux barres obliques inverses de se comporter " +"comme des caractères d'échappement\n" " -s\t\tne pas répéter l'entrée provenant d'un terminal\n" -" -t timeout\texpire et renvoie un code d'échec si une ligne d'entrée complète n'est pas\n" +" -t timeout\texpire et renvoie un code d'échec si une ligne d'entrée " +"complète n'est pas\n" " \t\tlue en moins de TIMEOUT secondes. La valeur de la variable TIMEOUT\n" -" \t\test le délai d'expiration par défaut. TIMEOUT peut être un nombre à virgule\n" +" \t\test le délai d'expiration par défaut. TIMEOUT peut être un nombre à " +"virgule\n" " \t\tSi TIMEOUT est à, la lecture renvoie un code de succès seulement\n" " \t\tsi l'entrée est disponible sur le descripteut de fichier. Le code\n" " \t\tde sortie est supérieur à 128 si le délai a expiré\n" -" -u fd\t\tlire depuis le descripteur de fichier FD plutôt que l'entrée standard\n" +" -u fd\t\tlire depuis le descripteur de fichier FD plutôt que l'entrée " +"standard\n" " \n" " Code de sortie :\n" -" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que le délai expire,\n" -" ou qu'un descripteur de fichier non valable ne soit fourni comme argument à « -u »." +" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que " +"le délai expire,\n" +" ou qu'un descripteur de fichier non valable ne soit fourni comme " +"argument à « -u »." -#: builtins.c:1014 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3536,14 +3891,18 @@ msgid "" msgstr "" "Termine depuis une fonction du shell.\n" " \n" -" Entraine l'arrêt d'une fonction ou d'un script sourcé, avec le code de retour spécifié par N.\n" -" Si N est omis, le code de retour est celui de la dernière commande exécutée\n" +" Entraine l'arrêt d'une fonction ou d'un script sourcé, avec le code de " +"retour spécifié par N.\n" +" Si N est omis, le code de retour est celui de la dernière commande " +"exécutée\n" " à l'intérieur de la fonction ou du script\n" " \n" " Code de retour :\n" -" Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter une fonction ou un script." +" Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter " +"une fonction ou un script." -#: builtins.c:1027 +#: builtins.c:1039 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3586,7 +3945,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3608,7 +3968,7 @@ msgid "" " -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 follow symbolic links when executing commands\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" @@ -3626,18 +3986,23 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Définit ou invalide des valeurs d'options et des paramètres de position du shell.\n" +"Définit ou invalide des valeurs d'options et des paramètres de position du " +"shell.\n" " \n" -" Change la valeur des attributs du shell et des paramètres de position, ou\n" +" Change la valeur des attributs du shell et des paramètres de position, " +"ou\n" " affiche les noms et valeurs des variables du shell.\n" " \n" " Options :\n" -" -a Marquer pour l'export toutes les variables qui sont modifiées ou créées.\n" +" -a Marquer pour l'export toutes les variables qui sont modifiées ou " +"créées.\n" " -b Avertir immédiatement de la fin d'une tâche.\n" -" -e Terminer immédiatement si une commande s'arrête avec un code de retour non nul.\n" +" -e Terminer immédiatement si une commande s'arrête avec un code de " +"retour non nul.\n" " -f Désactiver la génération de nom de fichier (globbing).\n" " -h Mémoriser l'emplacement des commandes après leur recherche.\n" -" -k Placer dans l'environnement tous les arguments d'affectation pour une commande,\n" +" -k Placer dans l'environnement tous les arguments d'affectation " +"pour une commande,\n" " pas seulement ceux qui précèdent le nom de la commande.\n" " -m Activer le contrôle de tâche.\n" " -n Lire les commandes, mais ne pas les exécuter.\n" @@ -3652,9 +4017,11 @@ msgstr "" " hashall identique à -h\n" " histexpand identique à -H\n" " history activer l'historique des commandes\n" -" ignoreeof ne pas terminer le shell à la lecture d'un « EOF »\n" +" ignoreeof ne pas terminer le shell à la lecture d'un « EOF " +"»\n" " interactive-comments\n" -" permet aux commentaires d'apparaître dans les commandes interactives\n" +" permet aux commentaires d'apparaître dans les " +"commandes interactives\n" " keyword identique à -k\n" " monitor identique à -m\n" " noclobber identique à -C\n" @@ -3665,46 +4032,68 @@ msgstr "" " nounset identique à -u\n" " onecmd identique à -t\n" " physical identique à -P\n" -" pipefail le code de retour d'un tube est celui de la dernière commande\n" +" pipefail le code de retour d'un tube est celui de la " +"dernière commande\n" " qui s'est terminée avec un code non nul,\n" -" ou zéro si aucune commande ne s'est arrêtée avec un code non nul.\n" -" posix modifie le comportement de « bash » pour qu'il se comporte comme\n" -" le standard 1003.2 aux endroits où il diffère par défaut.\n" +" ou zéro si aucune commande ne s'est arrêtée " +"avec un code non nul.\n" +" posix modifie le comportement de « bash » pour qu'il " +"se comporte comme\n" +" le standard 1003.2 aux endroits où il diffère " +"par défaut.\n" " privileged identique à -p\n" " verbose identique à -v\n" " vi utiliser une édition de ligne façon « vi »\n" " xtrace identique à -x\n" -" -p Option activée lorsque les n° d'identifiants utilisateurs réels et effectifs ne\n" -" sont pas les mêmes. Désactive le traitement du fichier $ENV et l'import des\n" -" fonctions du shell. Désactiver cette option permet de définir les uid et gid\n" +" -p Option activée lorsque les n° d'identifiants utilisateurs réels " +"et effectifs ne\n" +" sont pas les mêmes. Désactive le traitement du fichier $ENV et " +"l'import des\n" +" fonctions du shell. Désactiver cette option permet de définir " +"les uid et gid\n" " effectifs à la valeur des uid et gid réels.\n" " -t Terminer après la lecture et l'exécution d'une commande.\n" -" -u Traiter les variables non définies comme des erreurs lors de la substitution.\n" +" -u Traiter les variables non définies comme des erreurs lors de la " +"substitution.\n" " -v Afficher les lignes d'entrée du shell à leur lecture.\n" -" -x Afficher les commandes et leurs arguments au moment de leur exécution.\n" +" -x Afficher les commandes et leurs arguments au moment de leur " +"exécution.\n" " -B Effectuer l'expansion des accolades\n" -" -C Si définit, empêche les fichiers réguliers existants d'être écrasés par une\n" +" -C Si définit, empêche les fichiers réguliers existants d'être " +"écrasés par une\n" " redirection de la sortie.\n" -" -E Si définit, l'interception ERR est héritée par les fonctions du shell.\n" -" -H Activer la substitution d'historique façon « ! ». Ceci est actif par défaut\n" +" -E Si définit, l'interception ERR est héritée par les fonctions du " +"shell.\n" +" -H Activer la substitution d'historique façon « ! ». Ceci est actif " +"par défaut\n" " lorsque le shell est interactif.\n" -" -P Si définit, les liens symboliques ne sont pas suivis lors de l'exécution des\n" +" -P Si définit, 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éfinit, l'interception DEBUG est héritée par les fonctions du shell.\n" +" -T Si définit, l'interception DEBUG 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" -" - Affecter 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" +" - Affecter tous les arguments restants aux paramètres de " +"position.\n" " Les options « -x » et « -v » sont désactivées.\n" " \n" -" Ces indicateurs peuvent être désactivés en utilisant « + » plutôt que « - ». Ils peuvent\n" -" être utilisés lors de l'appel au shell. Le jeu d'indicateurs actuel peut être trouvé\n" -" dans « $- ». Les n ARGs restants sont des paramètres de position et sont affectés,\n" -" dans l'ordre, à $1, $2, .. $n. Si aucun ARG n'est donné, toutes les variables du shell\n" +" Ces indicateurs peuvent être désactivés en utilisant « + » plutôt que « - " +"». Ils peuvent\n" +" être utilisés lors de l'appel au shell. Le jeu d'indicateurs actuel peut " +"être trouvé\n" +" dans « $- ». Les n ARGs restants sont des paramètres de position et sont " +"affectés,\n" +" dans l'ordre, à $1, $2, .. $n. Si aucun ARG n'est donné, toutes les " +"variables du shell\n" " sont affichées. \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit donnée." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée." -#: builtins.c:1112 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3713,8 +4102,11 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" 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" @@ -3733,17 +4125,20 @@ msgstr "" " Sans option, « unset » essaye d'abord d'annuler une variable et, \n" " en cas d'échec, essaye d'annuler la fonction.\n" " \n" -" Certaines variables ne peuvent pas être annulées ; consultez aussi « readonly ».\n" +" Certaines variables ne peuvent pas être annulées ; consultez aussi « " +"readonly ».\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou que NOM soit en lecture seule." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée ou que NOM soit en lecture seule." -#: builtins.c:1132 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3757,8 +4152,10 @@ msgid "" msgstr "" "Définit l'attribut « export » pour des variables du shell.\n" " \n" -" Marque chaque NOM pour export automatique vers l'environnement des commandes\n" -" exécutées ultérieurement. Si VALEUR est fournie, affecte la VALEUR avant l'export.\n" +" Marque chaque NOM pour export automatique vers l'environnement des " +"commandes\n" +" exécutées ultérieurement. Si VALEUR est fournie, affecte la VALEUR " +"avant l'export.\n" " \n" " Options :\n" " -f\tse référer aux fonctions du shell\n" @@ -3768,9 +4165,10 @@ msgstr "" " L'argument « -- » désactive tout traitement postérieur d'options.\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit données ou que NOM ne soit pas valable." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"données ou que NOM ne soit pas valable." -#: builtins.c:1151 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3791,22 +4189,26 @@ msgid "" msgstr "" "Marque des variables du shell comme non modifiables.\n" " \n" -" Marque chaque NOM comme étant en lecture seule ; les valeurs de ces NOMs ne peuvent plus\n" -" être modifiées par des affectations ultérieures. Si VALEUR est founie, lui affecter la VALEUR avant le\n" +" Marque chaque NOM comme étant en lecture seule ; les valeurs de ces NOMs " +"ne peuvent plus\n" +" être modifiées par des affectations ultérieures. Si VALEUR est founie, " +"lui affecter la VALEUR avant le\n" " passage en lecture seule.\n" " \n" " Options :\n" " -a\tse référer à des variables étant des tableaux indexés\n" " -A\tse référer à des variables étant des tableaux associatifs\n" " -f\tse référer à des fonctions du shell\n" -" -p\tafficher une liste des toutes les fonctions et variables en lecture seule\n" +" -p\tafficher une liste des toutes les fonctions et variables en " +"lecture seule\n" " \n" " Un argument « -- » désactive tout traitement postérieur d'options.\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'une options non valable ne soit données ou que NOM ne soit pas valable." +" Renvoie le code de succès à moins qu'une options non valable ne soit " +"données ou que NOM ne soit pas valable." -#: builtins.c:1172 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3818,13 +4220,14 @@ msgid "" msgstr "" "Décale des paramètres de position.\n" " \n" -" Renomme les paramètres de position $N+1,$N+2 ... à $1,$2 ... Si N n'est pas\n" +" Renomme les paramètres de position $N+1,$N+2 ... à $1,$2 ... Si N n'est " +"pas\n" " donné, il est supposé égal à 1.\n" " \n" " Code de retour :\n" " Renvoie le code de succès à moins que N soit négatif ou supérieur à $#." -#: builtins.c:1184 builtins.c:1199 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3839,16 +4242,20 @@ msgid "" msgstr "" "Execute des commandes depuis un fichier dans le shell actuel.\n" " \n" -" Lit et exécute des commandes depuis NOMFICHIER dans le shell actuel. Les\n" -" éléments dans $PATH sont utilisés pour trouver le répertoire contenant NOMFICHIER.\n" -" Si des ARGUMENTS sont fournis, ils deviennent les paramètres de position\n" +" Lit et exécute des commandes depuis NOMFICHIER dans le shell actuel. " +"Les\n" +" éléments dans $PATH sont utilisés pour trouver le répertoire contenant " +"NOMFICHIER.\n" +" Si des ARGUMENTS sont fournis, ils deviennent les paramètres de " +"position\n" " lorsque NOMFICHIER est exécuté.\n" " \n" " Code de sortie :\n" -" Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le code\n" +" Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le " +"code\n" " d'échec si NOMFICHIER ne peut pas être lu." -#: builtins.c:1215 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3863,16 +4270,20 @@ msgid "" msgstr "" "Suspend l'exécution du shell.\n" " \n" -" Suspend l'exécution de ce shell jusqu'à qu'il reçoive un signal SIGCONT.\n" -" À moins que ce soit forcé, les shell de connexion ne peuvent pas être suspendus.\n" +" Suspend l'exécution de ce shell jusqu'à qu'il reçoive un signal " +"SIGCONT.\n" +" À moins que ce soit forcé, les shell de connexion ne peuvent pas être " +"suspendus.\n" " \n" " Options :\n" " -f\tforce la suspension, même si le shell est un shell de connexion\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas activé ou qu'une erreur survienne." +" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas " +"activé ou qu'une erreur survienne." -#: builtins.c:1231 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -3906,7 +4317,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3927,7 +4339,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3935,6 +4348,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3958,14 +4373,16 @@ msgstr "" " pour examiner l'état d'un fichier. Il existe aussi des opérateurs de\n" " chaîne, ainsi que des opérateurs de comparaison numériques.\n" " \n" -" Le comportement de test dépend du nombre d'arguments. Consultez la page\n" +" Le comportement de test dépend du nombre d'arguments. Consultez la " +"page\n" " de manuel de bash pour connaître les spécifications complètes.\n" ". \n" " Opérateurs sur des fichiers : \n" " \n" " -a FICHIER Vrai si le fichier existe.\n" " -b FICHIER Vrai si le fichier est un fichier spécial de bloc\n" -" -c FICHIER Vrai si le fichier est un fichier spécial de caractères\n" +" -c FICHIER Vrai si le fichier est un fichier spécial de " +"caractères\n" " -d FICHIER Vrai si le fichier est un répertoire.\n" " -e FICHIER Vrai si le fichier existe\n" " -f FICHIER Vrai si le fichier existe et est un fichier régulier\n" @@ -3981,13 +4398,19 @@ msgstr "" " -u FICHIER Vrai si le fichier est « set-user-id »\n" " -w FICHIER Vrai si le fichier peut être écrit par vous\n" " -x FICHIER Vrai si le fichier est exécutable par vous\n" -" -O FICHIER Vrai si le fichier est effectivement possédé par vous\n" -" -G FICHIER Vrai si le fichier est effectivement possédé par votre groupe\n" -" -N FICHIER Vrai si le fichier a été modifié depuis la dernière fois qu'il a été lu\n" +" -O FICHIER Vrai si le fichier est effectivement possédé par " +"vous\n" +" -G FICHIER Vrai si le fichier est effectivement possédé par " +"votre groupe\n" +" -N FICHIER Vrai si le fichier a été modifié depuis la dernière " +"fois qu'il a été lu\n" "\n" -" FICHIER1 -nt FICHIER2 Vrai si le fichier1 est plus récent que le fichier2 (selon la date de modification)\n" -" FICHIER1 -ot FICHIER2 Vrai si le fichier1 est plus vieux que le fichier2\n" -" FICHIER1 -ef FICHIER2 Vrai si le fichier1 est un lien physique vers le fichier2\n" +" FICHIER1 -nt FICHIER2 Vrai si le fichier1 est plus récent que le " +"fichier2 (selon la date de modification)\n" +" FICHIER1 -ot FICHIER2 Vrai si le fichier1 est plus vieux que le " +"fichier2\n" +" FICHIER1 -ef FICHIER2 Vrai si le fichier1 est un lien physique vers " +"le fichier2\n" " \n" " Opérateurs sur des chaînes :\n" " \n" @@ -4000,9 +4423,11 @@ msgstr "" " CHAÎNE1 != CHAÎNE2\n" " Vrai si les chaînes ne sont pas égales\n" " CHAÎNE1 < CHAÎNE2\n" -" Vrai si le tri lexicographique place la chaîne1 en premier\n" +" Vrai si le tri lexicographique place la chaîne1 en " +"premier\n" " CHAÎNE1 > CHAÎNE2\n" -" Vrai si le tri lexicographique place la chaîne1 en deuxième\n" +" Vrai si le tri lexicographique place la chaîne1 en " +"deuxième\n" " \n" " Autres opérateurs :\n" " \n" @@ -4015,13 +4440,16 @@ msgstr "" " arg1 OP arg2 Tests arithmétiques. OP peut être -eq, -ne,\n" " -lt, -le, -gt ou -ge.\n" " \n" -" Les opérateurs arithmétiques binaires renvoient « vrai » si ARG1 est égal,\n" -" non-égal, inférieur, inférieur ou égal, supérieur, supérieur ou égal à ARG2. \n" +" Les opérateurs arithmétiques binaires renvoient « vrai » si ARG1 est " +"égal,\n" +" non-égal, inférieur, inférieur ou égal, supérieur, supérieur ou égal à " +"ARG2. \n" " Code de sortie :\n" -" Renvoie le code de succès si EXPR est vraie, le code d'échec si EXPR est fausse ou si\n" +" Renvoie le code de succès si EXPR est vraie, le code d'échec si EXPR est " +"fausse ou si\n" " un argument non valable est donné." -#: builtins.c:1311 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4033,11 +4461,12 @@ 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:1320 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4051,11 +4480,12 @@ msgstr "" " Code de retour :\n" " Toujours le code de succès." -#: builtins.c:1332 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4064,46 +4494,60 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Intercepter des signaux et d'autres événements.\n" " \n" -" Définit et active des gestionnaires à lancer lorsque le shell reçoit des signaux\n" +" Définit et active des gestionnaires à lancer lorsque le shell reçoit des " +"signaux\n" " ou sous d'autres conditions.\n" " \n" " La commande ARG doit être lue et exécutée lorsque le shell reçoit le\n" " signal SIGNAL_SPEC. Si ARG est absent (et qu'un unique SIGNAL_SPEC)\n" " est fourni) ou égal à « - », tous les signaux spécifié sont remis\n" -" à leur valeur d'origine. Si ARG est une chaîne vide, tous les SIGNAL_SPEC\n" +" à leur valeur d'origine. Si ARG est une chaîne vide, tous les " +"SIGNAL_SPEC\n" " sont ignorés par le shell et les commandes qu'il appelle.\n" " \n" -" Si SIGNAL_SPEC est EXIT (0), la commande ARG est exécutée à la sortie du shell. Si un\n" +" Si SIGNAL_SPEC est EXIT (0), la commande ARG est exécutée à la sortie du " +"shell. Si un\n" " SIGNAL_SPEC est DEBUG, ARG est exécuté après chaque commande simple. Si\n" -" un SIGNAL_SPEC est RETURN, ARG est exécuté à chaque fois qu'une fonction shell ou\n" +" un SIGNAL_SPEC est RETURN, ARG est exécuté à chaque fois qu'une fonction " +"shell ou\n" " qu'un script lancé avec . ou source se termine. Un SIGNAL_SPEC\n" -" valant ERR permet d'exécuter ARG à chaque fois qu'un échec d'une commande engendrerait\n" +" valant ERR permet d'exécuter ARG à chaque fois qu'un échec d'une " +"commande engendrerait\n" " la sortie du shell lorsque l'option -e est activée.\n" " \n" -" Si aucun argument n'est fourni, « trap » affiche la liste des commandes associées\n" +" Si aucun argument n'est fourni, « trap » affiche la liste des commandes " +"associées\n" " à chaque signal.\n" " \n" " Options :\n" @@ -4111,14 +4555,16 @@ msgstr "" " -p\taffiche les commandes de « trap » associées à chaque SIGNAL_SPEC\n" " \n" " Chaque SIGNAL_SPEC est soit un nom de signal dans \n" -" ou un numéro de signal. Les noms de signaux sont insensibles à la casse et\n" +" ou un numéro de signal. Les noms de signaux sont insensibles à la casse " +"et\n" " le préfixe « SIG » est facultatif. Un signal peut être envoyé au\n" " shell avec « kill -signal $$ ».\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins que SIGSPEC ne soit pas valable ou qu'une option non valable ne soit donnée." +" Renvoie le code de succès à moins que SIGSPEC ne soit pas valable ou " +"qu'une option non valable ne soit donnée." -#: builtins.c:1368 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4144,7 +4590,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Affiche des informations sur le type de commande.\n" " \n" @@ -4153,30 +4600,38 @@ msgstr "" " \n" " Options :\n" " -a\taffiche tous les emplacements contenant un exécutable nommé NOM;\n" -" \tinclut les alias, les commandes intégrées et les fonctions si et seulement si\n" +" \tinclut les alias, les commandes intégrées et les fonctions si et " +"seulement si\n" " \tl'option n'est pas « -p » n'est pas utilisée\n" " -f\tdésactive la recherche de fonctions du shell\n" -" -P\tforce une recherche de CHEMIN pour chaque NOM, même si c'est un alias,\n" -" \tune commande intégrée ou une fonction et renvoie le nom du fichier du disque\n" +" -P\tforce une recherche de CHEMIN pour chaque NOM, même si c'est un " +"alias,\n" +" \tune commande intégrée ou une fonction et renvoie le nom du fichier du " +"disque\n" " \tqui serait exécuté\n" " -p\trenvoie soir le nom du fichier du disque qui serait exécuté,\n" " \tsoit rien si « type -t NOM » ne renvoyait pas « file ».\n" " -t\taffiche un mot unique parmi « alias », « keyword »,\n" -" \t« function », « builtin », « file » or « », si NOM est respectivement un alias,\n" -" \tun mot réservé du shell, une fonction du shell, une commande intégrée,\n" +" \t« function », « builtin », « file » or « », si NOM est respectivement un " +"alias,\n" +" \tun mot réservé du shell, une fonction du shell, une commande " +"intégrée,\n" " \tun fichier du disque ou un nom inconnu\n" " \n" " Arguments :\n" " NOM\tNom de commande à interpréter.\n" " \n" " Code de retour :\n" -" Renvoie le code de succès si tous les NOMs sont trouvés, le code d'échec si l'un d'entre eux n'est pas trouvé." +" Renvoie le code de succès si tous les NOMs sont trouvés, le code d'échec " +"si l'un d'entre eux n'est pas trouvé." -#: builtins.c:1399 +#: builtins.c:1414 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4200,6 +4655,9 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" +" -T the maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -4216,7 +4674,8 @@ msgid "" msgstr "" "Modifie les limites de ressources du shell.\n" " \n" -" Fournit un contrôle sur les ressources disponibles au shell et aux processus\n" +" Fournit un contrôle sur les ressources disponibles au shell et aux " +"processus\n" " qu'il crée, sur les systèmes qui permettent un tel contrôle. \n" " \n" " Options :\n" @@ -4241,20 +4700,26 @@ msgstr "" " -v\tla taille de la mémoire virtuelle\n" " -x\tle nombre maximal de verrous de fichiers\n" " \n" -" Si LIMIT est fournie, elle est utilisée comme nouvelle valeur de ressource\n" -" Les valeurs spéciales de LIMIT « soft », « hard » et « unlimited » correspondent\n" -" respectivement aux valeurs actuelles de la limite souple, de la limite dure,\n" -" ou à une absence de limite. Sinon la valeur actuelle de la limite est affichée\n" +" Si LIMIT est fournie, elle est utilisée comme nouvelle valeur de " +"ressource\n" +" Les valeurs spéciales de LIMIT « soft », « hard » et « unlimited » " +"correspondent\n" +" respectivement aux valeurs actuelles de la limite souple, de la limite " +"dure,\n" +" ou à une absence de limite. Sinon la valeur actuelle de la limite est " +"affichée\n" " Si aucune option n'est donnée, « -f » est supposée.\n" " \n" -" Les valeurs sont des multiples de 1024 octets, sauf pour « -t » qui prend des secondes,\n" +" Les valeurs sont des multiples de 1024 octets, sauf pour « -t » qui prend " +"des secondes,\n" " « -p » qui prend un multiple de 512 octets et « -u » qui prend un nombre\n" " de processus sans unité.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie ou qu'une erreur ne survienne." -#: builtins.c:1444 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4273,55 +4738,75 @@ msgid "" msgstr "" "Affiche ou définit le masque de mode de fichier.\n" " \n" -" Définit le masque de création de fichier comme étant MODE. Si MODE est omis, affiche\n" +" Définit le masque de création de fichier comme étant MODE. Si MODE est " +"omis, affiche\n" " la valeur courante du MASQUE.\n" " \n" -" Si MODE commence par un chiffre, il est interprété comme un nombre octal ;\n" -" sinon comme une chaîne de symboles de mode comme ceux acceptés par chmod(1).\n" +" Si MODE commence par un chiffre, il est interprété comme un nombre " +"octal ;\n" +" sinon comme une chaîne de symboles de mode comme ceux acceptés par chmod" +"(1).\n" " \n" " Options :\n" -" -p\tsi MODE est omis, afficher sous une forme réutilisable comme une entrée\n" -" -S\tafficher sous forme symbolique, sinon la sortie octale est utilisée\n" +" -p\tsi MODE est omis, afficher sous une forme réutilisable comme une " +"entrée\n" +" -S\tafficher sous forme symbolique, sinon la sortie octale est " +"utilisée\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins que MODE ne soit pas valable ou qu'une option non valable ne soit donnée." +" Renvoie le code de succès à moins que MODE ne soit pas valable ou qu'une " +"option non valable ne soit donnée." -#: builtins.c:1464 +#: builtins.c:1482 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for the process identified by ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\n" -" in the job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." msgstr "" "Attend la fin d'une tâche et renvoie le code de retour.\n" " \n" -" Attend que le processus identifié par ID, qui peut être un ID de processus ou\n" -" une spécification de tâche et renvoie son code de retour. Si ID n'est pas\n" -" donné, la commande attend tous les processus actifs en cours et le code de retour\n" -" est zéro. Si ID est une spécification de tâche, la commande attend tous les processus\n" +" Attend que le processus identifié par ID, qui peut être un ID de " +"processus ou\n" +" une spécification de tâche et renvoie son code de retour. Si ID n'est " +"pas\n" +" donné, la commande attend tous les processus actifs en cours et le code " +"de retour\n" +" est zéro. Si ID est une spécification de tâche, la commande attend tous " +"les processus\n" " dans le pipeline de la tâche.\n" " \n" " Code de retour :\n" -" Renvoie le même code que celui d'ID, ou le code d'échec si ID n'est pas valable ou en cas d'option non valable." +" Renvoie le même code que celui d'ID, ou le code d'échec si ID n'est pas " +"valable ou en cas d'option non valable." -#: builtins.c:1482 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Attend la fin d'un processus et renvoie le code de sortie.\n" " \n" @@ -4330,10 +4815,11 @@ msgstr "" " et le code de retour est zéro. PID doit être un ID de processus.\n" " \n" " Code de sortie :\n" -" Renvoie le code de ID, l'échec si ID n'est pas valable ou si une option non valable\n" +" Renvoie le code de ID, l'échec si ID n'est pas valable ou si une option " +"non valable\n" " est donnée." -#: builtins.c:1497 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4347,7 +4833,8 @@ msgid "" msgstr "" "Exécute des commandes pour chaque membre d'une liste.\n" " \n" -" La boucle « for » exécute une suite de commandes pour chaque membre d'une\n" +" La boucle « for » exécute une suite de commandes pour chaque membre " +"d'une\n" " liste d'éléments. Si « in MOTS ...; » n'est pas fourni, « in \"$@\" » est\n" " utilisé. Pour chaque élément dans MOTS, NOM est défini à cet élément,\n" " et les COMMANDES sont exécutées.\n" @@ -4355,7 +4842,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1511 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4379,13 +4866,14 @@ msgstr "" " \t\tCOMMANDS\n" " \t\t(( EXP3 ))\n" " \tdone\n" -" EXP1, EXP2, and EXP3 sont des expressions arithmétiques. Si une expression\n" +" EXP1, EXP2, and EXP3 sont des expressions arithmétiques. Si une " +"expression\n" " omise, elle se comporte comme si elle s'évaluait à 1.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1529 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4421,7 +4909,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1550 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4438,19 +4926,21 @@ msgid "" msgstr "" "Signale le temps passé pendant l'exécution d'un tube de commandes.\n" " \n" -" Exécute PIPELINE et affiche un résumé du temps réel, du temps processeur\n" +" Exécute PIPELINE et affiche un résumé du temps réel, du temps " +"processeur\n" " utilisateur, et du temps processeur système passés à exécuter PIPELINE\n" " lorsque celui-ci se termine.\n" " \n" " Options :\n" " -p\taffiche le résumé dans le format portable Posix.\n" " \n" -" La valeur de la variable TIMEFORMAT est utilisée comme format de sortie.\n" +" La valeur de la variable TIMEFORMAT est utilisée comme format de " +"sortie.\n" " \n" " Code de sortie :\n" " Le code de retour est celui du PIPELINE." -#: builtins.c:1567 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4462,22 +4952,29 @@ msgid "" msgstr "" "Exécute des commandes selon une correspondance de motif.\n" " \n" -" Exécute de manière sélective les COMMANDES selon la correspondance du MOT\n" -" au MOTIF. Le caractère « | » est utilisé pour séparer les différents motifs.\n" +" Exécute de manière sélective les COMMANDES selon la correspondance du " +"MOT\n" +" au MOTIF. Le caractère « | » est utilisé pour séparer les différents " +"motifs.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1579 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4485,18 +4982,23 @@ msgid "" msgstr "" "Exécute des commandes selon une condition.\n" " \n" -" La liste « if COMMANDES » est exécutée. Si elle se termine avec un code de zéro,\n" +" La liste « if COMMANDES » est exécutée. Si elle se termine avec un code " +"de zéro,\n" " alors la liste « then COMMANDES » est exécutée. Sinon, chaque liste\n" -" « elif COMMANDES » est exécutée à son tour et si son code de retour est zéro,\n" -" la liste « then COMMANDES » correspondante est exécutée et la commande « if »\n" -" se termine. Sinon, la list « else COMMANDES » est exécutée si elle existe.\n" -" Le code de retour de l'ensemble est celui de la dernière commande exécutée\n" +" « elif COMMANDES » est exécutée à son tour et si son code de retour est " +"zéro,\n" +" la liste « then COMMANDES » correspondante est exécutée et la commande « " +"if »\n" +" se termine. Sinon, la list « else COMMANDES » est exécutée si elle " +"existe.\n" +" Le code de retour de l'ensemble est celui de la dernière commande " +"exécutée\n" " ou zéro si aucune condition n'était vraie.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1596 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4509,13 +5011,14 @@ msgstr "" "Exécute des commandes aussi longtemps qu'elle réussissent.\n" " \n" " Effectue une expansion et exécute les COMMANDES aussi longtemps\n" -" que la commande finale parmi celles situées dans « while » se termine avec un\n" +" que la commande finale parmi celles situées dans « while » se termine " +"avec un\n" " code de retour de zéro.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1608 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4527,14 +5030,15 @@ msgid "" msgstr "" "Exécute des commandes aussi longtemps qu'un test échoue.\n" " \n" -" Effectue une expansion et exécute les commandes « COMMANDES » aussi longtemps\n" +" Effectue une expansion et exécute les commandes « COMMANDES » aussi " +"longtemps\n" " que les commandes de « until » se terminent avec un code de retour\n" " différent de zéro.\n" " \n" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1620 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4548,20 +5052,23 @@ msgid "" msgstr "" "Crée un coprocessus nommé NOM.\n" " \n" -" Exécute la COMMANDE de manière asynchrone, en connectant la sortie et l'entrée standard\n" -" de la commande par un tube aux decripteurs de fichier affectés aux indices 0 et 1\n" +" Exécute la COMMANDE de manière asynchrone, en connectant la sortie et " +"l'entrée standard\n" +" de la commande par un tube aux decripteurs de fichier affectés aux " +"indices 0 et 1\n" " d'une variable tableau NOM dans le shell en cours d'exécution.\n" " Le NOM par défaut est « COPROC ».\n" " \n" " Code de retour :\n" " Renvoie le même code de retour que la COMMANDE." -#: builtins.c:1634 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4570,15 +5077,18 @@ msgid "" msgstr "" "Définit une fonction du shell.\n" " \n" -" Crée une fonction du shell nommée NOM. Lorsqu'appelée comme une simple commande,\n" -" NOM lance la COMMANDE dans le contexte du shell qui l'appelle. Lorsque NOM est appelé,\n" -" les arguments sont transmis à la fonction comme $1...$n, et le nom de la fonction\n" +" Crée une fonction du shell nommée NOM. Lorsqu'appelée comme une simple " +"commande,\n" +" NOM lance la COMMANDE dans le contexte du shell qui l'appelle. Lorsque " +"NOM est appelé,\n" +" les arguments sont transmis à la fonction comme $1...$n, et le nom de la " +"fonction\n" " est $FUNCNAME.\n" " \n" " Code de retour :\n" " Renvoie le code de succès à moins que NOM ne soit en lecture seule." -#: builtins.c:1648 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4596,7 +5106,7 @@ msgstr "" " Code de sortie :\n" " Renvoie le code de la dernière commande exécutée." -#: builtins.c:1660 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4611,16 +5121,18 @@ msgid "" msgstr "" "Reprend une tâche en arrière plan.\n" " \n" -" Équivalent à l'argument JOB_SPEC de la commande « fg ». Reprend l'exécution\n" +" Équivalent à l'argument JOB_SPEC de la commande « fg ». Reprend " +"l'exécution\n" " d'une tâche stoppée ou en tâche de fond. JOB_SPEC peut spécifier soit\n" " un nom soit un numéro de tâche. Faire suivre JOB_SPEC de « & » permet de\n" -" placer la tâche en arrière plan, comme si la spécification de tâche avait\n" +" placer la tâche en arrière plan, comme si la spécification de tâche " +"avait\n" " été fournie comme argument de « bg ».\n" " \n" " Code de sortie :\n" " Renvoie le code de la commande reprise." -#: builtins.c:1675 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4638,13 +5150,16 @@ msgstr "" " Code de sortie :\n" " Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0." -#: builtins.c:1687 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4664,18 +5179,23 @@ msgid "" msgstr "" "Exécute une commande conditionnelle.\n" " \n" -" Renvoie un code de retour de 0 ou 1 dépendant de l'évaluation de l'EXPRESSION\n" -" conditionnelle. Les expressions sont formées de la même façon que pour la\n" -" primitive « test », et peuvent être combinées avec les opérateurs suivants :\n" +" Renvoie un code de retour de 0 ou 1 dépendant de l'évaluation de " +"l'EXPRESSION\n" +" conditionnelle. Les expressions sont formées de la même façon que pour " +"la\n" +" primitive « test », et peuvent être combinées avec les opérateurs " +"suivants :\n" " \n" " \t( EXPRESSION )\tRenvoie la valeur de l'EXPRESSION\n" " \t! EXPRESSION\tVrai si l'EXPRESSION est fausse, sinon vrai\n" " \tEXPR1 && EXPR2\tVrai si EXPR1 et EXPR2 sont vraies, faux sinon\n" " \tEXPR1 || EXPR2\tVrai si EXPR1 ou EXPR2 est vraie, faux sinon\n" " \n" -" Lorsque les opérateurs « == » et « != » sont utilisés, la chaîne à droite de l'opérateur\n" +" Lorsque les opérateurs « == » et « != » sont utilisés, la chaîne à droite " +"de l'opérateur\n" " est utilisée comme motif, et une mise en correspondance est effectuée.\n" -" Lorsque l'opérateur « =~ » est utilisé, la chaîne à droite de l'opérateur\n" +" Lorsque l'opérateur « =~ » est utilisé, la chaîne à droite de " +"l'opérateur\n" " est mise en correspondance comme une expression rationnelle.\n" " \n" " Les opérateurs « && » et « || » n'évaluent pas EXPR2 si\n" @@ -4684,7 +5204,7 @@ msgstr "" " Code de sortie :\n" " 0 ou 1 selon la valeur de l'EXPRESSION." -#: builtins.c:1713 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4742,25 +5262,34 @@ msgstr "" " BASH_VERSION\tNuméro de version de ce Bash.\n" " CDPATH\tUne liste de répertoires, séparés par un deux-points, utilisés\n" " \t\tpar « cd » pour la recherche de répertoires.\n" -" GLOBIGNORE\tUne liste de motifs séparés par un deux-points, décrivant les\n" +" GLOBIGNORE\tUne liste de motifs séparés par un deux-points, décrivant " +"les\n" " \t\tnoms de fichier à ignorer lors de l'expansion des chemins.\n" -" HISTFILE\tLe nom du fichier où votre historique des commandes est stocké.\n" +" HISTFILE\tLe nom du fichier où votre historique des commandes est " +"stocké.\n" " HISTFILESIZE\tLe nombre maximal de lignes que ce fichier peut contenir.\n" " HISTSIZE\tLe nombre maximal de lignes d'historique auquel un shell en\n" " \t\tfonctionnement peut accéder.\n" " HOME\tLe chemin complet vers votre répertoire de connexion.\n" " HOSTNAME\tLe nom de la machine actuelle.\n" -" HOSTTYPE\tLe type de processeur sur laquelle cette version de Bash fonctionne.\n" -" IGNOREEOF\tContrôle l'action du shell à la réception d'un caractère « EOF »\n" -" \t\tcomme seule entrée. Si défini, sa valeur est le nombre de caractères\n" +" HOSTTYPE\tLe type de processeur sur laquelle cette version de Bash " +"fonctionne.\n" +" IGNOREEOF\tContrôle l'action du shell à la réception d'un caractère « EOF " +"»\n" +" \t\tcomme seule entrée. Si défini, sa valeur est le nombre de " +"caractères\n" " \t\t« EOF » qui peuvent être rencontrés à la suite sur une ligne vide\n" " \t\tavant que le shell ne se termine (10 par défaut).\n" " \t\tS'il n'est pas défini, « EOF » signifie la fin de l'entrée.\n" -" MACHTYPE\tUne chaîne décrivant le système actuel sur lequel fonctionne Bash.\n" -" MAILCHECK\tLe nombre de secondes séparant deux vérifications du courrier par Bash.\n" -" MAILPATH\tUne liste de fichiers séparés par un deux-points, que Bash utilise\n" +" MACHTYPE\tUne chaîne décrivant le système actuel sur lequel fonctionne " +"Bash.\n" +" MAILCHECK\tLe nombre de secondes séparant deux vérifications du courrier " +"par Bash.\n" +" MAILPATH\tUne liste de fichiers séparés par un deux-points, que Bash " +"utilise\n" " \t\tpour vérifier les nouveaux courriers.\n" -" OSTYPE\tLa version d'Unix sur laquelle cette version de Bash fonctionne.\n" +" OSTYPE\tLa version d'Unix sur laquelle cette version de Bash " +"fonctionne.\n" " PATH\tUne liste de répertoires séparés par un deux-points, utilisés\n" " \t\tpour la recherche des commandes.\n" " PROMPT_COMMAND\tUne commande à exécuter avant d'afficher chaque invite\n" @@ -4768,27 +5297,38 @@ msgstr "" " PS1\t\tL'invite de commande principale.\n" " PS2\t\tL'invite secondaire.\n" " PWD\t\tLe chemin complet vers le répertoire actuel.\n" -" SHELLOPTS\tLa liste des options activées du shell, séparées par un deux-points.\n" +" SHELLOPTS\tLa liste des options activées du shell, séparées par un deux-" +"points.\n" " TERM\tLe nom du type actuel du terminal.\n" -" TIMEFORMAT\tLe format de sortie pour les statistiques de temps affichées\n" +" TIMEFORMAT\tLe format de sortie pour les statistiques de temps " +"affichées\n" " \t\tpar le mot réservé « time ».\n" " auto_resume\tNon-vide signifie qu'un mot de commande apparaissant\n" " \t\tde lui-même sur une ligne est d'abord recherché dans la liste des\n" -" \t\ttâches stoppées. Si elle est trouvée, la tâche est remise en avant-plan.\n" -" \t\tUne valeur de « exact » signifie que le mot de commande doit correspondre\n" -" \t\texactement à la commande dans la liste des tâches stoppées. Une valeur\n" +" \t\ttâches stoppées. Si elle est trouvée, la tâche est remise en avant-" +"plan.\n" +" \t\tUne valeur de « exact » signifie que le mot de commande doit " +"correspondre\n" +" \t\texactement à la commande dans la liste des tâches stoppées. Une " +"valeur\n" " \t\tde « substring » signifie que le mot de commande\n" -" \t\tcorrespondre à une sous-chaîne de la tâche. Une autre valeur signifie\n" +" \t\tcorrespondre à une sous-chaîne de la tâche. Une autre valeur " +"signifie\n" " \t\tque la commande doit être un préfixe d'une tâche stoppée.\n" -" histchars\tCaractères contrôlant l'expansion d'historique et la substitution\n" -" \t\trapide. Le premier caractère est le caractère de substitution d'historique,\n" -" \t\thabituellement « ! ». Le deuxième est le caractère de substitution rapide,\n" +" histchars\tCaractères contrôlant l'expansion d'historique et la " +"substitution\n" +" \t\trapide. Le premier caractère est le caractère de substitution " +"d'historique,\n" +" \t\thabituellement « ! ». Le deuxième est le caractère de substitution " +"rapide,\n" " \t\thabituellement « ^ ». Le troisième est le caractère de commentaire\n" " \t\td'historique, habituellement « # ».\n" -" HISTIGNORE\tUne liste de motifs séparés par un deux-points, utilisés pour\n" -" \t\tdécider quelles commandes doivent être conservées dans la liste d'historique.\n" +" HISTIGNORE\tUne liste de motifs séparés par un deux-points, utilisés " +"pour\n" +" \t\tdécider quelles commandes doivent être conservées dans la liste " +"d'historique.\n" -#: builtins.c:1770 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -4836,16 +5376,18 @@ msgstr "" " -N\tPermuter la pile de façon que le Nième répertoire se place en haut,\n" " \ten comptant de zéro depuis la droite de la liste fournie par « dirs ».\n" " \n" -" dir\tajouter le répertoire DIR en haut de la pile, et en faire le nouveau\n" +" dir\tajouter le répertoire DIR en haut de la pile, et en faire le " +"nouveau\n" " \trépertoire de travail.\n" " \n" " Vous pouvez voir la pile des répertoires avec la commande « dirs ».\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'un argument non valable ne soit fourni\n" +" Renvoie le code de succès à moins qu'un argument non valable ne soit " +"fourni\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1804 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4891,10 +5433,11 @@ msgstr "" " Vous pouvez voir la pile des répertoires avec la commande « dirs ».\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'un argument non valable ne soit donné\n" +" Renvoie le code de succès à moins qu'un argument non valable ne soit " +"donné\n" " ou que le changement de répertoire n'échoue." -#: builtins.c:1834 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -4911,10 +5454,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" @@ -4922,8 +5467,10 @@ msgid "" msgstr "" "Affiche la pile de répertoire.\n" " \n" -" Affiche la liste des répertoires actuellement mémorisés. Les répertoires\n" -" sont insérés dans la liste avec la commande « pushd ». Vous pouvez remonter\n" +" Affiche la liste des répertoires actuellement mémorisés. Les " +"répertoires\n" +" sont insérés dans la liste avec la commande « pushd ». Vous pouvez " +"remonter\n" " dans la liste en enlevant des éléments avec la commande « popd ».\n" " \n" " Options:\n" @@ -4935,21 +5482,25 @@ msgstr "" " \ten préfixant avec sa position dans la pile\n" " \n" " Arguments :\n" -" +N\t affiche le Nième élément en comptant de zéro depuis la gauche de la\n" +" +N\t affiche le Nième élément en comptant de zéro depuis la gauche de " +"la\n" " liste affichée par « dirs » lorsque celle-ci est appelée sans option.\n" " \n" -" -N\t affiche le Nième élément en comptant de zéro depuis la droite de la\n" +" -N\t affiche 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.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie ou qu'une erreur ne survienne." -#: builtins.c:1863 +#: builtins.c:1884 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" +" arguments, list all shell options with an indication of whether or not " +"each\n" " is set.\n" " \n" " Options:\n" @@ -4965,22 +5516,27 @@ msgid "" msgstr "" "Active ou désactive des options du shell.\n" " \n" -" Change la valeur de chaque option du shell NOMOPT. S'il n'y a pas d'argument à l'option\n" -" la commande liste toutes les options du shell en indiquant si elles sont actives\n" +" Change la valeur de chaque option du shell NOMOPT. S'il n'y a pas " +"d'argument à l'option\n" +" la commande liste toutes les options du shell en indiquant si elles sont " +"actives\n" " ou non.\n" " \n" " Options :\n" -" -o\trestreint les NOMOPT à ceux définis pour être utilisés avec « set -o »\n" +" -o\trestreint les NOMOPT à ceux définis pour être utilisés avec « set -" +"o »\n" " -p\taffiche chaque option du shell en indiquant son état\n" " -q\tsupprime l'affichage\n" " -s\tactive (set) chaque NOMOPT\n" " -u\tdésactive (unset) chaque NOMOPT\n" " \n" " Code de retour :\n" -" Renvoie le code de succès si NOMOPT est active ; échec si une option non valable\n" +" Renvoie le code de succès si NOMOPT est active ; échec si une option non " +"valable\n" " est donnée ou si NOMOPT est inactive." -#: builtins.c:1884 +#: builtins.c:1905 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4988,53 +5544,76 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1)\n" -" and printf(3), printf interprets:\n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" +" %(fmt)T output the date-time string resulting from using FMT as a " +"format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Formatte et affiche des ARGUMENTS en contrôlant le FORMAT.\n" " \n" " Options :\n" -" -v var\taffecte la sortie à la variable VAR du shell plutôt que de l'afficher\n" +" -v var\taffecte la sortie à la variable VAR du shell plutôt que de " +"l'afficher\n" " \t\tsur la sortie standard\n" " \n" -" Le FORMAT est une chaîne de caractères qui contient trois types d'objets : des caractères\n" -" normaux qui sont simplement copiés vers la sortie standard, des séquences d'échappement\n" -" qui sont converties et copiées vers la sortie standard et des spécifications de\n" +" Le FORMAT est une chaîne de caractères qui contient trois types " +"d'objets : des caractères\n" +" normaux qui sont simplement copiés vers la sortie standard, des " +"séquences d'échappement\n" +" qui sont converties et copiées vers la sortie standard et des " +"spécifications de\n" " format, chacun entraînant l'affichage de l'argument suivant.\n" " \n" -" En plus des formats standards décrits dans printf(1) et printf(3), « printf » interprète :\n" +" En plus des formats standards décrits dans printf(1) et printf(3), « " +"printf » interprète :\n" " \n" -" %b\tdéveloppe les séquences d'échappement à contre-oblique dans l'argument correspondant\n" -" %q\tprotège les arguments par guillemets de façon qu'ils puissent être réutilisés\n" +" %b\tdéveloppe les séquences d'échappement à contre-oblique dans " +"l'argument correspondant\n" +" %q\tprotège les arguments par guillemets de façon qu'ils puissent être " +"réutilisés\n" " comme entrée du shell.\n" -" %(fmt)T renvoie la chaîne date-heure résultant de l'utilisation de FMT comme une\n" +" %(fmt)T renvoie la chaîne date-heure résultant de l'utilisation de FMT " +"comme une\n" " chaîne de format pour strftime(3)\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou qu'une\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée ou qu'une\n" " erreur d'écriture ou d'affectation ne survienne." -#: builtins.c:1913 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5055,32 +5634,41 @@ msgid "" msgstr "" "Spécifie la façon dont Readline complète les arguments.\n" " \n" -" Pour chaque NOM, la commande spécifie la façon dont les arguments son complétés\n" -" S'il n'y a pas d'option, le réglage actuel est affiché d'une manièré réutilisable comme\n" +" Pour chaque NOM, la commande spécifie la façon dont les arguments son " +"complétés\n" +" S'il n'y a pas d'option, le réglage actuel est affiché d'une manièré " +"réutilisable comme\n" " une entrée.\n" " \n" " Options :\n" -" -p\taffiche le réglage d'auto-complètement actuel dans un format réutilisable\n" -" -r\tretire un réglage d'auto-complètement à chaque NOM ou, si aucun NOM\n" +" -p\taffiche le réglage d'auto-complètement actuel dans un format " +"réutilisable\n" +" -r\tretire un réglage d'auto-complètement à chaque NOM ou, si aucun " +"NOM\n" " \tn'est fourni, retire tous les réglages\n" -" -D\tapplique les auto-complètements et actions comme valeurs par défaut aux commandes\n" +" -D\tapplique les auto-complètements et actions comme valeurs par " +"défaut aux commandes\n" " \tne possédant aucun auto-complètement spécifique\n" " -E\tapplique les auto-complètements et actions aux commandes vides (\n" " \tauto-complètement tenté sur une ligne vide)\n" " \n" -" Lorsqu'un auto-complètement est tenté, les actions sont appliquées dans l'ordre\n" -" dans lequel les options en majuscule ci-dessus sont listées. L'option « -D » est prioritaire\n" +" Lorsqu'un auto-complètement est tenté, les actions sont appliquées dans " +"l'ordre\n" +" dans lequel les options en majuscule ci-dessus sont listées. L'option « -" +"D » est prioritaire\n" " sur « -E ».\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie ou qu'une erreur ne survienne." -#: builtins.c:1941 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5093,15 +5681,19 @@ msgstr "" " des correspondances avec « WORD » sont générées.\n" " \n" " Code de sortie :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou qu'une erreur ne survienne." +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie ou qu'une erreur ne survienne." -#: builtins.c:1956 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5124,45 +5716,61 @@ msgid "" msgstr "" "Modifie ou affiche les options d'auto-complètement.\n" " \n" -" Modifie les options d'auto-complètement pour chaque NOM ou, si aucun NOM n'est fourni,\n" -" pour l'auto-complètement actuellement exécuté. si aucune OPTION n'est donnée, affiche\n" -" les options d'auto-complètement de chaque NOM ou le réglage actuel d'auto-complètement.\n" +" Modifie les options d'auto-complètement pour chaque NOM ou, si aucun NOM " +"n'est fourni,\n" +" pour l'auto-complètement actuellement exécuté. si aucune OPTION n'est " +"donnée, affiche\n" +" les options d'auto-complètement de chaque NOM ou le réglage actuel " +"d'auto-complètement.\n" " \n" " Options :\n" -" \t-o option\tDéfinir l'option d'auto-complètement OPTION pour chaque NOM\n" -" \t-D\t\tChanger les options pour l'auto-complètement de commande par défaut\n" +" \t-o option\tDéfinir l'option d'auto-complètement OPTION pour chaque " +"NOM\n" +" \t-D\t\tChanger les options pour l'auto-complètement de commande par " +"défaut\n" " \t-E\t\tChanger les options pour l'auto-complètement de commande vide\n" " \n" " Utiliser « +o » au lieu de « -o » désactive l'option spécifiée.\n" " \n" " Arguments :\n" " \n" -" Chaque NOM correspond à une commande pour laquelle un réglage d'auto-complètement\n" -" doit déjà avoir été défini grâce à la commande intégrée « complete ». Si aucun NOM\n" -" n'est fourni, « compopt » doit être appelée par une fonction générant actuellement\n" -" des auto-complètements ; ainsi les options de ce générateur d'auto-complètement en cours d'exécution\n" +" Chaque NOM correspond à une commande pour laquelle un réglage d'auto-" +"complètement\n" +" doit déjà avoir été défini grâce à la commande intégrée « complete ». Si " +"aucun NOM\n" +" n'est fourni, « compopt » doit être appelée par une fonction générant " +"actuellement\n" +" des auto-complètements ; ainsi les options de ce générateur d'auto-" +"complètement en cours d'exécution\n" " seront modifiées.\n" " \n" " Code de retour :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit fournie\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"fournie\n" " ou que NOM n'ait aucun réglage d'auto-complètement." -#: builtins.c:1986 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -5172,43 +5780,56 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Lit des lignes depuis l'entrée standard vers une variable tableau indexé.\n" " \n" -" Lit des lignes depuis l'entrée standard vers la variable tableau indexé TABLEAU ou\n" -" depuis le descripteur de fichier FD si l'option « -u » est utilisée. La variable MAPFILE\n" +" Lit des lignes depuis l'entrée standard vers la variable tableau indexé " +"TABLEAU ou\n" +" depuis le descripteur de fichier FD si l'option « -u » est utilisée. La " +"variable MAPFILE\n" " est le TABLEAU par défaut.\n" " \n" " Options :\n" -" -n nombre\tCopie au maximum NOMBRE lignes. Si NOMBRE est 0, toutes les lignes sont copiées.\n" -" -O origine\tCommence l'affectation au TABLEAU à l'indice ORIGINE. L'indice par défaut est 0.\n" +" -n nombre\tCopie au maximum NOMBRE lignes. Si NOMBRE est 0, toutes " +"les lignes sont copiées.\n" +" -O origine\tCommence l'affectation au TABLEAU à l'indice ORIGINE. " +"L'indice par défaut est 0.\n" " -s nombre\tSaute les NOMBRE premières lignes lues.\n" " -t\t\tRetire les retours à la ligne de chaque ligne lue.\n" -" -u fd\t\tLit les lignes depuis le descripteur de fichier FD au lieu de l'entrée standard.\n" -" -C callback\tÉvalue le CALLBACK à chaque fois que QUANTUM lignes sont lues.\n" -" -c quantum\tIndique le nombre de lignes lues entre chaque appel au CALLBACK.\n" +" -u fd\t\tLit les lignes depuis le descripteur de fichier FD au lieu de " +"l'entrée standard.\n" +" -C callback\tÉvalue le CALLBACK à chaque fois que QUANTUM lignes sont " +"lues.\n" +" -c quantum\tIndique le nombre de lignes lues entre chaque appel au " +"CALLBACK.\n" " \n" " Arguments :\n" " TABLEAU\t\tNom de la variable tableau à utiliser pour les données.\n" " \n" -" Si l'option « -C » est fournie sans option « -c », le quantum par défaut est 5000. Lorsque\n" -" CALLBACK est évalué, l'indice du prochain élément de tableau qui sera affecté\n" +" Si l'option « -C » est fournie sans option « -c », le quantum par défaut " +"est 5000. Lorsque\n" +" CALLBACK est évalué, l'indice du prochain élément de tableau qui sera " +"affecté\n" " lui est transmis comme argument additionnel.\n" " \n" -" Si la commande « mapfile » n'est pas fournie avec une origine explicite, le tableau est vidé\n" +" Si la commande « mapfile » n'est pas fournie avec une origine explicite, " +"le tableau est vidé\n" " avant affectation.\n" " \n" " code de retour :\n" -" Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou que\n" +" Renvoie le code de succès à moins qu'une option non valable ne soit " +"donnée ou que\n" " le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé." -#: builtins.c:2020 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5218,6 +5839,16 @@ msgstr "" " \n" " Synonyme de « mapfile »." +#~ 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 "" +#~ "Licence GPLv2+ : GNU GPL version 2 ou ultérieure \n" + #~ msgid "" #~ ". With EXPR, returns\n" #~ " " @@ -5229,13 +5860,15 @@ msgstr "" #~ "; 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" +#~ " The value of EXPR indicates how many call frames to go back before " +#~ "the\n" #~ " current one; the top frame is frame 0." #~ msgstr "" #~ "; ces informations supplémentaires peuvent être utilisées pour\n" #~ " fournir une trace d'appels\n" #~ " \n" -#~ " La valeur de EXPR indique le nombre de cadres d'appels duquel il faut revenir en arrière\n" +#~ " La valeur de EXPR indique le nombre de cadres d'appels duquel il faut " +#~ "revenir en arrière\n" #~ " avant le cadre actuel ; le cadre supérieur est le cadre 0." #~ msgid " " @@ -5245,13 +5878,18 @@ msgstr "" #~ msgstr "Sans « EXPR », renvoie « $ligne $nomfichier ». Avec « EXPR »," #~ msgid "returns \"$line $subroutine $filename\"; this extra information" -#~ msgstr "renvoie « $ligne $sousroutine $nomfichier » ; cette information supplémentaire" +#~ msgstr "" +#~ "renvoie « $ligne $sousroutine $nomfichier » ; cette information " +#~ "supplémentaire" #~ msgid "can be used used to provide a stack trace." #~ msgstr "peut être utilisée pour fournir une trace de la pile" -#~ msgid "The value of EXPR indicates how many call frames to go back before the" -#~ msgstr "La valeur de « EXPR » indique le nombre de cadres d'appel dont il faut reculer" +#~ msgid "" +#~ "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "" +#~ "La valeur de « EXPR » indique le nombre de cadres d'appel dont il faut " +#~ "reculer" #~ msgid "current one; the top frame is frame 0." #~ msgstr "par rapport à l'actuel ; le cadre supérieur est le cadre 0." @@ -5263,82 +5901,115 @@ msgstr "" #~ msgstr "Commandes du shell correspondant aux mots-clés « " #~ msgid "Display the list of currently remembered directories. Directories" -#~ msgstr "Affiche la liste des répertoires actuellement mémorisés. Les répertoires" +#~ msgstr "" +#~ "Affiche la liste des répertoires actuellement mémorisés. Les répertoires" #~ msgid "find their way onto the list with the `pushd' command; you can get" #~ msgstr "sont insérés dans la pile avec la commande « pushd » ; vous pouvez" #~ msgid "back up through the list with the `popd' command." -#~ msgstr "remonter dans la pile en enlevant des éléments avec la commande « popd »." +#~ msgstr "" +#~ "remonter dans la pile en enlevant des éléments avec la commande « popd »." -#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "L'option « -l » demande à « dirs » de ne pas afficher sous forme abrégée" +#~ msgid "" +#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "" +#~ "L'option « -l » demande à « dirs » de ne pas afficher sous forme abrégée" -#~ msgid "of directories which are relative to your home directory. This means" -#~ msgstr "les répertoires relatifs à votre répertoire personnel. Cela signifie que" +#~ msgid "" +#~ "of directories which are relative to your home directory. This means" +#~ msgstr "" +#~ "les répertoires relatifs à votre répertoire personnel. Cela signifie que" #~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "le répertoire « ~/bin » pourra être affiché « /homes/bfox/bin ». L'option « -v »" +#~ msgstr "" +#~ "le répertoire « ~/bin » pourra être affiché « /homes/bfox/bin ». L'option « -" +#~ "v »" #~ msgid "causes `dirs' to print the directory stack with one entry per line," #~ msgstr "demande à « dirs » d'afficher un répertoire de la pile par ligne," -#~ msgid "prepending the directory name with its position in the stack. The -p" -#~ msgstr "en le précédant de sa position dans la pile. L'option « -p » fait la même chose" +#~ msgid "" +#~ "prepending the directory name with its position in the stack. The -p" +#~ msgstr "" +#~ "en le précédant de sa position dans la pile. L'option « -p » fait la même " +#~ "chose" #~ msgid "flag does the same thing, but the stack position is not prepended." #~ msgstr "sans afficher le numéro d'emplacement dans la pile." -#~ msgid "The -c flag clears the directory stack by deleting all of the elements." -#~ msgstr "L'option « -c » vide la pile des répertoires en retirant tous ses éléments." +#~ msgid "" +#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgstr "" +#~ "L'option « -c » vide la pile des répertoires en retirant tous ses éléments." -#~ msgid "+N displays the Nth entry counting from the left of the list shown by" -#~ msgstr "+N affiche la Nième entrée à partir de la gauche de la liste fournie par" +#~ msgid "" +#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgstr "" +#~ "+N affiche la Nième entrée à partir de la gauche de la liste fournie par" #~ msgid " dirs when invoked without options, starting with zero." -#~ msgstr " « dirs » lorsqu'elle est appelée sans option, la première entrée étant zéro." +#~ msgstr "" +#~ " « dirs » lorsqu'elle est appelée sans option, la première entrée " +#~ "étant zéro." -#~ msgid "-N displays the Nth entry counting from the right of the list shown by" -#~ msgstr "+N affiche la Nième entrée à partir de la droite de la liste fournie par" +#~ msgid "" +#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgstr "" +#~ "+N affiche la Nième entrée à partir de la droite de la liste fournie par" #~ msgid "Adds a directory to the top of the directory stack, or rotates" -#~ msgstr "Ajoute un répertoire au dessus de la pile des répertoires ou effectue une" +#~ msgstr "" +#~ "Ajoute un répertoire au dessus de la pile des répertoires ou effectue une" #~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "rotation de la pile en plaçant le répertoire supérieur comme répertoire courant." +#~ msgstr "" +#~ "rotation de la pile en plaçant le répertoire supérieur comme répertoire " +#~ "courant." #~ msgid "directory. With no arguments, exchanges the top two directories." -#~ msgstr "Sans paramètre, les deux répertoires supérieurs de la pile sont échangés." +#~ msgstr "" +#~ "Sans paramètre, les deux répertoires supérieurs de la pile sont échangés." #~ msgid "+N Rotates the stack so that the Nth directory (counting" -#~ msgstr "+N effectue une rotation de la pile de façon que le Nième répertoire soit" +#~ msgstr "" +#~ "+N effectue une rotation de la pile de façon que le Nième répertoire " +#~ "soit" #~ msgid " from the left of the list shown by `dirs', starting with" -#~ msgstr "placé au dessus (N commençant à zéro et en partant à gauche de la liste" +#~ msgstr "" +#~ "placé au dessus (N commençant à zéro et en partant à gauche de la liste" #~ msgid " zero) is at the top." #~ msgstr " fournie par « dirs »)." #~ msgid "-N Rotates the stack so that the Nth directory (counting" -#~ msgstr "+N effectue une rotation de la pile de façon que le Nième répertoire soit" +#~ msgstr "" +#~ "+N effectue une rotation de la pile de façon que le Nième répertoire " +#~ "soit" #~ msgid " from the right of the list shown by `dirs', starting with" -#~ msgstr "placé au dessus (N commençant à zéro et en partant à gauche de la liste" +#~ msgstr "" +#~ "placé au dessus (N commençant à zéro et en partant à gauche de la liste" #~ msgid "-n suppress the normal change of directory when adding directories" -#~ msgstr "-n inhibe le changement de répertoire lors d'un ajout de répertoire " +#~ msgstr "" +#~ "-n inhibe le changement de répertoire lors d'un ajout de répertoire " #~ msgid " to the stack, so only the stack is manipulated." #~ msgstr " à la liste. Seule la pile est manipulée." #~ msgid "dir adds DIR to the directory stack at the top, making it the" -#~ msgstr "dir ajoute « DIR » au dessus de la pile des répertoires, en faisant de lui" +#~ msgstr "" +#~ "dir ajoute « DIR » au dessus de la pile des répertoires, en faisant de lui" #~ msgid " new current working directory." #~ msgstr " le nouveau répertoire courant." #~ msgid "You can see the directory stack with the `dirs' command." -#~ msgstr "Vous pouvez voir le contenu de la pile des répertoires avec la commande « dirs »." +#~ msgstr "" +#~ "Vous pouvez voir le contenu de la pile des répertoires avec la commande « " +#~ "dirs »." #~ msgid "Removes entries from the directory stack. With no arguments," #~ msgstr "Enlève des éléments de la pile des répertoires. Sans paramètre," @@ -5367,8 +6038,11 @@ msgstr "" #~ msgid " removes the last directory, `popd -1' the next to last." #~ msgstr " enlève le dernier répertoire, « popd -1 » l'avant-dernier." -#~ msgid "-n suppress the normal change of directory when removing directories" -#~ msgstr "-n inhibe le changement de répertoire lors de l'enlèvement d'un répertoire" +#~ msgid "" +#~ "-n suppress the normal change of directory when removing directories" +#~ msgstr "" +#~ "-n inhibe le changement de répertoire lors de l'enlèvement d'un " +#~ "répertoire" #~ msgid " from the stack, so only the stack is manipulated." #~ msgstr " de la liste. Seule la pile est manipulée." @@ -5398,7 +6072,8 @@ msgstr "" #~ msgstr "xrealloc : impossible d'allouer %lu octets" #~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc : %s:%d : impossible de réallouer %lu octets (%lu octets alloués)" +#~ msgstr "" +#~ "xrealloc : %s:%d : impossible de réallouer %lu octets (%lu octets alloués)" #~ msgid "" #~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" @@ -5412,15 +6087,18 @@ msgstr "" #~ " shell builtin to be a function, but need the functionality of the\n" #~ " builtin within the function itself." #~ msgstr "" -#~ "Lance une primitive du shell. Ceci est utile lorsque vous souhaitez nommer une fonction comme\n" -#~ " une primitive, mais que vous avez besoin d'utiliser la primitive dans la fonction elle-même." +#~ "Lance une primitive du shell. Ceci est utile lorsque vous souhaitez " +#~ "nommer une fonction comme\n" +#~ " une primitive, mais que vous avez besoin d'utiliser la primitive dans " +#~ "la fonction elle-même." #~ 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 "" -#~ "Affiche le répertoire de travail actuel. Avec l'option « -P », « pwd » affiche\n" +#~ "Affiche le répertoire de travail actuel. Avec l'option « -P », « pwd » " +#~ "affiche\n" #~ " le répertoire physique, sans lien symbolique ; l'option « -L »\n" #~ " demande à « pwd » de suivre les liens symboliques." @@ -5430,17 +6108,26 @@ msgstr "" #~ 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" +#~ " 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 "" -#~ "Lance la commande COMMAND avec les ARGS en ignorant les fonctions du shell. Si vous\n" -#~ " avez défini une fonction de shell appelée « ls » et que vous voulez appeler\n" -#~ " la commande « ls », vous pouvez faire « command ls ». Si l'option « -p » est\n" -#~ " donnée, une valeur par défaut est utilisée pour le PATH garantissant que tous\n" -#~ " les utilitaires standards seront trouvés. Si l'option « -V » ou « -v » est\n" -#~ " donnée, une description de la commande s'affiche. L'option « -V » fournit plus\n" +#~ "Lance la commande COMMAND avec les ARGS en ignorant les fonctions du " +#~ "shell. Si vous\n" +#~ " avez défini une fonction de shell appelée « ls » et que vous voulez " +#~ "appeler\n" +#~ " la commande « ls », vous pouvez faire « command ls ». Si l'option « -p " +#~ "» est\n" +#~ " donnée, une valeur par défaut est utilisée pour le PATH garantissant " +#~ "que tous\n" +#~ " les utilitaires standards seront trouvés. Si l'option « -V » ou « -v » " +#~ "est\n" +#~ " donnée, une description de la commande s'affiche. L'option « -V » " +#~ "fournit plus\n" #~ " d'informations." #~ msgid "" @@ -5452,7 +6139,8 @@ msgstr "" #~ " \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" +#~ " -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" @@ -5466,32 +6154,40 @@ msgstr "" #~ " 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" +#~ " Using `+' instead of `-' turns off the given attribute instead. " +#~ "When\n" #~ " used in a function, makes NAMEs local, as with the `local' command." #~ msgstr "" -#~ "Déclare des variables ou ajoute des attributs aux variables. Si aucun nom\n" -#~ " n'est donné, affiche plutôt les valeurs des variables. L'option « -p »\n" +#~ "Déclare des variables ou ajoute des attributs aux variables. Si aucun " +#~ "nom\n" +#~ " n'est donné, affiche plutôt les valeurs des variables. L'option « -p " +#~ "»\n" #~ " permet d'afficher les attributs et les valeurs de chaque NAME.\n" #~ " \n" #~ " Les options sont :\n" #~ " \n" #~ " -a\tpour faire des tableaux de NAME (si pris en charge)\n" #~ " -f\tpour choisir uniquement parmi les noms de fonctions\n" -#~ " -F\tpour afficher les noms de fonctions (et les numéros de ligne et le\n" +#~ " -F\tpour afficher les noms de fonctions (et les numéros de ligne et " +#~ "le\n" #~ " \tfichier source si le mode de débogage est activé\n" #~ " -i\tpour que les NAME aient l'attribut « integer »\n" #~ " -r\tpour que les NAME soient en lecture seule\n" #~ " -t\tpour que les NAME aient l'attribut « trace »\n" #~ " -x\tpour faire un export des NAME\n" #~ " \n" -#~ " L'évaluation arithmétique des variables ayant l'attribut « integer » est\n" +#~ " L'évaluation arithmétique des variables ayant l'attribut « integer » " +#~ "est\n" #~ " effectuée au moment de l'affectation (voir « let »).\n" #~ " \n" -#~ " Lors de l'affichage des valeurs de variables, -f affiche le nom de la fonction\n" +#~ " Lors de l'affichage des valeurs de variables, -f affiche le nom de la " +#~ "fonction\n" #~ " et sa définition. L'option -F permet de n'afficher que le nom.\n" #~ " \n" -#~ " Un attribut peut être désactivé en utilisant « + » au lieu de « - ». Dans une\n" -#~ " fonction, ceci a pour effet de rendre les NAME locaux, comme avec la commande «local »." +#~ " Un attribut peut être désactivé en utilisant « + » au lieu de « - ». " +#~ "Dans une\n" +#~ " fonction, ceci a pour effet de rendre les NAME locaux, comme avec la " +#~ "commande «local »." #~ msgid "Obsolete. See `declare'." #~ msgstr "Obsolète. Consulter « declare »." @@ -5501,11 +6197,15 @@ msgstr "" #~ " 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 "" -#~ "Permet de créer une variable locale appelée NAME, et de lui affecter une VALUE.\n" -#~ " LOCAL peut seulement être utilisé à l'intérieur d'une fonction ; il rend le nom de\n" -#~ " variable NAME visible uniquement à l'intérieur de la fonction et de ses filles." +#~ "Permet de créer une variable locale appelée NAME, et de lui affecter une " +#~ "VALUE.\n" +#~ " LOCAL peut seulement être utilisé à l'intérieur d'une fonction ; il " +#~ "rend le nom de\n" +#~ " variable NAME visible uniquement à l'intérieur de la fonction et de " +#~ "ses filles." -#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgid "" +#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." #~ msgstr "Affiche les ARGs. L'option « -n » supprime le saut de ligne final." #~ msgid "" @@ -5520,25 +6220,39 @@ msgstr "" #~ " 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." +#~ " 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 "" #~ "Active et désactive les primitives du shell. Ceci permet\n" -#~ " d'utiliser une commande du disque qui a le même nom qu'une commande intégrée\n" +#~ " d'utiliser une commande du disque qui a le même nom qu'une commande " +#~ "intégrée\n" #~ " sans devoir spécifier un chemin complet. Si « -n » est utilisé, les\n" -#~ " noms NAME sont désactivés ; sinon, les noms NAME sont activés. Par exemple,\n" +#~ " noms NAME sont désactivés ; sinon, les noms NAME sont activés. Par " +#~ "exemple,\n" #~ " pour utiliser « test » trouvé dans $PATH au lieu de la primitive du\n" -#~ " même nom, tapez « enable -n test ». Sur les systèmes permettant le chargement\n" -#~ " dynamique, l'option « -f » peut être utilisée pour charger de nouvelles primitives\n" -#~ " depuis l'objet partagé FILENAME. L'option « -d » efface une primitive précédemment\n" -#~ " chargée avec « -f ». Si aucun nom (n'étant pas une option) n'est donné, ou si l'option\n" -#~ " « -p » est spécifiée, une liste de primitive est affichée. L'option « -a » permet d'afficher\n" -#~ " toutes les primitives en précisant si elles sont activées ou non. L'option « -s » restreint\n" -#~ " la sortie aux primitives « special » POSIX.2. L'option « -n » affiche une liste de toutes les\n" +#~ " même nom, tapez « enable -n test ». Sur les systèmes permettant le " +#~ "chargement\n" +#~ " dynamique, l'option « -f » peut être utilisée pour charger de " +#~ "nouvelles primitives\n" +#~ " depuis l'objet partagé FILENAME. L'option « -d » efface une primitive " +#~ "précédemment\n" +#~ " chargée avec « -f ». Si aucun nom (n'étant pas une option) n'est " +#~ "donné, ou si l'option\n" +#~ " « -p » est spécifiée, une liste de primitive est affichée. L'option « -" +#~ "a » permet d'afficher\n" +#~ " toutes les primitives en précisant si elles sont activées ou non. " +#~ "L'option « -s » restreint\n" +#~ " la sortie aux primitives « special » POSIX.2. L'option « -n » affiche " +#~ "une liste de toutes les\n" #~ " primitives désactivées." -#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "Lit les ARGs comme une entrée du shell et exécute les commandes résultantes." +#~ msgid "" +#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "" +#~ "Lit les ARGs comme une entrée du shell et exécute les commandes " +#~ "résultantes." #~ msgid "" #~ "Exec FILE, replacing this shell with the specified program.\n" @@ -5550,14 +6264,16 @@ msgstr "" #~ " 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 "" -#~ "Exécute le fichier FILE en remplaçant ce shell par le programme spécifié.\n" +#~ "Exécute le fichier FILE en remplaçant ce shell par le programme " +#~ "spécifié.\n" #~ " Si FILE n'est pas spécifié, les redirections prennent effet dans\n" #~ " ce shell. Si le premier argument est « -l », un tiret est placé dans\n" #~ " l'argument n°0 transmis à FILE, comme le fait « login ». Si l'option\n" #~ " « -c » est fournie, FILE est exécuté avec un environnement vide.\n" #~ " L'option « -a » indique de définir « argv[0] » du processus exécuté\n" #~ " à NAME. Si le fichier ne peut pas être exécuté et que le shell n'est\n" -#~ " pas interactif, alors le shell se termine, à moins que l'option « execfail »\n" +#~ " pas interactif, alors le shell se termine, à moins que l'option « " +#~ "execfail »\n" #~ " ne soit définie." #~ msgid "Logout of a login shell." @@ -5568,22 +6284,36 @@ msgstr "" #~ " 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" +#~ " 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." +#~ " 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 "" -#~ "Pour chaque NAME, le chemin complet de la commande est déterminé puis mémorisé.\n" -#~ " Si l'option « -p » est fournie, le CHEMIN est utilisé comme chemin complet\n" -#~ " pour NAME, et aucune recherche n'est effectuée. L'option « -r » demande au shell\n" -#~ " d'oublier tous les chemins mémorisés. L'option « -d » demande au shell d'oublier\n" -#~ " les chemins mémorisés pour le NAME. Si l'option « -t » est fournie, le chemin\n" -#~ " complet auquel correspond chaque NAME est affiché. Si plusieurs NAME sont fournis\n" -#~ " à l'option « -t », le NAME est affiché avant chemin complet haché. L'option\n" -#~ " « -l » permet d'utiliser un format de sortie qui peut être réutilisé comme entrée.\n" -#~ " Si aucun argument n'est donné, des informations sur les commandes mémorisées sont\n" +#~ "Pour chaque NAME, le chemin complet de la commande est déterminé puis " +#~ "mémorisé.\n" +#~ " Si l'option « -p » est fournie, le CHEMIN est utilisé comme chemin " +#~ "complet\n" +#~ " pour NAME, et aucune recherche n'est effectuée. L'option « -r » " +#~ "demande au shell\n" +#~ " d'oublier tous les chemins mémorisés. L'option « -d » demande au shell " +#~ "d'oublier\n" +#~ " les chemins mémorisés pour le NAME. Si l'option « -t » est fournie, le " +#~ "chemin\n" +#~ " complet auquel correspond chaque NAME est affiché. Si plusieurs NAME " +#~ "sont fournis\n" +#~ " à l'option « -t », le NAME est affiché avant chemin complet haché. " +#~ "L'option\n" +#~ " « -l » permet d'utiliser un format de sortie qui peut être réutilisé " +#~ "comme entrée.\n" +#~ " Si aucun argument n'est donné, des informations sur les commandes " +#~ "mémorisées sont\n" #~ " affichées." #~ msgid "" @@ -5594,75 +6324,120 @@ msgstr "" #~ " a short usage synopsis." #~ msgstr "" #~ "Affiche des informations utiles sur les commandes intégrées. Si MOTIF\n" -#~ " est précisé, une aide détaillée sur toutes les commandes correspondant\n" +#~ " est précisé, une aide détaillée sur toutes les commandes " +#~ "correspondant\n" #~ " au MOTIF sont affichées, sinon une liste des commandes intégrées est\n" #~ " fournie. L'option « -s » restreint l'affichage de chaque commande\n" #~ " correspondant au MOTIF à une courte description sur l'utilisation." #~ 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" +#~ " 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." +#~ " 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 "" -#~ "Par défaut, enlève tous les arguments JOBSPEC de la table des tâches actives.\n" -#~ " Si l'option « -h » est fournie, la tâche n'est pas retirée de la table mais\n" -#~ " est marquée de telle sorte que le signal SIGHUP ne lui soit pas envoyé quand\n" -#~ " le shell reçoit un SIGHUP. Lorsque JOBSPEC n'est pas fournie, l'option « -a »,\n" -#~ " permet d'enlever toutes les tâches de la table des tâches. L'option « -r »\n" +#~ "Par défaut, enlève tous les arguments JOBSPEC de la table des tâches " +#~ "actives.\n" +#~ " Si l'option « -h » est fournie, la tâche n'est pas retirée de la table " +#~ "mais\n" +#~ " est marquée de telle sorte que le signal SIGHUP ne lui soit pas " +#~ "envoyé quand\n" +#~ " le shell reçoit un SIGHUP. Lorsque JOBSPEC n'est pas fournie, " +#~ "l'option « -a »,\n" +#~ " permet d'enlever toutes les tâches de la table des tâches. L'option « -" +#~ "r »\n" #~ " indique de ne retirer que les tâches en cours de fonctionnement." #~ msgid "" -#~ "One line is read from the standard input, or from file descriptor FD if the\n" -#~ " -u option is supplied, and the first word is assigned to the first NAME,\n" -#~ " the second word to the second NAME, and so on, with leftover words assigned\n" -#~ " to the last NAME. Only the characters found in $IFS are recognized as word\n" -#~ " delimiters. If no NAMEs are supplied, the line read is stored in the REPLY\n" -#~ " variable. If the -r option is given, this signifies `raw' input, and\n" -#~ " backslash escaping is disabled. The -d option causes read to continue\n" -#~ " until the first character of DELIM is read, rather than newline. If the -p\n" -#~ " option is supplied, the string PROMPT is output without a trailing newline\n" -#~ " before attempting to read. If -a is supplied, the words read are assigned\n" -#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied and\n" -#~ " the shell is interactive, readline is used to obtain the line. If -n is\n" +#~ "One line is read from the standard input, or from file descriptor FD if " +#~ "the\n" +#~ " -u option is supplied, and the first word is assigned to the first " +#~ "NAME,\n" +#~ " the second word to the second NAME, and so on, with leftover words " +#~ "assigned\n" +#~ " to the last NAME. Only the characters found in $IFS are recognized " +#~ "as word\n" +#~ " delimiters. If no NAMEs are supplied, the line read is stored in the " +#~ "REPLY\n" +#~ " variable. If the -r option is given, this signifies `raw' input, " +#~ "and\n" +#~ " backslash escaping is disabled. The -d option causes read to " +#~ "continue\n" +#~ " until the first character of DELIM is read, rather than newline. If " +#~ "the -p\n" +#~ " option is supplied, the string PROMPT is output without a trailing " +#~ "newline\n" +#~ " before attempting to read. If -a is supplied, the words read are " +#~ "assigned\n" +#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied " +#~ "and\n" +#~ " the shell is interactive, readline is used to obtain the line. If -n " +#~ "is\n" #~ " supplied with a non-zero NCHARS argument, read returns after NCHARS\n" #~ " characters have been read. The -s option causes input coming from a\n" #~ " terminal to not be echoed.\n" #~ " \n" -#~ " The -t option causes read to time out and return failure if a complete line\n" -#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable is set,\n" -#~ " its value is the default timeout. The return code is zero, unless end-of-file\n" -#~ " is encountered, read times out, or an invalid file descriptor is supplied as\n" +#~ " The -t option causes read to time out and return failure if a " +#~ "complete line\n" +#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable " +#~ "is set,\n" +#~ " its value is the default timeout. The return code is zero, unless " +#~ "end-of-file\n" +#~ " is encountered, read times out, or an invalid file descriptor is " +#~ "supplied as\n" #~ " the argument to -u." #~ msgstr "" -#~ "Une ligne est lue depuis l'entrée standard ou depuis le descripteur de fichier\n" -#~ " FD si l'option « -u » est fournie. Le premier mot est affecté au premier NAME,\n" -#~ " le second mot au second NAME, et ainsi de suite, les mots restants étant affectés\n" -#~ " au dernier NAME. Seuls les caractères situés dans « $IFS » sont reconnus comme\n" -#~ " étant des délimiteurs de mots. Si aucun NAME n'est fourni, la ligne est conservée\n" -#~ " dans la variable REPLY. L'option « -r » signifie « entrée brute » et la neutralisation \n" -#~ " par barre oblique inverse est désactivée. L'option « -d » indique de continuer\" la lecture jusqu'à ce que le premier caractère de DELIM soit lu plutôt que\n" -#~ " le retour à la ligne. Si « -p » est fourni, la chaîne PROMPT est affichée\n" -#~ " sans retour à la ligne final avant la tentative de lecture. Si « -a » est fourni,\n" -#~ " les mots lus sont affectés en séquence aux indices du TABLEAU, en commençant\n" -#~ " à zéro. Si « -e » est fourni et que le shell est interactif, « readline » est\n" -#~ " utilisé pour obtenir la ligne. Si « -n » est fourni avec un argument NCHARS non nul,\n" -#~ " « read » se termine après que NCHARS caractères ont été lus. L'option « -s »\n" +#~ "Une ligne est lue depuis l'entrée standard ou depuis le descripteur de " +#~ "fichier\n" +#~ " FD si l'option « -u » est fournie. Le premier mot est affecté au " +#~ "premier NAME,\n" +#~ " le second mot au second NAME, et ainsi de suite, les mots restants " +#~ "étant affectés\n" +#~ " au dernier NAME. Seuls les caractères situés dans « $IFS » sont " +#~ "reconnus comme\n" +#~ " étant des délimiteurs de mots. Si aucun NAME n'est fourni, la ligne " +#~ "est conservée\n" +#~ " dans la variable REPLY. L'option « -r » signifie « entrée brute » et la " +#~ "neutralisation \n" +#~ " par barre oblique inverse est désactivée. L'option « -d » indique de " +#~ "continuer\" la lecture jusqu'à ce que le premier caractère de DELIM " +#~ "soit lu plutôt que\n" +#~ " le retour à la ligne. Si « -p » est fourni, la chaîne PROMPT est " +#~ "affichée\n" +#~ " sans retour à la ligne final avant la tentative de lecture. Si « -a » " +#~ "est fourni,\n" +#~ " les mots lus sont affectés en séquence aux indices du TABLEAU, en " +#~ "commençant\n" +#~ " à zéro. Si « -e » est fourni et que le shell est interactif, « readline " +#~ "» est\n" +#~ " utilisé pour obtenir la ligne. Si « -n » est fourni avec un argument " +#~ "NCHARS non nul,\n" +#~ " « read » se termine après que NCHARS caractères ont été lus. L'option « " +#~ "-s »\n" #~ " permet aux données venant d'un terminal de ne pas être répétées.\n" #~ " \n" -#~ " L'option « -t » permet à « read » de se terminer avec une erreur si une ligne\n" -#~ " entière de données ne lui a pas été fournie avant le DÉLAI d'expiration. Si la\n" -#~ " variable TMOUT est définie, sa valeur est le délai d'expiration par défaut. Le code\n" -#~ " de retour est zéro à moins qu'une fin de fichier ne soit rencontrée, que « read »\n" -#~ " atteigne le délai d'expiration ou qu'un descripteur de fichier incorrect ne soit\n" +#~ " L'option « -t » permet à « read » de se terminer avec une erreur si une " +#~ "ligne\n" +#~ " entière de données ne lui a pas été fournie avant le DÉLAI " +#~ "d'expiration. Si la\n" +#~ " variable TMOUT est définie, sa valeur est le délai d'expiration par " +#~ "défaut. Le code\n" +#~ " de retour est zéro à moins qu'une fin de fichier ne soit rencontrée, " +#~ "que « read »\n" +#~ " atteigne le délai d'expiration ou qu'un descripteur de fichier " +#~ "incorrect ne soit\n" #~ " fourni pour l'argument « -u »." #~ 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 "" -#~ "Permet à une fonction de se terminer avec le code de retour spécifié par N.\n" +#~ "Permet à une fonction de se terminer avec le code de retour spécifié par " +#~ "N.\n" #~ " Si N est omis, le code de retour est celui de la dernière commande." #~ msgid "" @@ -5674,9 +6449,12 @@ msgstr "" #~ msgstr "" #~ "Pour chaque NAME, supprime la variable ou la fonction correspondante.\n" #~ " En spécifiant « -v », « unset » agira seulement sur les variables.\n" -#~ " Avec l'option « -f », « unset » n'agit que sur les fonctions. Sans option,\n" -#~ " « unset » essaye d'abord de supprimer une variable et, s'il échoue, essaye\n" -#~ " de supprimer une fonction. Certaines variables ne peuvent pas être supprimées.\n" +#~ " Avec l'option « -f », « unset » n'agit que sur les fonctions. Sans " +#~ "option,\n" +#~ " « unset » essaye d'abord de supprimer une variable et, s'il échoue, " +#~ "essaye\n" +#~ " de supprimer une fonction. Certaines variables ne peuvent pas être " +#~ "supprimées.\n" #~ " Consultez aussi « readonly ». " #~ msgid "" @@ -5689,27 +6467,38 @@ msgstr "" #~ " processing." #~ msgstr "" #~ "Les NAME sont marqués pour export automatique vers l'environnement des\n" -#~ " prochaines commandes exécutées. si l'option « -f » est donnée, les NAME\n" +#~ " prochaines commandes exécutées. si l'option « -f » est donnée, les " +#~ "NAME\n" #~ " se rapportent à des fonctions. Si aucun NAME n'est donné ou si « -p »\n" -#~ " est fourni, la liste de tous les NAME exportés dans ce shell s'affiche.\n" -#~ " L'argument « -n » permet de supprimer la propriété d'export des NAME qui\n" -#~ " suivent. L'argument « -- » désactive le traitement des options suivantes." +#~ " est fourni, la liste de tous les NAME exportés dans ce shell " +#~ "s'affiche.\n" +#~ " L'argument « -n » permet de supprimer la propriété d'export des NAME " +#~ "qui\n" +#~ " suivent. L'argument « -- » désactive le traitement des options " +#~ "suivantes." #~ 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" +#~ " 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 "" -#~ "Les NAME donnés sont marqués pour lecture seule et les valeurs de ces NAME\n" -#~ " ne peuvent plus être changés par affection. Si l'option « -f » est donnée,\n" -#~ " les fonctions correspondant aux NAME sont marquées de la sorte. Si aucun\n" -#~ " argument n'est donné ou si « -p » est fourni, la liste de tous les noms\n" -#~ " en lecture seule est affichée. L'option « -a » indique de traiter tous les\n" -#~ " NAME comme des variables tableaux. L'argument « -- » désactive le traitement\n" +#~ "Les NAME donnés sont marqués pour lecture seule et les valeurs de ces " +#~ "NAME\n" +#~ " ne peuvent plus être changés par affection. Si l'option « -f » est " +#~ "donnée,\n" +#~ " les fonctions correspondant aux NAME sont marquées de la sorte. Si " +#~ "aucun\n" +#~ " argument n'est donné ou si « -p » est fourni, la liste de tous les " +#~ "noms\n" +#~ " en lecture seule est affichée. L'option « -a » indique de traiter tous " +#~ "les\n" +#~ " NAME comme des variables tableaux. L'argument « -- » désactive le " +#~ "traitement\n" #~ " des option suivantes." #~ msgid "" @@ -5724,8 +6513,10 @@ msgstr "" #~ " signal. The `-f' if specified says not to complain about this\n" #~ " being a login shell if it is; just suspend anyway." #~ msgstr "" -#~ "Suspend l'exécution de ce shell jusqu'à ce qu'il reçoive le signal SIGCONT.\n" -#~ " Si « -f » est spécifié, il indique de ne pas se plaindre s'il s'agit d'un \n" +#~ "Suspend l'exécution de ce shell jusqu'à ce qu'il reçoive le signal " +#~ "SIGCONT.\n" +#~ " Si « -f » est spécifié, il indique de ne pas se plaindre s'il s'agit " +#~ "d'un \n" #~ " shell de connexion, mais de suspendre quand-même." #~ msgid "" @@ -5739,60 +6530,83 @@ msgstr "" #~ "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" +#~ " 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" +#~ " 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" +#~ " 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 "" -#~ "Indique comment chaque NAME serait interprété s'il était utilisé comme un\n" +#~ "Indique comment chaque NAME serait interprété s'il était utilisé comme " +#~ "un\n" #~ " nom de commande.\n" #~ " \n" #~ " Si l'option « -t » est utilisée, « type » affiche un simple mot parmi\n" #~ " « alias », « keyword », « function », « builtin », « file » ou « », si\n" -#~ " NAME est respectivement un alias, un mot réservé du shell, une fonction\n" +#~ " NAME est respectivement un alias, un mot réservé du shell, une " +#~ "fonction\n" #~ " du shell, une primitive, un fichier du disque, ou s'il est inconnu.\n" #~ " \n" -#~ " Si l'indicateur « -p » est utilisé, « type » renvoie soit le nom du fichier\n" -#~ " du disque qui serait exécuté, soit rien si « type -t NAME » ne retourne pas\n" +#~ " Si l'indicateur « -p » est utilisé, « type » renvoie soit le nom du " +#~ "fichier\n" +#~ " du disque qui serait exécuté, soit rien si « type -t NAME » ne " +#~ "retourne pas\n" #~ " « file ».\n" #~ " \n" -#~ " Si « -a » est utilisé, « type » affiche tous les emplacements qui contiennent\n" -#~ " un exécutable nommé « file ». Ceci inclut les alias, les primitives et les\n" +#~ " Si « -a » est utilisé, « type » affiche tous les emplacements qui " +#~ "contiennent\n" +#~ " un exécutable nommé « file ». Ceci inclut les alias, les primitives et " +#~ "les\n" #~ " fonctions si, et seulement si « -p » n'est pas également utilisé.\n" #~ " \n" -#~ " L'indicateur « -P » force une recherche dans PATH pour chaque NAME même\n" -#~ " si c'est un alias, une primitive ou une fonction et renvoie le nom du\n" +#~ " L'indicateur « -P » force une recherche dans PATH pour chaque NAME " +#~ "même\n" +#~ " si c'est un alias, une primitive ou une fonction et renvoie le nom " +#~ "du\n" #~ " fichier du disque qui serait exécuté." #~ 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" +#~ " `-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" +#~ " interpreted as an octal number, otherwise it is a symbolic mode " +#~ "string\n" #~ " like that accepted by chmod(1)." #~ msgstr "" -#~ "Le masque de création des fichiers utilisateurs est réglé à MODE. Si MODE\n" -#~ " est omis ou si « -S » est fourni, la valeur actuelle du masque est affichée\n" -#~ " L'option « -S » rend la sortie symbolique, sinon une valeur octale est\n" -#~ " est utilisée. Si « -p » est fourni et que MODE est omis, la sortie se fait\n" -#~ " dans un format qui peut être réutilisé comme entrée. Si MODE commence par\n" -#~ " un chiffre, il est interprété comme un nombre octal, sinon comme une chaîne\n" +#~ "Le masque de création des fichiers utilisateurs est réglé à MODE. Si " +#~ "MODE\n" +#~ " est omis ou si « -S » est fourni, la valeur actuelle du masque est " +#~ "affichée\n" +#~ " L'option « -S » rend la sortie symbolique, sinon une valeur octale " +#~ "est\n" +#~ " est utilisée. Si « -p » est fourni et que MODE est omis, la sortie se " +#~ "fait\n" +#~ " dans un format qui peut être réutilisé comme entrée. Si MODE commence " +#~ "par\n" +#~ " un chiffre, il est interprété comme un nombre octal, sinon comme une " +#~ "chaîne\n" #~ " symbolique de mode comme celle utilisée par « chmod(1) »." #~ msgid "" @@ -5825,23 +6639,38 @@ msgstr "" #~ " settable options is displayed, with an indication of whether or\n" #~ " not each is set." #~ msgstr "" -#~ "Commute la valeur des variables qui contrôlent les comportements optionnels.\n" -#~ " L'option « -s » indique d'activer chaque option nommée OPTNAME. L'option\n" -#~ " « -u » désactive l'option OPTNAME. L'option « -q » rend la sortie silencieuse.\n" -#~ " Le code de retour indique si chaque OPTNAME est activée ou désactivée.\n" -#~ " L'option « -o » restreint les options OPTNAME à celles qui peuvent être utilisées avec\n" -#~ " « set -o ». Sans option ou avec l'option « -p », une liste de toutes les\n" -#~ " options modifiables est affichée, avec une indication sur l'état de chacune." +#~ "Commute la valeur des variables qui contrôlent les comportements " +#~ "optionnels.\n" +#~ " L'option « -s » indique d'activer chaque option nommée OPTNAME. " +#~ "L'option\n" +#~ " « -u » désactive l'option OPTNAME. L'option « -q » rend la sortie " +#~ "silencieuse.\n" +#~ " Le code de retour indique si chaque OPTNAME est activée ou " +#~ "désactivée.\n" +#~ " L'option « -o » restreint les options OPTNAME à celles qui peuvent " +#~ "être utilisées avec\n" +#~ " « set -o ». Sans option ou avec l'option « -p », une liste de toutes " +#~ "les\n" +#~ " options modifiables est affichée, avec une indication sur l'état de " +#~ "chacune." #~ 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." +#~ " 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 "" #~ "Pour chaque NAME, spécifie comment les arguments doivent être complétés.\n" -#~ " Si l'option « -p » est fournie ou si aucune option n'est fournie, les spécifications\n" -#~ " de complètement actuelles sont affichées de manière à pouvoir être réutilisées\n" -#~ " comme entrée. L'option « -r » enlève la spécification de complètement pour chaque\n" -#~ " NAME ou, si aucun NAME n'est fourni, toutes les spécifications de complètement." +#~ " Si l'option « -p » est fournie ou si aucune option n'est fournie, les " +#~ "spécifications\n" +#~ " de complètement actuelles sont affichées de manière à pouvoir être " +#~ "réutilisées\n" +#~ " comme entrée. L'option « -r » enlève la spécification de complètement " +#~ "pour chaque\n" +#~ " NAME ou, si aucun NAME n'est fourni, toutes les spécifications de " +#~ "complètement." diff --git a/po/ga.gmo b/po/ga.gmo index 545930156..9cd3ef35e 100644 Binary files a/po/ga.gmo and b/po/ga.gmo differ diff --git a/po/ga.po b/po/ga.po index 3ad0539f7..1b2692cea 100644 --- a/po/ga.po +++ b/po/ga.po @@ -7,14 +7,14 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2009-09-24 23:08+0100\n" "Last-Translator: Séamus Ó Ciardhuáin \n" "Language-Team: Irish \n" -"Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ga\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n" @@ -22,23 +22,23 @@ msgstr "" msgid "bad array subscript" msgstr "droch-fhoscript eagair" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, 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:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -49,22 +49,22 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: ní féidir cruthú: %s" -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ní \" é an chéad charachtar nach spás bán é." -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "Níl \"%c\" dúnta i %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: deighilteoir idirstaid ar iarraidh" @@ -130,7 +130,7 @@ msgstr "" msgid "HOME not set" msgstr "Níl HOME socruithe" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "An iomarca argóintí" @@ -153,7 +153,7 @@ msgstr "rabhadh: " msgid "%s: usage: " msgstr "%s: úsáid: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: tá argóint riachtanach don rogha" @@ -168,7 +168,7 @@ msgstr "%s: argóint uimhriúil de dhíth" msgid "%s: not found" msgstr "%s: gan aimsiú" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: rogha neamhbhailí" @@ -191,7 +191,7 @@ msgstr "uimhir ochtnártha neamhbhailí" msgid "invalid hex number" msgstr "uimhir heicsidheachúlach neamhbhailí" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "uimhir neamhbhailí" @@ -302,25 +302,35 @@ msgstr "" msgid "not currently executing completion function" msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "Inúsáidte i bhfeidhmeanna amháin. " -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "Ní féidir \"-f\" a úsáid chun feidhmeanna a dhéanamh" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: feidhm inléite amháin" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -350,23 +360,23 @@ msgstr "%s: níl sé luchtaithe go dinimiciúil" msgid "%s: cannot delete: %s" msgstr "%s: ní féidir scrios: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: is comhadlann é" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ní gnáthchomhad é" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: tá an comhad ró-mhór" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ní féidir comhad dénártha a rith" @@ -462,7 +472,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: ní féidir oscailt: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -504,16 +514,16 @@ msgstr "%s: theip ar inlib" msgid "no other options allowed with `-x'" msgstr "Níl roghanna eile ceadaithe le \"-x\"" -#: builtins/kill.def:198 +#: 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" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Earráid neamhaithnid" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "Ag súil le slonn" @@ -522,64 +532,64 @@ msgstr "Ag súil le slonn" msgid "%s: not an indexed array" msgstr "%s: ní athróg eagair é" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: comhaireamh neamhbhailí línte" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: bunphointe neamhbhailí eagair" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: candam neamhbhailí aisghlaoigh" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "ainm folamh athróga eagair" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "tacaíocht le hathróga eagair de dhíth" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": carachtar formáide ar iarraidh." -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carachtar formáide neamhbhailí." -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "rabhadh: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" @@ -588,19 +598,24 @@ msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" msgid "no other directory" msgstr "Níl comhadlann eile ann" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: argóint teorann neamhbhailí" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "cruach fholamh chomhadlainne" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "innéacs cruaiche comhadlainne" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -624,7 +639,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -649,7 +664,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -670,12 +685,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "earráid léite: %d: %s" @@ -685,26 +700,26 @@ 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\"" -#: builtins/set.def:771 +#: builtins/set.def:782 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:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: ní féidir díshocrú" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ní féidir díshocrú: %s inléite amháin" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: ní athróg eagair é" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ní feidhm é." @@ -713,11 +728,11 @@ msgstr "%s: ní feidhm é." msgid "shift count" msgstr "comhaireamh iomlaoide" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 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:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ainm neamhbhailí ar rogha blaoisce" @@ -842,128 +857,128 @@ msgstr "drochléim" msgid "%s: unbound variable" msgstr "%s: athróg neamhcheangailte" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "FORMÁID_AMA: \"%c\": carachtar formáide neamhbhaií." -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "earráid phíopa" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: níor aimsíodh an t-ordú" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "Tá %s %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: drochléirmhínitheoir" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ní féidir comhad dénártha a rith" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "Is ordú ionsuite blaoisce é %s\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, 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:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "imithe thar leibhéal athchursála sloinn" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "gannsreabhadh na cruaiche athchúrsála" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "Earráid chomhréire sa slonn." -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "Deineadh iarracht sannadh go rud nach athróg é." -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "roinnt ar 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "fabht: droch-chomhartha expassign" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh." -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "Easpónant níos lú ná 0." -#: expr.c:948 +#: expr.c:957 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:973 +#: expr.c:983 msgid "missing `)'" msgstr "\")\" ar iarraidh" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "earráid chomhréire: oibreoir neamhbhailí uimhríochta" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (comhartha earráide \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "Bonnuimhir uimhríochtúil neamhbhailí." -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "Tá an luach rómhór don bhonnuimhir." -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: earráid sloinn\n" @@ -972,169 +987,169 @@ msgstr "%s: earráid sloinn\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, 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:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid " "nua %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp píopa" -#: jobs.c:891 +#: jobs.c:892 #, 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" -#: jobs.c:1009 +#: jobs.c:1010 #, 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." -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: próiseas %5ld (%s) sa phíblíne" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Comhartha %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Déanta" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stoptha" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Stoptha(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Ag Rith" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Déanta(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Scoir %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Stádas neamhaithnid" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(cuimhne dumpáilte)" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (comhadlann oibre: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid macphróisis (%ld go %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: níl taifead den phróiseas %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: tá an jab %d stoptha." -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: tá an jab críochnaithe." -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: tá an jab %d sa chúlra cheana." -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: líne %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (cuimhne dumpáilte)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(comhadlann oibre anois: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: theip ar getpgrp" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: araíonacht líne" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ní féidir grúpa próisis teirminéil a shocrú (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "Níl rialú jabanna sa bhlaosc seo." @@ -1156,50 +1171,50 @@ msgstr "" msgid "unknown" msgstr "neamhaithnid" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc ar an liosta saor scriosta" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: glaoite le argóint bhloic á saoradh cheana" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: ní ionann méideanna na smután túis agus deiridh" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: an bhfuil an tábla leithdháilte lán le FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" "register_alloc: an bhfuil %p sa tábla mar atá sé leithdháilte cheana?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: an bhfuil %p sa tábla cheana mar ceann saor?\n" @@ -1247,15 +1262,15 @@ msgstr "xrealloc: %s:%d: ní féidir %lu beart a leithdháileadh" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: ní féidir %lu beart a leithdháileadh" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Tá ríomhphost agat i $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Tá ríomhphost nua agat i $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Tá an ríomhphost i %s léite\n" @@ -1290,107 +1305,107 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: ordú atreoraithe \"%d\" as raon." -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg." -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg." -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "Earráid chomhréire i slonn coinníollach: comhartha \"%s\" gan suil leis." -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "Earráid chomhréire i slonn coinníollach." -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Comhartha \"%s\" gan súil leis; ag súil le \")\"." -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "Ag súil le \")\"" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach." -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "Comhartha \"%s\" gan súil leis. Bhíothas ag súil le hoibreoir coinníollach " "dénártha." -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "Argóint \"%s\" gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "Comhartha \"%c\" gan súil leis in ordú coinníollach." -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach." -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "Comhartha %d gan súil leis in ordú coinníollach." -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" "Earráid chomhréire in aice comhartha \"%s\" nach rabhthas ag súil leis." -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "Earráid chomhréire in aice \"%s\"" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "Earráid chomhréire" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Úsáid \"%s\" le scoir den mblaosc.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "Deireadh comhaid gan súil leis agus \")\" á lorg le meaitseáil." -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "Iomlánú: níor aimsíodh an fheidhm \"%s\"." @@ -1419,71 +1434,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carachtar formáide neamhbhailí" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "tuairisceoir comhaid as raon" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: atreorú athbhríoch" -#: redir.c:182 +#: redir.c:181 #, 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:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: srianta: ní féidir aschur a atreorú." -#: redir.c:192 +#: redir.c:191 #, 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:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: redir.c:548 +#: redir.c:582 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:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: rogha neamhbhailí" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Níl ainm orm!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, leagan %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1492,43 +1507,44 @@ msgstr "" "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Roghanna fada GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Roghanna blaoisce:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nó -o rogha\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Úsáid %s -c \"help set\" le haghaidh tuilleadh eolais faoi roghanna " "blaoisce.\n" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Úsáid \"%s -c help\" le haghaidh tuilleadh eolais faoi orduithe ionsuite " "blaoisce.\n" -#: shell.c:1838 +#: shell.c:1858 #, 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" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: oibríocht neamhbhailí" @@ -1702,132 +1718,137 @@ msgstr "Comhartha neamhaithnid #" msgid "Unknown Signal #%d" msgstr "Comhartha neamhaithnid #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Drochionadú: níl \"%s\" dúnta i %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh léamh." -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa." -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d." -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:5351 +#: subst.c:5330 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:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: slonn fotheaghráin < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: drochionadú" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ní féidir sannadh mar seo." -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "drochionadú: níl \"`\" dúnta i %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "gan meaitseáil: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "Bhíothas ag súil le hargóint." -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: ag súil le slonn slánuimhreach." -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "Ag súil le \")\"" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "Ag súil le \")\", ach fuarthas %s." -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: ag súil le hoibreoir aonártha." -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: ag súil le hoibreoir dénártha." -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "\"]\" ar iarraidh" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "Uimhir chomhartha neamhbhailí" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1835,72 +1856,82 @@ msgstr "" "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " "athsheoladh chugam féin." -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: droch-chomhartha %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "Earráid agus sainmhíniú na feidhme \"%s\" á iompórtáil." -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 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:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: ní féidir liosta a shannadh go ball eagair." + +#: variables.c:3554 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:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, 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:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "Níl \"=\" sa teaghrán easpórtála le haghaidh %s." -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: níl comhthéacs global_variables ann" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ní féidir oscailt: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s as raon" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Cóipcheart © 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1908,37 +1939,23 @@ msgstr "" "Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, leagan %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Is saorbhogearra é seo; tá cead agat é a athrú agus a dháileadh.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +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í.\n" -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Cóipcheart © 2009 Free Software Foundation, Inc." - -#: version2.c:87 -#, fuzzy, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2017,7 +2034,7 @@ msgstr "command [-pVv] ORDÚ [ARGÓINT ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [ainm[=luach] ...]" #: builtins.c:78 @@ -2130,7 +2147,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o ainm-rogha] [argóint ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [ainm ...]" #: builtins.c:144 @@ -2189,12 +2207,13 @@ msgstr "umask [-p] [-S] [mód]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [aitheantas]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [aitheantas_próisis]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [aitheantas]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2667,6 +2686,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2682,10 +2702,11 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2695,7 +2716,8 @@ msgstr "" " \n" " Imithe i léig. Feic \"help declare\"." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2706,8 +2728,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Sainigh athróga logánta.\n" " \n" @@ -2725,7 +2747,7 @@ msgstr "" "earráid,\n" " nó mura bhfuil an bhlaosc ag rith feidhme." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2788,7 +2810,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach i gcás earráide scríofa." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2810,7 +2832,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath ach i gcás earráide scríofa." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2837,7 +2859,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2857,7 +2879,7 @@ msgstr "" " Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach " "é." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2898,7 +2920,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2921,7 +2943,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2933,7 +2955,7 @@ msgstr "" " Scoireann den bhlaosc le stádas N. Má fhágtar N ar lár, is é stádas\n" " an chéad ordaithe deireanaigh an stádas scortha." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2946,7 +2968,7 @@ msgstr "" " Scoireann de bhlaosc logála isteach le stádas scortha N. Aischuirtear\n" " earráid má ritear é i mblaosc nach blaosc logála isteach í." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3001,7 +3023,7 @@ msgstr "" " Stádas Scortha:n\\ Aischuirtear rath nó stádas an ordaithe rite; " "neamh-nialas má tharlaíonn earráid." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3022,7 +3044,7 @@ msgstr "" " Stádas Scortha:\n" " Stádas an ordaithe curtha sa tulra, nó teip má tharlaíonn earráid." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3046,7 +3068,7 @@ msgstr "" " Aischuirtear rath ach má tharlaíonn earráid nó mura bhfuil\n" " rialú jabanna cumasaithe." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3070,7 +3092,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3111,7 +3133,7 @@ msgstr "" " Aischuirtear rath ach sa chás nach n-aimsítear PATRÚN nó go dtugtar\n" " rogha neamhbhailí." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3145,7 +3167,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3169,7 +3191,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3200,7 +3222,7 @@ msgstr "" " Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí\n" " nó SONRÚ_JAB neamhbhailí." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3222,7 +3244,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3267,7 +3289,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3302,7 +3324,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3318,7 +3340,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3340,7 +3362,7 @@ msgstr "" " Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " "nó scripte." -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3425,7 +3447,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3434,6 +3456,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3445,7 +3469,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3464,7 +3488,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3484,7 +3508,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3495,7 +3519,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3509,7 +3533,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3523,7 +3547,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3588,6 +3612,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3604,7 +3630,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3617,7 +3643,7 @@ msgstr "" " caithfear \"]\" go díreach a bheith ann mar an argóint\n" " dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3637,7 +3663,7 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3681,7 +3707,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3711,7 +3737,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3758,7 +3784,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3776,7 +3802,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3788,26 +3814,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3820,7 +3850,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3851,7 +3881,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3871,7 +3901,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3887,7 +3917,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3898,7 +3928,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3919,7 +3949,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3930,7 +3960,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3941,7 +3971,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3954,7 +3984,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3978,7 +4008,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear rath mura bhfuil AINM inléite amháin." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3996,7 +4026,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4010,7 +4040,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4021,7 +4051,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4049,7 +4079,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4103,7 +4133,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -4134,7 +4164,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4161,7 +4191,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -4190,7 +4220,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -4211,7 +4241,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4238,13 +4268,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4271,7 +4307,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4294,7 +4330,7 @@ msgstr "" " Aischuirtear rath mura thugtar rogha neamhbhailí agus mura tharlaíonn " "earráid." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4325,7 +4361,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4366,7 +4402,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4376,6 +4412,21 @@ msgstr "" " \n" " Comhchiallach le \"mapfile\"." +#, fuzzy +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Cóipcheart © 2009 Free Software Foundation, Inc." + +#, fuzzy +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [aitheantas_próisis]" + #~ 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 43ab72712..39e07dccf 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index aafca126f..396840599 100644 --- a/po/gl.po +++ b/po/gl.po @@ -13,36 +13,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-02-23 14:38+0100\n" "Last-Translator: Leandro Regueiro \n" "Language-Team: Galician \n" -"Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: non é posíbel converter a matriz de indizada a asociativa" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: índice de matriz asociativa non válido" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, 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:557 +#: arrayfunc.c:586 #, 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" @@ -52,23 +52,23 @@ msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa" msgid "%s: cannot create: %s" msgstr "%s: non foi posíbel crear: %s" -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "no hai un `%c' que peche en %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un `:' separador" @@ -134,7 +134,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME non está definido" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "demasiados argumentos" @@ -157,7 +157,7 @@ msgstr "aviso: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opción require un argumento" @@ -172,7 +172,7 @@ msgstr "%s: requírese un argumento numérico" msgid "%s: not found" msgstr "%s: non se atopou" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: opción non válida" @@ -195,7 +195,7 @@ msgstr "número octal non válido" msgid "invalid hex number" msgstr "número hexadecimal non válido" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "número non válido" @@ -304,25 +304,35 @@ msgstr "aviso: é posíbel que a opción -C non funcione como se espera" msgid "not currently executing completion function" msgstr "non se está executando a función de completado" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "só se pode usar dentro dunha función" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "non se pode use `-f' para facer funcións" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: función de só lectura" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: non é posíbel converter unha matriz asociativa a indizada" @@ -351,23 +361,23 @@ msgstr "%s: non foi cargado dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: non foi posíbel eliminar: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: é un directorio" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: non é un ficheiro regular" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: o ficheiro é demasiado grande" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: non é posíbel executar o ficheiro binario" @@ -454,15 +464,15 @@ msgstr[1] "Orde do shell que coincide coas palabras `" msgid "" "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" -"non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k " -"%s» ou «info %s»" +"non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k %s» " +"ou «info %s»" #: builtins/help.def:185 #, c-format msgid "%s: cannot open: %s" msgstr "%s: non foi posíbel abrir: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -505,16 +515,16 @@ msgstr "%s: fallou inlib" msgid "no other options allowed with `-x'" msgstr "non se permiten outras opcións con «-x»" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Erro descoñecido" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "agardábase unha expresión" @@ -523,64 +533,64 @@ msgstr "agardábase unha expresión" msgid "%s: not an indexed array" msgstr "%s: non é unha matriz indizada" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descritor de ficheiro non válida" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro non válido: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: conta de liñas non válida" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: orixe de matriz non válido" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de chamada non válido" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "nome de variábel de matriz baleiro" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "requírese a compatibilidade de variábel de matriz" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta o carácter de formato" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tempo non válida" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato non válido" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "falta o díxito hexadecimal para \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta o díxito unicode para \\%c" @@ -589,19 +599,24 @@ msgstr "falta o díxito unicode para \\%c" msgid "no other directory" msgstr "non hai outro directorio" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: límite de argumento non válido" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "a pila de directorios está baleira" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "índice da pila de directorios" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -645,7 +660,7 @@ msgstr "" "\tlista mostrada por dirs cando se chama sen opcións,\n" "\tcomezando desde cero." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -687,7 +702,7 @@ msgstr "" " \n" " A orde interna `dirs' mostra a rima de directorios." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -727,12 +742,12 @@ msgstr "" " \n" " A orde interna `dirs' mostra a pila de directorios." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificación de tempo de expiración non válida" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "erro de lectura: %d: %s" @@ -741,26 +756,26 @@ msgstr "erro de lectura: %d: %s" 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:771 +#: builtins/set.def:782 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:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: non é posíbel borrar" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: non é posíbel borrar: %s é de só lectura" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: non é unha variábel de matriz" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: non é unha función" @@ -769,11 +784,11 @@ msgstr "%s: non é unha función" msgid "shift count" msgstr "conta de shift" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opción do shell non válido" @@ -898,128 +913,128 @@ msgstr "salto erróneo" msgid "%s: unbound variable" msgstr "%s: variable sen asignar" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, 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:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato non válido" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "erro de canalización" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: non se atopou a orde" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: intérprete erróneo" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: non é posíbel executar o ficheiro binario" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s é unha orde interna do shell\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se pode duplicar o df %d ao df %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "excedeuse o nivel de recursión da expresión" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "desbordamento da base da pila de recursión" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "erro de sintaxe na expresión" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "tentouse asignar a algo que non é unha variábel" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "división entre 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "erro: elemento de asignación de expresión erróneo" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "agardábase `:' para a expresión condicional" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "expoñente menor que 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "agardábase un identificador despois do pre-incremento ou pre-decremento" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "erro de sintaxe: agardábase un operando" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético non válido" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (o elemento de erro é \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "base aritmética non válida" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "valor demasiado grande para a base" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expresión\n" @@ -1028,166 +1043,166 @@ msgstr "%s: erro de expresión\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: non é posíbel acceder aos directorios pai" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "non é posíbel restabelecer o modo nodelay para o df %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "save_bash_input: o almacenamento intermedio xa existe para o novo fd %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:891 +#: jobs.c:892 #, 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:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "borrando o trabajo detido %d con grupo de proceso %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: o proceso %5ld (%s) en the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: non existe tal pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Feito" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Detido" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Detido(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "En execución" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Saída %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Estado descoñecido" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(«core» xerado) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (dir agora: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid fillo (%ld a %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Non hai un rexistro do proceso %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: o traballo %d está detido" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: o traballo rematou" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabajo %d xa está en segundo plano" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: liña %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " («core» generado)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(dir agora: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: fallou getpgrp" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de liña" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "non hai control de trabalos nesta shell" @@ -1209,50 +1224,50 @@ msgstr "" msgid "unknown" msgstr "descoñecido" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque na lista libre sobreescrito" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: chamouse cun argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamouse cun argumento de bloque sen asignar" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 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:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: a táboa alloc está chea con FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p xa está na táboa como asignado?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p xa está na táboa como libre?\n" @@ -1301,15 +1316,15 @@ msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Ten mensaxes en $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Ten unha nova mensaxe en $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "O correo en %s foi lido\n" @@ -1336,111 +1351,111 @@ msgstr "make_here_document: tipo de instrución %d erróneo" #, 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')" +"o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `%" +"s')" #: make_cmd.c:759 #, 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:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado mentres se buscaba un `%c' coincidente" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado mentres se buscaba `]]'" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "error sintáctico na expresión condicional" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', agardábase `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "agardábase `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para o operador unario condicional" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para o operador unario condicional" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', agardábase un operador binario condicional" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "agardábase un operador binario condicional" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para o operador binario condicional" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para o operador binario condicional" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "elemento inesperado `%c' na orde condicional" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "elemento inesperado `%s' na orde condicional" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "elemento inesperado %d na orde condicional" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error de sintaxe perto do elemento inesperado `%s'" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe cerca de «%s»" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "error de sintaxe: non se agardaba o final do fichero" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use «%s» para deixar o shell.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non agardado mentres se buscaba un «)» coincidente" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: non se atopa a función `%s'" @@ -1469,71 +1484,71 @@ msgstr "xtrace_set: punteiro a ficheiro NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfich xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato non válido" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "descritor de ficheiro fóra de rango" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambigüo" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: non se pode sobreescribir un fichero existente" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrinxido: no se pode redirixir a saída" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: non é posíbel asignar o gd á variábel" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirección: non é posíbel duplicar o fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "non é posíbel atopar /tmp, por favor creeo!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nome de directorio válido" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción non válida" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Non teño nome!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1542,43 +1557,44 @@ 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:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Opcións GNU longas:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opcións do shell:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opción\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use a orden `bashbug' para reportar erros.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación non válida" @@ -1752,72 +1768,77 @@ msgstr "Sinal descoñecido #" msgid "Unknown Signal #%d" msgstr "Sinal descoñecido #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, 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:2801 +#: subst.c:2823 #, 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:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "non é posíbel crear a tubería para a sustitución do proceso" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "non é posíbel crear un proceso fillo para a substitución do proceso" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "non é posíbel abrir a tubería chamada %s para lectura" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "non é posíbel abrir a tubería chamada %s para escritura" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "non é posíbel duplicar a tubería chamada %s como df %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "non é posíble crear a tubería para a substitución da orde" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "non é posíbel crear un proceso fillo para a substitución da orde" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, 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:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo ou non estabelecido" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadea < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: substitución errónea" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: non é posíbel asignar de esta forma" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1825,58 +1846,58 @@ msgstr "" "versiones futuras do intérprete obligarán a evaluación como unha " "substitución aritmética" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitución errónea: non hai unha \"`\" que peche en %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "non hai concidencia: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "agardábase un argumento" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: agardábase unha expresión enteira" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "agardábase `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "`)' agardábase, atopouse %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: agardábase un operador unario" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: agardábase un operador binario" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "falta un «]»" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "número de sinal non válido" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1884,73 +1905,84 @@ msgstr "" "run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí " "mesmo" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errónea %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definición da función para «%s»" -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 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:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: non é posíbel asignar o gd á variábel" + +#: variables.c:3554 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:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s ten exportstr nulo" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter non válido %d en exportsrt para %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "non hai «=» en exportstr para %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: non é un contexto global_variables " -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: non é posíbel abrir como FICHEIRO" -#: variables.c:4826 +#: variables.c:5170 #, 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" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s fóra de rango" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1958,35 +1990,21 @@ msgstr "" "Licenza GPLv3+: GPL de GNU versión 3 ou posterior \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versión %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Isto é software libre; vostede é libre de cambialo e redistribuilo.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non hai GARANTÍA, á extensión permitida pola ley.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licenza GPLv2+: GPL de GNU versión 2 ou posterior \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2066,7 +2084,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] orde [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [nome[=valor] ...]" #: builtins.c:78 @@ -2174,7 +2193,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opción] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nome ...]" #: builtins.c:144 @@ -2232,12 +2252,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2732,6 +2753,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2747,10 +2769,11 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2760,7 +2783,8 @@ msgstr "" " \n" " Obsoleto. Consulte `help declare'." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2771,8 +2795,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" 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ábeis locais.\n" " \n" @@ -2786,7 +2810,7 @@ msgstr "" " Devolve con éxito a menos que se dea unha opción non válida, se produza\n" " un erro, ou o shell non estea executando unha función." -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2820,7 +2844,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2833,7 +2857,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2860,7 +2884,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2879,7 +2903,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado de saida da orde ou éxito se a orde é nula." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2920,7 +2944,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2943,7 +2967,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2955,7 +2979,7 @@ msgstr "" " Termina o shell cun estado de N. Se se omite N, o estado de saída\n" " é o mismo da última orde executada." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2968,7 +2992,7 @@ msgstr "" " Termina un shell de entrada cun estado de saída de N. Devolve un\n" " erro se non se executa nunha shell de entrada." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2998,7 +3022,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3019,7 +3043,7 @@ msgstr "" " O estado da orde localizada en primeiro plano, ou falla se sucede un " "erro." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3033,7 +3057,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3057,7 +3081,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3079,7 +3103,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3113,7 +3137,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3137,7 +3161,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3154,7 +3178,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3176,7 +3200,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3221,7 +3245,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3256,7 +3280,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3272,7 +3296,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3284,7 +3308,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3369,7 +3393,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3378,6 +3402,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3389,7 +3415,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3408,7 +3434,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3428,7 +3454,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3439,7 +3465,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3453,7 +3479,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3479,7 +3505,7 @@ msgstr "" " Devolve con éxito a menos que non estea activo o control de traballos o\n" " se produza un erro." -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3544,6 +3570,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3560,7 +3588,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3572,7 +3600,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:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3591,7 +3619,7 @@ msgstr "" " Estado de saída:\n" " Sempre con éxito." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3635,7 +3663,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3665,7 +3693,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3712,7 +3740,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3730,7 +3758,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -3743,6 +3771,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -3757,18 +3788,20 @@ 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:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID 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" @@ -3780,7 +3813,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:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3802,7 +3835,7 @@ msgstr "" " Estado de Saída:\n" " Devuelve o estado da última orden executada." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3832,7 +3865,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3852,7 +3885,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3868,7 +3901,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3886,7 +3919,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3907,7 +3940,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3925,7 +3958,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3943,7 +3976,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3965,7 +3998,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado de saída da ORDE." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3979,7 +4012,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3997,7 +4030,7 @@ msgstr "" " Estado de Saída:\n" " Devolve o estado da última orde executada." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4011,7 +4044,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4029,7 +4062,7 @@ msgstr "" " Estado de Saída:\n" " Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4057,7 +4090,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4111,7 +4144,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -4142,7 +4175,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4169,7 +4202,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -4198,7 +4231,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -4235,7 +4268,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:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4262,13 +4295,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4295,7 +4334,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4317,7 +4356,7 @@ msgstr "" " Devolve con éxito a menos que se forneza unha opción non válida o\n" " se produza un erro." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4348,7 +4387,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4389,7 +4428,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4398,3 +4437,16 @@ msgstr "" "Lee liñas dun fichero nunha variábel de matriz.\n" " \n" " Un sinónimo de `mapfile'." + +#~ 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 new file mode 100644 index 000000000..3113fe1e7 Binary files /dev/null and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index 17bfba895..8da7c6f08 100644 --- a/po/hr.po +++ b/po/hr.po @@ -7,61 +7,62 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-11-01 01:46+0100\n" "Last-Translator: Tomislav Krznar \n" "Language-Team: Croatian \n" -"Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"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" +"Language: hr\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.4\n" -#: arrayfunc.c:50 +#: arrayfunc.c:51 msgid "bad array subscript" msgstr "neispravan indeks polja" -#: arrayfunc.c:313 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ne mogu pretvoriti indeksirano u asocijativno polje" -#: arrayfunc.c:480 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neispravan ključ asocijativnog polja" -#: arrayfunc.c:482 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ne mogu pridružiti nenumeričkom indeksu" -#: arrayfunc.c:518 +#: arrayfunc.c:586 #, 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:387 +#: bashhist.c:388 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ne mogu napraviti: %s" -#: bashline.c:3498 +#: bashline.c:3923 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:3584 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak različit od praznine nije „\"”" -#: bashline.c:3613 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "nema zatvorene „%c” u %s" -#: bashline.c:3647 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: nedostaje dvotočje za razdvajanje" @@ -71,36 +72,36 @@ msgstr "%s: nedostaje dvotočje za razdvajanje" msgid "`%s': invalid alias name" msgstr "„%s”: neispravno drugo ime" -#: builtins/bind.def:120 builtins/bind.def:123 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "uređivanje redaka nije omogućeno" -#: builtins/bind.def:206 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "„%s”: neispravno ime tipkovničke mape" -#: builtins/bind.def:245 +#: builtins/bind.def:251 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ne mogu čitati: %s" -#: builtins/bind.def:260 +#: builtins/bind.def:266 #, c-format msgid "`%s': cannot unbind" msgstr "„%s”: ne mogu ukloniti vezu" -#: builtins/bind.def:295 builtins/bind.def:325 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "„%s”: nepoznato ime funkcije" -#: builtins/bind.def:303 +#: 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:307 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s se može pozvati pomoću " @@ -123,11 +124,15 @@ msgstr "" " \n" " Bez IZRAZA vraća " -#: builtins/cd.def:235 +#: builtins/cd.def:239 msgid "HOME not set" msgstr "HOME nije postavljen" -#: builtins/cd.def:247 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 +msgid "too many arguments" +msgstr "previÅ¡e argumenata" + +#: builtins/cd.def:258 msgid "OLDPWD not set" msgstr "OLDPWD nije postavljen" @@ -136,7 +141,7 @@ msgstr "OLDPWD nije postavljen" msgid "line %d: " msgstr "redak %d: " -#: builtins/common.c:139 error.c:261 +#: builtins/common.c:139 error.c:265 #, c-format msgid "warning: " msgstr "upozorenje: " @@ -146,11 +151,7 @@ msgstr "upozorenje: " msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "previÅ¡e argumenata" - -#: builtins/common.c:191 shell.c:500 shell.c:782 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcija zahtijeva argument" @@ -165,7 +166,7 @@ msgstr "%s: potreban je numerički argument" msgid "%s: not found" msgstr "%s: nije pronađen" -#: builtins/common.c:214 shell.c:795 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: neispravna opcija" @@ -175,7 +176,7 @@ msgstr "%s: neispravna opcija" msgid "%s: invalid option name" msgstr "%s: neispravno ime opcije" -#: builtins/common.c:228 general.c:231 general.c:236 +#: builtins/common.c:228 general.c:234 general.c:239 #, c-format msgid "`%s': not a valid identifier" msgstr "„%s”: nije ispravan identifikator" @@ -188,7 +189,7 @@ msgstr "neispravan oktalni broj" msgid "invalid hex number" msgstr "neispravan heksadekadski broj" -#: builtins/common.c:242 expr.c:1362 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "neispravan broj" @@ -202,7 +203,7 @@ msgstr "%s: neispravno naveden signal" msgid "`%s': not a pid or valid job spec" msgstr "„%s”: nije pid ili ispravno naveden zadatak" -#: builtins/common.c:264 error.c:454 +#: builtins/common.c:264 error.c:458 #, c-format msgid "%s: readonly variable" msgstr "%s: varijabla samo za čitanje" @@ -274,48 +275,58 @@ msgstr "%s: greÅ¡ka pri otkrivanju trenutnog direktorija: %s: %s\n" msgid "%s: ambiguous job spec" msgstr "%s: viÅ¡eznačan navod zadatka" -#: builtins/complete.def:276 +#: builtins/complete.def:277 #, c-format msgid "%s: invalid action name" msgstr "%s: neispravno ime radnje" -#: builtins/complete.def:449 builtins/complete.def:644 -#: builtins/complete.def:853 +#: builtins/complete.def:450 builtins/complete.def:645 +#: builtins/complete.def:855 #, c-format msgid "%s: no completion specification" msgstr "%s: nije navedeno nadopunjavanje" -#: builtins/complete.def:696 +#: builtins/complete.def:697 msgid "warning: -F option may not work as you expect" msgstr "upozorenje: opcija -F možda neće raditi kako želite" -#: builtins/complete.def:698 +#: builtins/complete.def:699 msgid "warning: -C option may not work as you expect" msgstr "upozorenje: opcija -C možda neće raditi kako želite" -#: builtins/complete.def:826 +#: builtins/complete.def:828 msgid "not currently executing completion function" msgstr "trenutno ne izvrÅ¡avam funkciju nadopunjavanja" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "može se koristiti samo u funkciji" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "ne mogu koristiti „-f” za izradu funkcija" -#: builtins/declare.def:378 execute_cmd.c:5105 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za čitanje" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ne mogu pretvoriti asocijativno u indeksirano polje" @@ -344,24 +355,23 @@ msgstr "%s: nije dinamički učitan" msgid "%s: cannot delete: %s" msgstr "%s: ne mogu ukloniti: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 -#: shell.c:1457 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: to je direktorij" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: nije obična datoteka" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 -#: shell.c:1467 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ne mogu izvrÅ¡iti binarnu datoteku" @@ -446,7 +456,8 @@ msgstr[2] "" #: builtins/help.def:168 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." msgstr "" #: builtins/help.def:185 @@ -454,7 +465,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: ne mogu otvoriti: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -474,7 +485,7 @@ msgstr "ne mogu koristiti viÅ¡e od jedne od opcija -anrw" msgid "history position" msgstr "mjesto u povijesti" -#: builtins/history.def:365 +#: builtins/history.def:366 #, c-format msgid "%s: history expansion failed" msgstr "%s: proÅ¡irenje povijesti nije uspjelo" @@ -488,16 +499,16 @@ msgstr "%s: inlib nije uspio" msgid "no other options allowed with `-x'" msgstr "nisu dozvoljene druge opcije uz „-x”" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nepoznata greÅ¡ka" -#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "očekujem izraz" @@ -506,64 +517,64 @@ msgstr "očekujem izraz" msgid "%s: not an indexed array" msgstr "%s: nije indeksirano polje" -#: builtins/mapfile.def:256 builtins/read.def:279 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neispravno naveden opisnik datoteke" -#: builtins/mapfile.def:264 builtins/read.def:286 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neispravan opisnik datoteke: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: neispravan broj redaka" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: neispravan izvor polja" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neispravan element povratnog poziva" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "prazno ime varijable polja" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "potrebna je podrÅ¡ka varijable polja" -#: builtins/printf.def:394 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s”: nedostaje znak oblika" -#: builtins/printf.def:448 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c”: neispravno naveden oblik vremena" -#: builtins/printf.def:635 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c”: neispravan znak oblika" -#: builtins/printf.def:662 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "upozorenje: %s: %s" -#: builtins/printf.def:840 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "nedostaje heksadekadska znamenka za \\x" -#: builtins/printf.def:855 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "nedostaje unicode znamenka za \\%c" @@ -572,19 +583,24 @@ msgstr "nedostaje unicode znamenka za \\%c" msgid "no other directory" msgstr "nema drugog direktorija" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: neispravan argument ograničenja" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "stog direktorija je prazan" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "indeks stoga direktorija" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -599,14 +615,16 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -631,7 +649,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -652,40 +670,40 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:252 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neispravno navedeno vremensko ograničenje" -#: builtins/read.def:588 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "greÅ¡ka čitanja: %d: %s" -#: builtins/return.def:73 +#: builtins/return.def:75 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:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "ne mogu istovremeno poniÅ¡titi funkciju i varijablu" -#: builtins/set.def:808 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: ne mogu poniÅ¡titi" -#: builtins/set.def:815 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ne mogu poniÅ¡titi: %s je samo za čitanje" -#: builtins/set.def:826 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: nije varijabla polja" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: nije funkcija" @@ -694,11 +712,11 @@ msgstr "%s: nije funkcija" msgid "shift count" msgstr "broj pomaka" -#: builtins/shopt.def:264 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "ne mogu istovremeno postaviti i poniÅ¡titi opcije ljuske" -#: builtins/shopt.def:329 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neispravno ime opcije ljuske" @@ -740,7 +758,7 @@ msgstr "%s je funkcija\n" msgid "%s is a shell builtin\n" msgstr "%s je ugrađen u ljusku\n" -#: builtins/type.def:317 builtins/type.def:391 +#: builtins/type.def:317 builtins/type.def:393 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" @@ -750,26 +768,26 @@ msgstr "%s je %s\n" msgid "%s is hashed (%s)\n" msgstr "%s je rasprÅ¡en (%s)\n" -#: builtins/ulimit.def:376 +#: builtins/ulimit.def:379 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neispravan argument ograničenja" -#: builtins/ulimit.def:402 +#: builtins/ulimit.def:405 #, c-format msgid "`%c': bad command" msgstr "„%c”: neispravna naredba" -#: builtins/ulimit.def:431 +#: builtins/ulimit.def:434 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ne mogu otkriti ograničenje: %s" -#: builtins/ulimit.def:457 +#: builtins/ulimit.def:460 msgid "limit" msgstr "ograničenje" -#: builtins/ulimit.def:469 builtins/ulimit.def:769 +#: builtins/ulimit.def:472 builtins/ulimit.def:772 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ne mogu urediti ograničenje: %s" @@ -788,7 +806,7 @@ 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:321 error.c:323 error.c:325 +#: error.c:90 error.c:325 error.c:327 error.c:329 msgid " line " msgstr " redak " @@ -802,133 +820,148 @@ msgstr "posljednja naredba: %s\n" msgid "Aborting..." msgstr "Prekidam..." -#: error.c:406 +#: error.c:410 msgid "unknown command error" msgstr "nepoznata greÅ¡ka naredbe" -#: error.c:407 +#: error.c:411 msgid "bad command type" msgstr "neispravna vrsta naredbe" -#: error.c:408 +#: error.c:412 msgid "bad connector" msgstr "" -#: error.c:409 +#: error.c:413 msgid "bad jump" msgstr "neispravan skok" -#: error.c:447 +#: error.c:451 #, c-format msgid "%s: unbound variable" msgstr "%s: nepovezana varijabla" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\avrijeme čekanja ulaza je isteklo: automatska-odjava\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "ne mogu preusmjeriti standardni ulaz iz /dev/null: %s" -#: execute_cmd.c:1168 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2121 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "greÅ¡ka cjevovoda" -#: execute_cmd.c:4640 +#: execute_cmd.c:4347 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograničeno: ne možete navesti „/” u imenu naredbe" -#: execute_cmd.c:4735 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronađena" -#: execute_cmd.c:4959 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:4995 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: neispravan tumač" -#: execute_cmd.c:5144 +#: execute_cmd.c:5234 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ne mogu izvrÅ¡iti binarnu datoteku" + +#: execute_cmd.c:5306 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s je ugrađen u ljusku\n" + +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ne mogu udvostručiti opisnik datoteke %d u opisnik datoteke %d" -#: expr.c:256 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "razina rekurzije izraza je prekoračena" -#: expr.c:280 +#: expr.c:286 msgid "recursion stack underflow" msgstr "podljev stoga rekurzije" -#: expr.c:422 +#: expr.c:434 msgid "syntax error in expression" msgstr "sintaksna greÅ¡ka u izrazu" -#: expr.c:463 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "pokuÅ¡aj pridruživanja ne-varijabli" -#: expr.c:486 expr.c:491 expr.c:807 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "dijeljenje s 0" -#: expr.c:517 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "greÅ¡ka: neispravan simbol expassign" -#: expr.c:564 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "očekujem „:” za uvjetni izraz" -#: expr.c:832 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponent je manji od 0" -#: expr.c:887 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:910 +#: expr.c:983 msgid "missing `)'" msgstr "nedostaje „)”" -#: expr.c:959 expr.c:1282 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "sintaksna greÅ¡ka: očekujem operand" -#: expr.c:1284 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksna greÅ¡ka: neispravan aritmetički operator" -#: expr.c:1308 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (simbol greÅ¡ke je „%s”)" -#: expr.c:1366 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "neispravna aritmetička baza" -#: expr.c:1386 +#: expr.c:1475 msgid "value too great for base" msgstr "vrijednost baze je prevelika" -#: expr.c:1435 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: greÅ¡ka izraza\n" @@ -937,163 +970,163 @@ msgstr "%s: greÅ¡ka izraza\n" msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:94 subst.c:5082 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:260 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:268 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:468 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:889 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "razdvojen pid %d se javlja u pokrenutom zadatku %d" -#: jobs.c:1007 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "uklanjam zaustavljeni zadatak %d s grupom procesa %ld" -#: jobs.c:1112 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) u the_pipeline" -#: jobs.c:1115 +#: jobs.c:1118 #, 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:1430 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ne postoji takav pid" -#: jobs.c:1445 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1459 jobs.c:1484 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Gotovo" -#: jobs.c:1464 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Zaustavljen" -#: jobs.c:1468 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljen(%s)" -#: jobs.c:1472 +#: jobs.c:1475 msgid "Running" msgstr "Pokrenut" -#: jobs.c:1486 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Gotovo(%d)" -#: jobs.c:1488 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Izlaz %d" -#: jobs.c:1491 +#: jobs.c:1494 msgid "Unknown status" msgstr "Nepoznato stanje" -#: jobs.c:1578 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(jezgra izbačena) " -#: jobs.c:1597 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1805 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2133 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld nije dijete ove ljuske" -#: jobs.c:2360 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ne postoji zapis o procesu %ld" -#: jobs.c:2637 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadatak %d je zaustavljen" -#: jobs.c:2859 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: zadatak je dovrÅ¡en" -#: jobs.c:2868 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadatak %d je već u pozadini" -#: jobs.c:3089 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3538 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: redak %d: " -#: jobs.c:3552 nojobs.c:814 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (jezgra izbačena)" -#: jobs.c:3564 jobs.c:3577 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(sadaÅ¡nji wd: %s)\n" -#: jobs.c:3609 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nije uspio" -#: jobs.c:3669 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3679 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3707 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ne mogu postaviti grupu procesa terminala (%d)" -#: jobs.c:3712 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "nema kontrole zadataka u ovoj ljusci" @@ -1113,54 +1146,54 @@ msgstr "" msgid "unknown" msgstr "nepoznato" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: pozvan s argumentom već oslobođenog bloka" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: pozvan s argumentom nealociranog bloka" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: otkriven podljev, mh_nbytes izvan granica" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: pozvan s argumentom nealociranog bloka" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: otkriven podljev, mh_nbytes izvan granica" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" -#: lib/sh/fmtulong.c:101 +#: lib/sh/fmtulong.c:102 msgid "invalid base" msgstr "neispravna baza" @@ -1183,35 +1216,35 @@ msgstr "%s: neispravno navedena mrežna putanja" msgid "network operations not supported" msgstr "mrežne operacije nisu podržane" -#: locale.c:192 +#: locale.c:204 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s)" -#: locale.c:194 +#: locale.c:206 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ne mogu promijeniti lokal (%s): %s" -#: locale.c:247 +#: locale.c:263 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ne mogu promijeniti lokal (%s)" -#: locale.c:249 +#: locale.c:265 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ne mogu promijeniti lokal (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Imate poÅ¡tu u $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Imate novu poÅ¡tu u $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta u %s je pročitana\n" @@ -1229,118 +1262,118 @@ msgstr "sintaksna greÅ¡ka: neočekivana „;”" msgid "syntax error: `((%s))'" msgstr "sintaksna greÅ¡ka: „((%s))”" -#: make_cmd.c:575 +#: make_cmd.c:578 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: neispravna vrsta instrukcije %d" -#: make_cmd.c:659 +#: make_cmd.c:662 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "" -#: make_cmd.c:756 +#: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3444 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "neočekivani EOF pri traženju odgovarajućeg „%c”" -#: parse.y:4025 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "neočekivani EOF pri traženju „]]”" -#: parse.y:4030 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "sintaksna greÅ¡ka u uvjetnom izrazu: neočekivani simbol „%s”" -#: parse.y:4034 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "sintaksna greÅ¡ka u uvjetnom izrazu" -#: parse.y:4112 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočekivani simbol „%s”, očekujem „)”" -#: parse.y:4116 +#: parse.y:4177 msgid "expected `)'" msgstr "očekujem „)”" -#: parse.y:4144 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "neočekivani argument „%s” uvjetnom unarnom operatoru" -#: parse.y:4148 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "neočekivani argument uvjetnom unarnom operatoru" -#: parse.y:4194 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "neočekivani simbol „%s”, očekujem uvjetni binarni operator" -#: parse.y:4198 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "očekujem uvjetni binarni operator" -#: parse.y:4220 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "neočekivani argument „%s” uvjetnom binarnom operatoru" -#: parse.y:4224 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "neočekivani argument uvjetnom binarnom operatoru" -#: parse.y:4235 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočekivani simbol „%c” u uvjetnoj naredbi" -#: parse.y:4238 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočekivani simbol „%s” u uvjetnoj naredbi" -#: parse.y:4242 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočekivani simbol %d u uvjetnoj naredbi" -#: parse.y:5566 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksna greÅ¡ka kod neočekivanog simbola „%s”" -#: parse.y:5584 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "sintaksna greÅ¡ka kod „%s”" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "sintaksna greÅ¡ka: neočekivani kraj datoteke" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error" msgstr "sintaksna greÅ¡ka" -#: parse.y:5656 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Koristite „%s” za napuÅ¡tanje ljuske.\n" -#: parse.y:5818 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "neočekivani EOF pri traženju odgovarajuće „)”" -#: pcomplete.c:1030 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s” nije pronađena" @@ -1350,129 +1383,129 @@ msgstr "completion: funkcija „%s” nije pronađena" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:296 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "" -#: print_cmd.c:368 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neispravan opisnik datoteke" -#: print_cmd.c:373 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL pokazivač na datoteku" -#: print_cmd.c:377 +#: print_cmd.c:382 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1478 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "opisnik datoteke izvan granica" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: viÅ¡eznačno preusmjeravanje" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ne mogu pisati preko postojeće datoteke" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograničeno: ne mogu preusmjeriti izlaz" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1136 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "greÅ¡ka preusmjeravanja: ne mogu udvostručiti opisnik datoteke" -#: shell.c:333 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "ne mogu pronaći /tmp, molim, napravite ga!" -#: shell.c:337 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti ispravno ime direktorija" -#: shell.c:884 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neispravna opcija" -#: shell.c:1652 +#: shell.c:1682 msgid "I have no name!" msgstr "Nemam ime!" -#: shell.c:1795 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, inačica %s-(%s)\n" -#: shell.c:1796 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" msgstr "" -#: shell.c:1798 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "" -#: shell.c:1802 +#: shell.c:1834 msgid "Shell options:\n" msgstr "" -#: shell.c:1803 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1818 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "" -#: shell.c:1824 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1825 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1826 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:638 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1646,224 +1679,238 @@ msgstr "Nepoznat signal #" msgid "Unknown Signal #%d" msgstr "Nepoznat signal #%d" -#: subst.c:1333 subst.c:1502 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "neispravna zamjena: nema zatvorene „%s” u %s" -#: subst.c:2795 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ne mogu pridružiti popis elementu polja" -#: subst.c:4979 subst.c:4995 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "ne mogu napraviti cjevovod za zamjenu procesa" -#: subst.c:5027 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "ne mogu napraviti dijete za zamjenu procesa" -#: subst.c:5072 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ne mogu otvoriti imenovani cjevovod %s za čitanje" -#: subst.c:5074 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ne mogu otvoriti imenovani cjevovod %s za pisanje" -#: subst.c:5092 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "ne mogu udvostručiti imenovani cjevovod %s kao opisnik datoteke %d" -#: subst.c:5284 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "ne mogu napraviti cjevovod za zamjenu naredbi" -#: subst.c:5322 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "ne mogu napraviti dijete za zamjenu naredbi" -#: subst.c:5339 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "command_substitute: ne mogu udvostručiti cjevovod kao opisnik datoteke 1" +msgstr "" +"command_substitute: ne mogu udvostručiti cjevovod kao opisnik datoteke 1" + +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" -#: subst.c:5859 +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametar prazan ili nije postavljen" -#: subst.c:6125 subst.c:6140 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:7271 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: neispravna zamjena" -#: subst.c:7347 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ne mogu pridružiti na ovaj način" -#: subst.c:7684 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" +#: subst.c:7767 +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:8149 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "neispravna zamjena: nema zatvorenog „`” u %s" -#: subst.c:9036 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "nema podudaranja: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "očekujem argument" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: očekujem cjelobrojni izraz" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "očekujem „)”" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "očekujem „)”, naÅ¡ao %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: očekujem unarni operator" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: očekujem binarni operator" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "nedostaje „]”" -#: trap.c:207 +#: trap.c:217 msgid "invalid signal number" msgstr "neispravan broj signala" -#: trap.c:337 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:341 +#: trap.c:352 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:393 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: neispravan signal %d" -#: variables.c:363 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "greÅ¡ka pri uvozu definicije funkcije za „%s”" -#: variables.c:755 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "razina ljuske (%d) je previsoka, vraćam na 1" -#: variables.c:1932 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3182 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: ne mogu pridružiti opisnik datoteke varijabli" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3427 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3432 variables.c:3441 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3447 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3891 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3904 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:3978 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4786 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ne mogu otvoriti kao DATOTEKU" -#: variables.c:4791 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s je izvan granica" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Licenca GPLv3+: GNU GPL inačica 3 ili novija \n" +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Licenca GPLv3+: GNU GPL inačica 3 ili novija \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, inačica %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Ovo je slobodan softver, slobodno ga smijete mijenjati i dijeliti.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NEMA JAMSTAVA, do krajnje mjere dozvoljene zakonom.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "License GPLv2+: GNU GPL version 2 or later \n" -msgstr "Licenca GPLv2+: GNU GPL inačica 2 ili novija \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1893,7 +1940,9 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ime [ime ...]" #: builtins.c:51 -msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgid "" +"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" +"x keyseq:shell-command] [keyseq:readline-function or readline-command]" msgstr "" #: builtins.c:54 @@ -1937,8 +1986,9 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" -msgstr "" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" +msgstr "alias [-p] [ime[=vrijednost] ... ]" #: builtins.c:78 msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." @@ -2001,7 +2051,9 @@ msgid "help [-dms] [pattern ...]" msgstr "" #: builtins.c:121 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" msgstr "" #: builtins.c:125 @@ -2013,7 +2065,9 @@ msgid "disown [-h] [-ar] [jobspec ...]" msgstr "" #: builtins.c:132 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" msgstr "" #: builtins.c:134 @@ -2021,7 +2075,9 @@ msgid "let arg [arg ...]" msgstr "" #: builtins.c:136 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" msgstr "" #: builtins.c:138 @@ -2033,8 +2089,9 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" -msgstr "" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" +msgstr "unalias [-a] ime [ime ...]" #: builtins.c:144 msgid "export [-fn] [name[=value] ...] or export -p" @@ -2081,7 +2138,7 @@ msgid "type [-afptP] name [name ...]" msgstr "" #: builtins.c:169 -msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" msgstr "" #: builtins.c:172 @@ -2089,11 +2146,11 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:175 -msgid "wait [id]" +msgid "wait [-n] [id ...]" msgstr "" #: builtins.c:179 -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "" #: builtins.c:182 @@ -2117,7 +2174,9 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "" #: builtins.c:192 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" msgstr "" #: builtins.c:194 @@ -2177,11 +2236,16 @@ msgid "printf [-v var] format [arguments]" msgstr "" #: builtins.c:229 -msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" +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 "" #: builtins.c:233 -msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgid "" +"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " +"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" msgstr "" #: builtins.c:237 @@ -2189,11 +2253,15 @@ msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "" #: builtins.c:240 -msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" msgstr "" #: builtins.c:242 -msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgid "" +"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" msgstr "" #: builtins.c:254 @@ -2211,7 +2279,8 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" @@ -2237,30 +2306,36 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" +" -X\t\t List key sequences bound with -x and associated commands\n" +" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." msgstr "" -#: builtins.c:326 +#: builtins.c:328 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2271,7 +2346,7 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:338 +#: builtins.c:340 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2282,20 +2357,21 @@ msgid "" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -#: builtins.c:350 +#: builtins.c:352 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" -#: builtins.c:365 +#: builtins.c:367 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2311,37 +2387,49 @@ msgid "" " is invalid." msgstr "" -#: builtins.c:383 +#: builtins.c:385 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed\n" +" -L\tforce symbolic links to be followed: resolve symbolic links in\n" +" \tDIR after processing instances of `..'\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks\n" +" \tlinks: resolve symbolic links in DIR before processing instances\n" +" \tof `..'\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" -#: builtins.c:414 +#: builtins.c:420 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2357,7 +2445,7 @@ msgid "" " cannot be read." msgstr "" -#: builtins.c:431 +#: builtins.c:437 msgid "" "Null command.\n" " \n" @@ -2373,7 +2461,7 @@ msgstr "" " Izlazno stanje:\n" " Uvijek uspjeÅ¡no." -#: builtins.c:442 +#: builtins.c:448 msgid "" "Return a successful result.\n" " \n" @@ -2385,7 +2473,7 @@ msgstr "" " Izlazno stanje:\n" " Uvijek uspjeÅ¡no." -#: builtins.c:451 +#: builtins.c:457 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2397,12 +2485,13 @@ msgstr "" " Izlazno stanje:\n" " Uvijek neuspjeÅ¡no." -#: builtins.c:460 +#: builtins.c:466 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2415,7 +2504,7 @@ msgid "" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -#: builtins.c:479 +#: builtins.c:485 msgid "" "Set variable values and attributes.\n" " \n" @@ -2435,6 +2524,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2445,14 +2535,16 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:517 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2462,7 +2554,7 @@ msgstr "" " \n" " Zastarjelo. Pogledajte „help declare”." -#: builtins.c:525 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2473,15 +2565,17 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:542 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs on the standard output followed by a newline.\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" @@ -2493,6 +2587,7 @@ msgid "" " \\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" @@ -2508,7 +2603,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:576 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2521,7 +2616,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:591 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2548,18 +2643,19 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:619 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:631 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2600,12 +2696,13 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:673 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2613,14 +2710,16 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" -#: builtins.c:694 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2632,11 +2731,12 @@ msgstr "" " Izlazi iz ljuske sa stanjem N. Ako N nije naveden, izlazno stanje je\n" " isto kao i stanje zadnje izvrÅ¡ene naredbe." -#: builtins.c:703 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Izađi iz prijavne ljuske.\n" @@ -2644,17 +2744,19 @@ msgstr "" " Izlazi iz prijavne ljuske s izlaznim stanjem N. Vraća greÅ¡ku ako nije\n" " izvrÅ¡eno u prijavnoj ljusci." -#: builtins.c:713 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -2668,10 +2770,11 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" -#: builtins.c:743 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2683,24 +2786,27 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:758 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:772 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -2718,7 +2824,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:797 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2736,10 +2842,11 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" -#: builtins.c:821 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2766,13 +2873,14 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:857 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2796,7 +2904,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:884 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2813,7 +2921,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:903 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2835,14 +2943,15 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:926 +#: builtins.c:936 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" +" 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" @@ -2879,18 +2988,21 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:971 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -2902,26 +3014,32 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" -" \t\tif input is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +" \t\twithout trying to read any data, returning success only if\n" +" \t\tinput is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out,\n" +" The return code is zero, unless end-of-file is encountered, read times " +"out\n" +" (in which case it's greater than 128), a variable assignment error " +"occurs,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1014 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -2933,7 +3051,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1027 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -2976,7 +3094,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -2998,7 +3117,7 @@ msgid "" " -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 follow symbolic links when executing commands\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" @@ -3017,7 +3136,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1112 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3026,8 +3145,11 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" 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" @@ -3036,12 +3158,13 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1132 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3054,7 +3177,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1151 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3074,7 +3197,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1172 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3085,7 +3208,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1184 builtins.c:1199 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3099,7 +3222,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1215 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3113,7 +3236,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1231 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3147,7 +3270,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3168,7 +3292,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3176,6 +3301,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3192,7 +3319,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1311 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3200,22 +3327,24 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1320 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" -#: builtins.c:1332 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -3224,29 +3353,37 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" -#: builtins.c:1368 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3272,14 +3409,16 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" -#: builtins.c:1399 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -3303,6 +3442,9 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" +" -T the maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -3318,7 +3460,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1444 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3336,35 +3478,42 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1464 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for the process identified by ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\n" -" in the job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." msgstr "" -#: builtins.c:1482 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1497 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3377,7 +3526,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1511 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3394,7 +3543,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1529 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3414,7 +3563,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1550 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3430,7 +3579,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1567 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3441,23 +3590,28 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1579 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1596 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3468,7 +3622,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1608 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3479,7 +3633,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1620 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3492,12 +3646,13 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1634 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -3505,7 +3660,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1648 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3516,7 +3671,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1660 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3530,7 +3685,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1675 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3541,13 +3696,16 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1687 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -3566,7 +3724,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1713 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3620,7 +3778,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1770 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3651,7 +3809,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1804 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3678,7 +3836,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1834 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3695,22 +3853,25 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1863 +#: builtins.c:1884 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" +" arguments, list all shell options with an indication of whether or not " +"each\n" " is set.\n" " \n" " Options:\n" @@ -3725,7 +3886,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1884 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3733,31 +3894,45 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1)\n" -" and printf(3), printf interprets:\n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" +" %(fmt)T output the date-time string resulting from using FMT as a " +"format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" -#: builtins.c:1913 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -3777,25 +3952,29 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1941 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1956 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -3817,22 +3996,28 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1986 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -3842,15 +4027,17 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" -#: builtins.c:2020 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -3859,3 +4046,13 @@ msgstr "" "Učitaj retke iz datoteke u varijablu polja.\n" " \n" " Sinonim za „mapfile”." + +#~ 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 "" +#~ "Licenca GPLv2+: GNU GPL inačica 2 ili novija \n" diff --git a/po/hu.gmo b/po/hu.gmo index c1a37cce8..39f85b64b 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index ff0bc48a9..2effa6656 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2010-08-06 17:44+0200\n" "Last-Translator: Mate Ory \n" "Language-Team: Hungarian \n" -"Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "Hibás tömbindex" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, 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:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: érvénytelen asszociatívtömb-index" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, 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:557 +#: arrayfunc.c:586 #, 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" @@ -46,22 +46,22 @@ msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az i msgid "%s: cannot create: %s" msgstr "%s: nem hozható létre: %s" -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: az első nem szóközkarakter nem „\"”" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "nincs záró „%c” a következőben: %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: hiányzó kettőspont-elválasztó" @@ -128,7 +128,7 @@ msgstr "" msgid "HOME not set" msgstr "Nincs beállítva HOME" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "túl sok argumentum" @@ -151,7 +151,7 @@ msgstr "figyelmeztetés: " msgid "%s: usage: " msgstr "%s: használat: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: a kapcsolónak kötelező argumentuma van" @@ -166,7 +166,7 @@ msgstr "%s: a kötelező argumentum egy szám" msgid "%s: not found" msgstr "%s: nem található" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: érvénytelen kapcsoló" @@ -189,7 +189,7 @@ msgstr "érvénytelen oktális szám" msgid "invalid hex number" msgstr "érvénytelen hexadecimális szám" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "érvénytelen szám" @@ -298,25 +298,35 @@ msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet" msgid "not currently executing completion function" msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "csak függvényben használható" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "nem használható a „-f” függvény létrehozására" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: csak olvasható függvény" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása" @@ -345,23 +355,23 @@ msgstr "%s: nem dinamikusan van betöltve" msgid "%s: cannot delete: %s" msgstr "%s: nem törölhető: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s egy könyvtár" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: nem normál fájl" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: a fájl túl nagy" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: bináris nem hajtható végre" @@ -457,7 +467,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: nem nyitható meg: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -498,16 +508,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:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Ismeretlen hiba" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "az értelmező kifejezést várt" @@ -516,64 +526,64 @@ msgstr "az értelmező kifejezést várt" msgid "%s: not an indexed array" msgstr "%s: nem egy indexelt tömb" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: érvénytelen fájlleíró-megadás" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: érvénytelen fájlleíró: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: sorok száma érvénytelen" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: érvénytelen tömbkezdet" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: érvénytelen parancshívási távolság" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "üres tömbváltozó-név" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "a tömbök használata nincs támogatva" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s”: hiányzó formátumkarakter" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: érvénytelen időkorlát-megadás" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c”: érvénytelen formátumkarakter" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "figyelmeztetés: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x" @@ -582,19 +592,24 @@ msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x" msgid "no other directory" msgstr "nincs másik könyvtár" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: érvénytelen korlátérték" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "a könyvtárverem üres" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "könyvtárveremindex" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -632,7 +647,7 @@ msgstr "" " által megjelenített listán balról számolva, nullától kezdve\n" " -N N darab bejegyzést jelenít meg a listából jobbról számolva" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -678,7 +693,7 @@ msgstr "" " \n" " A „dirs” beépített parancs listázza a könyvtárvermet." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -715,12 +730,12 @@ msgstr "" " \n" " A „dirs” beépített parancs listázza a könyvtárvermet." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: érvénytelen időkorlát-megadás" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "olvasási hiba: %d: %s" @@ -731,26 +746,26 @@ msgstr "" "csak függvényből vagy source-olt parancsfájlból lehet „return”-nel " "visszatérni" -#: builtins/set.def:771 +#: builtins/set.def:782 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:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: nem szüntethető meg" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nem szüntethető meg: csak olvasható %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: nem egy tömbváltozó" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: nem függvény" @@ -759,12 +774,12 @@ msgstr "%s: nem függvény" msgid "shift count" msgstr "shift-szám" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 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:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név" @@ -889,127 +904,127 @@ msgstr "hibás ugrás" msgid "%s: unbound variable" msgstr "%s: kötetlen változó" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "IDŐFORMÁTUM: „%c”: érvénytelen formátumkarakter" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "hibás csővezeték" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: korlátozott: nem adható meg „/” a parancsok nevében" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: parancs nem található" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s egy %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: rossz parancsértelmező" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: bináris nem hajtható végre" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s egy beépített parancs\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, 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:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "a kifejezés rekurziókorlátot" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "alulcsordult a rekurziós verem" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "szintaktikai hiba a kifejezésben" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "nem változóhoz próbált értéket rendelni" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "0-val osztás" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: rossz expassign token" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "„:” egy feltételkifejezés szükséges" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "0-nál kisebb kitevő" -#: expr.c:948 +#: expr.c:957 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:973 +#: expr.c:983 msgid "missing `)'" msgstr "hiányzó „)”" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "szintaktikai hiba: operandus kell következzen" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hibás token: „%s”)" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "érvénytelen számrendszer" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "túl nagy érték a számrendszerhez" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: hibás kifejezés\n" @@ -1018,164 +1033,164 @@ msgstr "%s: hibás kifejezés\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: nem érhetőek el a szülőkönyvtárak" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, 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:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp csővezeték" -#: jobs.c:891 +#: jobs.c:892 #, 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:1009 +#: jobs.c:1010 #, 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:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: nincs ilyen pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "%d. szignál" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Kész" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Megállítva" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Megállítva(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Fut" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Kész(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Kilépett(%d)" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Ismeretlen állapot" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core készült) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (mk: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "gyermek setpgid (innen: %ld ide: %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: %d. számú munka le lett állítva" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: a munka be lett fejezve" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: %d. számú munka már a háttérben van" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: %d. sor: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core készült)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(mk most: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp sikertelen" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nem állítható be a terminál folyamatcsoportja (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "nincsen munkakezelés ebben a parancsértelmezőben" @@ -1197,49 +1212,49 @@ msgstr "" msgid "unknown" msgstr "ismeretlen" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: a szabadlistán lévő blokk felülírva" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: már felszabadított blokkal lett hívva" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: kezdő- és záródarab mérete eltér" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: nem lefoglalt blokkal lett hívva" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 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:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kezdő- és záródarab mérete eltér" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: foglalótábla tele van FIND_ALLOC-kal?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p már a táblában lefoglaltként?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p már a táblában szabadként?\n" @@ -1287,15 +1302,15 @@ msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Levél a következőben: $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Új levél a következőben: $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "A(z) „%s” helyen lévő levél el van olvasva\n" @@ -1328,103 +1343,103 @@ msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s” helyett)" 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:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "váratlan EOF „%c” helyett" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "váratlan EOF „]]” helyett" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "szintaktikai hiba a feltételben: váratlan token: „%s”" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "szintaktikai hiba a feltételben" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "váratlan token (%s) „)” helyett" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "„)” szükséges" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz" -#: parse.y:4207 +#: parse.y:4255 #, 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:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "feltételes kétoperandusú operátor szükséges" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "váratlan token (%c) feltételes parancsban" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "váratlan token (%s) feltételes parancsban" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "váratlan token (%d) feltételes parancsban" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "szintaktikai hiba „%s” váratlan token közelében" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "szintaktikai hiba „%s” közelében" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "szintaktikai hiba: váratlan fájlvége" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "szintaktikai hiba" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "„%s” használatával lehet elhagyni a parancsértelmezőt.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "váratlan EOF „)” helyett" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "kiegészítés: nem található „%s” függvény" @@ -1453,71 +1468,71 @@ msgstr "xtrace_set: NULL fájlmutató" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c”: érvénytelen formátumkarakter" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "fájlleíró kívül esik a tartományon" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: kétértelmű átirányítás" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nem lehet felülírni létező fájlt" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nem lehet változóhoz fájlleírót rendelni" -#: redir.c:548 +#: redir.c:582 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:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "nem található /tmp, hozza létre!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp érvényes könyvtárnév kell legyen" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: érvénytelen kapcsoló" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Nincs nevem!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, %s-(%s) verzió\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1526,41 +1541,42 @@ msgstr "" "Használat: %s [GNU hosszú kapcsoló] [kapcsoló] ...\n" " %s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU hosszú kapcsolók:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Parancsértelmező-kapcsolók:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s vagy -o kapcsoló\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "A „bashbug” paranccsal jelenthet hibákat.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: érvénytelen művelet" @@ -1734,72 +1750,77 @@ msgstr "Ismeretlen szignál #" msgid "Unknown Signal #%d" msgstr "%d. számú ismeretlen szignál" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, 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:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: lista nem adható tömbelemnek értékül" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nem nyitható meg olvasásra a(z) %s csővezeték" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nem nyitható meg írásra a(z) %s csővezeték" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nem duplikálható a(z) %s csővezeték %d. fájlleíróként" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez" -#: subst.c:5351 +#: subst.c:5330 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:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: a paraméter null vagy nincs beállítva" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: részkarakterlánc-kifejezés < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: rossz helyettesítés" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nem lehet így értéket adni" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1807,130 +1828,140 @@ msgstr "" "a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai " "kiértékelést" -#: subst.c:8165 +#: subst.c:8271 #, 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:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "nincs találat: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argumentum szükséges" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: egész kifejezés szükséges" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "„)” szükséges" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "„)” szükséges %s helyett" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: egyoperandusú operátor szükséges" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: kétoperandusú operátor szükséges" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "hiányzó „]”" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "érvénytelen szignálszám" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: rossz szignál: %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "hiba a függvénydefiníció betöltésekor: „%s”" -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 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:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nem lehet változóhoz fájlleírót rendelni" + +#: variables.c:3554 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:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s exportstr-je null" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "érvénytelen karakter (%d) %s exportstr-jében" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "nincs „=” %s exportstr-jében" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nincs global_variables környezet" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nem nyitható meg FILE-ként" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s kívül esik a tartományon" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright © 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1938,35 +1969,21 @@ msgstr "" "A licenc GPLv3+: a GNU GPL 3. vagy újabb változata \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, %s (%s) verzió\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "NINCS GARANCIA, a törvény által engedélyezett mértékig.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"A licenc GPLv2+: a GNU GPL 2. vagy újabb változata \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2047,7 +2064,7 @@ msgstr "command [-pVv] parancs [arg ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [név[=érték] ...]" #: builtins.c:78 @@ -2158,7 +2175,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o beállításnév] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [név ...]" #: builtins.c:144 @@ -2217,12 +2235,13 @@ msgstr "umask [-p] [-S] [mód]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2755,6 +2774,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2770,7 +2790,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Változóértékeket és jellemzőket állít be.\n" " \n" @@ -2806,7 +2827,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" " történt." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2816,7 +2837,8 @@ msgstr "" " \n" " Elavult. Lásd „help declare”." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2827,8 +2849,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Helyi változók definiálása.\n" " \n" @@ -2842,7 +2864,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, hiba\n" " történt, vagy nem függvényben lett hívva." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2904,7 +2926,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve írási hiba esetén." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2926,7 +2948,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve írási hiba esetén." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2979,7 +3001,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha NÉV nem egy beépített parancs, vagy hi-\n" " ba történt." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2999,7 +3021,7 @@ msgstr "" " A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a pa-\n" " rancs." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3073,7 +3095,7 @@ msgstr "" " Sikerrel tér vissza, ha kapcsolót talált, sikertelenül, ha elfogytak a\n" " kapcsolók vagy hiba történt." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3113,7 +3135,7 @@ msgstr "" " Sikerrel tér vissza, kivéve, ha PARANCS nem található vagy sikertelen\n" " az átirányítás." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3125,7 +3147,7 @@ msgstr "" " Kilép a parancsértelmezőből N kilépési kóddal. Ha N hiányzik, az utol-\n" " só parancs kilépési kódjával lép ki." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3138,7 +3160,7 @@ msgstr "" " Kilép a bejelentkező parancsértelmezőből N kilépési kóddal. Hibával\n" " tér vissza, ha nem bejelentkező parancsértelmezőből hívják." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3192,7 +3214,7 @@ msgstr "" " Sikert vagy a végrehajtott parancs kilépési kódját adja; nullától el-\n" " térőt hiba esetén." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3213,7 +3235,7 @@ msgstr "" " Az előtérbe hozott parancs állapota (annak kilépésekor), vagy nemnulla\n" " hiba esetén." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3236,7 +3258,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy hi-\n" " ba történt." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3279,7 +3301,7 @@ msgstr "" " Sikerrel tér vissza, kivéve, ha NÉV nem található vagy érvénytelen kap-\n" " csolót kap." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3317,7 +3339,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha nincs találat vagy hibás kapcsolót kap." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3380,7 +3402,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n" " történik." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3424,7 +3446,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 PARANCS kilépési kódjával tér vissza." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3456,7 +3478,7 @@ msgstr "" " Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÁM-\n" " ot." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3497,7 +3519,7 @@ msgstr "" " Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót és nem történik\n" " hiba." -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3581,7 +3603,7 @@ 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:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3617,7 +3639,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3668,7 +3690,7 @@ msgstr "" " A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, időtúllépéskor\n" " vagy érvénytelen fájlleíró megadásakor." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3689,7 +3711,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:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3852,7 +3874,8 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3861,6 +3884,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3888,7 +3913,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n" " olvasható." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3922,7 +3947,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEV-et kap." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3958,7 +3983,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEV-et kap." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3976,7 +4001,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3999,7 +4024,7 @@ msgstr "" " Az utolsó FÁJLNÉV-beli parancs kilépési kódjával tér vissza; sikerte-\n" " lenül, ha FÁJLNÉV nem olvasható." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4025,7 +4050,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n" " történt." -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4091,6 +4116,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4178,7 +4205,7 @@ msgstr "" " Sikerrel tér vissza, ha KIF igaz; sikertelenséggel, ha KIF hamis vagy\n" " érvénytelen argumentumokat kap." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4191,7 +4218,7 @@ msgstr "" " hogy az utolsó argumentuma „]” kell legyen – a nyitó „]”-lel összhang-\n" " ban." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4209,7 +4236,7 @@ msgstr "" " Kilépési kód:\n" " Mindig sikeres." -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4282,7 +4309,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha SZIGNÁL érvénytelen vagy érvénytelen\n" " kapcsolót kap." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4334,7 +4361,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4421,7 +4448,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetében." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4456,7 +4483,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve ha MÓD vagy egy kapcsoló érvénytelen." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4469,6 +4496,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4484,18 +4514,20 @@ msgstr "" " ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" " sikertelenül." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Munka befejezésének megvárása és a kilépési kód visszaadása.\n" " \n" @@ -4506,7 +4538,7 @@ msgstr "" " ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n" " sikertelenül." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4528,7 +4560,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4558,7 +4590,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4594,7 +4626,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4624,7 +4656,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:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4643,7 +4675,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4676,7 +4708,7 @@ msgstr "" " Kilépési kód:\n" " Az utoljára végrehajtott parancs kilépési kódja." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4694,7 +4726,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4712,7 +4744,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsónak végrehajtott parancs kilépési kódja." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4734,7 +4766,7 @@ msgstr "" " Kilépési kód:\n" " A PARANCS kilépési kódjával tér vissza." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4757,7 +4789,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve ha NÉV csak olvasható." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4775,7 +4807,7 @@ msgstr "" " Kilépési kód:\n" " Az utolsó parancs kilépési kódját adja vissza." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4797,7 +4829,7 @@ msgstr "" " Kilépési kód:\n" " A visszaállított parancs kilépési kódjával lép ki." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4815,7 +4847,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:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4864,7 +4896,7 @@ msgstr "" " Kilépési kód:\n" " 0 vagy 1 a KIFEJEZÉS-től függően." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4965,7 +4997,7 @@ msgstr "" " HISTIGNORE Kettőspontokkal elválasztott mintalista, amely mintákra\n" " illeszkedő parancsok nem kerülnek az előzmények közé\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5022,7 +5054,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:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5070,7 +5102,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:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5119,7 +5151,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5156,7 +5188,7 @@ msgstr "" " Sikerrel tér vissza, ha OPTNÉV engedélyezve van; sikertelenül, ha hi-\n" " bás kapcsolókat kap vagy OPTNÉV tiltva van." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5184,6 +5216,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5212,7 +5250,7 @@ msgstr "" " Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/ér-\n" " tékadás hibával járt." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5260,7 +5298,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5281,7 +5319,7 @@ msgstr "" " Kilépési kód:\n" " Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén." -#: builtins.c:1969 +#: builtins.c:1982 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5339,7 +5377,7 @@ msgstr "" " Sikerrel lép ki, kivéve ha érvénytelen kapcsolókat kap, vagy NÉV nincs\n" " még megadva." -#: builtins.c:1999 +#: builtins.c:2012 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5409,7 +5447,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:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5419,6 +5457,19 @@ msgstr "" " \n" " „mapfile” szinonimája." +#~ 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" + +#~ msgid "wait [pid]" +#~ msgstr "wait [pid]" + #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/id.gmo b/po/id.gmo index a4a2242c4..022ab6949 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index 469ddc1c9..014e2d7fa 100644 --- a/po/id.po +++ b/po/id.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2010-01-16 12:45+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" -"Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Language: id\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "array subscript buruk" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: kunci array assosiasi tidak valid" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: tidak dapat mengassign ke index tidak-numeric" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" @@ -46,21 +46,21 @@ msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array" msgid "%s: cannot create: %s" msgstr "%s: tidak dapat membuat: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "tidak menutup '%c' dalam %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: hilang pemisah colon" @@ -126,7 +126,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME tidak diset" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "terlalu banyak argumen" @@ -149,7 +149,7 @@ msgstr "peringatan: " msgid "%s: usage: " msgstr "%s: penggunaan: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: pilihan membutuhkan sebuah argumen" @@ -164,7 +164,7 @@ msgstr "%s: argumen numeric dibutuhkan" msgid "%s: not found" msgstr "%s: tidak ditemukan" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: pilihan tidak valid" @@ -187,7 +187,7 @@ msgstr "nomor oktal tidak valid" msgid "invalid hex number" msgstr "nomor hexa tidak valid" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "nomor tidak valid" @@ -298,25 +298,35 @@ msgstr "" msgid "not currently executing completion function" msgstr "saat ini sedang tidak menjalankan fungsi completion" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "hanya dapat digunakan dalam sebuah fungsi" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: fungsi baca-saja" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: tidak dapat menghapus variabel array secara ini" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: tidak dapat mengubah assosiasi ke array index" @@ -345,23 +355,23 @@ msgstr "%s: bukan dinamically loaded" msgid "%s: cannot delete: %s" msgstr "%s: tidak dapat menghapus: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: bukan sebuah direktori" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: bukan sebuah file umum" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: file terlalu besar" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: tidak dapat menjalankan berkas binary" @@ -456,7 +466,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: tidak dapat membuka: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -501,16 +511,16 @@ msgstr "%s: inlib gagal" msgid "no other options allowed with `-x'" msgstr "tidak ada pilihan lain yang diperbolehkan dengan `-x'" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Kesalahan tidak diketahui" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "diduga sebuah ekspresi" @@ -519,64 +529,64 @@ msgstr "diduga sebuah ekspresi" msgid "%s: not an indexed array" msgstr "%s: bukan sebuah indeks array" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: spesifikasi file deskripsi tidak valid" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: file deskriptor %s tidak valid" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: jumlah baris tidak valid" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: asal array tidak valid" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: nama aksi tidak valid" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "nama variabel array kosong" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "bantuan array variabel dibutuhkan" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': hilang karakter format" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: spesifikasi timeout tidak valid" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': karakter format tidak valid" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "peringatan: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "hilang digit hexa untuk \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "hilang digit hexa untuk \\x" @@ -585,19 +595,24 @@ msgstr "hilang digit hexa untuk \\x" msgid "no other directory" msgstr "tidak ada direktori lain" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: argumen limit tidak valid" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "direktori stack kosong" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "index direktori stack" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -642,7 +657,7 @@ msgstr "" "ditampilkan oleh\n" " \tdirs ketika dipanggil tanpa pilihan, dimulai dari nol." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -689,7 +704,7 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -725,12 +740,12 @@ msgstr "" " \n" " Builtin `dirs' menampilkan direktori stack." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: spesifikasi timeout tidak valid" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "error baca: %d: %s" @@ -739,26 +754,26 @@ msgstr "error baca: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: tidak dapat unset" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: tidak dapat unset: baca-saja %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: bukan sebuah variabel array" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: bukan sebuah fungsi" @@ -767,11 +782,11 @@ msgstr "%s: bukan sebuah fungsi" msgid "shift count" msgstr "shift terhitung" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nama pilihan shell tidak valid" @@ -896,128 +911,128 @@ msgstr "lompat buruk" msgid "%s: unbound variable" msgstr "%s: variabel tidak terikat" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': karakter format tidak valid" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "pipe error" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" "%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: perintah tidak ditemukan" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s adalah %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpreter buruk" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: tidak dapat menjalankan berkas binary" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s adalah sebuah shell builtin\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "tidak dapat menduplikasikan fd %d ke fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "expresi level rekursi terlewati" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "rekursi stack underflow" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntax error dalam expresi" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "mencoba menempatkan ke bukan sebuah variabel" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "dibagi oleh 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: tanda expassign buruk" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "`:' diharapkan untuk sebuah pernyataan kondisional" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponen kurang dari 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "hilang `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntax error: operand diharapkan" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntax error: operator arithmetic tidak valid" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (error token adalah \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "basis arithmetic tidak valid" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "nilai terlalu besar untuk basis" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: expresi error\n" @@ -1026,165 +1041,165 @@ msgstr "%s: expresi error\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: tidak dapat mengakses direktori orang tua" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "tidak dapat mereset mode nodelay untuk fd %d" -#: input.c:265 +#: input.c:267 #, 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" +"tidak dapat mengalokasikan berkas deskripsi bari untuk masukan bash dari fd %" +"d" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "simpan bash_input: buffer telah ada untuk fd %d baru" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) dalam the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tidak ada pid seperti itu" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "sinyal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Selesai" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Terhenti" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Terhenti(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Berjalan" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Selesai(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Keluar %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Status tidak diketahui" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core didump) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "anak setpgid (%ld ke %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Tidak ada catatan untuk proses %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: pekerjaan %d terhenti" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: pekerjaan telah selesai" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: baris %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core didump)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd sekarang: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp gagal" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: baris disiplin" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "tidak dapat menset terminal proses grup (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "tidak ada pengontrol pekerjaan dalam shell ini" @@ -1206,50 +1221,50 @@ msgstr "" msgid "unknown" msgstr "tidak diketahui" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: blok dalam daftar bebas clobbered" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: awal dan akhir dari ukuran potongan berbeda" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: awal dan akhir dari ukuran potongan berbeda" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: tabel alokasi penuh dengan FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" "register_alloc: %p sudah berada dalam tabel sepertinya sudah dialokasikan?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p sudah berada dalam tabel sebagai bebas?\n" @@ -1297,15 +1312,15 @@ msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Anda memiliki surat dalam $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Anda memiliki surat baru dalam $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Surat dalam %s telah dibaca\n" @@ -1339,103 +1354,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "EOF tidak terduga ketika mencari untuk `]]'" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "syntax error dalam ekspresi kondisional" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "tanda `%s' tidak terduga, diduga `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "diduga `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumen tidak terduga `%s' ke operator kondisional unary" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "argumen tidak terduga untuk operasi unary kondisional" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "operator binary kondisional diduga" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumen `%s' tidak terduga ke operator binary kondisional" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "argumen tidak terduga ke operasi binary kondisional" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "tanda `%c' tidak terduga dalam perintah kondisional" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "tanda `%s' tidak terduga dalam perintah kondisional" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "tanda %d tidak terduga dalam perintah kondisional" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntax error didekat tanda `%s' yang tidak terduga" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "syntax error didekat `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "syntax error: tidak terduga diakhir dari berkas" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "syntax error" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: fungsi `%s' tidak ditemukan" @@ -1464,71 +1479,71 @@ msgstr "xtrace_set: berkas penunjuk KOSONG" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': format karakter tidak valid" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "berkas deskripsi diluar dari jangkauan" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirect ambigu" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: tidak dapat menulis berkas yang sudah ada" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricted: tidak dapat meredirect keluaran" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: tidak dapat meng-'assign' fd ke variabel" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "redirection error: tidak dapat menduplikasi fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "tidak dapat menemukan /tmp, tolong buat!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp harus berupa sebuah nama direktori yang valid" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: pilihan tidak valid" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Aku tidak memiliki nama!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versi %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1537,43 +1552,44 @@ msgstr "" "Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n" "\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU pilihan panjang:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Pilihan shell:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s atau pilihan -o\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operasi tidak valid" @@ -1747,72 +1763,77 @@ msgstr "Sinyal tidak diketahui #" msgid "Unknown Signal #%d" msgstr "Sinyal tidak diketahui #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "tidak dapat membuat pipe untuk proses substitusi" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "tidak dapat membuat anak untuk proses substitusi" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "tidak dapat membuka named pipe %s untuk membaca" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "tidak dapat membukan named pipe %s untuk menulis" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "tidak dapat membuat pipe untuk perintah substitusi" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "tidak dapat membuat anak untuk perintah substitusi" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter kosong atau tidak diset" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expresi < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: substitusi buruk" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: tidak dapat meng-assign dengan cara ini" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1820,134 +1841,144 @@ msgstr "" "versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian " "aritmetika" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "tidak cocok: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argumen diharapkan" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: expresi integer diduga" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "')' diduga" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "`)' diduga, ditemukan %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: operator unary diduga" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: operator binary diduga" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "hilang `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "nomor sinyal tidak valid" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -"run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d " -"(%s) kediri sendiri" +"run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d (%" +"s) kediri sendiri" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinyal buruk %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "error mengimpor definisi fungsi untuk `%s'" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "level shell (%d) terlalu tinggi, mereset ke 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: tidak ada context fungsi di scope ini" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: tidak dapat meng-'assign' fd ke variabel" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: tidak ada context fungsi dalam scope ini" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s memiliki exportstr kosong" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "karakter %d tidak valid dalam exporstr untuk %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "bukan `=' dalam exportstr untuk %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: bukan global_variable context" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: tidak dapat membuka sebagai BERKAS" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s diluar jangkauan" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1955,37 +1986,23 @@ msgstr "" "Lisensi GPLv3+: GNU GPL versi 3 atau sesudahnya \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versi %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "" "Ini adalah perangkat lunak bebas; anda bebas untuk mengubah dan " "mendistribusikannya.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "TIDAK ADA GARANSI, selama masih diijinkan oleh hukum yang berlaku.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Lisensi GPLv2+: GNU GPL versi 2 atau sesudahnya \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2066,7 +2083,7 @@ msgstr "perintah [-pVv] perintah [argumen ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [name[=nilai] ...]" #: builtins.c:78 @@ -2177,7 +2194,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nama-pilihan] [argumen ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [name ...]" #: builtins.c:144 @@ -2236,12 +2254,13 @@ msgstr "umask [-p] [-S] [mode]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2797,6 +2816,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2812,7 +2832,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Menset nilai variabel dan atribut.\n" " \n" @@ -2848,7 +2869,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2858,7 +2879,8 @@ msgstr "" " \n" " Kadaluarsa. Lihat `help declare'." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2869,8 +2891,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Mendefinisikan variabel lokal.\n" " \n" @@ -2886,7 +2908,7 @@ msgstr "" "sebuah error terjadi.\n" " atau shell tidak menjalankan sebuah fungsi." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2948,7 +2970,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah penulisan error terjadi." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2970,7 +2992,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah penulisan error terjadi." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3026,7 +3048,7 @@ msgstr "" " Mengembalikan sukses kecuali NAMA bukan sebuah shell builtin atau sebuah " "error terjadi." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3047,7 +3069,7 @@ msgstr "" " Mengembalikan status keluar dari perintah atau sukses jika perintah " "adalah kosong." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3133,7 +3155,7 @@ msgstr "" "dari pilihan\n" " ditemui atau sebuah error terjadi." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3176,7 +3198,7 @@ msgstr "" " Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah " "redireksi error terjadi." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3189,7 +3211,7 @@ msgstr "" "keluaran\n" " adalah status dari perintah terakhir yang dijalankan." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3203,7 +3225,7 @@ msgstr "" "error jika tidak dijalankan\n" " dalam sebuah login shell." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3262,7 +3284,7 @@ msgstr "" " Mengembalikan sukses atau status dari perintah yang dijalankan; tidak-" "nol jika sebuah error terjadi." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3283,7 +3305,7 @@ msgstr "" " Status dari perintah yang ditempatkan di foreground, atau gagal jika " "sebuah error terjadi." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3307,7 +3329,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3353,7 +3375,7 @@ msgstr "" " Mengembalikan sukses kecuali NAMA tidak ditemukan atau sebuah pilihan " "tidak valid telah diberikan." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3394,7 +3416,7 @@ msgstr "" " Mengembalikan sukses kecuali POLA tidak ditemukan atau pilihan tidak " "valid diberikan." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3469,7 +3491,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3517,7 +3539,7 @@ msgstr "" "sebuah error terjadi.\n" " Jika -x digunakan, mengembalikan status keluar dari PERINTAH." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3549,7 +3571,7 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC " "diberikan." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3592,7 +3614,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3681,7 +3703,7 @@ msgstr "" " Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 " "dikembalikan Jika tidak." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3717,7 +3739,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3783,7 +3805,7 @@ msgstr "" " atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -" "u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3805,7 +3827,7 @@ msgstr "" " Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau " "script." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3981,7 +4003,8 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3990,6 +4013,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4018,7 +4043,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah NAMA adalah baca-saja." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4053,7 +4078,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4092,7 +4117,7 @@ msgstr "" " Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau " "NAMA tidak valid." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4110,7 +4135,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4136,7 +4161,7 @@ msgstr "" "BERKAS; gagal jika\n" " NAMA BERKAS tidak dapat dibaca." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4162,7 +4187,7 @@ msgstr "" " Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau " "sebuah error terjadi." -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4228,6 +4253,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4327,7 +4354,7 @@ msgstr "" "EXPR mengevaluasi ke\n" " salah atau sebuah argumen tidak valid diberikan." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4339,7 +4366,7 @@ msgstr "" " Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n" " harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4359,7 +4386,7 @@ msgstr "" " Status Keluar:\n" " Selalu sukses." -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4441,7 +4468,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau " "sebuah pilihan tidak valid diberikan." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4503,7 +4530,7 @@ msgstr "" " Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada " "yang tidak ditemukan." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4595,7 +4622,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4633,7 +4660,7 @@ msgstr "" " Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak " "valid diberikan." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4646,6 +4673,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4666,18 +4696,20 @@ msgstr "" "pilihan tidak\n" " valid diberikan." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Tunggu untuk penyelesaian proses dan kembalikan status keluar.\n" " \n" @@ -4691,7 +4723,7 @@ msgstr "" "pilihan tidak valid\n" " diberikan." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4715,7 +4747,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4745,7 +4777,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4782,7 +4814,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4810,7 +4842,7 @@ msgstr "" " Status Keluar:\n" " Status kembali adalah status kembali dari PIPELINE." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4828,7 +4860,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan setatus dari perintah terakhir yang dijalankan." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4866,7 +4898,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4884,7 +4916,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4901,7 +4933,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dijalankan." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4924,7 +4956,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status keluar dari PERINTAH." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4949,7 +4981,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan sukses kecuali NAMA adalah baca-saja." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4968,7 +5000,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari perintah terakhir yang dieksekusi." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4995,7 +5027,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan status dari pekerjaan yang dilanjutkan." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5013,7 +5045,7 @@ msgstr "" " Status Keluar:\n" " Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -5070,7 +5102,7 @@ msgstr "" " Status Keluar:\n" " 0 atau 1 tergantun dari nilai dari EKSPRESI." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5184,7 +5216,7 @@ msgstr "" "digunakan untuk menentukan dimana\n" " \t\tperintah seharusnya disimpan dalam daftar sejarah.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5244,7 +5276,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5288,8 +5320,8 @@ msgstr "" " \tmenghapus direktori terakhir, `popd +1' sebelum terakhir.\n" " \n" " -N\tmenghapus masukan ke N dihitung dari kanan dari daftar\n" -" \tyang ditampilkan oleh `dirs', dimulai dari nol. Sebagai contoh: `popd " -"-0'\n" +" \tyang ditampilkan oleh `dirs', dimulai dari nol. Sebagai contoh: `popd -" +"0'\n" " \tmenghapus direktori terakhir, `popd -1' sebelum terakhir.\n" " \n" " Builtin `dirs' menampilkan direktori stack.\n" @@ -5299,7 +5331,7 @@ msgstr "" "atau pemindahan\n" " direktori gagal." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5355,7 +5387,7 @@ msgstr "" " Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan " "atau sebuah error terjadi." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5394,7 +5426,7 @@ msgstr "" "tidak valid diberikan\n" " atau OPTNAME dinonaktifkan." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5422,6 +5454,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5453,7 +5491,7 @@ msgstr "" "sebuah penulisan atau penempatan\n" " error terjadi." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5506,7 +5544,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5529,7 +5567,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "sebuah error terjadi." -#: builtins.c:1969 +#: builtins.c:1982 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5592,7 +5630,7 @@ msgstr "" "NAMA tidak memiliki\n" " spesifikasi penyelesaian yang terdefinisi." -#: builtins.c:1999 +#: builtins.c:2012 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5669,7 +5707,7 @@ msgstr "" " Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau " "ARRAY adalah baca-saja." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5679,6 +5717,19 @@ msgstr "" " \n" " Sebuah sinonim untuk `mapfile'." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Hak Cipta (C) 2009 Free Software Foundation, Inc.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Lisensi GPLv2+: GNU GPL versi 2 atau sesudahnya \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [pid]" + #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/it.gmo b/po/it.gmo index e1ee6493a..266e642f7 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 03d01f794..bf4d42f39 100644 --- a/po/it.po +++ b/po/it.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-10-17 09:14+0200\n" "Last-Translator: Sergio Zanchetta \n" "Language-Team: Italian \n" -"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: it\n" "Plural-Forms: nplurals=2; plural= (n != 1)\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "indice dell'array errato" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossibile convertire un array indicizzato in uno associativo" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chiave dell'array associativo non valida" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossibile assegnare a un indice non numerico" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -47,22 +47,22 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: impossibile creare: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: impossibile trovare una mappatura per il comando" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: il primo carattere non spazio non è \"\"\"" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "carattere di chiusura \"%c\" non presente in %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: separatore di tipo due punti mancante" @@ -128,7 +128,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME non impostata" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "troppi argomenti" @@ -151,7 +151,7 @@ msgstr "attenzione: " msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: l'opzione richiede un argomento" @@ -166,7 +166,7 @@ msgstr "%s: è necessario un argomento numerico" msgid "%s: not found" msgstr "%s: non trovata" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: opzione non valida" @@ -189,7 +189,7 @@ msgstr "numero ottale non valido" msgid "invalid hex number" msgstr "numero esadecimale non valido" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "numero non valido" @@ -298,25 +298,35 @@ msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto" msgid "not currently executing completion function" msgstr "funzione di completamento attualmente non in esecuzione" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "può essere usato solo in una funzione" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "impossibile usare \"-f\" per creare funzioni" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funzione in sola lettura" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossibile eliminare variabili array in questo modo" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossibile convertire un array associativo in uno indicizzato" @@ -345,23 +355,23 @@ msgstr "%s: non caricato dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossibile eliminare: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: è una directory" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: non è un file regolare" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: file troppo grande" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossibile eseguire il file binario" @@ -456,7 +466,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: impossibile aprire: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -499,16 +509,16 @@ msgstr "%s: inlib non riuscito" msgid "no other options allowed with `-x'" msgstr "nessuna altra opzione permessa con \"-x\"" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Errore sconosciuto" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "attesa espressione" @@ -517,64 +527,64 @@ msgstr "attesa espressione" msgid "%s: not an indexed array" msgstr "%s: non è un array indicizzato" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: specifica di descrittore di file non valida" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descrittore di file non valido: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: numero di righe non valido" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: origine dell'array non valida" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum di callback non valido" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "nome della variabile array vuoto" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "necessario il supporto alla variabile array" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": manca il carattere di formato" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": specifica di formato dell'orario non valida" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carattere di formato non valido" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "attenzione: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "cifra esadecimale mancante in \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "cifra unicode mancante in \\%c" @@ -583,19 +593,24 @@ msgstr "cifra unicode mancante in \\%c" msgid "no other directory" msgstr "nessun'altra directory" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: argomento di limite non valido" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "stack delle directory vuoto" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "indice dello stack delle directory" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -638,7 +653,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:705 +#: builtins/pushd.def:711 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" @@ -684,7 +699,7 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -722,12 +737,12 @@ msgstr "" " \n" " Il comando interno \"dirs\" visualizza lo stack delle directory." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: specifica di timeout non valida" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "errore in lettura: %d: %s" @@ -737,26 +752,26 @@ 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:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "impossibile azzerare contemporaneamente una funzione e una variabile" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: impossibile azzerare" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossibile azzerare: %s in sola lettura" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: non è una variabile array" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: non è una funzione" @@ -765,11 +780,11 @@ msgstr "%s: non è una funzione" msgid "shift count" msgstr "numero di scorrimenti" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome dell'opzione di shell non valido" @@ -894,127 +909,127 @@ msgstr "salto errato" msgid "%s: unbound variable" msgstr "%s: variabile non assegnata" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "impossibile redirigere lo standard input da /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "errore della pipe" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: comando non trovato" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interprete errato" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossibile eseguire il file binario" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s è un comando interno di shell\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossibile duplicare fd %d su fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "superato il livello di ricorsione dell'espressione" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "underflow dello stack di ricorsione" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "errore di sintassi nell'espressione" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "tentata un'assegnazione a una non variabile" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "divisione per 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: token di expassign errato" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "atteso \":\" per l'espressione condizionale" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "esponente minore di 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "\")\" mancante" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "errore di sintassi: atteso un operando" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "errore di sintassi: operatore aritmetico non valido" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (il token dell'errore è \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "base aritmetica non valida" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "valore troppo grande per la base" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: errore di espressione\n" @@ -1023,165 +1038,165 @@ msgstr "%s: errore di espressione\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossibile accedere alle directory padre" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossibile reimpostare il modo nodelay per fd %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffer già esistente per il nuovo fd %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:891 +#: jobs.c:892 #, 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:1009 +#: jobs.c:1010 #, 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:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) in the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid inesistente" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Segnale %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Completato" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Fermato" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Fermato(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "In esecuzione" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Eseguito(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Uscita %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Stato sconosciuto" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core dump creato) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (dir: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid del figlio (%ld a %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nessun record del processo %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: il job %d è fermo" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: il job è terminato" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: il job %d è già in background" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: riga %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core dump creato)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ora: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp non riuscita" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina di linea" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossibile impostare il gruppo di processi del terminale (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "nessun controllo dei job in questa shell" @@ -1203,50 +1218,50 @@ msgstr "" msgid "unknown" msgstr "sconosciuto" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: blocco eliminato nell'elenco dei disponibili" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: chiamata con un argomento di blocco già liberato" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: dimensioni diverse dei blocchi di inizio e di fine" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: chiamata con un argomento di blocco non allocato" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" "register_alloc: forse la tavola di allocazione è piena con FIND_ALLOC\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: forse %p è già come allocato nella tabella\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_alloc: forse %p è già come libero nella tabella\n" @@ -1294,15 +1309,15 @@ msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "È presente della posta in $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "È presente della nuova posta in $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "La posta in %s è stata letta\n" @@ -1337,104 +1352,104 @@ msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF non atteso durante la ricerca di \"%c\"" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "EOF non atteso durante la ricerca di \"]]\"" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" "errore di sintassi nell'espressione condizionale: token non atteso \"%s\"" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "errore di sintassi nell'espressione condizionale" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token non atteso \"%s\", era atteso \")\"" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "atteso \")\"" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "argomento non atteso per l'operatore unario condizionale" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "atteso operatore binario condizionale" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "argomento non atteso per l'operatore binario condizionale" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token non atteso \"%c\" nel comando condizionale" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token non atteso \"%s\" nel comando condizionale" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "token non atteso %d nel comando condizionale" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "errore di sintassi vicino al token non atteso \"%s\"" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "errore di sintassi vicino a \"%s\"" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "errore di sintassi: EOF non atteso" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "errore di sintassi" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Usare \"%s\" per uscire dalla shell.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF non atteso durante la ricerca di \")\"" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funzione \"%s\" non trovata" @@ -1463,71 +1478,71 @@ msgstr "xtrace_set: puntatore a file NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != numfile xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carattere di formato non valido" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "descrittore di file fuori dell'intervallo" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirezione ambigua" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossibile sovrascrivere il file esistente" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitato: impossibile redirigere l'output" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossibile assegnare fd a una variabile" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port non supportata senza rete" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "errore di reindirizzamento: impossibile duplicare fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "impossibile trovare /tmp, è necessario crearla" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp deve essere un nome di directory valido" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opzione non valida" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Manca il nome" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versione %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1536,43 +1551,44 @@ msgstr "" "Uso:\t%s [opzione lunga GNU] [opzione] ...\n" "\t%s [opzione lunga GNU] [opzione] file-script ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Opzioni lunghe GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opzioni di shell:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\topzione -%s oppure -o\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operazione non valida" @@ -1746,72 +1762,77 @@ msgstr "Numero di segnale sconosciuto" msgid "Unknown Signal #%d" msgstr "Segnale sconosciuto n° %d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossibile assegnare una lista a un membro di un array" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "impossibile creare una pipe per la sostituzione del processo" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "impossibile creare un figlio per la sostituzione del processo" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "impossibile aprire la pipe con nome %s in lettura" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "impossibile aprire la pipe con nome %s in scrittura" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossibile duplicare una pipe con nome %s come fd %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "impossibile creare una pipe per la sostituzione del comando" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "impossibile creare un figlio per la sostituzione del comando" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossibile duplicare la pipe come fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, 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:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametro nullo o non impostato" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressione di sottostringa < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: sostituzione errata" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossibile assegnare in questo modo" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1819,58 +1840,58 @@ msgstr "" "le versioni future della shell forzeranno la valutazione come fosse una " "sostituzione aritmetica" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sostituzione errata: manca «\"» di chiusura in %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "nessuna corrispondenza: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "atteso argomento" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: attesa espressione intera" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "atteso \")\"" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "atteso \")\", trovato %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: atteso operatore unario" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: atteso operatore binario" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "\"]\" mancante" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "numero di segnale non valido" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1878,75 +1899,86 @@ msgstr "" "run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato " "nuovamente %d (%s)" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: segnale errato %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "errore nell'importazione della definizione di funzione per \"%s\"" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "livello di shell (%d) troppo alto, reimpostato a 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: impossibile assegnare fd a una variabile" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s ha exportstr null" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carattere non valido %d in exportstr per %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "nessun \"=\" in exportstr per %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nessun contesto global_variables" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossibile aprire come FILE" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valore non valido per il descrittore del file di traccia" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s fuori dall'intervallo" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright © 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1954,35 +1986,21 @@ msgstr "" "Licenza GPLv3+: GNU GPL versione 3 o successiva \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versione %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Questo è software libero; è possibile modificarlo e ridistribuirlo.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Non c'è ALCUNA GARANZIA, nei limiti permessi dalla legge.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licenza GPLv2+: GNU GPL versione 2 o successive \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2062,7 +2080,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] comando [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [nome[=valore] ...]" #: builtins.c:78 @@ -2170,7 +2189,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opzione] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nome ...]" #: builtins.c:144 @@ -2228,12 +2248,13 @@ msgstr "umask [-p] [-S] [modo]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2781,6 +2802,7 @@ msgstr "" "non viene trovato." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2800,6 +2822,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2815,7 +2838,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Imposta i valori e gli attributi delle variabili.\n" " \n" @@ -2858,7 +2882,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2868,7 +2892,8 @@ msgstr "" " \n" " Obsoleto. Vedere \"help declare\"." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2879,8 +2904,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Definisce variabili locali.\n" " \n" @@ -2898,7 +2923,7 @@ msgstr "" "non si\n" " riscontri un errore o la shell non stia eseguendo una funzione." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2965,7 +2990,7 @@ msgstr "" " Restituisce successo a meno che non venga riscontrato un errore di " "scrittura." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2988,7 +3013,7 @@ msgstr "" " Restituisce successo a meno che non venga riscontrato un errore di " "scrittura." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3044,7 +3069,7 @@ msgstr "" " Restituisce successo a meno che NOME non sia un comando interno di shell " "o si riscontri un errore." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3064,7 +3089,7 @@ msgstr "" " Restituisce lo stato di uscita del comando o successo se il comando è " "nullo." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3155,7 +3180,7 @@ msgstr "" "raggiunta\n" " la fine delle opzioni o viene riscontrato un errore." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3198,7 +3223,7 @@ msgstr "" " Restituisce successo a meno che non sia trovato il COMANDO o si " "riscontri un errore di ridirezione." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3210,7 +3235,7 @@ msgstr "" " Esce dalla shell con uno stato N. Se N è omesso lo stato di uscita\n" " è quello dell'ultimo comando eseguito." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3224,7 +3249,7 @@ msgstr "" "se non eseguito\n" " in una shell di login." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3284,7 +3309,7 @@ msgstr "" " Restituisce successo o lo stato del comando eseguito, non zero se si " "riscontra un errore." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3305,7 +3330,7 @@ msgstr "" " Stato del comando messo in primo piano, o insuccesso se si riscontra un " "errore." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3330,7 +3355,7 @@ msgstr "" " Restituisce successo a meno che il controllo dei job non sia abilitato o " "si riscontri un errore." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3377,7 +3402,7 @@ msgstr "" " Restituisce successo a meno che non sia trovato NOME o sia fornita una " "opzione non valida." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3420,7 +3445,7 @@ msgstr "" " Restituisce successo a meno che non venga trovato il MODELLO o sia " "fornita una opzione non valida." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3494,7 +3519,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3541,7 +3566,7 @@ msgstr "" "si riscontri un errore.\n" " Se viene usato -x, restituisce lo stato di uscita del COMANDO." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3574,7 +3599,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o uno SPECJOB." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3619,7 +3644,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3714,7 +3739,7 @@ msgstr "" " Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti " "restituisce 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3750,7 +3775,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3818,7 +3843,7 @@ msgstr "" "timeout in lettura\n" " o venga fornito un descrittore di file non valido come argomento per -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3840,7 +3865,7 @@ msgstr "" " Restituisce N, oppure insuccesso se la shell non sta eseguendo una " "funzione o uno script." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -4025,7 +4050,8 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che non venga fornita una opzione non valida." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4034,6 +4060,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4063,7 +4091,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "NOME sia in sola lettura." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4099,7 +4127,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "il NOME non sia valido." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4137,7 +4165,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o NOME non sia valido." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4155,7 +4183,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che N non sia negativo o maggiore di $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4180,7 +4208,7 @@ msgstr "" "insuccesso se\n" " il NOMEFILE non può essere letto." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4206,7 +4234,8 @@ msgstr "" " Restituisce successo a meno che non sia abilitato il controllo job o si " "riscontri un errore." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4271,6 +4300,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4373,7 +4404,7 @@ msgstr "" "viene valutata\n" " falsa o viene fornito un argomento non valido." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4386,7 +4417,7 @@ msgstr "" "deve\n" " essere un \"]\" letterale per corrispondere al \"[\" di apertura." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4406,7 +4437,7 @@ msgstr "" " Stato di uscita:\n" " Sempre successo." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4492,7 +4523,7 @@ msgstr "" " Restituisce successo a meno che SPEC_SEGNALE non sia valido o si " "fornisca una opzione non valida." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4554,7 +4585,7 @@ msgstr "" " Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso " "contrario." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4648,7 +4679,7 @@ msgstr "" " Restituisce successo a meno che non venga fornita una opzione non valida " "o venga riscontrato un errore." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4685,7 +4716,7 @@ msgstr "" " Restituisce successo a meno che MODO non sia valido o venga fornita una " "opzione non valida." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4698,6 +4729,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4718,18 +4752,20 @@ msgstr "" "fornita una\n" " opzione non valida." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Attende il completamento del processo e restituisce lo stato di uscita.\n" " \n" @@ -4744,7 +4780,7 @@ msgstr "" "fornita una opzione non\n" " valida." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4769,7 +4805,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4800,7 +4836,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4838,7 +4874,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita dell'ultimo comando eseguito." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4867,7 +4903,7 @@ msgstr "" " Stato di uscita:\n" " Viene restituito lo stato della PIPELINE." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4886,7 +4922,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4925,7 +4961,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4943,7 +4979,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4961,7 +4997,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4986,7 +5022,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato di uscita del COMANDO." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -5012,7 +5048,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce successo a meno che il NOME non sia in sola lettura." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -5031,7 +5067,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato dell'ultimo comando eseguito." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -5055,7 +5091,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce lo stato del job ripristinato." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5073,7 +5109,7 @@ msgstr "" " Stato di uscita:\n" " Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -5130,7 +5166,7 @@ msgstr "" " Stato di uscita:\n" " 0 o 1 a seconda del valore dell'ESPRESSIONE." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5258,7 +5294,7 @@ msgstr "" "decidere quale\n" " \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5317,7 +5353,7 @@ msgstr "" "non abbia\n" " successo il cambio di directory." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5368,7 +5404,7 @@ msgstr "" "valido o non\n" " abbia successo il cambio di directory." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5421,7 +5457,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita un'opzione non valida o " "si riscontri un errore." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5462,7 +5498,7 @@ msgstr "" "fornita\n" " una opzione non valida o NOMEOPZ è disabilitato." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5490,6 +5526,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5526,7 +5568,7 @@ msgstr "" "o si riscontri\n" " un errore di scrittura o assegnazione." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5581,7 +5623,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5605,7 +5647,7 @@ msgstr "" " Restituisce successo a meno che non sia fornita una opzione non valida o " "si riscontri un errore." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5669,7 +5711,7 @@ msgstr "" "o NOME non\n" " abbia una specifica di completamento definita." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5748,7 +5790,7 @@ msgstr "" "valida, ARRAY sia\n" " in sola lettura oppure non indicizzato." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5757,3 +5799,16 @@ msgstr "" "Legge le righe da un file in una variabile di array.\n" " \n" " Sinonimo per \"mapfile\"." + +#~ 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 eb52fe7e2..a480b4f97 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 7472cb7e0..ddaa96914 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,15 +1,15 @@ # Japanese messages for GNU bash -# Copyright (C) 1999, 2010, 2011 Free Software Foundation, Inc. +# Copyright (C) 1999, 2010, 2011, 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. # Kyoichi Ozaki , 2000. # Yasuaki Taniguchi , 2011. -# Takeshi Hamasaki , 2011. +# Takeshi Hamasaki , 2011, 2013. msgid "" msgstr "" "Project-Id-Version: GNU bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" -"PO-Revision-Date: 2011-08-26 23:34+0900\n" +"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"PO-Revision-Date: 2013-03-12 19:44+0900\n" "Last-Translator: Takeshi Hamasaki \n" "Language-Team: Japanese \n" "Language: Japanese\n" @@ -17,51 +17,52 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.5.4\n" -#: arrayfunc.c:51 +#: arrayfunc.c:50 msgid "bad array subscript" msgstr "誤った配列の添字" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:313 builtins/declare.def:487 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: インデックス配列から連想配列に変換することはできません" -#: arrayfunc.c:513 +#: arrayfunc.c:480 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無効な連想配列のキーです" -#: arrayfunc.c:515 +#: arrayfunc.c:482 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 配列の添字に非数字を設定できません" -#: arrayfunc.c:557 +#: arrayfunc.c:518 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 連想配列を設定するときには添字をつけなければいけません" -#: bashhist.c:388 +#: bashhist.c:387 #, c-format msgid "%s: cannot create: %s" msgstr "%s: %s を作成できません" -#: bashline.c:3868 +#: bashline.c:3498 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: コマンドのキーマップがありません" -#: bashline.c:3955 +#: bashline.c:3584 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 最初の非空白類文字が `\"' ではありません" -#: bashline.c:3984 +#: bashline.c:3613 #, c-format msgid "no closing `%c' in %s" msgstr "閉じる `%c' が %s にありません" -#: bashline.c:4018 +#: bashline.c:3647 #, c-format msgid "%s: missing colon separator" msgstr "%s: 区切り文字コロン(:)がありません" @@ -71,36 +72,36 @@ msgstr "%s: 区切り文字コロン(:)がありません" msgid "`%s': invalid alias name" msgstr "`%s': 無効なエイリアス名です" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:120 builtins/bind.def:123 msgid "line editing not enabled" msgstr "行編集が有効になっていません" -#: builtins/bind.def:212 +#: builtins/bind.def:206 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': 無効なキーマップ名です" -#: builtins/bind.def:251 +#: builtins/bind.def:245 #, c-format msgid "%s: cannot read: %s" msgstr "%s: %s を読み込めません" -#: builtins/bind.def:266 +#: builtins/bind.def:260 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': 割り当て解除できません" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:295 builtins/bind.def:325 #, c-format msgid "`%s': unknown function name" msgstr "`%s': 不明な関数名です" -#: builtins/bind.def:312 +#: builtins/bind.def:303 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s はどのキーにも割り当てられていません。\n" -#: builtins/bind.def:316 +#: builtins/bind.def:307 #, c-format msgid "%s can be invoked via " msgstr "%s は次を通して起動します " @@ -123,15 +124,11 @@ msgstr "" " \n" " EXPR が無い場合、次を返します " -#: builtins/cd.def:239 +#: builtins/cd.def:235 msgid "HOME not set" msgstr "HOME が設定されていません" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "引数が多すぎます" - -#: builtins/cd.def:258 +#: builtins/cd.def:247 msgid "OLDPWD not set" msgstr "OLDPWD が設定されていません" @@ -140,7 +137,7 @@ msgstr "OLDPWD が設定されていません" msgid "line %d: " msgstr "%d 行: " -#: builtins/common.c:139 error.c:265 +#: builtins/common.c:139 error.c:261 #, c-format msgid "warning: " msgstr "警告: " @@ -150,7 +147,11 @@ msgstr "警告: " msgid "%s: usage: " msgstr "%s: 使用法: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:166 test.c:832 +msgid "too many arguments" +msgstr "引数が多すぎます" + +#: builtins/common.c:191 shell.c:500 shell.c:782 #, c-format msgid "%s: option requires an argument" msgstr "%s: オプションには引数が必要です" @@ -165,7 +166,7 @@ msgstr "%s: 数字の引数が必要です" msgid "%s: not found" msgstr "%s: 見つかりません" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:795 #, c-format msgid "%s: invalid option" msgstr "%s: 無効なオプションです" @@ -175,7 +176,7 @@ msgstr "%s: 無効なオプションです" msgid "%s: invalid option name" msgstr "%s: 無効なオプション名です" -#: builtins/common.c:228 general.c:234 general.c:239 +#: builtins/common.c:228 general.c:231 general.c:236 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': 有効な識別子ではありません" @@ -188,7 +189,7 @@ msgstr "無効な八進数です" msgid "invalid hex number" msgstr "無効な十六進数です" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1362 msgid "invalid number" msgstr "無効な数字です" @@ -202,7 +203,7 @@ msgstr "%s: 無効なシグナル指定です" msgid "`%s': not a pid or valid job spec" msgstr "`%s': pid または有効なジョブ指定ではありません" -#: builtins/common.c:264 error.c:458 +#: builtins/common.c:264 error.c:454 #, c-format msgid "%s: readonly variable" msgstr "%s: 読み取り専用の変数です" @@ -274,26 +275,26 @@ msgstr "%s: カレントディレクトリの取得時にエラーが発生し msgid "%s: ambiguous job spec" msgstr "%s: 曖昧なジョブ指定です" -#: builtins/complete.def:277 +#: builtins/complete.def:276 #, c-format msgid "%s: invalid action name" msgstr "%s: 無効なアクション名です" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:449 builtins/complete.def:644 +#: builtins/complete.def:853 #, c-format msgid "%s: no completion specification" msgstr "%s: 補完指定がありません" -#: builtins/complete.def:697 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "警告: -F オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:699 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "警告: -C オプションは期待通りに動作しないかもしれません" -#: builtins/complete.def:828 +#: builtins/complete.def:826 msgid "not currently executing completion function" msgstr "補完機能は現在実行されていません" @@ -305,7 +306,7 @@ msgstr "関数の中でのみ使用できます" msgid "cannot use `-f' to make functions" msgstr "関数作成時に `-f' を使用できません" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:378 execute_cmd.c:5105 #, c-format msgid "%s: readonly function" msgstr "%s: 読み取り専用関数です" @@ -315,7 +316,7 @@ msgstr "%s: 読み取り専用関数です" msgid "%s: cannot destroy array variables in this way" msgstr "%s: この方法で配列変数を消去することはできません" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:481 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 連想配列からインデックス配列に変換することはできません" @@ -344,8 +345,8 @@ msgstr "%s: 動的にロードされていません" msgid "%s: cannot delete: %s" msgstr "%s: 削除できません: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 +#: shell.c:1457 #, c-format msgid "%s: is a directory" msgstr "%s: ディレクトリです" @@ -360,7 +361,8 @@ msgstr "%s: 通常ファイルではありません" msgid "%s: file is too large" msgstr "%s: ファイルが大きすぎます" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 +#: shell.c:1467 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: バイナリファイルを実行できません" @@ -443,11 +445,8 @@ msgstr[0] "キーワードに一致したシェルコマンド `" #: builtins/help.def:168 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"`%s' に一致するヘルプ項目がありません。`help help'、`man -k %s' または `info " -"%s' を試してください" +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "`%s' に一致するヘルプ項目がありません。`help help'、`man -k %s' または `info %s' を試してください" #: builtins/help.def:185 #, c-format @@ -465,15 +464,12 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"これらのシェルコマンドは内部で定義されています。`help' と入力して一覧を参照し" -"てください。\n" +"これらのシェルコマンドは内部で定義されています。`help' と入力して一覧を参照してください。\n" "`help 名前' と入力すると `名前' という関数のより詳しい説明が得られます。\n" "'info bash' を使用するとシェル全般のより詳しい説明が得られます。\n" -"`man -k' または info を使用すると一覧にないコマンドのより詳しい説明が得られま" -"す。\n" +"`man -k' または info を使用すると一覧にないコマンドのより詳しい説明が得られます。\n" "\n" -"名前の後にアスタリスク (*) がある場合はそのコマンドが無効になっていることを意" -"味します。\n" +"名前の後にアスタリスク (*) がある場合はそのコマンドが無効になっていることを意味します。\n" "\n" #: builtins/history.def:154 @@ -484,7 +480,7 @@ msgstr "-anrw を2つ以上一緒に使用することはできません" msgid "history position" msgstr "ヒストリ位置" -#: builtins/history.def:366 +#: builtins/history.def:365 #, c-format msgid "%s: history expansion failed" msgstr "%s: ヒストリの展開に失敗しました" @@ -507,7 +503,7 @@ msgstr "%s: 引数はプロセスIDかジョブIDでなければいけません" msgid "Unknown error" msgstr "不明なエラーです" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 msgid "expression expected" msgstr "式が予期されます" @@ -516,15 +512,15 @@ msgstr "式が予期されます" msgid "%s: not an indexed array" msgstr "%s: インデックス配列ではありません" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:256 builtins/read.def:279 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無効なファイル記述子指定です" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:264 builtins/read.def:286 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: %s は無効なファイル記述子です" +msgstr "%d: 無効なファイル記述子: %s" #: builtins/mapfile.def:273 builtins/mapfile.def:311 #, c-format @@ -549,31 +545,31 @@ msgstr "空の配列変数名です" msgid "array variable support required" msgstr "配列変数のサポートが必要です" -#: builtins/printf.def:397 +#: builtins/printf.def:394 #, c-format msgid "`%s': missing format character" msgstr "`%s': 書式指定文字がありません" -#: builtins/printf.def:451 +#: builtins/printf.def:448 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': 無効な時間書式指定です" -#: builtins/printf.def:647 +#: builtins/printf.def:635 #, c-format msgid "`%c': invalid format character" msgstr "`%c': 無効な書式指定文字です" -#: builtins/printf.def:673 +#: builtins/printf.def:662 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:840 msgid "missing hex digit for \\x" msgstr "\\x 用の十六進数字がありません" -#: builtins/printf.def:869 +#: builtins/printf.def:855 #, c-format msgid "missing unicode digit for \\%c" msgstr "\\%c 用のユニコード数値がありません" @@ -609,12 +605,10 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "現在記憶されているディレクトリスタックを表示します。ディレクトリは `pushd'\n" @@ -718,17 +712,17 @@ msgstr "" " \n" " `dirs' ビルトインコマンドでディレクトリスタックを表示します。" -#: builtins/read.def:272 +#: builtins/read.def:252 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無効なタイムアウト指定です" -#: builtins/read.def:644 +#: builtins/read.def:588 #, c-format msgid "read error: %d: %s" msgstr "読み込みエラー: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:73 msgid "can only `return' from a function or sourced script" msgstr "`return' は関数または source されたスクリプト内のみで利用できます" @@ -736,17 +730,17 @@ msgstr "`return' は関数または source されたスクリプト内のみで msgid "cannot simultaneously unset a function and a variable" msgstr "変数と関数を同時に消去することはできません" -#: builtins/set.def:812 +#: builtins/set.def:808 #, c-format msgid "%s: cannot unset" msgstr "%s: 消去できません" -#: builtins/set.def:829 +#: builtins/set.def:815 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 消去できません: %s は読み取り専用です" -#: builtins/set.def:841 +#: builtins/set.def:826 #, c-format msgid "%s: not an array variable" msgstr "%s: 配列変数ではありません" @@ -760,11 +754,11 @@ msgstr "%s: 関数ではありません" msgid "shift count" msgstr "シフト回数" -#: builtins/shopt.def:277 +#: builtins/shopt.def:264 msgid "cannot set and unset shell options simultaneously" msgstr "シェルオプションを同時に有効かつ無効にできません" -#: builtins/shopt.def:342 +#: builtins/shopt.def:329 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無効なシェルオプション名です" @@ -806,7 +800,7 @@ msgstr "%s は関数です\n" msgid "%s is a shell builtin\n" msgstr "%s はシェル組み込み関数です\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:317 builtins/type.def:391 #, c-format msgid "%s is %s\n" msgstr "%s は %s です\n" @@ -816,26 +810,26 @@ msgstr "%s は %s です\n" msgid "%s is hashed (%s)\n" msgstr "%s はハッシュされています (%s)\n" -#: builtins/ulimit.def:379 +#: builtins/ulimit.def:376 #, c-format msgid "%s: invalid limit argument" msgstr "%s: limit の無効な引数です" -#: builtins/ulimit.def:405 +#: builtins/ulimit.def:402 #, c-format msgid "`%c': bad command" msgstr "`%c': 誤ったコマンドです" -#: builtins/ulimit.def:434 +#: builtins/ulimit.def:431 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: limit を取得できません: %s" -#: builtins/ulimit.def:460 +#: builtins/ulimit.def:457 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:472 builtins/ulimit.def:772 +#: builtins/ulimit.def:469 builtins/ulimit.def:769 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: limit を変更できません : %s" @@ -854,7 +848,7 @@ msgstr "`%c': 無効なシンボリックモード演算子です" msgid "`%c': invalid symbolic mode character" msgstr "`%c': 無効なシンボリックモード文字です" -#: error.c:90 error.c:325 error.c:327 error.c:329 +#: error.c:90 error.c:321 error.c:323 error.c:325 msgid " line " msgstr " 行 " @@ -868,23 +862,23 @@ msgstr "最後のコマンド: %s\n" msgid "Aborting..." msgstr "中止しています..." -#: error.c:410 +#: error.c:406 msgid "unknown command error" msgstr "不明なコマンドエラーです" -#: error.c:411 +#: error.c:407 msgid "bad command type" msgstr "誤ったコマンドタイプです" -#: error.c:412 +#: error.c:408 msgid "bad connector" msgstr "誤った接続です" -#: error.c:413 +#: error.c:409 msgid "bad jump" msgstr "誤ったジャンプです" -#: error.c:451 +#: error.c:447 #, c-format msgid "%s: unbound variable" msgstr "%s: 未割り当ての変数です" @@ -899,117 +893,102 @@ msgstr "\a入力待ちがタイムアウトしました: 自動ログアウト\n msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null から標準入力に対してリダイレクトできません: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1168 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': 無効な書式文字です" -#: execute_cmd.c:2240 +#: execute_cmd.c:2121 msgid "pipe error" msgstr "パイプエラー" -#: execute_cmd.c:4284 -#, c-format -msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" - -#: execute_cmd.c:4777 +#: execute_cmd.c:4640 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 制限されています: `/' をコマンド名の中に指定できません" -#: execute_cmd.c:4872 +#: execute_cmd.c:4735 #, c-format msgid "%s: command not found" msgstr "%s: コマンドが見つかりません" -#: execute_cmd.c:5098 +#: execute_cmd.c:4959 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:4995 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 誤ったインタプリタです" -#: execute_cmd.c:5172 -#, fuzzy, c-format -msgid "%s: cannot execute binary file: %s" -msgstr "%s: バイナリファイルを実行できません" - -#: execute_cmd.c:5244 -#, fuzzy, c-format -msgid "`%s': is a special builtin" -msgstr "%s はシェル組み込み関数です\n" - -#: execute_cmd.c:5296 +#: execute_cmd.c:5144 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d を fd %d に複製できません" -#: expr.c:258 +#: expr.c:256 msgid "expression recursion level exceeded" msgstr "式の再帰可能レベルを越えました" -#: expr.c:282 +#: expr.c:280 msgid "recursion stack underflow" msgstr "再帰スタックがアンダーフローしました" -#: expr.c:430 +#: expr.c:422 msgid "syntax error in expression" msgstr "式に構文エラーがあります" -#: expr.c:474 +#: expr.c:463 msgid "attempted assignment to non-variable" msgstr "非変数に割り当てを行おうとしてます" -#: expr.c:493 expr.c:838 +#: expr.c:486 expr.c:491 expr.c:807 msgid "division by 0" msgstr "0 による除算です" -#: expr.c:540 +#: expr.c:517 msgid "bug: bad expassign token" msgstr "バグ: 誤った式のトークンです" -#: expr.c:589 +#: expr.c:564 msgid "`:' expected for conditional expression" msgstr "条件式には `:' が予期されます" -#: expr.c:895 +#: expr.c:832 msgid "exponent less than 0" msgstr "0より小さい指数部です" -#: expr.c:948 +#: expr.c:887 msgid "identifier expected after pre-increment or pre-decrement" msgstr "識別子は前置インクリメントまたは前置デクリメントが予期されます" -#: expr.c:973 +#: expr.c:910 msgid "missing `)'" msgstr "`)' がありません" -#: expr.c:1024 expr.c:1351 +#: expr.c:959 expr.c:1282 msgid "syntax error: operand expected" msgstr "構文エラー: オペランドが予期されます" -#: expr.c:1353 +#: expr.c:1284 msgid "syntax error: invalid arithmetic operator" msgstr "構文エラー: 無効な計算演算子です" -#: expr.c:1377 +#: expr.c:1308 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (エラーのあるトークンは \"%s\")" -#: expr.c:1435 +#: expr.c:1366 msgid "invalid arithmetic base" msgstr "無効な基底の数値です" -#: expr.c:1455 +#: expr.c:1386 msgid "value too great for base" msgstr "基底の値が大きすぎます" -#: expr.c:1504 +#: expr.c:1435 #, c-format msgid "%s: expression error\n" msgstr "%s: 式のエラー\n" @@ -1018,163 +997,163 @@ msgstr "%s: 式のエラー\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: 親ディレクトリにアクセスできません" -#: input.c:99 subst.c:5094 +#: input.c:94 subst.c:5082 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ファイル記述子(fd) %d を無遅延モードに再設定できません" -#: input.c:265 +#: input.c:260 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "新規ファイル記述子(fd) %d を bash の入力として割り当てられません" -#: input.c:273 +#: input.c:268 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 新規 fd %d のバッファはすでに存在します" -#: jobs.c:470 +#: jobs.c:468 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:891 +#: jobs.c:889 #, c-format msgid "forked pid %d appears in running job %d" msgstr "実行中のジョブ %2$d で fork した pid %1$d が出現しました" -#: jobs.c:1009 +#: jobs.c:1007 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "プロセスグループ %2$ld のジョブ %1$d を削除しています" -#: jobs.c:1114 +#: jobs.c:1112 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: プロセス %5ld (%s) が the_pipeline にあります" -#: jobs.c:1117 +#: jobs.c:1115 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) はまだ存在しているとマークされています" -#: jobs.c:1432 +#: jobs.c:1430 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: そのような pid は存在しません" -#: jobs.c:1447 +#: jobs.c:1445 #, c-format msgid "Signal %d" msgstr "シグナル %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1459 jobs.c:1484 msgid "Done" msgstr "終了" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1464 siglist.c:123 msgid "Stopped" msgstr "停止" -#: jobs.c:1470 +#: jobs.c:1468 #, c-format msgid "Stopped(%s)" msgstr "停止 (%s)" -#: jobs.c:1474 +#: jobs.c:1472 msgid "Running" msgstr "実行中" -#: jobs.c:1488 +#: jobs.c:1486 #, c-format msgid "Done(%d)" msgstr "終了(%d)" -#: jobs.c:1490 +#: jobs.c:1488 #, c-format msgid "Exit %d" msgstr "終了 %d" -#: jobs.c:1493 +#: jobs.c:1491 msgid "Unknown status" msgstr "不明なステータス" -#: jobs.c:1580 +#: jobs.c:1578 #, c-format msgid "(core dumped) " msgstr "(コアダンプ) " -#: jobs.c:1599 +#: jobs.c:1597 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1805 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子プロセス setpgid (%ld から %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2133 nojobs.c:585 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: pid %ld はこのシェルの子プロセスではありません" -#: jobs.c:2372 +#: jobs.c:2360 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: プロセス %ld の記録がありません" -#: jobs.c:2653 +#: jobs.c:2637 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: ジョブ %d は停止しています" -#: jobs.c:2875 +#: jobs.c:2859 #, c-format msgid "%s: job has terminated" msgstr "%s: ジョブは終了しました" -#: jobs.c:2884 +#: jobs.c:2868 #, c-format msgid "%s: job %d already in background" msgstr "%s: ジョブ %d はすでにバックグラウンドで動作しています" -#: jobs.c:3105 +#: jobs.c:3089 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 不定のブロックを避けるために WNOHANG をオンにしました。" -#: jobs.c:3571 +#: jobs.c:3538 #, c-format msgid "%s: line %d: " msgstr "%s: %d 行: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3552 nojobs.c:814 #, c-format msgid " (core dumped)" msgstr " (コアダンプ)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3564 jobs.c:3577 #, c-format msgid "(wd now: %s)\n" msgstr "(wd now: %s)\n" -#: jobs.c:3642 +#: jobs.c:3609 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp が失敗しました" -#: jobs.c:3703 +#: jobs.c:3669 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3713 +#: jobs.c:3679 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3707 #, c-format msgid "cannot set terminal process group (%d)" msgstr "端末プロセスグループを設定できません (%d)" -#: jobs.c:3748 +#: jobs.c:3712 msgid "no job control in this shell" msgstr "このシェルではジョブ制御が無効になっています" @@ -1243,7 +1222,7 @@ msgstr "register_alloc: %p 既にテーブル上では割り当てられてい msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p テーブル上では既に解放されています\n" -#: lib/sh/fmtulong.c:102 +#: lib/sh/fmtulong.c:101 msgid "invalid base" msgstr "無効な基底" @@ -1266,22 +1245,22 @@ msgstr "%s: ネットワークパス指定に誤りがあります" msgid "network operations not supported" msgstr "ネットワーク操作はサポートされていません" -#: locale.c:204 +#: locale.c:192 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s)" -#: locale.c:206 +#: locale.c:194 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: ロケールを変更できません (%s): %s" -#: locale.c:263 +#: locale.c:247 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ロケールを変更できません (%s)" -#: locale.c:265 +#: locale.c:249 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ロケールを変更できません (%s): %s" @@ -1312,119 +1291,118 @@ msgstr "構文エラー: 予期しない `;' です" msgid "syntax error: `((%s))'" msgstr "構文エラー: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:575 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: 誤った指定の種類 %d" -#: make_cmd.c:662 +#: make_cmd.c:659 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" -"ヒアドキュメントの %d 行目でファイル終了 (EOF) に達しました (`%s' が必要)" +msgstr "ヒアドキュメントの %d 行目でファイル終了 (EOF) に達しました (`%s' が必要)" -#: make_cmd.c:759 +#: make_cmd.c:756 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: リダイレクト指定 `%d' は範囲外です" -#: parse.y:3173 parse.y:3448 +#: parse.y:3173 parse.y:3444 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "対応する `%c' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4038 +#: parse.y:4025 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' を探索中に予期しないファイル終了 (EOF) です" -#: parse.y:4043 +#: parse.y:4030 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "条件式に構文エラー: 予期しないトークン `%s' です" -#: parse.y:4047 +#: parse.y:4034 msgid "syntax error in conditional expression" msgstr "条件式に構文エラーがあります" -#: parse.y:4125 +#: parse.y:4112 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "予期しないトークン `%s' です。`)' が予期されます" -#: parse.y:4129 +#: parse.y:4116 msgid "expected `)'" msgstr "`)' が予期されます" -#: parse.y:4157 +#: parse.y:4144 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "条件単項演算子に予期しない引数 `%s' です" -#: parse.y:4161 +#: parse.y:4148 msgid "unexpected argument to conditional unary operator" msgstr "条件単項演算子に予期しない引数です" -#: parse.y:4207 +#: parse.y:4194 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "`%s` は予期しないトークンです。条件二項演算子が予期されます" -#: parse.y:4211 +#: parse.y:4198 msgid "conditional binary operator expected" msgstr "条件二項演算子が予期されます" -#: parse.y:4233 +#: parse.y:4220 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "条件二項演算子に予期しない引数 `%s' です" -#: parse.y:4237 +#: parse.y:4224 msgid "unexpected argument to conditional binary operator" msgstr "条件二項演算子に予期しない引数です" -#: parse.y:4248 +#: parse.y:4235 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "条件コマンドに予期しないトークン `%c' があります" -#: parse.y:4251 +#: parse.y:4238 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "条件コマンドに予期しないトークン `%s' があります" -#: parse.y:4255 +#: parse.y:4242 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件コマンドに予期しないトークン %d があります" -#: parse.y:5590 +#: parse.y:5566 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "予期しないトークン `%s' 周辺に構文エラーがあります" -#: parse.y:5608 +#: parse.y:5584 #, c-format msgid "syntax error near `%s'" msgstr "`%s' 周辺に構文エラーがあります" -#: parse.y:5618 +#: parse.y:5594 msgid "syntax error: unexpected end of file" msgstr "構文エラー: 予期しないファイル終了 (EOF) です" -#: parse.y:5618 +#: parse.y:5594 msgid "syntax error" msgstr "構文エラー" -#: parse.y:5680 +#: parse.y:5656 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "シェルから脱出するには \"%s\" を使用してください。\n" -#: parse.y:5842 +#: parse.y:5818 msgid "unexpected EOF while looking for matching `)'" msgstr "対応する `)' を探索中に予期しないファイル終了(EOF)です" -#: pcomplete.c:1079 +#: pcomplete.c:1030 #, c-format msgid "completion: function `%s' not found" msgstr "completion: 関数 `%s' が見つかりません" @@ -1434,26 +1412,26 @@ msgstr "completion: 関数 `%s' が見つかりません" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:296 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 誤った接続 `%d'" -#: print_cmd.c:373 +#: print_cmd.c:368 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 無効なファイル記述子です" -#: print_cmd.c:378 +#: print_cmd.c:373 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: NULL ファイルポインタです" -#: print_cmd.c:382 +#: print_cmd.c:377 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1478 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 無効な書式文字です" @@ -1491,33 +1469,33 @@ msgstr "%s: ファイル記述子 (fd) を変数に設定することはでき msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "ネットワークが無効な場合 /dev/(tcp|udp)/host/port はサポートされません" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:818 redir.c:930 redir.c:993 redir.c:1136 msgid "redirection error: cannot duplicate fd" msgstr "リダイレクトエラー: ファイル記述子を複製できません" -#: shell.c:337 +#: shell.c:333 msgid "could not find /tmp, please create!" msgstr "/tmp が見つかりません。作成してください!" -#: shell.c:341 +#: shell.c:337 msgid "/tmp must be a valid directory name" msgstr "/tmp は有効なディレクトリ名でなければいけません" -#: shell.c:888 +#: shell.c:884 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 無効なオプション" -#: shell.c:1662 +#: shell.c:1652 msgid "I have no name!" msgstr "私は名前がありません!" -#: shell.c:1807 +#: shell.c:1795 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, バージョン %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1796 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1526,40 +1504,39 @@ msgstr "" "使用法:\t%s [GNU long option] [option] ...\n" "\t%s [GNU long option] [option] script-file ...\n" -#: shell.c:1810 +#: shell.c:1798 msgid "GNU long options:\n" msgstr "GNU 形式の長いオプション:\n" -#: shell.c:1814 +#: shell.c:1802 msgid "Shell options:\n" msgstr "シェルオプション:\n" -#: shell.c:1815 +#: shell.c:1803 msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD または -c command または -O shopt_option\t\t(起動時のみ)\n" -#: shell.c:1830 +#: shell.c:1818 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s または -o option\n" -#: shell.c:1836 +#: shell.c:1824 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"シェルオプションの詳細については `%s -c \"help set\"'と入力してください。\n" +msgstr "シェルオプションの詳細については `%s -c \"help set\"'と入力してください。\n" -#: shell.c:1837 +#: shell.c:1825 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "シェル組み込みコマンドについては `%s -c help' と入力してください。\n" -#: shell.c:1838 +#: shell.c:1826 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "バグ報告をする場合は `bashbug' コマンドを使用してください。\n" -#: sig.c:647 +#: sig.c:638 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 無効な操作です" @@ -1733,83 +1710,81 @@ msgstr "不明なシグナル番号" msgid "Unknown Signal #%d" msgstr "不明なシグナル番号 %d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1333 subst.c:1502 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "誤った代入: 閉じる `%s' が %s に存在しません" -#: subst.c:2801 +#: subst.c:2795 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: リストを配列要素に割り当てできません" -#: subst.c:4991 subst.c:5007 +#: subst.c:4979 subst.c:4995 msgid "cannot make pipe for process substitution" msgstr "プロセス代入ではパイプを作成できません" -#: subst.c:5039 +#: subst.c:5027 msgid "cannot make child for process substitution" msgstr "プロセス代入では子プロセスを作成できません" -#: subst.c:5084 +#: subst.c:5072 #, c-format msgid "cannot open named pipe %s for reading" msgstr "名前付きパイプ %s を読み込み用に開けません" -#: subst.c:5086 +#: subst.c:5074 #, c-format msgid "cannot open named pipe %s for writing" msgstr "名前付きパイプ %s を書き込み用に開けません" -#: subst.c:5104 +#: subst.c:5092 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "名前付きパイプ %s をファイル記述子(fd) %d として複製できません" -#: subst.c:5296 +#: subst.c:5284 msgid "cannot make pipe for command substitution" msgstr "コマンド代入ではパイプを作成できません" -#: subst.c:5334 +#: subst.c:5322 msgid "cannot make child for command substitution" msgstr "コマンド代入では子プロセスを作成できません" -#: subst.c:5351 +#: subst.c:5339 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: パイプを fd 1 として複製できません" -#: subst.c:5875 +#: subst.c:5859 #, c-format msgid "%s: parameter null or not set" msgstr "%s: パラメータが null または設定されていません" -#: subst.c:6141 subst.c:6156 +#: subst.c:6125 subst.c:6140 #, c-format msgid "%s: substring expression < 0" msgstr "%s: substring expression < 0" -#: subst.c:7284 +#: subst.c:7271 #, c-format msgid "%s: bad substitution" msgstr "%s: 誤った代入です" -#: subst.c:7361 +#: subst.c:7347 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: この方法で割当はできません" -#: subst.c:7697 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" +#: subst.c:7684 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "将来のバージョンのシェルでは強制的に数値代入として評価されます" -#: subst.c:8165 +#: subst.c:8149 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "誤った代入: %s に閉じる \"`\" がありません" -#: subst.c:9056 +#: subst.c:9036 #, c-format msgid "no match: %s" msgstr "一致しません: %s" @@ -1846,80 +1821,76 @@ msgstr "%s: 二項演算子が予期されます" msgid "missing `]'" msgstr "`]'がありません" -#: trap.c:209 +#: trap.c:207 msgid "invalid signal number" msgstr "無効なシグナル番号" -#: trap.c:329 +#: trap.c:337 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] に誤った値があります: %p" -#: trap.c:333 +#: trap.c:341 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: シグナルハンドラーは SIG_DFLです。, %d (%s) を自身に再送し" -"ます。" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: シグナルハンドラーは SIG_DFLです。, %d (%s) を自身に再送します。" -#: trap.c:379 +#: trap.c:393 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 誤ったシグナル %d" -#: variables.c:366 +#: variables.c:363 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' の関数定義をインポート中にエラーが発生しました" -#: variables.c:764 +#: variables.c:755 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "シェルレベル (%d) は高すぎます。1に再設定されました" -#: variables.c:1941 +#: variables.c:1932 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 現在のスコープは関数コンテキストではありません" -#: variables.c:3192 +#: variables.c:3182 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 現在のスコープは関数コンテキストではありません" -#: variables.c:3437 +#: variables.c:3427 #, c-format msgid "%s has null exportstr" msgstr "%s は null の exportstr を持っています" -#: variables.c:3442 variables.c:3451 +#: variables.c:3432 variables.c:3441 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s に対する exportstr で %1$d は無効な文字です" -#: variables.c:3457 +#: variables.c:3447 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s に対する exportstr に `=' がありません" -#: variables.c:3917 +#: variables.c:3891 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" -"pop_var_context: shell_variables の先頭です。関数コンテキストではありません" +msgstr "pop_var_context: shell_variables の先頭です。関数コンテキストではありません" -#: variables.c:3930 +#: variables.c:3904 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: global_variables コンテキストではありません" -#: variables.c:4004 +#: variables.c:3978 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables の先頭です。一時環境スコープではありません" -#: variables.c:4821 +#: variables.c:4786 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ファイルとして開くことができません" -#: variables.c:4826 +#: variables.c:4791 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: トレースファイル記述子として無効な値です" @@ -1929,12 +1900,8 @@ msgid "Copyright (C) 2011 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." #: version.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 \n" #: version.c:86 version2.c:83 #, c-format @@ -1958,12 +1925,8 @@ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" #: version2.c:87 #, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"ライセンス GPLv2+: GNU GPL バージョン 2 またはそれ以降 \n" +msgid "License GPLv2+: GNU GPL version 2 or later \n" +msgstr "ライセンス GPLv2+: GNU GPL バージョン 2 またはそれ以降 \n" #: xmalloc.c:91 #, c-format @@ -1994,13 +1957,8 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] name [name ...]" #: builtins.c:51 -#, fuzzy -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" -"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function または readline-command]" +msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function または readline-command]" #: builtins.c:54 msgid "break [n]" @@ -2107,12 +2065,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [pattern ...]" #: builtins.c:121 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d offset] [n] または history -anrw [filename] または history -" -"ps arg [arg...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d offset] [n] または history -anrw [filename] または history -ps arg [arg...]" #: builtins.c:125 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2123,24 +2077,16 @@ msgid "disown [-h] [-ar] [jobspec ...]" msgstr "disown [-h] [-ar] [jobspec ...]" #: builtins.c:132 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... または kill -l " -"[sigspec]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... または kill -l [sigspec]" #: builtins.c:134 msgid "let arg [arg ...]" msgstr "let 引数 [引数 ...]" #: builtins.c:136 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" #: builtins.c:138 msgid "return [n]" @@ -2199,8 +2145,7 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] name [name ...]" #: builtins.c:169 -#, fuzzy -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [limit]" #: builtins.c:172 @@ -2208,8 +2153,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [mode]" #: builtins.c:175 -#, fuzzy -msgid "wait [id ...]" +msgid "wait [id]" msgstr "wait [id]" #: builtins.c:179 @@ -2237,12 +2181,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" #: builtins.c:192 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" #: builtins.c:194 msgid "while COMMANDS; do COMMANDS; done" @@ -2301,42 +2241,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] format [arguments]" #: builtins.c:229 -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 option] [-A action] [-G globpat] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" +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 option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]" #: builtins.c:233 -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " -"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " -"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" #: builtins.c:237 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o option] [-DE] [name ...]" #: builtins.c:240 -msgid "" -"mapfile [-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]" +msgid "mapfile [-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]" #: builtins.c:242 -msgid "" -"readarray [-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]" +msgid "readarray [-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]" #: builtins.c:254 msgid "" @@ -2353,8 +2275,7 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "エイリアスを定義または表示します。\n" @@ -2362,18 +2283,15 @@ msgstr "" " 引数がない場合、`alias` は再使用可能なエイリアス一覧を `alias 名前=値'\n" " 形式で標準出力に表示します。\n" " \n" -" そうでなければ、与えられた名前と値でエイリアスを定義します。値の後続に空" -"白\n" -" が存在する場合は次の語はエイリアス展開時にエイリアス代入対象として確認さ" -"れ\n" +" そうでなければ、与えられた名前と値でエイリアスを定義します。値の後続に空白\n" +" が存在する場合は次の語はエイリアス展開時にエイリアス代入対象として確認され\n" " ます。\n" "\n" " オプション:\n" " -p\tすべての定義されたエイリアスを再利用可能な形式で表示します\n" " \n" " 終了ステータス:\n" -" alias は与えられた名前でエイリアスが定義されなかった場合を除き true を返" -"します。" +" alias は与えられた名前でエイリアスが定義されなかった場合を除き true を返します。" #: builtins.c:276 msgid "" @@ -2392,7 +2310,6 @@ msgstr "" " 名前がエイリアスに存在しない場合を除き true を返します。" #: builtins.c:289 -#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2404,30 +2321,24 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X\t\t List key sequences bound with -x and associated commands\n" -" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." @@ -2440,18 +2351,14 @@ msgstr "" " 例: bind '\"\\C-x\\C-r\": re-read-init-file'\n" " \n" " オプション:\n" -" -m keymap このコマンドの間のキーマップとして KEYMAP を使用す" -"る。\n" -" 利用可能なキーマップは emacs, emacs-standard, emacs-" -"meta,\n" -" emacs-ctlx, vi, vi-move, vi-command, および vi-" -"insert。\n" +" -m keymap このコマンドの間のキーマップとして KEYMAP を使用する。\n" +" 利用可能なキーマップは emacs, emacs-standard, emacs-meta,\n" +" emacs-ctlx, vi, vi-move, vi-command, および vi-insert。\n" " -l 関数名一覧を表示します。\n" " -P 関数名およびキーバインディング一覧を表示します。\n" " -p 関数名とキーバインディングを入力として再利用可能な\n" " 形式で一覧表示します。\n" -" -S マクロを起動するキーシーケンスとその値を一覧表示す" -"る\n" +" -S マクロを起動するキーシーケンスとその値を一覧表示する\n" " -s 入力として再利用可能な形式で、マクロを起動する\n" " キーシーケンスとその値を一覧表示する\n" " -V 変数名と値の一覧を表示します。\n" @@ -2468,7 +2375,7 @@ msgstr "" " bind は解釈できないオプションが渡された場合およびエラーが発生した場合\n" " を除き 0 を返します。" -#: builtins.c:328 +#: builtins.c:326 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2480,14 +2387,13 @@ msgid "" msgstr "" "for、 while、または until ループを脱出します。\n" " \n" -" FOR、 WHILE、または UNTIL ループを脱出します もし N が指定されている場" -"合、\n" +" FOR、 WHILE、または UNTIL ループを脱出します もし N が指定されている場合、\n" " N階層のループを終了します。\n" " \n" " 終了ステータス:\n" " N が1未満の場合を除き、終了ステータスは 0 です。" -#: builtins.c:340 +#: builtins.c:338 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2505,14 +2411,13 @@ msgstr "" " 終了ステータス:\n" " N が1未満の場合を除き、終了ステータスは 0 です。" -#: builtins.c:352 +#: builtins.c:350 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2528,7 +2433,7 @@ msgstr "" " シェル組み込みコマンドの終了ステータスを返します。シェル組み込みコマ\n" " ンドが無い場合は false を返します。" -#: builtins.c:367 +#: builtins.c:365 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2546,8 +2451,7 @@ msgstr "" "現在のサブルーチン呼び出しのコンテキストを返します。\n" " \n" " EXPR が無い場合 \"$line $filename\" を返します。 EXPR がある場合、\n" -" \"$line $subroutine $filename\" を返します。この追加の情報はスタックト" -"レース\n" +" \"$line $subroutine $filename\" を返します。この追加の情報はスタックトレース\n" " を提供する時に利用します。\n" " \n" " EXPR の値は現在のフレームに戻るまでに何回フレームが呼び出されているかを\n" @@ -2556,46 +2460,33 @@ msgstr "" " 終了ステータス:\n" " シェルが関数を実行できないか式 EXPR が無効な場合を除き 0 を返します。" -#: builtins.c:385 -#, fuzzy +#: builtins.c:383 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" +" -L\tforce symbolic links to be followed\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" +" \tlinks\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "シェルの作業ディレクトリを変更します。\n" @@ -2603,16 +2494,13 @@ msgstr "" " カレントディレクトリを DIR へ変更します。DIR のデフォルトは HOME シェル\n" " 変数の値です。\n" " \n" -" 変数 CDPATH は DIR を含んでいる検索パスを定義します。CDPATH にはコロン" -"(:)\n" +" 変数 CDPATH は DIR を含んでいる検索パスを定義します。CDPATH にはコロン(:)\n" " で区切られた代替ディレクトリ名を指定します。\n" " NULL のディレクトリ名はカレントディレクトリと同義です。 DIR が\n" " スラッシュ (/) から始まる場合は CDPATH は使用されません。\n" "\n" -" ディレクトリが見つからなく、かつ `cdabl_vars' シェルオプションが設定され" -"て\n" -" いる場合、引数は変数名として扱われます。その変数に値がある場合、その値" -"が\n" +" ディレクトリが見つからなく、かつ `cdabl_vars' シェルオプションが設定されて\n" +" いる場合、引数は変数名として扱われます。その変数に値がある場合、その値が\n" " DIR として扱われます。\n" " \n" " オプション:\n" @@ -2621,15 +2509,13 @@ msgstr "" " -e\t-P オプションが与えられ、かつ、現在の作業ディレクトリが正しく\n" " \t決定できない場合、終了ステータスが 0 以外で終了します\n" " \n" -" デフォルトでは `-L' が指定された場合と同様シンボリックリンクをたどりま" -"す\n" +" デフォルトでは `-L' が指定された場合と同様シンボリックリンクをたどります\n" " \n" " 終了ステータス:\n" -" ディレクトリを変更した場合、および -P が使用されている時に $PWD が正し" -"く\n" +" ディレクトリを変更した場合、および -P が使用されている時に $PWD が正しく\n" " 設定された場合は 0、それ以外は 0 以外の値です。" -#: builtins.c:420 +#: builtins.c:414 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2657,7 +2543,7 @@ msgstr "" " 無効なオプションまたはカレントディレクトリを読み込めない場合を除き\n" " 0を返します。" -#: builtins.c:437 +#: builtins.c:431 msgid "" "Null command.\n" " \n" @@ -2673,7 +2559,7 @@ msgstr "" " 終了ステータス:\n" " 常に成功です。" -#: builtins.c:448 +#: builtins.c:442 msgid "" "Return a successful result.\n" " \n" @@ -2685,7 +2571,7 @@ msgstr "" " 終了ステータス:\n" " 常に成功です。" -#: builtins.c:457 +#: builtins.c:451 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2697,13 +2583,12 @@ msgstr "" " 終了ステータス:\n" " 常に失敗です。" -#: builtins.c:466 +#: builtins.c:460 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2728,10 +2613,9 @@ msgstr "" " -V\tCOMMAND に対してより冗長な説明を表示する\n" " \n" " 終了ステータス:\n" -" COMMAND の終了ステータスを返します。または COMMAND が見つからない時に失敗" -"を返します。" +" COMMAND の終了ステータスを返します。または COMMAND が見つからない時に失敗を返します。" -#: builtins.c:485 +#: builtins.c:479 msgid "" "Set variable values and attributes.\n" " \n" @@ -2761,8 +2645,7 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" @@ -2796,14 +2679,13 @@ msgstr "" " 整数属性を与えられた変数は値を割り当てられた時に、数値として評価され\n" " ます。(`let' コマンド参照してください。)\n" " \n" -" 関数内で使用された場合は `local' コマンドを使用した時と同様に " -"`declare' \n" +" 関数内で使用された場合は `local' コマンドを使用した時と同様に `declare' \n" " は NAME をローカル変数にします。`-g' オプションはこの動作を抑止します。\n" " \n" " 終了ステータス:\n" " 無効なオプションが与えられたかエラーが発生しない限り成功を返します。" -#: builtins.c:523 +#: builtins.c:517 msgid "" "Set variable values and attributes.\n" " \n" @@ -2813,7 +2695,7 @@ msgstr "" " \n" " 旧式です。`help declare'を参照してください。" -#: builtins.c:531 +#: builtins.c:525 msgid "" "Define local variables.\n" " \n" @@ -2829,27 +2711,21 @@ msgid "" msgstr "" "ローカル変数を定義します。\n" " \n" -" NAME という名前のローカル変数を定義し値を VALUE に設定します。" -"`declare'と\n" +" NAME という名前のローカル変数を定義し値を VALUE に設定します。`declare'と\n" " 同じオプションを受け付けます。\n" " \n" -" ローカル変数はシェル関数の中でのみ使用できます。宣言された関数の中および" -"そこ\n" +" ローカル変数はシェル関数の中でのみ使用できます。宣言された関数の中およびそこ\n" " から呼び出された関数のみで参照できます。\n" " \n" " 終了ステータス:\n" -" 無効なオプションが与えられる、エラーが発生する、またはシェルが関数を実行" -"できない\n" +" 無効なオプションが与えられる、エラーが発生する、またはシェルが関数を実行できない\n" " 場合を除き成功を返します。" -#: builtins.c:548 -#, fuzzy +#: builtins.c:542 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" +" Display the ARGs on the standard output followed by a newline.\n" " \n" " Options:\n" " -n\tdo not append a newline\n" @@ -2861,7 +2737,6 @@ msgid "" " \\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" @@ -2902,7 +2777,7 @@ msgstr "" " 終了ステータス:\n" " 書き込みエラーが発生しない限り成功を返します。" -#: builtins.c:584 +#: builtins.c:576 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2924,7 +2799,7 @@ msgstr "" " 終了ステータス:\n" " 書き込みエラーが発生しない限り成功を返します。" -#: builtins.c:599 +#: builtins.c:591 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2952,10 +2827,8 @@ msgid "" msgstr "" "シェル組み込み関数を有効または無効にします。\n" " \n" -" シェル組み込み関数を有効または無効にします。シェル組み込み関数を無効にす" -"ると\n" -" ディスク上に存在するシェル組み込み関数と同じ名前のコマンドをフルパスを指" -"定す\n" +" シェル組み込み関数を有効または無効にします。シェル組み込み関数を無効にすると\n" +" ディスク上に存在するシェル組み込み関数と同じ名前のコマンドをフルパスを指定す\n" " ることなく実行することが出来ます。\n" " \n" " オプション:\n" @@ -2976,12 +2849,11 @@ msgstr "" " 終了ステータス:\n" " NAME が組み込み関数ではないかエラーが発生しない限り成功を返します。" -#: builtins.c:627 +#: builtins.c:619 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -2996,7 +2868,7 @@ msgstr "" " コマンドの終了ステータスを返します。コマンドが null の場合は成功を\n" " 返します。" -#: builtins.c:639 +#: builtins.c:631 msgid "" "Parse option arguments.\n" " \n" @@ -3073,13 +2945,12 @@ msgstr "" " オプションが見つかった場合に成功を返します。オプションの終わり\n" " に到達するかエラーが発生した時に失敗を返します。" -#: builtins.c:681 +#: builtins.c:673 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3087,19 +2958,16 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "シェルを与えられたコマンドで置換します。\n" " \n" " 指定したプログラムでシェルを置換して COMMAND を実行します。ARGUMENTS は\n" -" COMMAND の引数となります。もし COMMAND が指定されない場合は、現在のシェ" -"ル\n" +" COMMAND の引数となります。もし COMMAND が指定されない場合は、現在のシェル\n" " に対する全てのリダイレクトが行われます。\n" " \n" " オプション:\n" @@ -3107,15 +2975,13 @@ msgstr "" " -c\t\tCOMMAND を環境変数なしで実行します\n" " -l\t\tdash(-) を COMMAND の 0 番目の引数とします\n" " \n" -" もしコマンドが実行できない場合、非対話的なシェルは終了し、対話的なシェル" -"は\n" +" もしコマンドが実行できない場合、非対話的なシェルは終了し、対話的なシェルは\n" " オプション `execfail' が設定されます。\n" " \n" " 終了ステータス:\n" -" COMMAND が見つからないかリダイレクトエラーが発生しない限り成功を返しま" -"す。" +" COMMAND が見つからないかリダイレクトエラーが発生しない限り成功を返します。" -#: builtins.c:702 +#: builtins.c:694 msgid "" "Exit the shell.\n" " \n" @@ -3127,33 +2993,29 @@ msgstr "" " 終了ステータス N でシェルを終了します。 N を指定しない場合は\n" " 最後に実行したコマンドの終了ステータスになります。" -#: builtins.c:711 +#: builtins.c:703 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "ログインシェルを終了します。\n" " \n" -" 終了ステータス N でログインシェルを終了します。実行したのがログインシェ" -"ル\n" +" 終了ステータス N でログインシェルを終了します。実行したのがログインシェル\n" " 内で無い場合はエラーを返します。" -#: builtins.c:721 +#: builtins.c:713 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3167,21 +3029,16 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "ヒストリ一覧からコマンドを表示または実行します。\n" " \n" -" fc はヒストリ一覧を表示または編集してコマンドを再実行するために使用しま" -"す。\n" -" FIRST および LAST は範囲を指定する数値です。FIRST は文字列を指定すること" -"も\n" -" できます。その場合はその文字列で始まる直近に実行したコマンドを表しま" -"す。\n" +" fc はヒストリ一覧を表示または編集してコマンドを再実行するために使用します。\n" +" FIRST および LAST は範囲を指定する数値です。FIRST は文字列を指定することも\n" +" できます。その場合はその文字列で始まる直近に実行したコマンドを表します。\n" " \n" " オプション:\n" -" -e ENAME\t使用するエディタを選択します。デフォルトは FCEDIT で、次は " -"EDITOR、\n" +" -e ENAME\t使用するエディタを選択します。デフォルトは FCEDIT で、次は EDITOR、\n" " \t\tそして vi の順です。\n" " -l \t編集ではなく行を一覧表示します\n" " -n\t一覧表示時に行番号を表示しません\n" @@ -3190,18 +3047,15 @@ msgstr "" " `fc -s [pat=rep ...] [command]' 形式を使用すると、COMMAND は\n" " OLD=NEW の置換が行われた後に再実行されます。\n" " \n" -" これを使った使いやすいエイリアスは r='fc -s' です。これで `r cc' を実行す" -"る\n" -" と最後に実行した cc で始まるコマンドが実行されます。`r' で直前のコマンド" -"が\n" +" これを使った使いやすいエイリアスは r='fc -s' です。これで `r cc' を実行する\n" +" と最後に実行した cc で始まるコマンドが実行されます。`r' で直前のコマンドが\n" " 実行されます。\n" " \n" " 終了ステータス:\n" -" 実行したコマンドのステータスまたは成功が帰ります。エラーが発生した場合は " -"0 \n" +" 実行したコマンドのステータスまたは成功が帰ります。エラーが発生した場合は 0 \n" " 以外の値になります。" -#: builtins.c:751 +#: builtins.c:743 msgid "" "Move job to the foreground.\n" " \n" @@ -3214,26 +3068,21 @@ msgid "" msgstr "" "ジョブをフォアグランドにします。\n" " \n" -" JOB_SPEC で識別されたジョブをフォアグランドにして、現在のジョブにしま" -"す。\n" -" もし JOB_SPEC が存在しない場合、シェルが現在のレントジョブとして考えてい" -"る\n" +" JOB_SPEC で識別されたジョブをフォアグランドにして、現在のジョブにします。\n" +" もし JOB_SPEC が存在しない場合、シェルが現在のレントジョブとして考えている\n" " ものが利用されます。\n" " \n" " \n" " 終了ステータス:\n" -" フォアグラウンドになったコマンドのステータスを返します。または、エラー" -"が\n" +" フォアグラウンドになったコマンドのステータスを返します。または、エラーが\n" " 発生した時に失敗を返します。" -#: builtins.c:766 +#: builtins.c:758 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3241,22 +3090,19 @@ msgid "" msgstr "" "ジョブをバックグラウンドにします。\n" " \n" -" JOB_SPEC で識別されるジョブを `&' と共に始めた時のようにバックグラウンド" -"に\n" -" します。もし JOB_SPEC が存在しない場合、シェルが現在のジョブとして考えて" -"い\n" +" JOB_SPEC で識別されるジョブを `&' と共に始めた時のようにバックグラウンドに\n" +" します。もし JOB_SPEC が存在しない場合、シェルが現在のジョブとして考えてい\n" " るものが利用されます。\n" " \n" " 終了ステータス:\n" " ジョブ制御が有効になっていないかエラーが発生しない限り成功を返します。" -#: builtins.c:780 +#: builtins.c:772 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -3275,8 +3121,7 @@ msgid "" msgstr "" "プログラムの位置を記憶または表示します。\n" " \n" -" 各コマンド NAME のフルパスを決定し記憶します。もし引数が与えられなかった" -"場合、\n" +" 各コマンド NAME のフルパスを決定し記憶します。もし引数が与えられなかった場合、\n" " 記憶しているコマンドの情報が表示されます。\n" " \n" " オプション:\n" @@ -3293,7 +3138,7 @@ msgstr "" " 終了ステータス:\n" " NAME が見つからないか、無効なオプションが与えられない限り成功を返します。" -#: builtins.c:805 +#: builtins.c:797 msgid "" "Display information about builtin commands.\n" " \n" @@ -3311,8 +3156,7 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "組み込みコマンドの情報を表示します。\n" " \n" @@ -3330,10 +3174,9 @@ msgstr "" " PATTERN\tヘルプトピックを指定するパターン\n" " \n" " 終了ステータス:\n" -" PATTERN が見つからないか無効なオプションが与えられない限り成功を返しま" -"す。" +" PATTERN が見つからないか無効なオプションが与えられない限り成功を返します。" -#: builtins.c:829 +#: builtins.c:821 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3360,16 +3203,14 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" "ヒストリ一覧を表示または操作します。\n" " \n" -" 行番号をつけてヒストリを表示します。操作した各項目には前に`*'が付きま" -"す。\n" +" 行番号をつけてヒストリを表示します。操作した各項目には前に`*'が付きます。\n" " 引数 N がある場合は最後の N 個の項目のみを表示します。\n" " \n" " オプション:\n" @@ -3386,20 +3227,18 @@ msgstr "" " \tしないで表示します\n" " -s\tARG を単一の項目としてヒストリ一覧に追加します\n" " \n" -" FILENAME を与えた場合、FILENAME がヒストリファイルをして使用されます。そ" -"れが\n" +" FILENAME を与えた場合、FILENAME がヒストリファイルをして使用されます。それが\n" " 無く、$HISTFILE に値がある場合その値が使用されます。そうでなければ \n" " ~/.bash_history が使用されます。\n" "\n" -" もし $HISTTIMEFORMAT 変数が設定され、NULL で無ければ、strftime(3) の書" -"式\n" +" もし $HISTTIMEFORMAT 変数が設定され、NULL で無ければ、strftime(3) の書式\n" " 文字列として各ヒストリ項目の時刻を表示する際に使用されます。それ以外は\n" " 時刻は表示されません。\n" " \n" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:865 +#: builtins.c:857 msgid "" "Display status of jobs.\n" " \n" @@ -3424,10 +3263,8 @@ msgid "" msgstr "" "ジョブのステータスを表示します。\n" " \n" -" アクティブなジョブを一覧表示します。JOBSPEC はジョブの出力を制限しま" -"す。\n" -" オプションがない場合全てのアクティブなジョブのステータスが表示されま" -"す。\n" +" アクティブなジョブを一覧表示します。JOBSPEC はジョブの出力を制限します。\n" +" オプションがない場合全てのアクティブなジョブのステータスが表示されます。\n" " \n" " オプション:\n" " -l\t通常の情報に加えてプロセスIDを一覧表示する\n" @@ -3438,14 +3275,13 @@ msgstr "" " -s\t停止中のジョブの出力を制限する\n" " \n" " -x が指定された場合、 COMMAND は ARGS に現れるジョブをプロセスグルー\n" -" プリーダーのプロセス ID に置き換えた全てのジョブ指定の後に実行されま" -"す。\n" +" プリーダーのプロセス ID に置き換えた全てのジョブ指定の後に実行されます。\n" " \n" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。\n" " もし -x が使用された場合、COMMAND の終了ステータスを返します。" -#: builtins.c:892 +#: builtins.c:884 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3463,21 +3299,19 @@ msgid "" msgstr "" "現在のシェルからジョブを削除します。\n" " \n" -" アクティブなジョブのテーブルから各引数の JOBSPEC を削除します。JOBSPEC が" -"指定\n" +" アクティブなジョブのテーブルから各引数の JOBSPEC を削除します。JOBSPEC が指定\n" " されない場合、シェルが現在のジョブと考えているものが使用されます。\n" " \n" " オプション:\n" " -a\tJOBSPEC が与えられない時に全てのジョブを削除する\n" -" -h\tシェルが SIGHUP を受け取った時に各 JOBSPEC のジョブに対して " -"SIGHUP \n" +" -h\tシェルが SIGHUP を受け取った時に各 JOBSPEC のジョブに対して SIGHUP \n" " \tが送られないようにマークする\n" " -r\t実行中のジョブのみ削除する\n" " \n" " 終了ステータス:\n" " 無効なオプションか JOBSPEC が与えられない限り成功を返します。" -#: builtins.c:911 +#: builtins.c:903 msgid "" "Send a signal to a job.\n" " \n" @@ -3500,10 +3334,8 @@ msgid "" msgstr "" "ジョブにシグナルを送ります。\n" " \n" -" PID または JOBSPEC で識別されるプロセスに SIGSPEC または SIGNUM で名付け" -"ら\n" -" れるシグナルを送ります。もし SIGSPEC も SIGNUM も指定されない場合、" -"SIGTERM\n" +" PID または JOBSPEC で識別されるプロセスに SIGSPEC または SIGNUM で名付けら\n" +" れるシグナルを送ります。もし SIGSPEC も SIGNUM も指定されない場合、SIGTERM\n" " と見なされます。\n" " \n" " オプション:\n" @@ -3512,24 +3344,21 @@ msgstr "" " -l\tシグナル名を一覧表示する。-l の後に引数が続いた場合、\n" " \tそれらは一覧表示されるべきシグナル番号であると見なされる\n" " \n" -" Kill は次の2つの理由からシェル組み込み関数です。一つはプロセスIDの代わり" -"に\n" -" ジョブIDを使用できるようにするためです。もう一つは作成したプロセスが制限" -"に\n" +" Kill は次の2つの理由からシェル組み込み関数です。一つはプロセスIDの代わりに\n" +" ジョブIDを使用できるようにするためです。もう一つは作成したプロセスが制限に\n" " 達した時にプロセスを kill することができるようにするためです。\n" " \n" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:934 +#: builtins.c:926 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" +" 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" @@ -3593,35 +3422,29 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\t代入\n" " \n" -" シェル変数は被演算子として使用できます。変数名は数式内で (強制的に固定" -"長\n" +" シェル変数は被演算子として使用できます。変数名は数式内で (強制的に固定長\n" " 整数の) 値に置き換えられます。変数は数式内で使用する時には必ずしも\n" " 整数属性を持っている必要はありません。\n" "\n" -" 演算子は優先順位の順に評価されます。小括弧でくくられた数式は先に評価さ" -"れ、\n" +" 演算子は優先順位の順に評価されます。小括弧でくくられた数式は先に評価され、\n" " 上記の優先順位を上書きするかもしれません。\n" " \n" " 終了ステータス:\n" " ARG の最終的な評価値が 0 の場合 let は 1 を返します。それ以外の場合は\n" " let は 0 を返します。" -#: builtins.c:979 -#, fuzzy +#: builtins.c:971 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3633,61 +3456,47 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" +" -t timeout\ttime out and return failure if a complete line of input is\n" " \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" "標準入力から一行読み込みフィールド毎に分割します。\n" " \n" -" 標準入力から一行読み込みます。または -u が指定されている場合はファイル記" -"述子\n" -" FD から読み込みます。行は単語分割によってフィールドに分割され、最初の単語" -"が\n" -" 最初の NAME に、2番目の単語が2番目に NAME にという順で割り当てられます。" -"残っ\n" -" た単語は全て最後の NAME に割り当てられます。変数 $IFS に設定された文字の" -"みが\n" +" 標準入力から一行読み込みます。または -u が指定されている場合はファイル記述子\n" +" FD から読み込みます。行は単語分割によってフィールドに分割され、最初の単語が\n" +" 最初の NAME に、2番目の単語が2番目に NAME にという順で割り当てられます。残っ\n" +" た単語は全て最後の NAME に割り当てられます。変数 $IFS に設定された文字のみが\n" " 単語の区切りとして認識されます。\n" " \n" " もし NAME を指定しなかった場合、行は REPLY 変数に保存されます。\n" " \n" " オプション:\n" -" -a array\t読み込んだ単語をインデックス型配列 ARRAY に順番に割り当てま" -"す。\n" +" -a array\t読み込んだ単語をインデックス型配列 ARRAY に順番に割り当てます。\n" " \t\t開始番号は 0 です。\n" " -d delim\t改行ではなく文字 DELIM が最初に現れるまで読み込みを続けます\n" " -e\t\t対話的シェルで行を得るのに Readline を使用します\n" " -i text\tReadline の初期テキストとして TEXT を使用します\n" -" -n nchars\t改行が無くても文字数 NCHARS を読み込んだら復帰します。" -"NCHARS\n" +" -n nchars\t改行が無くても文字数 NCHARS を読み込んだら復帰します。NCHARS\n" " \t\tより前に区切り文字 (DELIMITER) が現れた場合は区切り文字が\n" " \t\t優先されます\n" -" -N nchars\t厳密に文字数 NCHARS を読み込み復帰します。ただし、ファイル" -"終\n" +" -N nchars\t厳密に文字数 NCHARS を読み込み復帰します。ただし、ファイル終\n" " \t\t了(EOF) になるか読み込みタイムアウトが発生した場合は除きます。\n" " \t\t区切り文字 (DELIMITER) は無視されます\n" -" -p prompt\t読み込み前に文字列 PROMPT を後ろに改行を付けないで表示しま" -"す\n" +" -p prompt\t読み込み前に文字列 PROMPT を後ろに改行を付けないで表示します\n" " -r\t\tバックスペースで文字をエスケープすることを禁止します\n" " -s\t\t端末から読み込まれる文字をエコーバックしません\n" " -t timeout\tTIMEOUT 秒以内に入力行が完全に読み込まれなかった場合\n" @@ -3699,11 +3508,10 @@ msgstr "" " -u fd\t\t読み込みに標準入力ではなくファイル記述子 FD を使用します\n" " \n" " 終了ステータス:\n" -" ファイル終了(EOF)、読み込みタイムアウト、-u に無効なファイル記述子が与" -"え\n" +" ファイル終了(EOF)、読み込みタイムアウト、-u に無効なファイル記述子が与え\n" " られた場合を除き0を返します。" -#: builtins.c:1024 +#: builtins.c:1014 msgid "" "Return from a shell function.\n" " \n" @@ -3716,19 +3524,15 @@ msgid "" msgstr "" "シェル関数から復帰します。\n" " \n" -" N で指定した値を戻り値として関数または source されたスクリプトを終了しま" -"す。\n" -" N が指定されない場合、関数またはスクリプトで最後に実行したコマンドの戻り" -"値\n" +" N で指定した値を戻り値として関数または source されたスクリプトを終了します。\n" +" N が指定されない場合、関数またはスクリプトで最後に実行したコマンドの戻り値\n" " が使用されます。\n" " \n" " 終了ステータス:\n" -" 戻り値 N、またはシェルが関数またはスクリプトを実行していない場合は失敗" -"を\n" +" 戻り値 N、またはシェルが関数またはスクリプトを実行していない場合は失敗を\n" " 返します。" -#: builtins.c:1037 -#, fuzzy +#: builtins.c:1027 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3771,8 +3575,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3794,7 +3597,7 @@ msgid "" " -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" +" -P If set, do not follow 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" @@ -3852,8 +3655,7 @@ msgstr "" " nounset -u と同様\n" " onecmd -t と同様\n" " physical -P と同様\n" -" pipefail パイプラインの戻り値を最後に 0 以外で終了したコ" -"マ\n" +" pipefail パイプラインの戻り値を最後に 0 以外で終了したコマ\n" " ンドの終了ステータスにする。0 以外のステータスで\n" " 終了したコマンドが無い場合には 0 にする。\n" " posix Posix 標準とデフォルト動作が異なる bash の動作を\n" @@ -3892,7 +3694,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1122 +#: builtins.c:1112 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3902,8 +3704,7 @@ msgid "" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -3919,23 +3720,20 @@ msgstr "" " -f\t各 NAME をシェル関数として扱います\n" " -v\t各 NAME をシェル変数として扱います\n" " \n" -" オプションが無い場合、最初に変数を消去しようと試みます。失敗した場合に" -"は\n" +" オプションが無い場合、最初に変数を消去しようと試みます。失敗した場合には\n" " 関数を消去しようと試みます。\n" " \n" " いくつかの変数は消去できません。`readonly' も参照してください。\n" " \n" " 終了ステータス:\n" -" 無効なオプションが与えられるか NAME が読み取り専用の場合を除き成功を返し" -"ます。" +" 無効なオプションが与えられるか NAME が読み取り専用の場合を除き成功を返します。" -#: builtins.c:1142 +#: builtins.c:1132 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3964,7 +3762,7 @@ msgstr "" " 無効なオプションが与えられるか、無効な NAME が与えられない限り成功\n" " を返します。" -#: builtins.c:1161 +#: builtins.c:1151 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4001,7 +3799,7 @@ msgstr "" " 無効なオプションが与えられるか、与えられた NAME が無効な場合を除き成功\n" " を返します。" -#: builtins.c:1182 +#: builtins.c:1172 msgid "" "Shift positional parameters.\n" " \n" @@ -4019,7 +3817,7 @@ msgstr "" " 終了ステータス:\n" " Nが負の値または $# より大きい場合を除き成功を返します。" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1184 builtins.c:1199 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4043,7 +3841,7 @@ msgstr "" " FILENAME で最後に実行したコマンドのステータスを返します。FILENAME が\n" " 読み込めなかった場合は失敗を返します。" -#: builtins.c:1225 +#: builtins.c:1215 msgid "" "Suspend shell execution.\n" " \n" @@ -4067,7 +3865,7 @@ msgstr "" " 終了ステータス:\n" " ジョブ制御が有効でないかエラーが発生しない限り成功を返します。" -#: builtins.c:1241 +#: builtins.c:1231 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4101,8 +3899,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -4123,8 +3920,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4175,13 +3971,10 @@ msgstr "" " -w FILE ファイルがユーザに対して書き込み可能な時に真(true)\n" " -x FILE ファイルがユーザに対して実行可能な時に真(true)\n" " -O FILE ファイルをユーザが実効的に所有されている時に真(true)\n" -" -G FILE ファイルのグループにユーザが実効的に所属している時に真" -"(true)\n" -" -N FILE ファイルを最後に読み込んだ以降に変更されている時に真" -"(true)\n" +" -G FILE ファイルのグループにユーザが実効的に所属している時に真(true)\n" +" -N FILE ファイルを最後に読み込んだ以降に変更されている時に真(true)\n" " \n" -" FILE1 -nt FILE2 file1 が file2 より新しい時(更新時間に基づく)に真" -"(true)\n" +" FILE1 -nt FILE2 file1 が file2 より新しい時(更新時間に基づく)に真(true)\n" " \n" " \n" " FILE1 -ot FILE2 file1 が file2 より古い時に真(true)\n" @@ -4210,8 +4003,7 @@ msgstr "" " -v VAR シェル変数 VAR が設定されている時に真(true)\n" " ! EXPR 式 expr が偽(fales)の時に真(true)\n" " EXPR1 -a EXPR2 式 expr1 および expr2 の両方とも真(true)の時に真(true)\n" -" EXPR1 -o EXPR2 式 expr1 または expr2 のいずれかが真(true)の時に真" -"(true)\n" +" EXPR1 -o EXPR2 式 expr1 または expr2 のいずれかが真(true)の時に真(true)\n" " \n" " arg1 OP arg2 数値比較演算を行なう。OP は -eq, -ne, -lt, -le, -gt,\n" " または -ge のいずれかとなる。\n" @@ -4221,11 +4013,10 @@ msgstr "" " 以上(-ge)の時に真(true)を返します。\n" " \n" " 終了ステータス:\n" -" 式 EXPR の評価値が真(true)の時に成功を返します。EXPR の評価値が偽(false) " -"または\n" +" 式 EXPR の評価値が真(true)の時に成功を返します。EXPR の評価値が偽(false) または\n" " 引数が無効な場合に失敗を返します。" -#: builtins.c:1321 +#: builtins.c:1311 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4234,16 +4025,14 @@ msgid "" msgstr "" "条件式を評価します。\n" " \n" -" これは test 組み込み関数と同義語です。ただし、最後の引数に開始の`['と一" -"致\n" +" これは test 組み込み関数と同義語です。ただし、最後の引数に開始の`['と一致\n" " するように文字`]'を与えなければいけません。" -#: builtins.c:1330 +#: builtins.c:1320 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4251,19 +4040,17 @@ msgid "" msgstr "" "プロセスの時間を表示します。\n" " \n" -" シェルとその子プロセスが使用したユーザー時間とシステム時間それぞれの累積" -"を\n" +" シェルとその子プロセスが使用したユーザー時間とシステム時間それぞれの累積を\n" " 表示します。\n" " \n" " 終了ステータス:\n" " 常に成功を返します。" -#: builtins.c:1342 +#: builtins.c:1332 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4272,61 +4059,46 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "シグナルまたは他のイベントをトラップします。\n" " \n" -" シェルがシグナルを受け取るか他の条件が発生した時に実行されるハンドラー" -"を\n" +" シェルがシグナルを受け取るか他の条件が発生した時に実行されるハンドラーを\n" " 定義および有効化します。\n" " \n" " ARG はシグナル SIGNAL_SPEC を受け取った時に読み込まれ実行されるコマンド\n" -" です。もし ARG が無い (かつシグナル SIGNAL_SPEC が与えられた場合) また" -"は\n" +" です。もし ARG が無い (かつシグナル SIGNAL_SPEC が与えられた場合) または\n" " `-' の場合、各指定したシグナルはオリジナルの値にリセットされます。\n" " ARG が NULL 文字列の場合、各シグナル SIGNAL_SPEC はシェルにおよび起動さ\n" " れたコマンドによって無視されます。\n" " \n" -" もし SIGNAL_SPEC が EXIT (0) の場合、ARG がシェルの終了時に実行されま" -"す。\n" -" もし SIGNAL_SPEC が DEBUG の場合 ARG は単に毎回コマンドの前に実行されま" -"す。\n" +" もし SIGNAL_SPEC が EXIT (0) の場合、ARG がシェルの終了時に実行されます。\n" +" もし SIGNAL_SPEC が DEBUG の場合 ARG は単に毎回コマンドの前に実行されます。\n" " もし SIGNAL_SPEC が RETURN の場合 ARG はシェル関数または . か source に\n" -" よって実行されたスクリプトが終了した時に実行されます。 SIGNAL_SPEC が " -"ERR\n" -" の場合、-e オプションが有効な場合にシェルが終了するようなコマンド失敗が" -"発\n" +" よって実行されたスクリプトが終了した時に実行されます。 SIGNAL_SPEC が ERR\n" +" の場合、-e オプションが有効な場合にシェルが終了するようなコマンド失敗が発\n" " 生するたびに実行されます。\n" " \n" -" もし引数が与えられない場合、 trap は各シグナルに割り当てられたコマンド" -"の\n" +" もし引数が与えられない場合、 trap は各シグナルに割り当てられたコマンドの\n" " 一覧を表示します。\n" " \n" " オプション:\n" @@ -4340,7 +4112,7 @@ msgstr "" " 終了ステータス:\n" " SIGSPEC が無効か、無効なオプションを与えられない限り成功を返します。" -#: builtins.c:1378 +#: builtins.c:1368 msgid "" "Display information about command type.\n" " \n" @@ -4366,8 +4138,7 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" "コマンドの種類に関する情報を表示します。\n" " \n" @@ -4386,25 +4157,21 @@ msgstr "" " \tが `file' を返さない場合、何も返しません。\n" " -t\t次のいずれかの単語を返します。`alias', `keyword', `function',\n" " \t `builtin', `file' or `'。それぞれ NAME がエイリアス、シェル予約語、\n" -" \tシェル関数、シェル組み込み関数、ディスク上のファイル、何も見つからな" -"い\n" +" \tシェル関数、シェル組み込み関数、ディスク上のファイル、何も見つからない\n" " \tに対応します。\n" " \n" " 引数:\n" " NAME\t解釈するコマンドの名前です。\n" " \n" " 終了ステータス:\n" -" 全ての NAME が見つかった場合に成功を返します。どれかが見つからなかった場" -"合\n" +" 全ての NAME が見つかった場合に成功を返します。どれかが見つからなかった場合\n" " は失敗を返します。" -#: builtins.c:1409 -#, fuzzy +#: builtins.c:1399 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4428,9 +4195,6 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" -" -T the maximum number of threads\n" -" \n" -" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -4447,8 +4211,7 @@ msgid "" msgstr "" "シェルの資源制限を変更します。\n" " \n" -" シェルおよびシェルが作成するプロセスが使用可能な資源に対する制御を提供し" -"ます。\n" +" シェルおよびシェルが作成するプロセスが使用可能な資源に対する制御を提供します。\n" " ただし、システムがそのような制御を許可している場合です。\n" " \n" " オプション:\n" @@ -4474,8 +4237,7 @@ msgstr "" " -x\tファイルロックの最大数\n" " \n" " LIMIT が与えられた場合、指定した資源に対する新しい値になります。特別な\n" -" LIMIT の値である `soft'、`hard'、および `unlimited' は現在の `soft' 制" -"限\n" +" LIMIT の値である `soft'、`hard'、および `unlimited' は現在の `soft' 制限\n" " 現在の`hard' 制限および制限なしをそれぞれ意味します。\n" " それ以外の場合、指定した資源の現在の値が表示されます。オプションが与え\n" " られなかった場合 -f と見なされます。\n" @@ -4486,7 +4248,7 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1457 +#: builtins.c:1444 msgid "" "Display or set file mode mask.\n" " \n" @@ -4505,12 +4267,10 @@ msgid "" msgstr "" "ファイルのモードマスクを表示または設定します。\n" " \n" -" ユーザーがファイル作成時のマスクを MODE に設定します。MODE が指定されない" -"場合\n" +" ユーザーがファイル作成時のマスクを MODE に設定します。MODE が指定されない場合\n" " 現在のマスクの値を表示します。\n" " \n" -" MODE が数値で開始した場合8進数として解釈されます。それ以外は chmod(1) で" -"受け\n" +" MODE が数値で開始した場合8進数として解釈されます。それ以外は chmod(1) で受け\n" " 入れられるシンボルモードの文字列として扱われます。\n" " \n" " オプション:\n" @@ -4520,22 +4280,19 @@ msgstr "" " 終了ステータス:\n" " MODE が無効か、無効なオプションが与えられない限り成功を返します。" -#: builtins.c:1477 -#, fuzzy +#: builtins.c:1464 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for the process identified by ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" -" in that job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all processes\n" +" in the job's pipeline.\n" " \n" " Exit Status:\n" -" Returns the status of the last ID; fails if ID is invalid or an invalid\n" -" option is given." +" Returns the status of ID; fails if ID is invalid or an invalid option is\n" +" given." msgstr "" "ジョブの実行完了を待ち、終了ステータスを返します。\n" " \n" @@ -4548,7 +4305,7 @@ msgstr "" " ID の終了ステータスを返します。IDが無効であるか、無効なオプションが\n" " 与えられた場合には失敗を返します。" -#: builtins.c:1495 +#: builtins.c:1482 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4557,8 +4314,7 @@ msgid "" " and the return code is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option " -"is\n" +" Returns the status of ID; fails if ID is invalid or an invalid option is\n" " given." msgstr "" "プロセスの実行完了を待ち、終了ステータスを返します。\n" @@ -4571,7 +4327,7 @@ msgstr "" " IDの終了ステータスを返します。IDが無効か、無効なオプションが与えられた\n" " 場合はエラーを返します。" -#: builtins.c:1510 +#: builtins.c:1497 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4592,7 +4348,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1524 +#: builtins.c:1511 msgid "" "Arithmetic for loop.\n" " \n" @@ -4622,7 +4378,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1542 +#: builtins.c:1529 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4657,7 +4413,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1563 +#: builtins.c:1550 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4685,7 +4441,7 @@ msgstr "" " 終了ステータス:\n" " PIPELINE の戻り値が終了ステータスとなります。" -#: builtins.c:1580 +#: builtins.c:1567 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4697,28 +4453,22 @@ msgid "" msgstr "" "パターン一致の結果に基づいてコマンドを実行します。\n" " \n" -" WORD が PATTERN に一致するかどうかに基づいて選択的に COMMANDS を実行しま" -"す。\n" +" WORD が PATTERN に一致するかどうかに基づいて選択的に COMMANDS を実行します。\n" " 複数のパターンを区切るために `|' が使用されます。\n" " \n" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1592 +#: builtins.c:1579 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4726,19 +4476,17 @@ msgid "" msgstr "" "条件に従ってコマンドを実行します。\n" " \n" -" `if COMMANDS' を実行します。この終了ステータスが 0 の場合、`then " -"COMMANDS'\n" +" `if COMMANDS' を実行します。この終了ステータスが 0 の場合、`then COMMANDS'\n" " を実行します。そうでない場合は、各 `elif COMMANDS' を順番に実行し、その\n" " 終了ステータスが 0 の場合に、関連した `then COMMANDS' を実行し、if 文が\n" " 完了します。それ以外の場合、 `else COMMANDS' が存在する場合には実行され\n" -" ます。文全体の終了ステータスは、最後に実行したコマンドの終了ステータス" -"か、\n" +" ます。文全体の終了ステータスは、最後に実行したコマンドの終了ステータスか、\n" " または、テストした条件に true となるものが無い場合は 0 です。\n" " \n" " 終了ステータス:\n" " 最後に実行したコマンドの終了ステータスを返します。" -#: builtins.c:1609 +#: builtins.c:1596 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4756,7 +4504,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1621 +#: builtins.c:1608 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4774,7 +4522,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1633 +#: builtins.c:1620 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4796,13 +4544,12 @@ msgstr "" " 終了ステータス:\n" " COMMAND の終了ステータスを返します。" -#: builtins.c:1647 +#: builtins.c:1634 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4811,17 +4558,15 @@ msgid "" msgstr "" "シェル関数を定義します。\n" " \n" -" NAME という名前のシェル関数を作成します。単にコマンドとして起動された時" -"は\n" -" NAME は COMMANDs をシェルのコンテキスト内で呼び出します。NAME を起動し" -"た\n" +" NAME という名前のシェル関数を作成します。単にコマンドとして起動された時は\n" +" NAME は COMMANDs をシェルのコンテキスト内で呼び出します。NAME を起動した\n" " 時に引数は関数に $1...$n という位置パラメーターで、関数名は $FUNCNAME\n" " 変数として渡されます。\n" " \n" " 終了ステータス:\n" " NAME が読み取り専用でない限り成功を返します。" -#: builtins.c:1661 +#: builtins.c:1648 msgid "" "Group commands as a unit.\n" " \n" @@ -4839,7 +4584,7 @@ msgstr "" " 終了ステータス:\n" " 最後に実行したコマンドのステータスを返します。" -#: builtins.c:1673 +#: builtins.c:1660 msgid "" "Resume job in foreground.\n" " \n" @@ -4862,7 +4607,7 @@ msgstr "" " 終了ステータス:\n" " 再開されたジョブの終了ステータスを返します。" -#: builtins.c:1688 +#: builtins.c:1675 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4880,16 +4625,13 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の評価値が 0 の場合は 1、それ以外は 0 を返します。" -#: builtins.c:1700 +#: builtins.c:1687 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4916,17 +4658,14 @@ msgstr "" " ( EXPRESSION )\tEXPRESSION の値を返します\n" " ! EXPRESSION\t\tEXPRESSION が true の時 false を返します。それ\n" " \t\t以外は false を返します\n" -" EXPR1 && EXPR2\tEXPR1 および EXPR2 の両方が true の時 true を返しま" -"す。\n" +" EXPR1 && EXPR2\tEXPR1 および EXPR2 の両方が true の時 true を返します。\n" " \tそれ以外は false を返します。\n" " EXPR1 || EXPR2\tEXPR1 および EXPR2 のいずれかが true の時 true を返し\n" " \tます。それ以外は false を返します。\n" " \n" -" `==' および `!=' 演算子が使用された場合、演算子の右側の文字列をパターン" -"と\n" +" `==' および `!=' 演算子が使用された場合、演算子の右側の文字列をパターンと\n" " した左側の文字列に対するパターン一致処理が行われます。\n" -" `=~' 演算子が使用された場合、演算子の右側の文字列が正規表現として扱われ" -"ま\n" +" `=~' 演算子が使用された場合、演算子の右側の文字列が正規表現として扱われま\n" " す。\n" " \n" " && および || 演算子は EXPR1 で式の値を決定するのに十分な場合は EXPR2 を\n" @@ -4935,7 +4674,7 @@ msgstr "" " 終了ステータス:\n" " EXPRESSION の値に基づいて 0 または 1 を返します。" -#: builtins.c:1726 +#: builtins.c:1713 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5036,7 +4775,7 @@ msgstr "" " HISTIGNORE\tヒストリ一覧に保存されるコマンドを決める時に使用される\n" " \t\tコロン (:) で区切られたパターンの一覧。\n" -#: builtins.c:1783 +#: builtins.c:1770 msgid "" "Add directories to stack.\n" " \n" @@ -5095,7 +4834,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1817 +#: builtins.c:1804 msgid "" "Remove directories from stack.\n" " \n" @@ -5124,8 +4863,7 @@ msgstr "" "ディレクトリスタックからディレクトリを削除します。\n" " \n" " ディレクトリスタックから要素を削除します。引数がない場合、ディレクトリ\n" -" スタックの先頭から削除し、新しいスタック先頭のディレクトリに移動しま" -"す。\n" +" スタックの先頭から削除し、新しいスタック先頭のディレクトリに移動します。\n" " \n" " オプション:\n" " -n\tスタックからディレクトリを削除した時、通常のディレクトリ変\n" @@ -5146,7 +4884,7 @@ msgstr "" " 無効な引数が与えられるかディレクトリ変更が失敗しない限り成功を\n" " 返します。" -#: builtins.c:1847 +#: builtins.c:1834 msgid "" "Display directory stack.\n" " \n" @@ -5163,12 +4901,10 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" @@ -5198,13 +4934,12 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1876 +#: builtins.c:1863 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" +" arguments, list all shell options with an indication of whether or not each\n" " is set.\n" " \n" " Options:\n" @@ -5234,8 +4969,7 @@ msgstr "" " OPTNAME が有効な場合は成功を返します。無効なオプションが与えられた場合\n" " または OPTNAME が無効な場合は失敗を返します。" -#: builtins.c:1897 -#, fuzzy +#: builtins.c:1884 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5243,64 +4977,49 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf" -"(1),\n" -" printf interprets:\n" +" In addition to the standard format specifications described in printf(1)\n" +" and printf(3), printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " -"format\n" +" %(fmt)T output the date-time string resulting from using FMT as a format\n" " string for strftime(3)\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "ARGUMENTS を FORMAT で書式整形して表示します。\n" " \n" " オプション:\n" -" -v var\t標準出力に表示するのではなく、出力をシェル変数 VAR に代入しま" -"す\n" -" \n" -" FORMAT は次の3種類のオブジェクトを含む文字列です。一つ目は普通の文字で単" -"に\n" -" 標準出力にコピーされます。二つ目はエスケープ文字で変換された後標準出力" -"に\n" -" コピーされます。三つ目は書式指定文字で、各文字は後に続く引数を表示しま" -"す。\n" -" \n" -" printf(1) および printf(3) に記述される標準の書式指定に加えて、printf " -"は\n" +" -v var\t標準出力に表示するのではなく、出力をシェル変数 VAR に代入します\n" +" \n" +" FORMAT は次の3種類のオブジェクトを含む文字列です。一つ目は普通の文字で単に\n" +" 標準出力にコピーされます。二つ目はエスケープ文字で変換された後標準出力に\n" +" コピーされます。三つ目は書式指定文字で、各文字は後に続く引数を表示します。\n" +" \n" +" printf(1) および printf(3) に記述される標準の書式指定に加えて、printf は\n" " 次の文字を解釈します。\n" " \n" " %b\t対応する引数のバックスラッシュエスケープ文字を展開する\n" " %q\tシェル入力として引数をクオートする\n" -" %(fmt)T FMT を strftime(3) 用の書式文字列として日付と時間の文字列を出" -"力する\n" +" %(fmt)T FMT を strftime(3) 用の書式文字列として日付と時間の文字列を出力する\n" " \n" " 終了ステータス:\n" -" 無効な引数が与えられるか、書き込み、代入エラーが発生しない限り成功を返し" -"ます。" +" 無効な引数が与えられるか、書き込み、代入エラーが発生しない限り成功を返します。" -#: builtins.c:1926 +#: builtins.c:1913 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5321,10 +5040,8 @@ msgid "" msgstr "" "引数が Readline によってどのように補完されるかを指定します。\n" " \n" -" 各 NAME に対してどのように引数が補完されるかを指定します。オプションが与" -"え\n" -" られない場合、既存の補完指定が入力として再利用可能な形式で表示されま" -"す。\n" +" 各 NAME に対してどのように引数が補完されるかを指定します。オプションが与え\n" +" られない場合、既存の補完指定が入力として再利用可能な形式で表示されます。\n" " \n" " \n" " オプション:\n" @@ -5342,13 +5059,12 @@ msgstr "" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1954 +#: builtins.c:1941 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5356,24 +5072,20 @@ msgid "" msgstr "" "オプションに基づいた補完候補を表示します。\n" " \n" -" シェル関数の中で補完候補を生成するために使用するように意図されていま" -"す。\n" +" シェル関数の中で補完候補を生成するために使用するように意図されています。\n" " オプション引数 WORD が与えられた場合、WORD に対して一致した候補が生成\n" " されます。\n" " \n" " 終了ステータス:\n" " 無効なオプションが与えられるかエラーが発生しない限り成功を返します。" -#: builtins.c:1969 +#: builtins.c:1956 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5409,39 +5121,31 @@ msgstr "" " \n" " 引数:\n" " \n" -" 各 NAME は `complete' 組み込み関数を使って事前に定義された補完指定をコ" -"マ\n" +" 各 NAME は `complete' 組み込み関数を使って事前に定義された補完指定をコマ\n" " ンドを指し示さなければなりません。NAME が与えられない場合、compopt は\n" " 補完をこれから生成する関数から呼び出されなければいけません。そして\n" " 補完をこれから生成する関数に対するオプションが変更されます。\n" " \n" " 終了ステータス:\n" -" 無効なオプションが与えられるか、 NAME が補完指定として定義されていない場" -"合\n" +" 無効なオプションが与えられるか、 NAME が補完指定として定義されていない場合\n" " を除き、成功を返します。" -#: builtins.c:1999 +#: builtins.c:1986 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -5451,26 +5155,21 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" "標準入力から行を読み込みインデックス型配列に代入します。\n" " \n" -" 標準入力、-u オプションが与えられた場合はファイル記述子 FD から行を読み込" -"み、\n" -" インデックス型配列変数 ARRAY に代入します。変数 ARRAY のデフォルトは " -"MAPFILE\n" +" 標準入力、-u オプションが与えられた場合はファイル記述子 FD から行を読み込み、\n" +" インデックス型配列変数 ARRAY に代入します。変数 ARRAY のデフォルトは MAPFILE\n" " です。\n" " \n" " オプション:\n" -" -n count\t最大 COUNT 行をコピーする。COUNT が 0 の場合、全ての行をコ" -"ピーする\n" +" -n count\t最大 COUNT 行をコピーする。COUNT が 0 の場合、全ての行をコピーする\n" " -O origin\t配列の開始番号を ORIGIN にする。デフォルトは 0\n" " -s count \t最初の COUNT 行の読み込みを破棄する\n" " -t\t\t各行を読み込んだ時に最後の改行を削除する\n" @@ -5481,21 +5180,17 @@ msgstr "" " 引数:\n" " ARRAY\t\tデータを保存するために使用する配列変数名\n" " \n" -" もし -c が指定されずに -C が与えられた場合、デフォルトの quantum は 5000 " -"です。\n" -" CALLBACK が評価された時、代入される配列の次要素のインデックスと、要素に代" -"入さ\n" +" もし -c が指定されずに -C が与えられた場合、デフォルトの quantum は 5000 です。\n" +" CALLBACK が評価された時、代入される配列の次要素のインデックスと、要素に代入さ\n" " れる行が追加の引数として渡されます。\n" " \n" -" 明示的に開始番号が与えられない場合、mapfile は代入前に ARRAY を空にしま" -"す。\n" +" 明示的に開始番号が与えられない場合、mapfile は代入前に ARRAY を空にします。\n" " \n" " 終了ステータス:\n" -" 無効なオプションが与えられる、配列が読み取り専用、またはインデックス型配" -"列で無い\n" +" 無効なオプションが与えられる、配列が読み取り専用、またはインデックス型配列で無い\n" " 場合を除き成功を返します。" -#: builtins.c:2033 +#: builtins.c:2020 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5516,13 +5211,11 @@ msgstr "" #~ "; 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" +#~ " The value of EXPR indicates how many call frames to go back before the\n" #~ " current one; the top frame is frame 0." #~ msgstr "" #~ "。この追加の情報はスタックトレース\n" #~ " を提供する時に利用します。\n" #~ "\n" -#~ " EXPR の値は現在のフレームに戻るまでに何回フレームが呼び出されているか" -#~ "を\n" +#~ " EXPR の値は現在のフレームに戻るまでに何回フレームが呼び出されているかを\n" #~ " 意味します。最上位のフレームは 0 です。" diff --git a/po/lt.gmo b/po/lt.gmo index 9dd918e0c..02ff86a61 100644 Binary files a/po/lt.gmo and b/po/lt.gmo differ diff --git a/po/lt.po b/po/lt.po index 778f6e049..660009bf7 100644 --- a/po/lt.po +++ b/po/lt.po @@ -7,38 +7,38 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2009-03-25 16:49+0200\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" -"Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: lt\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" +"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:51 msgid "bad array subscript" msgstr "blogas masyvo indeksas" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nepavyko priskirti prie neskaitinio indekso" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -48,21 +48,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: nepavyko sukurti: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pirmas ne tarpo simbolis nėra „\"“" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "nėra uždarančiojo „%c“ %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: trÅ«ksta dvitaÅ¡kio skirtuko" @@ -126,7 +126,7 @@ msgstr "Grąžina esamos procedÅ«ros kontekstą." msgid "HOME not set" msgstr "HOME nenustatytas" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "per daug argumentų" @@ -149,7 +149,7 @@ msgstr "įspėjimas: " msgid "%s: usage: " msgstr "%s: naudojimas: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: parametrui reikia argumento" @@ -164,7 +164,7 @@ msgstr "%s: reikia skaitinio argumento" msgid "%s: not found" msgstr "%s: nerasta" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: negalimas parametras" @@ -187,7 +187,7 @@ msgstr "netaisyklingas aÅ¡tuonetainis skaičius" msgid "invalid hex number" msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaičius" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "netaisyklingas skaičius" @@ -296,25 +296,35 @@ msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "galima naudoti tik funkcijoje" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "negalima naudoti „-f“ funkcijoms kurti" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija tik skaitymui" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: negalima tokiu bÅ«du sunaikinti masyvų kintamųjų" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -343,23 +353,23 @@ msgstr "%s: nedinamiÅ¡kai įkrauta" msgid "%s: cannot delete: %s" msgstr "%s: nepavyko iÅ¡trinti: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: aplankas" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ne paprastas failas" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: failas per didelis" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: negalima vykdyti dvejetainių failų" @@ -455,7 +465,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: nepavyko atverti: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -498,16 +508,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:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nežinoma klaida" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "tikėtasi iÅ¡raiÅ¡kos" @@ -516,65 +526,65 @@ msgstr "tikėtasi iÅ¡raiÅ¡kos" msgid "%s: not an indexed array" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: nesamas parametras" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: netaisyklingas veiksmo pavadinimas" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: ne masyvo kintamasis" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s“: trÅ«ksta formato simbolio" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: netaisyklingas formato simbolis" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "įspėjimas: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" @@ -583,20 +593,25 @@ msgstr "trÅ«ksta Å¡eÅ¡ioliktainio skaitmens iÅ¡raiÅ¡koje \\x" msgid "no other directory" msgstr "nėra kito aplanko" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: netaisyklingas limito argumentas" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 #, fuzzy msgid "directory stack index" msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -620,7 +635,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -645,7 +660,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -666,12 +681,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: klaidinga laiko ribos (timeout) specifikacija" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "skaitymo klaida: %d: %s" @@ -680,26 +695,26 @@ msgstr "skaitymo klaida: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "galima grįžti (return) tik iÅ¡ funkcijos ar scenarijaus" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "negalima kartu iÅ¡trinti funkcijos ir kintamojo" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: nepavyko iÅ¡trinti" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nepavyko iÅ¡trinti: %s tik skaitymui" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: ne masyvo kintamasis" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ne funkcija" @@ -708,11 +723,11 @@ msgstr "%s: ne funkcija" msgid "shift count" msgstr "postÅ«mių skaičius" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "negalima aplinkos nuostatos vienu metu įjungti ir iÅ¡jungti" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas" @@ -837,129 +852,129 @@ msgstr "blogas Å¡uolis" msgid "%s: unbound variable" msgstr "%s: nepriskirtas kintamasis" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\alaukiant įvedimo baigėsi laikas: automatiÅ¡kai atsijungta\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "nepavyko peradresuoti standartinio įvedimo iÅ¡ /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "raÅ¡ymo klaida: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: komanda nerasta" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s yra %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: blogas interpretatorius" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: negalima vykdyti dvejetainių failų" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s yra aplinkos vidinė komanda\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "virÅ¡ytas iÅ¡raiÅ¡kos rekursijos lygis" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "rekursijos steko atvirkÅ¡tinis perpildymas" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "sintaksės klaida iÅ¡raiÅ¡koje" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "bandymas priskirti ne kintamajam" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "dalyba iÅ¡ 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "klaida: bloga expassign leksema" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "sąlygos iÅ¡raiÅ¡koje tikėtasi „:“" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponentė mažesnis už 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "po prieÅ¡-didinimo ar prieÅ¡-mažinimo operatoriaus tikėtasi identifikatoriaus" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "TrÅ«ksta „)“" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "sintaksės klaida: tikėtasi operando" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "sintaksės klaida: netaisyklingas aritmetinis operatorius" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "netaisyklingas aritmetinis pagrindas" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "per didelė pagrindo reikÅ¡mė" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: iÅ¡raiÅ¡kos klaida\n" @@ -968,163 +983,163 @@ msgstr "%s: iÅ¡raiÅ¡kos klaida\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: nepavyko pasiekti aukÅ¡tesnių aplankų" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nepavyko dublikuoti fd %d į fd %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: tokio pid nėra" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signalas %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Atlikta" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Atlikta(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Nežinoma bÅ«sena" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: nėra proceso %ld įraÅ¡o" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: darbas %d yra sustabdytas" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: darbas užsibaigė" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: darbas %d jau fone" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: %d eilutė: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "Å¡ioje aplinkoje nėra darbų valdymo" @@ -1146,49 +1161,49 @@ msgstr "" msgid "unknown" msgstr "nežinoma" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: blokas iÅ¡ laisvų blokų sąraÅ¡o sugadintas" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: iÅ¡kviestas su jau atlaisvintu bloku" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: iÅ¡kviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: iÅ¡kviestas su nerezervuotu bloku" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: atvirkÅ¡tinis perpildymas (underflow); mh_nbytes už ribos" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: alloc lentelė pilna su FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p jau lentelėje kaip rezervuotas?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p jau lentelėje kaip laisvas?\n" @@ -1236,15 +1251,15 @@ msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: nepavyko iÅ¡skirti %lu baitų" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Turite laiÅ¡kų $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Turite naujų laiÅ¡kų $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "PaÅ¡tas %s perskaitytas\n" @@ -1277,103 +1292,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "netikėta failo pabaiga ieÅ¡kant atitinkamo „%c“" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "netikėta failo pabaiga ieÅ¡kant „]]“" -#: parse.y:4043 +#: parse.y:4091 #, 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:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "sintaksės klaida sąlygos iÅ¡raiÅ¡koje" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "netikėta leksema „%s“, tikėtasi „)“" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "tikėtasi „)“" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "netikėtas argumentas sąlygos unariniam operatoriui" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "tikėtasi sąlygos binarinio operatoriaus" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "netikėtas argumentas sąlygos binariniam operatoriui" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "netikėta leksema „%c“ sąlygos komandoje" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "netikėta leksema „%s“ sąlygos komandoje" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "netikėta leksema %d sąlygos komandoje" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "sintaksės klaida prie netikėtos leksemos: „%s“" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "sintaksės klaida prie „%s“" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "sintaksės klaida: netikėta failo pabaiga" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "sintaksės klaida" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Naudokite „%s“, jei norite iÅ¡eiti iÅ¡ ap.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "netikėta failo pabaiga ieÅ¡kant atitinkamo „)“" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: funkcija „%s“ nerasta" @@ -1402,71 +1417,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: netaisyklingas formato simbolis" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "failo deskriptorius už ribų" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: ambiguous redirect" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: negalima perraÅ¡yti egzistuojančio failo" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: apribota: negalima peradresuoti iÅ¡vedimo" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: negalima priskirti sąraÅ¡o masyvo elementui" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "nukreipimo klaida: nepavyko dublikuoti fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp turi bÅ«ti taisyklingas aplanko pavadinimas" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: netaisyklingas parametras" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Neturiu vardo!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versija %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1475,42 +1490,43 @@ msgstr "" "Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n" "\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU ilgi parametrai:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Aplinkos parametrai:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s arba -o nustatymas\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Naudokite komandą „bashbug“ klaidoms praneÅ¡ti.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: netaisyklinga operacija" @@ -1685,200 +1701,215 @@ msgstr "Nežinomas signalas #" msgid "Unknown Signal #%d" msgstr "Nežinomas signalas #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: negalima priskirti sąraÅ¡o masyvo elementui" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: netaisyklingas failo deskriptorius: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametras tuščias arba nenustatytas" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: posekio iÅ¡raiÅ¡ka < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: blogas keitinys" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: negalima tokiu bÅ«du priskirti" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "blogas keitinys: trÅ«ksta „%s“ %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "nėra atitikmenų: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "tikėtasi argumento" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: tikėtasi skaitinės iÅ¡raiÅ¡kos" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "tikėtasi „)“" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "tikėtasi „)“, rasta %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: tikėtasi unarinio operatoriaus" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: tikėtasi binarinio operatoriaus" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "trÅ«ksta „]“" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "netaisyklingas signalo numeris" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: blogas signalas %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "klaida importuojant funkcijos apibrėžimą „%s“" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "aplinkos lygmuo (%d) per aukÅ¡tas, nustatoma į 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: negalima priskirti sąraÅ¡o masyvo elementui" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametras tuščias arba nenustatytas" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "netaisyklingas simbolis %d %s exportstr'e" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s exportstr'e trÅ«ksta „=“" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nėra global_variables konteksto" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nepavyko atverti: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: netaisyklingas failo deskriptorius: %s" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s išėjo už ribų" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1886,36 +1917,22 @@ msgstr "" "Licencija GPLv3+: GNU GPL versija 3 arba naujesnė \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versija %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "" "Tai yra laisva programinė įranga; jÅ«s esate laisvas keisti ir platinti ją.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nėra JOKIOS GARANTIJOS, kiek tik tą leidžia įstatymas.\n" -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Autorinės teisės (C) 2009 Free Software Foundation, Inc." - -#: version2.c:87 -#, fuzzy, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licencija GPLv3+: GNU GPL versija 3 arba naujesnė \n" - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1993,7 +2010,7 @@ msgstr "command [-pVv] komanda [arg ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [pavadinimas[=reikÅ¡mė] ...]" #: builtins.c:78 @@ -2101,7 +2118,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o nustatymas] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [pavadinimas ...]" #: builtins.c:144 @@ -2160,12 +2178,13 @@ msgstr "umask [-p] [-S] [režimas]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2565,6 +2584,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2580,17 +2600,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2601,11 +2622,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2639,7 +2660,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2652,7 +2673,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2679,7 +2700,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2691,7 +2712,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2732,7 +2753,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2755,7 +2776,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 #, fuzzy msgid "" "Exit the shell.\n" @@ -2767,7 +2788,7 @@ msgstr "" "nustatomas\n" " paskutinės vykdytos komandos klaidos kodas." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2776,7 +2797,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2806,7 +2827,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2818,7 +2839,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2832,7 +2853,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2856,7 +2877,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2878,7 +2899,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2912,7 +2933,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2936,7 +2957,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2953,7 +2974,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2975,7 +2996,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3020,7 +3041,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3055,7 +3076,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3071,7 +3092,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3083,7 +3104,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3168,7 +3189,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3177,6 +3198,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3188,7 +3211,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3207,7 +3230,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3227,7 +3250,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3238,7 +3261,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3257,7 +3280,7 @@ msgstr "" " Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iÅ¡kvietus\n" " FAILĄ." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3271,7 +3294,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3336,6 +3359,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3352,7 +3377,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3360,7 +3385,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3372,7 +3397,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3416,7 +3441,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3446,7 +3471,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3493,7 +3518,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3511,7 +3536,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3523,26 +3548,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3555,7 +3584,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3572,7 +3601,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3592,7 +3621,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3608,7 +3637,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3619,7 +3648,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3640,7 +3669,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -3654,7 +3683,7 @@ msgstr "" "IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iÅ¡\n" " „while“ komandų grąžina klaidos kodą 0." -#: builtins.c:1621 +#: builtins.c:1629 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -3668,7 +3697,7 @@ msgstr "" "IÅ¡skleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iÅ¡\n" " „until“ komandų grąžina klaidos kodą, nelygų 0." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3681,7 +3710,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3695,7 +3724,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3709,7 +3738,7 @@ msgstr "" "Vykdyti eilę komandų grupėje. Tai yra vienas iÅ¡ bÅ«dų nukreipti\n" " visos eilės komandų įvedimą/iÅ¡vedimą." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3723,7 +3752,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3734,7 +3763,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3762,7 +3791,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3816,7 +3845,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3847,7 +3876,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3874,7 +3903,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3903,7 +3932,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3924,7 +3953,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -3952,6 +3981,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -3969,7 +4004,7 @@ msgstr "" " Jei pateiktas parametras -v, iÅ¡vedimas įraÅ¡omas į aplinkos kintamąjį\n" " KINT, užuot spausdinus į standartinį iÅ¡vedimą." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3996,7 +4031,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -4014,7 +4049,7 @@ msgstr "" " Jei pateiktas nebÅ«tinasis ŽODŽIO argumentas, iÅ¡vedami įraÅ¡ai,\n" " atitinkantys ŽODÄ®." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4045,7 +4080,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4086,13 +4121,28 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, 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ų)" diff --git a/po/nl.gmo b/po/nl.gmo index 99b195405..2f5e52bf5 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index 0a0b160be..6665c150c 100644 --- a/po/nl.po +++ b/po/nl.po @@ -23,14 +23,14 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-10-01 21:14+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" -"Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -38,22 +38,22 @@ msgstr "" msgid "bad array subscript" msgstr "ongeldige array-index" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ongeldige sleutel voor associatief array" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: niet-numerieke index is niet mogelijk" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" @@ -63,22 +63,22 @@ msgstr "%s: %s: een index is nodig bij toekenning aan associatief array" msgid "%s: cannot create: %s" msgstr "Kan %s niet aanmaken: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: eerste teken dat geen witruimte is is niet '\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "geen sluit-'%c' in %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: ontbrekend scheidingsteken (dubbele punt)" @@ -144,7 +144,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME is niet gedefinieerd" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "te veel argumenten" @@ -167,7 +167,7 @@ msgstr "waarschuwing: " msgid "%s: usage: " msgstr "%s: Gebruik: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: optie vereist een argument" @@ -182,7 +182,7 @@ msgstr "%s: vereist een numeriek argument" msgid "%s: not found" msgstr "%s: niet gevonden" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: ongeldige optie" @@ -205,7 +205,7 @@ msgstr "ongeldig octaal getal" msgid "invalid hex number" msgstr "ongeldig hexadecimaal getal" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "ongeldig getal" @@ -314,25 +314,35 @@ msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht" msgid "not currently executing completion function" msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "kan alleen worden gebruikt binnen een functie" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "'-f' kan niet gebruikt worden om een functie te definiëren" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: is een alleen-lezen functie" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: kan array-variabelen niet op deze manier verwijderen" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array" @@ -361,23 +371,23 @@ msgstr "%s: is niet dynamisch geladen" msgid "%s: cannot delete: %s" msgstr "Kan %s niet verwijderen: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: is een map" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: is geen normaal bestand" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: bestand is te groot" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: kan een binair bestand niet uitvoeren" @@ -472,7 +482,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "Kan %s niet openen: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -516,16 +526,16 @@ msgstr "%s: 'inlib' is mislukt" msgid "no other options allowed with `-x'" msgstr "bij '-x' zijn geen andere opties toegestaan" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Onbekende fout" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "uitdrukking werd verwacht" @@ -534,66 +544,66 @@ msgstr "uitdrukking werd verwacht" msgid "%s: not an indexed array" msgstr "%s: is geen geïndexeerd array" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ongeldige aanduiding van bestandsdescriptor" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ongeldige bestandsdescriptor: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: ongeldig regelaantal" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, 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:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ongeldige hoeveelheid" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "lege naam van array-variabele" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "ondersteuning van arrayvariabelen is vereist" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "'%s': ontbrekend opmaakteken" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': ongeldige aanduiding van tijdsopmaak" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "'%c': ongeldig opmaakteken" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "waarschuwing: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "ontbrekend hexadecimaal cijfer bij \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "ontbrekend Unicode-cijfer bij \\%c" @@ -602,19 +612,24 @@ msgstr "ontbrekend Unicode-cijfer bij \\%c" msgid "no other directory" msgstr "geen andere map" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: ongeldige limietwaarde" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "mappenstapel is leeg" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "mappenstapelindex" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -654,7 +669,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:705 +#: builtins/pushd.def:711 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" @@ -696,7 +711,7 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -734,12 +749,12 @@ msgstr "" "\n" " De opdracht 'dirs' toont de huidige mappenstapel." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ongeldige aanduiding van tijdslimiet" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "leesfout: %d: %s" @@ -750,26 +765,26 @@ msgstr "" "kan alleen een 'return' doen uit een functie of een uit script aangeroepen " "met 'source'" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "kan niet tegelijk een functie en een variabele verwijderen" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "Kan '%s' niet verwijderen" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: is geen array-variabele" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: is geen functie" @@ -778,11 +793,11 @@ msgstr "%s: is geen functie" msgid "shift count" msgstr "shift-aantal" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ongeldige shell-optienaam" @@ -907,127 +922,127 @@ msgstr "ongeldige sprong" msgid "%s: unbound variable" msgstr "%s: ongebonden variabele" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "pijpfout" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: opdracht niet gevonden" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ongeldige interpreter" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: kan een binair bestand niet uitvoeren" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s is een ingebouwde shell-functie\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "recursieniveau van expressies is overschreden" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "recursiestapel-onderloop" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntaxfout in expressie" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "poging tot toewijzing aan een niet-variabele" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "deling door nul" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "':' werd verwacht voor een voorwaardelijke expressie" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "exponent is kleiner dan 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "naam verwacht na pre-increment of pre-decrement" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "ontbrekend ')'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntaxfout: operator verwacht" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfout: ongeldige rekenkundige operator" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "ongeldige rekenkundige basis" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "waarde is te groot voor basis" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: expressiefout\n" @@ -1036,168 +1051,168 @@ msgstr "%s: expressiefout\n" msgid "getcwd: cannot access parent directories" msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline(): procesgroep van pijp" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "afgesplitst PID %d hoort bij draaiende taak %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..." -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process(): proces %5ld (%s) in de pijplijn" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid(): PID %ld bestaat niet" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signaal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Klaar" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Gepauzeerd" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Gepauzeerd(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Wordt uitgevoerd" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Klaar(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Onbekende afsluitwaarde" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(geheugendump gemaakt) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (werkmap: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "instellen van procesgroep %2$ld van dochter %1$ld" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for(): proces %ld is nergens geregistreerd" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job(): taak %d is gepauzeerd" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: taak is afgesloten" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: taak %d draait al op de achtergrond" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te " "vermijden" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: regel %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(werkmap is nu: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp() is mislukt" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: lijnprotocol" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid()" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "kan procesgroep (%d) van terminal niet instellen" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "er is geen taakbesturing in deze shell" @@ -1219,49 +1234,49 @@ msgstr "" msgid "unknown" msgstr "onbekend" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free(): blokgroottes van begin en eind zijn verschillend" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc(): aangeroepen met als argument een ongebruikt blok" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc(): blokgroottes van begin en eind zijn verschillend" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc(): reserveringstabel is vol??\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc(): %p staat al als gereserveerd in tabel??\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free(): %p staat al als vrij in tabel??\n" @@ -1309,15 +1324,15 @@ msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "U hebt post in $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "U hebt nieuwe post in $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "De post in %s is gelezen.\n" @@ -1344,112 +1359,112 @@ msgstr "make_here_document(): ongeldig instructietype %d" #, 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')" +"regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%" +"s')" #: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "syntaxfout in conditionele expressie" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "onverwacht symbool '%s'; ')' werd verwacht" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "')' werd verwacht" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "onverwacht argument bij eenzijdige conditionele operator" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "tweezijdige conditionele operator werd verwacht" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "onverwacht argument bij tweezijdige conditionele operator" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "onverwacht symbool '%c' in conditionele opdracht" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "onverwacht symbool '%s' in conditionele opdracht" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "onverwacht symbool %d in conditionele opdracht" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfout nabij onverwacht symbool '%s'" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfout nabij '%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "syntaxfout: onverwacht bestandseinde" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "syntaxfout" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Gebruik \"%s\" om de shell te verlaten.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion(): functie '%s' niet gevonden" @@ -1480,71 +1495,71 @@ msgstr "" "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer " "(%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf(): '%c': ongeldig opmaakteken" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "bestandsdescriptor valt buiten bereik" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: omleiding is niet eenduidig" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: kan bestaand bestand niet overschrijven" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "Kan /tmp niet vinden; maak deze aan!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp dient een geldige mapnaam te zijn" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ongeldige optie" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Ik heb geen naam!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versie %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1553,40 +1568,41 @@ msgstr "" "Gebruik: %s [opties]\n" " %s [opties] scriptbestand...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Lange opties:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Korte opties:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD, of -c opdracht, of -O shopt-optie (enkel bij aanroep)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask(): %d: ongeldige operatie" @@ -1763,73 +1779,78 @@ msgstr "Onbekend signaalnummer" msgid "Unknown Signal #%d" msgstr "Onbekend signaal #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "ongeldige vervanging: geen sluit-'%s' in %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: kan geen lijst toewijzen aan een array-element" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "kan geen pijp maken voor procesvervanging" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "kan geen dochterproces maken voor procesvervanging" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "kan pijp genaamd %s niet openen om te lezen" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "kan pijp genaamd %s niet openen om te schrijven" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "kan geen pijp maken voor opdrachtvervanging" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "kan geen dochterproces maken voor opdrachtvervanging" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: lege parameter, of niet ingesteld" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: ongeldige vervanging" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: kan niet op deze manier toewijzen" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1837,58 +1858,58 @@ msgstr "" "toekomstige versies van de shell zullen dit als een rekenkundige vervanging " "evalueren" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ongeldige vervanging: geen afsluitende '`' in %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "geen overeenkomst: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argument werd verwacht" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: een geheel-getaluitdrukking werd verwacht" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "')' werd verwacht" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "')' werd verwacht; %s gevonden" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "eenzijdige operator werd verwacht, %s gevonden" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "tweezijdige operator werd verwacht, %s gevonden" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "ontbrekende ']'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "ongeldig signaalnummer" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1896,74 +1917,85 @@ msgstr "" "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan " "mezelf..." -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler(): ongeldig signaal %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "fout tijdens importeren van functiedefinitie voor '%s'" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell-niveau is te hoog (%d); teruggezet op 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "*** %s heeft lege export-tekenreeks" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "*** geen '=' in export-tekenreeks voor %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context(): er is geen 'global_variables'-context" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: Kan %s niet openen als BESTAND" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s valt buiten bereik" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1971,36 +2003,22 @@ msgstr "" "De licentie is GPLv3+: GNU GPL versie 3 of later.\n" "Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, versie %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "" "Dit is vrije software; u mag het vrijelijk wijzigen en verder verspreiden.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Er is GEEN GARANTIE, voor zover de wet dit toestaat.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"De licentie is GPLv2+: GNU GPL versie 2 of later.\n" -"Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2082,7 +2100,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] OPDRACHT [ARGUMENT...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [NAAM[=WAARDE]...]" #: builtins.c:78 @@ -2193,7 +2212,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o OPTIENAAM] [--] [ARGUMENT...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [NAAM...]" #: builtins.c:144 @@ -2251,12 +2271,13 @@ msgstr "umask [-p] [-S] [MODUS]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [ID]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [PID]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [ID]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2745,6 +2766,7 @@ msgstr "" " of 1 als de OPDRACHT niet gevonden is." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2764,6 +2786,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2779,7 +2802,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Waarden en eigenschappen van variabelen instellen.\n" "\n" @@ -2819,7 +2843,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2829,7 +2853,8 @@ msgstr "" "\n" " Deze opdracht is verouderd. Zie 'help declare'." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2840,8 +2865,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Lokale variabelen definiëren.\n" "\n" @@ -2855,7 +2880,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd, er een\n" " fout optrad, of de shell geen functie aan het uitvoeren is." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2915,7 +2940,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een schrijffout optrad." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2934,7 +2959,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een schrijffout optrad." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2990,7 +3015,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij NAAM geen ingebouwde shell-opdracht is of\n" "  er een fout optreedt." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3011,7 +3036,7 @@ msgstr "" "opdracht\n" " leeg is." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3087,7 +3112,7 @@ msgstr "" " Normaliter ontleedt 'getopts' de positionele parameters: $0...$9.\n" " Maar als er argumenten gegeven worden, dan worden deze ontleed." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3128,7 +3153,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij OPDRACHT niet gevonden wordt of er een\n" " omleidingsfout optreedt." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3140,7 +3165,7 @@ msgstr "" " Beëindigt de shell met een afsluitwaarde van N. Zonder N is de\n" " afsluitwaarde die van de laatst uitgevoerde opdracht." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3153,7 +3178,7 @@ msgstr "" " Beëindigt een login-shell met een afsluitwaarde van N. Geeft een\n" " foutmelding als de huidige shell geen login-shell is." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3208,7 +3233,7 @@ msgstr "" " De afsluitwaarde die van de uitgevoerde opdracht, of 0, of niet-nul als\n" " er een fout optreedt." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3231,7 +3256,7 @@ msgstr "" "er\n" " een fout optreedt." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3256,7 +3281,7 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3298,7 +3323,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij NAAM niet gevonden wordt of een ongeldige\n" " optie gegeven werd." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3335,7 +3360,7 @@ msgstr "" "ongeldige\n" " optie gegeven werd." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3404,7 +3429,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3450,7 +3475,7 @@ msgstr "" "een\n" " fout optrad. Met optie '-x' is de afsluitwaarde die van OPDRACHT." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3482,7 +3507,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n" " gegeven werd." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3527,7 +3552,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3616,7 +3641,7 @@ msgstr "" " Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n" " 'let' 1; anders 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3652,7 +3677,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3716,7 +3741,7 @@ msgstr "" " de tijdslimiet overschreden werd, of een ongeldige bestandsdescriptor\n" " als argument van '-u' gegeven werd." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3737,7 +3762,7 @@ msgstr "" " uitvoeren is." # Voor de duidelijkheid is de tekstvolgorde veranderd. -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3921,7 +3946,8 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3930,6 +3956,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3955,7 +3983,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n" " NAAM alleen-lezen is." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3989,7 +4017,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4025,7 +4053,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4042,7 +4070,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 tenzij N negatief is of groter dan $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4067,7 +4095,7 @@ msgstr "" "gegeven\n" " bestand, of 1 als dit bestand niet gelezen kan worden." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4093,7 +4121,8 @@ msgstr "" "fout\n" " optreedt." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4158,6 +4187,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4240,7 +4271,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:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4252,7 +4283,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:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4271,7 +4302,7 @@ msgstr "" "\n" " De afsluitwaarde is altijd 0." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4359,7 +4390,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n" " gegeven werd." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4411,7 +4442,7 @@ msgstr "" " als de naam onbekend is\\ \n" " De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4503,7 +4534,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4539,7 +4570,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n" " gegeven werd." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4552,6 +4583,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4569,18 +4603,20 @@ msgstr "" " De afsluitwaarde is die van ID, 1 als ID ongeldig si, of 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Op procesafsluiting wachten en de afsluitwaarde rapporteren.\n" "\n" @@ -4593,7 +4629,7 @@ msgstr "" " De afsluitwaarde is die van ID, 1 als ID ongeldig si, of 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4614,7 +4650,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4641,7 +4677,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4678,7 +4714,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4705,7 +4741,7 @@ msgstr "" " overdraagbare standaardopmaak.\n" " De afsluitwaarde is die van de PIJPLIJN." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4723,7 +4759,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4758,7 +4794,7 @@ msgstr "" "uitgevoerde\n" " deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4775,7 +4811,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4792,7 +4828,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4813,7 +4849,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de OPDRACHT." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4835,7 +4871,7 @@ msgstr "" "\n" " De afsluitwaarde is 0, tenzij NAAM onveranderbaar is." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4852,7 +4888,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de laatst uitgevoerde opdracht." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4876,7 +4912,7 @@ msgstr "" "\n" " De afsluitwaarde is die van de hervatte taak." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4893,7 +4929,7 @@ msgstr "" "\n" " De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4948,7 +4984,7 @@ msgstr "" "\n" " De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5062,7 +5098,7 @@ msgstr "" "het\n" " geschiedeniscommentaarteken, gewoonlijk '#'\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5115,7 +5151,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5164,7 +5200,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n" " mapwijziging mislukte." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5215,7 +5251,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5258,7 +5294,7 @@ msgstr "" " een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n" " ongeldige optie gegeven werd." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5286,6 +5322,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5315,7 +5357,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5365,7 +5407,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5387,7 +5429,7 @@ msgstr "" "een\n" " fout optrad." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5443,7 +5485,7 @@ msgstr "" " De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n" " NAAM geen completeringsvoorschrift gedefinieerd is." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5516,7 +5558,7 @@ msgstr "" "of\n" " een ongeldige optie gegeven werd." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5525,3 +5567,16 @@ msgstr "" "Regels inlezen vanuit een bestand in een array-variabele.\n" "\n" " Een synoniem voor 'mapfile'." + +#~ 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 "" +#~ "De licentie is GPLv2+: GNU GPL versie 2 of later.\n" +#~ "Zie http://gnu.org/licenses/gpl.html voor de volledige tekst.\n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [PID]" diff --git a/po/pl.gmo b/po/pl.gmo index aff383d32..306279334 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 7a9cfcdc2..b651e1baf 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-03-20 12:53+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" -"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" @@ -23,22 +23,22 @@ msgstr "" msgid "bad array subscript" msgstr "nieprawid³owy indeks tablicy" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie mo¿na przekszta³ciæ tablicy indeksowanej na asocjacyjn±" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: b³êdny klucz tablicy asocjacyjnej" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie mo¿na przypisaæ do nienumerycznego indeksu" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, 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" @@ -49,22 +49,22 @@ msgid "%s: cannot create: %s" msgstr "%s: nie mo¿na utworzyæ: %s" # ??? -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "brak zamykaj±cego `%c' w %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: brak separuj±cego dwukropka" @@ -132,7 +132,7 @@ msgstr "" msgid "HOME not set" msgstr "Nie ustawiono HOME" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "za du¿o argumentów" @@ -155,7 +155,7 @@ msgstr "uwaga: " msgid "%s: usage: " msgstr "%s: sk³adnia: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcja wymaga argumentu" @@ -170,7 +170,7 @@ msgstr "%s: wymagany argument numeryczny" msgid "%s: not found" msgstr "%s: nie znaleziono" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: nieprawid³owa opcja" @@ -193,7 +193,7 @@ msgstr "b msgid "invalid hex number" msgstr "b³êdna liczba szesnastkowa" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "nieprawid³owa liczba" @@ -302,25 +302,35 @@ msgstr "uwaga: opcja -C mo msgid "not currently executing completion function" msgstr "aktualnie nie jest wykonywana funkcja dope³niania" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "mo¿na u¿ywaæ tylko w funkcji" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "nie mo¿na u¿ywaæ `-f' do tworzenia funkcji" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funkcja tylko do odczytu" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie mo¿na przekszta³ciæ tablicy asocjacyjnej na indeksowan±" @@ -349,23 +359,23 @@ msgstr "%s: nie jest msgid "%s: cannot delete: %s" msgstr "%s: nie mo¿na usun±æ: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: jest katalogiem" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: nie jest zwyk³ym plikiem" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: plik jest za du¿y" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie mo¿na uruchomiæ pliku binarnego" @@ -461,7 +471,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: nie mo¿na otworzyæ: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -505,16 +515,16 @@ msgstr "%s: inlib nie powiod msgid "no other options allowed with `-x'" msgstr "nie mo¿na u¿ywaæ innych opcji przy `-x'" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Nieznany b³±d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "spodziewano siê wyra¿enia" @@ -523,64 +533,64 @@ msgstr "spodziewano si msgid "%s: not an indexed array" msgstr "%s: nie jest tablic± indeksowan±" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: nieprawid³owo okre¶lony deskryptor pliku" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: nieprawid³owy deskryptor pliku: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: b³êdna liczba linii" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: b³êdny pocz±tek tablicy" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: b³êdna liczba linii miêdzy wywo³aniami" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "pusta nazwa zmiennej tablicowej" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "wymagana obs³uga zmiennych tablicowych" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': brak znaku formatuj±cego" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': b³êdne okre¶lenie formatu czasu" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': nieprawid³owy znak formatuj±cy" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "uwaga: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "brak cyfry szesnastkowej dla \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "brak cyfry unikodowej dla \\%c" @@ -589,19 +599,24 @@ msgstr "brak cyfry unikodowej dla \\%c" msgid "no other directory" msgstr "brak innego katalogu" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: nieprawid³owy argument stanowi±cy ograniczenie" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "pusty stos katalogów" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "indeks stosu katalogów" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -644,7 +659,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:705 +#: builtins/pushd.def:711 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" @@ -688,7 +703,7 @@ msgstr "" " \n" " Zawarto¶æ stosu katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -727,12 +742,12 @@ msgstr "" " \n" " Zawarto¶æ stosu katalogów mo¿na zobaczyæ za pomoc± polecenia `dirs'." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: nieprawid³owo okre¶lony limit czasu" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "b³±d odczytu: %d: %s" @@ -741,26 +756,26 @@ msgstr "b 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:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "nie mo¿na jednocze¶nie anulowaæ definicji funkcji i zmiennej" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: nie mo¿na anulowaæ definicji" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie mo¿na anulowaæ definicji: %s jest tylko do odczytu" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: nie jest zmienn± tablicow±" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: nie jest funkcj±" @@ -769,11 +784,11 @@ msgstr "%s: nie jest funkcj msgid "shift count" msgstr "licznik przesuniêcia" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "nie mo¿na opcji pow³oki jednocze¶nie ustawiæ i uniewa¿niæ" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nieprawid³owa nazwa opcji pow³oki" @@ -898,129 +913,129 @@ msgstr "z msgid "%s: unbound variable" msgstr "%s: nieustawiona zmienna" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': nieprawid³owy znak formatuj±cy" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "b³±d potoku" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: ograniczony: nie mo¿na podawaæ `/' w nazwach poleceñ" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: nie znaleziono polecenia" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: z³y interpreter" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie mo¿na uruchomiæ pliku binarnego" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s jest wewnêtrznym poleceniem pow³oki\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie mo¿na skopiowaæ deskryptora pliku %d do %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "przekroczone ograniczenie poziomu rekursji dla wyra¿enia" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "niedomiar stosu rekursji" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "b³±d sk³adniowy w wyra¿eniu" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "próba przypisania do nie-zmiennej" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "dzielenie przez 0" # ??? -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "b³±d: z³y prefiks operatora przypisuj±cego" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "spodziewano siê `:' w wyra¿eniu warunkowym" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "wyk³adnik mniejszy ni¿ 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "brakuj±cy `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "b³±d sk³adni: spodziewany argument" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "b³±d sk³adni: nieprawid³owy operator arytmetyczny" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (b³êdny znacznik to \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "nieprawid³owa podstawa arytmetyczna" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "warto¶æ za du¿a na podstawê" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: b³±d w wyra¿eniu\n" @@ -1029,165 +1044,165 @@ msgstr "%s: b msgid "getcwd: cannot access parent directories" msgstr "getcwd: niemo¿liwy dostêp do katalogów nadrzêdnych" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie mo¿na wy³±czyæ trybu nieblokuj±cego dla deskryptora %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufor dla nowego deskryptora %d ju¿ istnieje" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" # ??? -#: jobs.c:891 +#: jobs.c:892 #, 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:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "usuwanie zatrzymanego zadania %d z grup± procesów %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) w potoku" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) oznaczony jako nadal ¿ywy" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: brak takiego PID-u" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Sygna³ %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Zakoñczono" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Zatrzymano" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Zatrzymano(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Dzia³a" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Zakoñczono(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Kod wyj¶cia %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Stan nieznany" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(zrzut pamiêci) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (katalog: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid potomka (%ld na %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Brak rekordu dla procesu %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: zadanie %d jest zatrzymane" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: zadanie zosta³o przerwane" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: zadanie %d ju¿ pracuje w tle" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" "waitchld: wy³±czanie WNOHANG w celu unikniêcia nieskoñczonego oczekiwania" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: linia %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (zrzut pamiêci)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(katalog: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp nie powiod³o siê" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: dyscyplina linii" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie mo¿na ustawiæ grupy procesów terminala (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "w tej pow³oce nie ma kontroli zadañ" @@ -1210,49 +1225,49 @@ msgid "unknown" msgstr "nieznany" # ??? -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: nieprawid³owy blok na li¶cie wolnych bloków" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: wywo³ane dla bloku, który ju¿ zosta³ zwolniony" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: wywo³ane dla bloku, który nie zosta³ przydzielony" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: rozmiar pocz±tkowy i koñcowy fragmentu s± ró¿ne" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: wywo³ane dla bloku, który nie zosta³ przydzielony" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: rozmiar pocz±tkowy i koñcowy fragmentu s± ró¿ne" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: tablica alokacji jest pe³na podczas FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p ju¿ znajduje siê w tablicy jako przydzielony?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p ju¿ znajduje siê w tablicy jako wolny?\n" @@ -1300,15 +1315,15 @@ msgstr "setlocale: %s: nie mo msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie mo¿na zmieniæ lokalizacji (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Masz pocztê w $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Masz now± pocztê w $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Poczta w %s jest przeczytana\n" @@ -1342,103 +1357,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nieoczekiwany EOF podczas poszukiwania pasuj±cego `%c'" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "nieoczekiwany EOF podczas poszukiwania `]]'" -#: parse.y:4043 +#: parse.y:4091 #, 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:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "b³±d sk³adni w wyra¿eniu warunkowym" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "oczekiwano `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "oczekiwano dwuargumentowego operatora warunkowego" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "b³±d sk³adni przy nieoczekiwanym znaczniku `%s'" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "b³±d sk³adni przy `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "b³±d sk³adni: nieoczekiwany koniec pliku" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "b³±d sk³adni" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "U¿yj \"%s\", aby opu¶ciæ tê pow³okê.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "nieoczekiwany EOF podczas poszukiwania pasuj±cego `)'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "uzupe³nienie: nie znaleziono funkcji `%s'" @@ -1467,71 +1482,71 @@ msgstr "xtrace_set: pusty wska msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': nieprawid³owy znak formatuj±cy" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "deskryptor pliku poza zakresem" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: niejednoznaczne przekierowanie" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nie mo¿na nadpisaæ istniej±cego pliku" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ograniczony: nie mo¿na przekierowaæ wyj¶cia" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie mo¿na przypisaæ deskryptora pliku do zmiennej" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie s± wspierane bez sieci" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "b³±d przekierowania: nie mo¿na powieliæ deskryptora pliku" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "nie mo¿na znale¼æ /tmp, proszê o utworzenie!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp musi byæ prawid³ow± nazw± katalogu" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: nieprawid³owa opcja" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Nie mam nazwy!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, wersja %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1540,43 +1555,44 @@ msgstr "" "U¿ycie:\t%s [d³uga opcja GNU] [opcja] ...\n" "\t%s [d³uga opcja GNU] [opcja] plik-skryptu ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "D³ugie opcje GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opcje pow³oki:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD lub -c polecenie lub -O shopt_option\t\t(tylko wywo³anie)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s lub -o opcja\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, 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" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: nieprawid³owa operacja" @@ -1750,72 +1766,77 @@ msgstr "Nieznany sygna msgid "Unknown Signal #%d" msgstr "Nieznany sygna³ #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "z³e podstawienie: brak zamykaj±cego `%s' w %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie mo¿na przypisaæ listy do elementu tablicy" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "nie mo¿na utworzyæ potoku dla podstawienia procesu" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "nie mo¿na utworzyæ procesu potomnego dla podstawienia procesu" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie mo¿na otworzyæ nazwanego potoku %s do odczytu" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie mo¿na otworzyæ nazwanego potoku %s do zapisu" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie mo¿na powieliæ nazwanego potoku %s jako deskryptor %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "nie mo¿na utworzyæ potoku dla podstawienia polecenia" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "nie mo¿na utworzyæ procesu potomnego dla podstawienia polecenia" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie mo¿na powieliæ potoku jako deskryptora 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: nieprawid³owa warto¶æ dla deskryptora pliku do ¶ledzenia" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametr pusty lub nieustawiony" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: wyra¿enie dla pod³añcucha < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: z³e podstawienie" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie mo¿na przypisywaæ w ten sposób" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1823,131 +1844,142 @@ msgstr "" "przysz³e wersje pow³oki bêd± wymuszaæ obliczenie jako podstawienie " "arytmetyczne" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "z³e podstawienie: brak zamykaj±cego \"`\" w %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "brak pasuj±cego: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "oczekiwano argumentu" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: oczekiwano wyra¿enia ca³kowitego" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "oczekiwano `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "oczekiwano `)', znaleziono %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: oczekiwano operatora jednoargumentowego" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: oczekiwano operatora dwuargumentowego" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "brakuj±cy `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "nieprawid³owy numer sygna³u" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -"run_pending_traps: obs³uga sygna³u jest ustawiona na SIG_DFL, wysy³aj±c %d " -"(%s) do siebie" +"run_pending_traps: obs³uga sygna³u jest ustawiona na SIG_DFL, wysy³aj±c %d (%" +"s) do siebie" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: z³y sygna³ %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "b³±d importu definicji funkcji dla `%s'" -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: brak kontekstu funkcji w bie¿±cym zakresie" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nie mo¿na przypisaæ deskryptora pliku do zmiennej" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: brak kontekstu funkcji w bie¿±cym zakresie" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s ma pusty exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "nieprawid³owy znak %d w exportstr dla %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "brak `=' w exportstr dla %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: brak kontekstu global_variables" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nie mo¿na otworzyæ jako PLIK" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: nieprawid³owa warto¶æ dla deskryptora pliku do ¶ledzenia" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s poza zakresem" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1955,37 +1987,23 @@ msgstr "" "Licencja GPLv3+: GNU GPL wersja 3 lub pó¼niejsza \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, wersja %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "" "To oprogramowanie jest wolnodostêpne; mo¿na je swobodnie zmieniaæ i " "rozpowszechniaæ.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Nie ma ¯ADNEJ GWARANCJI w granicach dopuszczanych przez prawo.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licencja GPLv2+: GNU GPL wersja 2 lub pó¼niejsza \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2065,7 +2083,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] polecenie [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [nazwa[=warto¶æ] ...]" #: builtins.c:78 @@ -2174,7 +2193,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o nazwa-opcji] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nazwa ...]" #: builtins.c:144 @@ -2232,12 +2252,13 @@ msgstr "umask [-p] [-S] [uprawnienia]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2770,6 +2791,7 @@ msgstr "" " znalezione." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2789,6 +2811,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2804,7 +2827,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Ustawienie warto¶ci i atrybutów zmiennej.\n" " \n" @@ -2840,7 +2864,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Polecenie zwraca prawdê, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2850,7 +2874,8 @@ msgstr "" " \n" " Polecenie przestarza³e - p. `help declare'." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2861,8 +2886,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Definiowanie zmiennych lokalnych.\n" " \n" @@ -2876,7 +2901,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê, wyst±pi b³±d lub\n" " pow³oka nie wykonuje ¿adnej funkcji." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2941,7 +2966,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e wyst±pi b³±d zapisu." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2963,7 +2988,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e wyst±pi b³±d zapisu." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3017,7 +3042,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e NAZWA nie jest poleceniem wbudowanym lub\n" " wyst±pi b³±d." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3037,7 +3062,7 @@ msgstr "" " Zwracany jest stan wyj¶ciowy polecenia lub prawdê, je¶li polecenie jest\n" " puste." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3123,7 +3148,7 @@ msgstr "" "koniec\n" " opcji lub b³±d." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3164,7 +3189,7 @@ msgstr "" "wyst±pi\n" " b³±d przekierowania." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3176,7 +3201,7 @@ msgstr "" " Opuszczenie pow³oki z kodem zakoñczenia N. Je¶li N pominiêto, kodem\n" " zakoñczenia bêdzie kod zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3189,7 +3214,7 @@ msgstr "" " Opuszczenie pow³oki logowania z kodem zakoñczenia N. Zwraca b³±d, je¶li\n" " pow³oka nie jest pow³ok± logowania." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3248,7 +3273,7 @@ msgstr "" " Zwracana jest prawda lub stan wykonanego polecenia; warto¶æ niezerowa\n" " w przypadku b³êdu." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3269,7 +3294,7 @@ msgstr "" " Stan zadania umieszczonego na pierwszym planie lub fa³sz, je¶li wyst±pi\n" " b³±d." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3292,7 +3317,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e sterowanie zadaniami nie jest w³±czone\n" " lub wyst±pi b³±d." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3336,7 +3361,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e nie znaleziono NAZWY lub podano b³êdn±\n" " opcjê." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3377,7 +3402,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e WZORCA nie znaleziono lub podano b³êdn±\n" " opcjê." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3446,7 +3471,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3492,7 +3517,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:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3522,7 +3547,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub ZADANIE." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3565,7 +3590,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest sukces, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3654,7 +3679,7 @@ msgstr "" " Je¶li warto¶ci± ostatniego argumentu jest 0, let zwraca 1;\n" " w pozosta³ych przypadkach zwracane jest 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3690,7 +3715,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3756,7 +3781,7 @@ msgstr "" "argumentu\n" " -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3777,7 +3802,7 @@ msgstr "" " Zwracane jest N lub niepowodzenie, je¶li pow³oka nie wykonuje ¿adnej\n" " funkcji ani skryptu." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3953,7 +3978,8 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano nieprawid³ow± opcjê." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3962,6 +3988,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3991,7 +4019,7 @@ msgstr "" "do\n" " odczytu." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4026,7 +4054,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano nieprawid³ow± opcjê lub NAZWÊ." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4064,7 +4092,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano nieprawid³ow± opcjê lub NAZWÊ." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4082,7 +4110,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e N jest ujemne lub wiêksze ni¿ $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4107,7 +4135,7 @@ msgstr "" "je¶li\n" " PLIKU nie uda³o siê odczytaæ." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4135,7 +4163,8 @@ msgstr "" "wyst±pi\n" " b³±d." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4200,6 +4229,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4303,7 +4334,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:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4315,7 +4346,7 @@ msgstr "" " Jest to synonim dla wbudowanego polecenia \"test\", ale wymagaj±cy, by\n" " ostatnim argumentem by³ `]' pasuj±cy do pocz±tkowego `['." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4335,7 +4366,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zawsze prawda." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4420,7 +4451,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdny SYGNA£ lub b³êdn± opcjê." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4478,7 +4509,7 @@ msgstr "" "je¶li\n" " którakolwiek nie zostanie znaleziona." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4570,7 +4601,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4605,7 +4636,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e podano b³êdne uprawnienia lub b³êdn± " "opcjê." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4618,6 +4649,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4634,18 +4668,20 @@ msgstr "" " Zwracany jest stan zakoñczenia ID; niepowodzenie, je¶li ID jest\n" " nieprawid³owe lub podano b³êdn± opcjê." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Oczekiwanie na zakoñczenie procesu i zwrócenie stanu (kodu) wyj¶cia.\n" " \n" @@ -4660,7 +4696,7 @@ msgstr "" "podano\n" " nieprawid³ow± opcjê." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4683,7 +4719,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4713,7 +4749,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4750,7 +4786,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4780,7 +4816,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Polecenie zwraca status zakoñczenia POTOKU poleceñ." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4798,7 +4834,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4834,7 +4870,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4852,7 +4888,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4870,7 +4906,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4892,7 +4928,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia POLECENIA." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4917,7 +4953,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest sukces, chyba ¿e NAZWA jest tylko do odczytu." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4935,7 +4971,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest status zakoñczenia ostatniego wykonanego polecenia." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4961,7 +4997,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracany jest stan wznowionego zadania." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4981,7 +5017,7 @@ msgstr "" " Zwracane jest 1, je¶li warto¶ci± WYRA¯ENIA jest 0; 0 w przeciwnym " "wypadku." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -5036,7 +5072,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " 0 lub 1 w zale¿no¶ci od warto¶ci WYRA¯ENIA." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5144,7 +5180,7 @@ msgstr "" " \t\tdecydowaniu, które polecenia powinny byæ zapisywane na li¶cie\n" " \t\thistorii.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5201,7 +5237,7 @@ msgstr "" "katalogu\n" " siê nie powiedzie." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5253,7 +5289,7 @@ msgstr "" "katalogu\n" " siê nie powiedzie." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5307,7 +5343,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5345,7 +5381,7 @@ msgstr "" "je¶li\n" " podano b³êdn± opcjê lub NAZWA-OPCJI jest wy³±czona." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5373,6 +5409,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5407,7 +5449,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub zapis albo\n" " przypisanie zakoñczy siê niepowodzeniem." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5455,7 +5497,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5476,7 +5518,7 @@ msgstr "" " Stan wyj¶ciowy:\n" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub wyst±pi b³±d." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5534,7 +5576,7 @@ msgstr "" " Zwracana jest prawda, chyba ¿e podano b³êdn± opcjê lub NAZWA nie ma\n" " zdefiniowanej specyfikacji dope³niania." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5607,7 +5649,7 @@ msgstr "" "tylko\n" " do odczytu, lub nie jest tablic± indeksowan±." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5616,3 +5658,16 @@ msgstr "" "Odczyt linii z pliku do zmiennej tablicowej.\n" " \n" " Synonim polecenia `mapfile'." + +#~ 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 "" +#~ "Licencja GPLv2+: GNU GPL wersja 2 lub pó¼niejsza \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [pid]" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index b03496aca..545d326f9 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 d2c48d25e..ce2507ac2 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,36 +6,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2002-05-08 13:50GMT -3\n" "Last-Translator: Halley Pacheco de Oliveira \n" "Language-Team: Brazilian Portuguese \n" -"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" "X-Generator: KBabel 0.9.5\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "índice da matriz (array) incorreto" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%c%c: opção incorreta" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -45,21 +45,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "número excessivo de argumentos" @@ -146,7 +146,7 @@ msgstr "escrevendo" msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "a opção requer um argumento: -" @@ -161,7 +161,7 @@ msgstr "" msgid "%s: not found" msgstr "%s: comando não encontrado" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%c%c: opção incorreta" @@ -186,7 +186,7 @@ msgstr "n msgid "invalid hex number" msgstr "número do sinal incorreto" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 #, fuzzy msgid "invalid number" msgstr "número do sinal incorreto" @@ -299,26 +299,36 @@ msgstr "" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 #, fuzzy msgid "can only be used in a function" msgstr "somente pode ser usado dentro de funções; faz com que o escopo visível" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: função somente para leitura" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: impossível atribuir desta maneira" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -347,23 +357,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: impossível criar: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: é um diretório" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: impossível executar o arquivo binário" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o arquivo binário" @@ -457,7 +467,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: impossível criar: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -491,17 +501,17 @@ msgstr "%s: esperado express msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 #, fuzzy msgid "Unknown error" msgstr "Erro desconhecido %d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "esperado uma expressão" @@ -510,65 +520,65 @@ msgstr "esperado uma express msgid "%s: not an indexed array" msgstr "%s: variável não vinculada" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%c%c: opção incorreta" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%c%c: opção incorreta" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "número do sinal incorreto" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: variável não vinculada" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%c%c: opção incorreta" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -578,21 +588,26 @@ msgstr "" msgid "no other directory" msgstr "o novo diretório que ocupa o topo da pilha." -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%c%c: opção incorreta" + +#: builtins/pushd.def:468 #, fuzzy msgid "" msgstr "\tnovo diretório atual de trabalho." -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 #, fuzzy msgid "directory stack index" msgstr "Estouro na base da pilha de recursividade" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -616,7 +631,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -641,7 +656,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -662,12 +677,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "erro de `pipe': %s" @@ -676,27 +691,27 @@ msgstr "erro de `pipe': %s" msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 #, fuzzy msgid "cannot simultaneously unset a function and a variable" msgstr "somente pode ser usado dentro de funções; faz com que o escopo visível" -#: builtins/set.def:812 +#: builtins/set.def:826 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: impossível criar: %s" -#: builtins/set.def:829 +#: builtins/set.def:843 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível criar: %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "%s: variável não vinculada" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: função somente para leitura" @@ -706,11 +721,11 @@ msgstr "%s: fun msgid "shift count" msgstr "shift [n]" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -842,133 +857,133 @@ msgstr "Desvio incorreto %d" msgid "%s: unbound variable" msgstr "%s: variável não vinculada" -#: eval.c:181 +#: eval.c:189 #, fuzzy, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" "%ctempo limite de espera excedido aguardando entrada:\n" "fim automático da sessão\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "erro de `pipe': %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, 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:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: é um diretório" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar o arquivo binário" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 0: %s" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "excedido o nível de recursividade da expressão" -#: expr.c:282 +#: expr.c:286 #, fuzzy msgid "recursion stack underflow" msgstr "Estouro na base da pilha de recursividade" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição para algo que não é uma variável" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:540 +#: expr.c:545 #, fuzzy msgid "bug: bad expassign token" msgstr "Erro de programação: `token' inválido `%d' passado para expassign()" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "`:' esperado para expressão condicional" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "faltando `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 #, fuzzy msgid "syntax error: operand expected" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s: %s: %s (erro: o `token' é \"%s\")\n" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "valor muito grande para esta base de numeração" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "%s: esperado expressão de número inteiro" @@ -978,170 +993,170 @@ msgstr "%s: esperado express msgid "getcwd: cannot access parent directories" msgstr "getwd: impossível acessar os diretórios pais (anteriores)" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossível duplicar fd (descritor de arquivo) %d para fd 0: %s" -#: input.c:265 +#: input.c:267 #, fuzzy, 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\n" "do `bash' a partir do descritor de arquivo (fd) %d: %s" -#: input.c:273 +#: input.c:275 #, fuzzy, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" "check_bash_input: já existe o espaço intermediário (buffer)\n" "para o novo descritor de arquivo (fd) %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: o identificador do processo (pid) não existe (%d)!\n" -#: jobs.c:1447 +#: jobs.c:1448 #, fuzzy, c-format msgid "Signal %d" msgstr "Sinal desconhecido #%d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Concluído" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Parado" -#: jobs.c:1470 +#: jobs.c:1471 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Parado" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Executando" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Concluído(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Fim da execução com status %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Status desconhecido" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(imagem do núcleo gravada)" -#: jobs.c:1599 +#: jobs.c:1600 #, fuzzy, c-format msgid " (wd: %s)" msgstr "(wd agora: %s)\n" -#: jobs.c:1807 +#: jobs.c:1817 #, fuzzy, c-format msgid "child setpgid (%ld to %ld)" msgstr "`setpgid' filho (%d para %d) erro %d: %s\n" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, fuzzy, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: o pid %d não é um filho deste `shell'" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: o trabalho terminou" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "encaixe (slot) %3d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (imagem do núcleo gravada)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp falhou: %s" -#: jobs.c:3703 +#: jobs.c:3831 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_jobs: disciplina da linha: %s" -#: jobs.c:3713 +#: jobs.c:3841 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "initialize_jobs: getpgrp falhou: %s" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "nenhum controle de trabalho nesta `shell'" @@ -1162,49 +1177,49 @@ msgstr "" msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1252,15 +1267,15 @@ msgstr "xrealloc: imposs msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Você tem mensagem de correio em $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Você tem mensagem nova de correio em $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "As mensagens de correio em %s foram lidas\n" @@ -1295,108 +1310,108 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, fuzzy, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "encontrado EOF não esperado enquanto procurava por `%c'" -#: parse.y:4038 +#: parse.y:4086 #, fuzzy msgid "unexpected EOF while looking for `]]'" msgstr "encontrado EOF não esperado enquanto procurava por `%c'" -#: parse.y:4043 +#: parse.y:4091 #, fuzzy, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erro de sintaxe próximo do `token' não esperado `%s'" -#: parse.y:4047 +#: parse.y:4095 #, fuzzy msgid "syntax error in conditional expression" msgstr "erro de sintaxe na expressão" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 #, fuzzy msgid "expected `)'" msgstr "esperado `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: esperado operador binário" -#: parse.y:4211 +#: parse.y:4259 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: esperado operador binário" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "`:' esperado para expressão condicional" -#: parse.y:4251 +#: parse.y:4299 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "`:' esperado para expressão condicional" -#: parse.y:4255 +#: parse.y:4303 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "`:' esperado para expressão condicional" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe próximo do `token' não esperado `%s'" -#: parse.y:5608 +#: parse.y:5667 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe próximo do `token' não esperado `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair da `shell'.\n" -#: parse.y:5842 +#: parse.y:5901 #, fuzzy msgid "unexpected EOF while looking for matching `)'" msgstr "encontrado EOF não esperado enquanto procurava por `%c'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1425,72 +1440,72 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: Redirecionamento ambíguo" -#: redir.c:182 +#: redir.c:181 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Impossível sobrescrever arquivo existente" -#: redir.c:187 +#: redir.c:186 #, fuzzy, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos" -#: redir.c:192 +#: redir.c:191 #, fuzzy, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossível criar `pipe' para a substituição do processo: %s" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "erro de redirecionamento" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:888 +#: shell.c:890 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção incorreta" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Eu não tenho nome!" -#: shell.c:1807 +#: shell.c:1827 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU %s, versão %s\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1499,44 +1514,44 @@ 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:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "opções-longas-GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opções da `shell':\n" -#: shell.c:1815 +#: shell.c:1835 #, fuzzy -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD ou -c comando\t\t(somente para chamada)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opção\n" -#: shell.c:1836 +#: shell.c:1856 #, 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 da " "`shell'.\n" -#: shell.c:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1711,239 +1726,240 @@ msgstr "Sinal desconhecido #" msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituição incorreta: nenhum `%s' em %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "impossível criar `pipe' para a substituição do processo: %s" -#: subst.c:5039 +#: subst.c:5012 #, fuzzy msgid "cannot make child for process substitution" msgstr "impossível criar um processo filho para a substituição do processo: %s" -#: subst.c:5084 +#: subst.c:5057 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "impossível abrir o `named pipe' %s para %s: %s" -#: subst.c:5086 +#: subst.c:5059 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "impossível abrir o `named pipe' %s para %s: %s" -#: subst.c:5104 +#: subst.c:5077 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" "impossível duplicar o `named pipe' %s\n" "como descritor de arquivo (fd) %d: %s" -#: subst.c:5296 +#: subst.c:5273 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "impossível construir `pipes' para substituição do comando: %s" -#: subst.c:5334 +#: subst.c:5311 #, fuzzy msgid "cannot make child for command substitution" msgstr "impossível criar um processo filho para substituição do comando: %s" -#: subst.c:5351 +#: subst.c:5330 #, fuzzy msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: impossível duplicar o `pipe' como\n" "descritor de arquivo (fd) 1: %s" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não inicializado" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de substring < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: substituição incorreta" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta maneira" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituição incorreta: nenhum `%s' em %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "esperado argumento" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: esperado expressão de número inteiro" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "esperado `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "esperado `)', encontrado %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: esperado operador unário" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: esperado operador binário" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "faltando `]'" -#: trap.c:209 +#: trap.c:217 #, fuzzy msgid "invalid signal number" msgstr "número do sinal incorreto" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:379 +#: trap.c:398 #, fuzzy, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Sinal incorreto %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definição da função para `%s'" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: impossível atribuir uma lista a um membro de uma matriz (array)" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parâmetro nulo ou não inicializado" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: impossível criar: %s" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, fuzzy, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU %s, versão %s\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -2029,7 +2045,7 @@ msgstr "command [-pVv] COMANDO [ARG ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-afFrxi] [-p] NOME[=VALOR] ..." #: builtins.c:78 @@ -2147,7 +2163,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o OPÇÃO] [ARG ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [NOME ...]" #: builtins.c:144 @@ -2213,12 +2230,12 @@ msgstr "umask [-S] [MODO]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [n]" #: builtins.c:179 #, fuzzy -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "wait [n]" #: builtins.c:182 @@ -2598,6 +2615,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2613,17 +2631,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2634,11 +2653,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2672,7 +2691,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2685,7 +2704,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2712,7 +2731,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2724,7 +2743,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2765,7 +2784,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2788,7 +2807,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 #, fuzzy msgid "" "Exit the shell.\n" @@ -2797,7 +2816,7 @@ msgid "" " is that of the last command executed." msgstr "Sair da `shell' com status igual a N. Se N for omitido, o status" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2806,7 +2825,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2836,7 +2855,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 #, fuzzy msgid "" "Move job to the foreground.\n" @@ -2850,7 +2869,7 @@ msgid "" msgstr "" "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2864,7 +2883,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2888,7 +2907,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2910,7 +2929,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2944,7 +2963,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2968,7 +2987,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2985,7 +3004,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3007,7 +3026,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3052,7 +3071,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3087,7 +3106,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3103,7 +3122,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3115,7 +3134,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3200,7 +3219,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3209,6 +3228,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3220,7 +3241,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3239,7 +3260,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3259,7 +3280,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3270,7 +3291,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3284,7 +3305,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3298,7 +3319,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3363,6 +3384,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3379,7 +3402,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -3388,7 +3411,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "argumento deve ser o literal `]', para fechar o `[' de abertura." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3400,7 +3423,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3444,7 +3467,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3474,7 +3497,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3521,7 +3544,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3539,7 +3562,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3551,26 +3574,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3583,7 +3610,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3600,7 +3627,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3620,7 +3647,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3636,7 +3663,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 #, fuzzy msgid "" "Execute commands based on pattern matching.\n" @@ -3649,7 +3676,7 @@ msgid "" msgstr "" "Executar seletivamente COMANDOS tomando por base a correspondência entre" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3670,7 +3697,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -3682,7 +3709,7 @@ msgid "" " Returns the status of the last command executed." msgstr "Expande e executa COMANDOS enquanto o comando final nos" -#: builtins.c:1621 +#: builtins.c:1629 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -3694,7 +3721,7 @@ msgid "" " Returns the status of the last command executed." msgstr "Expande e executa COMANDOS enquanto o comando final nos" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3707,7 +3734,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3721,7 +3748,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -3733,7 +3760,7 @@ msgid "" " Returns the status of the last command executed." msgstr "Executa um conjunto de comandos agrupando-os. Esta é uma forma de" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3747,7 +3774,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3758,7 +3785,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3786,7 +3813,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3840,7 +3867,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3871,7 +3898,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3898,7 +3925,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3927,7 +3954,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3948,7 +3975,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3975,13 +4002,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -4008,7 +4041,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4021,7 +4054,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4052,7 +4085,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4093,13 +4126,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, fuzzy +#~ msgid "wait [pid]" +#~ msgstr "wait [n]" + #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "xrealloc: impossível realocar %lu bytes (%lu bytes alocados)" diff --git a/po/ro.gmo b/po/ro.gmo index e1290c52c..640a08f2e 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index b6583b783..577e68ed9 100644 --- a/po/ro.po +++ b/po/ro.po @@ -6,35 +6,35 @@ msgid "" msgstr "" "Project-Id-Version: bash 2.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 1997-08-17 18:42+0300\n" "Last-Translator: Eugen Hoanca \n" "Language-Team: Romanian \n" -"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-2\n" "Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "incluziune greºitã în interval" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%c%c: opþiune invalidã" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nu se poate atribui cãtre index ne-numeric" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -44,21 +44,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: nu s-a putut crea: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -122,7 +122,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "prea mulþi parametri" @@ -145,7 +145,7 @@ msgstr " msgid "%s: usage: " msgstr "" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, fuzzy, c-format msgid "%s: option requires an argument" msgstr "opþiunea necesitã un parametru: -" @@ -160,7 +160,7 @@ msgstr "" msgid "%s: not found" msgstr "%s: comandã negãsitã" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, fuzzy, c-format msgid "%s: invalid option" msgstr "%c%c: opþiune invalidã" @@ -185,7 +185,7 @@ msgstr "num msgid "invalid hex number" msgstr "numãr de semnal invalid" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 #, fuzzy msgid "invalid number" msgstr "numãr de semnal invalid" @@ -298,26 +298,36 @@ msgstr "" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 #, 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:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funcþie doar în citire (readonly)" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, fuzzy, c-format msgid "%s: cannot destroy array variables in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -346,23 +356,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: este director" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, fuzzy, c-format msgid "%s: not a regular file" msgstr "%s: nu se poate executa fiºierul binar" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nu se poate executa fiºierul binar" @@ -456,7 +466,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -490,17 +500,17 @@ msgstr "%s: variabil msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 #, fuzzy msgid "Unknown error" msgstr "Eroare necunoscutã %d" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "se aºteaptã expresie" @@ -509,65 +519,65 @@ msgstr "se a msgid "%s: not an indexed array" msgstr "%s: variabilã fãrã limitã" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%c%c: opþiune invalidã" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%c%c: opþiune invalidã" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "numãr de semnal invalid" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: variabilã fãrã limitã" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%c%c: opþiune invalidã" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -577,20 +587,25 @@ msgstr "" msgid "no other directory" msgstr "director superior." -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%c%c: opþiune invalidã" + +#: builtins/pushd.def:468 #, fuzzy msgid "" msgstr "\tnoul director de lucru curent." -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -614,7 +629,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -639,7 +654,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -660,12 +675,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, fuzzy, c-format msgid "read error: %d: %s" msgstr "eroare de legãturã (pipe): %s" @@ -674,27 +689,27 @@ msgstr "eroare de leg msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 #, 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:812 +#: builtins/set.def:826 #, fuzzy, c-format msgid "%s: cannot unset" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:829 +#: builtins/set.def:843 #, fuzzy, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nu s-a putut crea: %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, fuzzy, c-format msgid "%s: not an array variable" msgstr "%s: variabilã fãrã limitã" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, fuzzy, c-format msgid "%s: not a function" msgstr "%s: funcþie doar în citire (readonly)" @@ -704,11 +719,11 @@ msgstr "%s: func msgid "shift count" msgstr "shift [n]" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -840,131 +855,131 @@ msgstr "Salt invalid %d" msgid "%s: unbound variable" msgstr "%s: variabilã fãrã limitã" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "eroare de legãturã (pipe): %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: comandã negãsitã" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, fuzzy, c-format msgid "%s: %s: bad interpreter" msgstr "%s: este director" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nu se poate executa fiºierul binar" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, fuzzy, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nu se poate duplica fd %d în fd 0: %s" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "nivel de recursivitate al expresiei depãºit" -#: expr.c:282 +#: expr.c:286 #, fuzzy msgid "recursion stack underflow" msgstr "Stivã recursivitate prea puþin folositã(underflow)" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "eroare de sintaxã în expresie " -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "s-a încercat asignare cãtre non-variabilã" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "împãrþire la 0" -#: expr.c:540 +#: expr.c:545 #, fuzzy msgid "bug: bad expassign token" msgstr "bug: identificator(token) expassign greºit %d" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "`)' lipsã" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 #, fuzzy msgid "syntax error: operand expected" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, fuzzy, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "valoare prea mare pentru bazã" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "eroare de redirectare" @@ -974,167 +989,167 @@ msgstr "eroare de redirectare" msgid "getcwd: cannot access parent directories" msgstr "getwd: nu s-au putut accesa directoarele pãrinte" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, fuzzy, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "check_bash_input: buffer deja existent pentru fd nou %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, fuzzy, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: Nu existã pid-ul (%d)!\n" -#: jobs.c:1447 +#: jobs.c:1448 #, fuzzy, c-format msgid "Signal %d" msgstr "Semnal Necunoscut #%d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Finalizat" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stopat" -#: jobs.c:1470 +#: jobs.c:1471 #, fuzzy, c-format msgid "Stopped(%s)" msgstr "Stopat" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "În rulare" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Finalizat(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Ieºire %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Stare necunoscutã" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(core dumped) " -#: jobs.c:1599 +#: jobs.c:1600 #, fuzzy, c-format msgid " (wd: %s)" msgstr "(wd actual: %s)\n" -#: jobs.c:1807 +#: jobs.c:1817 #, 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:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: jobul a fost terminat" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "slot %3d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (core dumped)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd actual: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 #, fuzzy msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:3703 +#: jobs.c:3831 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_jobs: disciplinã linie: %s" -#: jobs.c:3713 +#: jobs.c:3841 #, fuzzy msgid "initialize_job_control: setpgid" msgstr "initialize_jobs: getpgrp eºuat: %s" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "nici un control de job în acest shell" @@ -1154,49 +1169,49 @@ msgstr "" msgid "unknown" msgstr "necunoscut" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1244,15 +1259,15 @@ msgstr "xrealloc: nu pot realoca %lu octe msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Aveþi mail în $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Aveþi mail nou în $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Mailul din %s a fost citit\n" @@ -1287,108 +1302,108 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, fuzzy, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4038 +#: parse.y:4086 #, fuzzy msgid "unexpected EOF while looking for `]]'" msgstr "EOF brusc în cãutare dupã `%c'" -#: parse.y:4043 +#: parse.y:4091 #, fuzzy, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:4047 +#: parse.y:4095 #, fuzzy msgid "syntax error in conditional expression" msgstr "eroare de sintaxã în expresie " -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 #, fuzzy msgid "expected `)'" msgstr "se aºteaptã `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, fuzzy, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4211 +#: parse.y:4259 #, fuzzy msgid "conditional binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, fuzzy, c-format msgid "unexpected token `%c' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4251 +#: parse.y:4299 #, fuzzy, c-format msgid "unexpected token `%s' in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:4255 +#: parse.y:4303 #, fuzzy, c-format msgid "unexpected token %d in conditional command" msgstr "`:' aºteptat dupã expresie condiþionalã" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:5608 +#: parse.y:5667 #, fuzzy, c-format msgid "syntax error near `%s'" msgstr "eroare de sintaxã neaºteptatã lângã `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "eroare de sintaxã" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n" -#: parse.y:5842 +#: parse.y:5901 #, fuzzy msgid "unexpected EOF while looking for matching `)'" msgstr "EOF brusc în cãutare dupã `%c'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1417,72 +1432,72 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, fuzzy, c-format msgid "%s: ambiguous redirect" msgstr "%s: Redirectare ambiguã" -#: redir.c:182 +#: redir.c:181 #, fuzzy, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: nu se poate accesa(clobber) fiºierul existent" -#: redir.c:187 +#: redir.c:186 #, fuzzy, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nu pot asigna listã membrului intervalului" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 #, fuzzy msgid "redirection error: cannot duplicate fd" msgstr "eroare de redirectare" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:888 +#: shell.c:890 #, fuzzy, c-format msgid "%c%c: invalid option" msgstr "%c%c: opþiune invalidã" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Nu am nici un nume!" -#: shell.c:1807 +#: shell.c:1827 #, fuzzy, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU %s, versiunea %s\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1491,44 +1506,44 @@ 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:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "opþiuni lungi GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Opþiuni ale shell-ului:\n" -#: shell.c:1815 +#: shell.c:1835 #, fuzzy -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s sau -o opþiune\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1702,235 +1717,236 @@ msgstr "Semnal Necunoscut #" msgid "Unknown Signal #%d" msgstr "Semnal Necunoscut #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, fuzzy, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituþie invalidã: nu existã '%s' în %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nu pot asigna listã membrului intervalului" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 #, fuzzy msgid "cannot make pipe for process substitution" msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s" -#: subst.c:5039 +#: subst.c:5012 #, fuzzy msgid "cannot make child for process substitution" msgstr "nu pot crea un proces copil pentru substituirea procesului: %s" -#: subst.c:5084 +#: subst.c:5057 #, fuzzy, c-format msgid "cannot open named pipe %s for reading" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: subst.c:5086 +#: subst.c:5059 #, fuzzy, c-format msgid "cannot open named pipe %s for writing" msgstr "nu pot deschide legãtura numitã %s pentru %s: %s" -#: subst.c:5104 +#: subst.c:5077 #, fuzzy, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nu se poate duplica legãtura numitã %s ca fd %d: %s " -#: subst.c:5296 +#: subst.c:5273 #, fuzzy msgid "cannot make pipe for command substitution" msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s" -#: subst.c:5334 +#: subst.c:5311 #, fuzzy msgid "cannot make child for command substitution" msgstr "nu pot crea un copil pentru substituþia de comenzi: %s" -#: subst.c:5351 +#: subst.c:5330 #, 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:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametru null sau nesetat" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresie subºir < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: substituþie invalidã" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nu se poate asigna în acest mod" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituþie invalidã: nu existã ')' de final în %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "se aºteaptã parametru" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: se aºteaptã expresie întreagã (integer)" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "se aºteaptã `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "se aºteaptã `)', s-a primit %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: se aºteaptã operator unar" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: se aºteaptã operator binar" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "lipseºte ']'" -#: trap.c:209 +#: trap.c:217 #, fuzzy msgid "invalid signal number" msgstr "numãr de semnal invalid" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:379 +#: trap.c:398 #, fuzzy, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Semnal invalid %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "eroare în importarea definiþiei funcþiei pentru '%s'" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nu pot asigna listã membrului intervalului" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: parametru null sau nesetat" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: nu s-a putut crea: %s" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, fuzzy, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU %s, versiunea %s\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -2016,7 +2032,7 @@ msgstr "command [-pVv] comand #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-afFrxi] [-p] nume[=valoare] ..." #: builtins.c:78 @@ -2133,7 +2149,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o opþiune] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [nume ...]" #: builtins.c:144 @@ -2198,12 +2215,12 @@ msgstr "umask [-S] [mod]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [n]" #: builtins.c:179 #, fuzzy -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "wait [n]" #: builtins.c:182 @@ -2579,6 +2596,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2594,17 +2612,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2615,11 +2634,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2653,7 +2672,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2666,7 +2685,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2693,7 +2712,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2705,7 +2724,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2746,7 +2765,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2769,7 +2788,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 #, fuzzy msgid "" "Exit the shell.\n" @@ -2778,7 +2797,7 @@ msgid "" " is that of the last command executed." msgstr "Iese din shell cu starea lui N. Dacã N este omis, starea de ieºire" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2787,7 +2806,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2817,7 +2836,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2829,7 +2848,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2843,7 +2862,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2867,7 +2886,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2889,7 +2908,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2923,7 +2942,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2947,7 +2966,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2964,7 +2983,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2986,7 +3005,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3031,7 +3050,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -3066,7 +3085,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3082,7 +3101,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3094,7 +3113,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3179,7 +3198,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3188,6 +3207,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3199,7 +3220,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3218,7 +3239,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3238,7 +3259,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3249,7 +3270,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3263,7 +3284,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3277,7 +3298,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3342,6 +3363,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3358,7 +3381,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3366,7 +3389,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3378,7 +3401,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3422,7 +3445,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3452,7 +3475,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3499,7 +3522,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3517,7 +3540,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3529,26 +3552,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3561,7 +3588,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3578,7 +3605,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3598,7 +3625,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3614,7 +3641,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3625,7 +3652,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3646,7 +3673,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3657,7 +3684,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3668,7 +3695,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3681,7 +3708,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3695,7 +3722,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3706,7 +3733,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3720,7 +3747,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3731,7 +3758,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3759,7 +3786,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3813,7 +3840,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3844,7 +3871,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3871,7 +3898,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3900,7 +3927,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3921,7 +3948,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3948,13 +3975,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3981,7 +4014,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3994,7 +4027,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -4025,7 +4058,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4066,13 +4099,17 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" +#, 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)" @@ -4198,8 +4235,8 @@ msgstr "" #~ msgid "Can't reopen pipe to command substitution (fd %d): %s" #~ msgstr "" -#~ "Nu se poate redeschide legãtura (pipe) cãtre substituþia de comenzi (fd " -#~ "%d): %s" +#~ "Nu se poate redeschide legãtura (pipe) cãtre substituþia de comenzi (fd %" +#~ "d): %s" #~ msgid "$%c: unbound variable" #~ msgstr "$%c: variabilã fãrã limitã" diff --git a/po/ru.gmo b/po/ru.gmo index c50e68998..00f4c0cdb 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index b863d1d27..fcdc282f9 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8,37 +8,37 @@ msgid "" msgstr "" "Project-Id-Version: GNU bash 3.1-release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2006-01-05 21:28+0300\n" "Last-Translator: Evgeniy Dushistov \n" "Language-Team: Russian \n" -"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=KOI8-R\n" "Content-Transfer-Encoding: 8bit\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" +"Language: ru\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" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "ÎÅÐÒÁ×ÉÌØÎÙÊ ÉÎÄÅËÓ ÍÁÓÓÉ×Á" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s; ÎÅ ÍÏÇÕ ÐÒÉÐÉÓÁÔØ ÎÅ ÞÉÓÌÏ×ÏÊ ÉÎÄÅËÓ" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -48,21 +48,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "%s: ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ÐÅÒ×ÙÊ ÎÅÐÒÏÂÅÌØÎÙÊ ÓÉÍ×ÏÌ ÎÅ `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÇÏ `%c' × %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: ÐÒÏÐÕÝÅÎ ÒÁÚÄÅÌÉÔÅÌØ Ä×ÏÅÔÏÞÉÅ" @@ -125,7 +125,7 @@ msgstr "" msgid "HOME not set" msgstr "ÐÅÒÅÍÅÎÎÁÑ HOME ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÁÒÇÕÍÅÎÔÏ×" @@ -148,7 +148,7 @@ msgstr "%s: msgid "%s: usage: " msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: ÏÐÃÉÑ ÔÒÅÂÕÅÔ ÁÒÇÕÍÅÎÔÁ" @@ -163,7 +163,7 @@ msgstr "%s: msgid "%s: not found" msgstr "%s: ÎÅ ÎÁÊÄÅÎ" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" @@ -188,7 +188,7 @@ msgstr " msgid "invalid hex number" msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" @@ -297,25 +297,35 @@ msgstr "" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "ÍÏÖÅÔ ÂÙÔØ ÉÓÐÏÌØÚÏ×ÁÎÁ ÔÏÌØËÏ × ÆÕÎËÃÉÉ" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: ÄÏÓÔÕÐÎÁÑ ÔÏÌØËÏ ÎÁ ÞÔÅÎÉÅ ÆÕÎËÃÉÑ" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ ÐÅÒÅÍÅÎÎÕÀ-ÍÁÓÓÉ× ÔÁËÉÍ ÓÐÏÓÏÂÏÍ" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -344,23 +354,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "%s: ÎÅ ÍÏÇÕ ÕÄÁÌÉÔØ: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: Ñ×ÌÑÅÔÓÑ ÄÉÒÅËÔÏÒÉÅÊ" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: ÓÌÉÛËÏÍ ÂÏÌØÛÏÊ ÆÁÊÌ" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÂÉÎÁÒÎÙÊ ÆÁÊÌ" @@ -455,7 +465,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -489,16 +499,16 @@ msgstr "%s: msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" @@ -507,65 +517,65 @@ msgstr " msgid "%s: not an indexed array" msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÏÐÉÓÁÎÉÅ ÆÁÊÌÏ×ÏÇÏ ÄÅÓËÒÉÐÔÏÒÁ" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÞÉÓÌÏ" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 #, fuzzy msgid "empty array variable name" msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': ÐÒÏÐÕÝÅÎ ÓÉÍ×ÏÌ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ ÓÉÇÎÁÌÁ" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "%c': ÎÅÄÏÐÕÓÔÉÍÙÊ ÓÉÍ×ÏÌ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -574,19 +584,24 @@ msgstr "" msgid "no other directory" msgstr "ÎÅÔ ÄÒÕÇÏÊ ÄÉÒÅËÔÏÒÉÉ" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÏÐÃÉÑ" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -610,7 +625,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -635,7 +650,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -656,12 +671,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ: %d: %s" @@ -670,26 +685,26 @@ msgstr " msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: ÎÅ ÍÏÇÕ ÓÂÒÏÓÉÔØ" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ÎÅ ÍÏÇÕ ÓÂÒÏÓÉÔØ: ÄÏÓÔÕÐÎÏ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ÎÅ ÆÕÎËÃÉÑ" @@ -698,11 +713,11 @@ msgstr "%s: msgid "shift count" msgstr "" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÏÅ ÉÍÑ ÏÐÃÉÉ ÏÂÏÌÏÞËÉ" @@ -827,128 +842,128 @@ msgstr "" msgid "%s: unbound variable" msgstr "" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "ÏÛÉÂËÁ ÚÁÐÉÓÉ: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: ËÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: ÐÌÏÈÏÊ ÉÎÔÅÒÐÒÅÔÁÔÏÒ" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ÎÅ ÍÏÇÕ ÚÁÐÕÓÔÉÔØ ÂÉÎÁÒÎÙÊ ÆÁÊÌ" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s: ÎÅ ×ÓÔÒÏÅÎÎÁ × ÏÂÏÌÏÞËÕ" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd %d × fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ×ÙÒÁÖÅÎÉÅ" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "ÐÏÐÙÔËÁ ÐÒÉÓ×ÏÅÎÉÑ ÎÅ-ÐÅÒÅÍÅÎÎÏÊ" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "ÄÅÌÅÎÉÅ ÎÁ 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "ÐÒÏÐÕÝÅÎ `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: ÏÖÉÄÁÅÔÓÑ ÏÐÅÒÁÎÄ" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "" -#: expr.c:1504 +#: expr.c:1524 #, fuzzy, c-format msgid "%s: expression error\n" msgstr "ÏÖÉÄÁÌÏÓØ ×ÙÒÁÖÅÎÉÅ" @@ -957,163 +972,163 @@ msgstr " msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, fuzzy, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd %d × fd %d" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s: ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ:" -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "" @@ -1134,49 +1149,49 @@ msgstr "" msgid "unknown" msgstr "%s: ÈÏÓÔ ÎÅÉÚ×ÅÓÔÅÎ" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1224,15 +1239,15 @@ msgstr "" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "õ ×ÁÓ ÅÓÔØ ÐÏÞÔÁ × $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "õ ×ÁÓ ÅÓÔØ ÎÏ×ÁÑ ÐÏÞÔÁ × $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "ðÏÞÔÁ × %s ÂÙÌÁ ÐÒÏÞÉÔÁÎÁ\n" @@ -1265,103 +1280,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "ÏÖÉÄÁÌÓÑ `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ ÏËÏÌÏ `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ: ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "ÏÛÉÂËÁ ÓÉÎÔÁËÓÉÓÁ" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "éÓÐÏÌØÚÕÊÔÅ \"%s\", ÞÔÏÂÙ ÚÁ×ÅÒÛÉÔØÓÑ ÒÁÂÏÔÕ Ó ÏÂÏÌÏÞËÏÊ.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1390,71 +1405,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÏÐÕÓÔÉÍÏÇÏ ÄÉÁÐÁÚÏÎÁ" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ÎÅ ÍÏÇÕ ÐÅÒÅÐÉÓÁÔØ ÕÖÅ ÓÕÝÅÓÔ×ÕÀÝÉÊ ÆÁÊÌ" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "ÏÛÉÂËÁ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÑ: ÎÅ ÍÏÇÕ ÄÕÂÌÉÒÏ×ÁÔØ fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "ÎÅ ÍÏÇÕ ÎÁÊÔÉ /tmp, ÐÏÖÁÌÕÊÓÔÁ ÓÏÚÄÁÊÔÅ!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp ÄÏÌÖÎÁ ÂÙÔØ ÄÅÊÓÔ×ÉÔÅÌØÎÙÍ ÉÍÅÎÅÍ ÄÉÒÅËÔÏÒÉÉ" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ÎÅÄÏÐÕÓÔÉÍÁÑ ÏÐÃÉÑ" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "õ ÍÅÎÑ ÎÅÔ ÉÍÅÎÉ!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1464,39 +1479,39 @@ msgstr "" "%s [ÄÌÉÎÎÙÅ ÏÐÃÉÉ Á-ÌÑ `GNU'] [ÏÐÃÉÉ] ...\n" "\t%s [ÄÌÉÎÎÙÅ ÏÐÃÉÉ Á-ÌÑ `GNU'] [ÏÐÃÉÉ] ÆÁÊÌ_ÓÏ_ÓËÒÉÐÔÏÍ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "äÌÉÎÎÙÅ ÏÐÃÉÉ × ÓÔÅÌÅ GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "ïÐÃÉÉ ÏÂÏÌÏÞËÉ:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ÉÌÉ ÏÐÃÉÑ -o\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1671,229 +1686,230 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÉÍÅÎÎÏÊ ËÁÎÁÌ %s ÄÌÑ ÞÔÅÎÉÑ" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ ÉÍÅÎÎÏÊ ËÁÎÁÌ %s ÄÌÑ ÚÁÐÉÓÉ" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: ÐÁÒÁÍÅÔÒ null ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, fuzzy, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "ÎÅÔ ÚÁËÒÙ×ÁÀÝÅÇÏ `%c' × %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "ÎÅÔ ÓÏ×ÐÁÄÅÎÉÑ Ó: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "ÐÒÅÄÐÏÌÁÇÁÅÔÓÑ ÞÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÁÒÇÕÍÅÎÔ" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "ÏÖÉÄÁÅÔÓÑ `)' " -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "ÏÖÉÄÁÌÓÑ `)', ÎÁÊÄÅÎ %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÕÎÁÒÎÏÇÏ ÏÐÅÒÁÔÏÒÁ" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: ÏÖÉÄÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÂÉÎÁÒÎÏÇÏ ÏÐÅÒÁÔÏÒÁ" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "ÐÒÏÐÕÝÅÎ `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "ÎÅÄÏÐÕÓÔÉÍÙÊ ÎÏÍÅÒ ÓÉÇÎÁÌÁ" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: ÎÅ ÐÅÒÅÍÅÎÎÁÑ-ÍÁÓÓÉ×" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: ÐÁÒÁÍÅÔÒ null ÉÌÉ ÎÅ ÕÓÔÁÎÏ×ÌÅÎ" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: ÎÅ ÍÏÇÕ ÏÔËÒÙÔØ: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: ÎÅÄÏÐÕÓÔÉÍÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ: %s" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s ×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÏÐÕÓÔÉÍÙÈ ÚÎÁÞÅÎÉÊ" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "" - -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -1971,7 +1987,7 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" #: builtins.c:78 @@ -2073,7 +2089,7 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" #: builtins.c:144 @@ -2131,11 +2147,11 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:175 -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "" #: builtins.c:179 -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "" #: builtins.c:182 @@ -2501,6 +2517,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2516,17 +2533,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2537,11 +2555,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2575,7 +2593,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2588,7 +2606,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2615,7 +2633,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2627,7 +2645,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2668,7 +2686,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2691,7 +2709,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2699,7 +2717,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2708,7 +2726,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2738,7 +2756,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2750,7 +2768,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2764,7 +2782,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2788,7 +2806,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2810,7 +2828,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2844,7 +2862,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2868,7 +2886,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2885,7 +2903,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2907,7 +2925,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2952,7 +2970,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -2987,7 +3005,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3003,7 +3021,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3015,7 +3033,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3100,7 +3118,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3109,6 +3127,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3120,7 +3140,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3139,7 +3159,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3159,7 +3179,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3170,7 +3190,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3184,7 +3204,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3198,7 +3218,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3263,6 +3283,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3279,7 +3301,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3287,7 +3309,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3299,7 +3321,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3343,7 +3365,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3373,7 +3395,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3420,7 +3442,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3438,7 +3460,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3450,26 +3472,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3482,7 +3508,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3499,7 +3525,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3519,7 +3545,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3535,7 +3561,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3546,7 +3572,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3567,7 +3593,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3578,7 +3604,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3589,7 +3615,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3602,7 +3628,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3616,7 +3642,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3627,7 +3653,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3641,7 +3667,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3652,7 +3678,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3680,7 +3706,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3734,7 +3760,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3765,7 +3791,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3792,7 +3818,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3821,7 +3847,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3842,7 +3868,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3869,13 +3895,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3902,7 +3934,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -3921,7 +3953,7 @@ msgstr "" " åÓÌÉ ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÁÒÇÕÍÅÎÔ óìï÷ï ÂÙÌ ÉÓÐÏÌØÚÏ×ÁÎ, ÔÏ ÂÕÄÕÔ " "ÓÇÅÎÅÒÉÒÏ×ÁÎÙ ÔÏÌØËÏ ÓÏ×ÐÁÄÅÎÉÑ Ó óìï÷ï." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -3952,7 +3984,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -3993,7 +4025,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/sk.gmo b/po/sk.gmo index edcfb53fb..b29e6a468 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index 64c02d5d5..8e806c330 100644 --- a/po/sk.po +++ b/po/sk.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-03-16 21:22+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" -"Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "chybný index poľa" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: nie je možné previesÅ¥ indexované pole na asociatívne" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neplatný kľúč asociatívneho poľa" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: nie je možné priradiÅ¥ nenumerickému indexu" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, 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" @@ -46,22 +46,22 @@ msgstr "%s: %s: pri priraďovaní asociatívnemu poľu je potrebné použiÅ¥ ind msgid "%s: cannot create: %s" msgstr "%s: nie je možné vytvoriÅ¥: %s" -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "chýba zatvárajúca „%c“ v %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: chýba oddeľovač dvojbodka" @@ -127,7 +127,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME nebola nastavená" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "príliÅ¡ veľa argumentov" @@ -150,7 +150,7 @@ msgstr "upozornenie: " msgid "%s: usage: " msgstr "%s: použitie " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: voľba vyžaduje argument" @@ -165,7 +165,7 @@ msgstr "%s: vyžaduje sa numerický argument" msgid "%s: not found" msgstr "%s: nenájdené" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: neplatná voľba" @@ -188,7 +188,7 @@ msgstr "neplatné osmičkové číslo" msgid "invalid hex number" msgstr "neplatné Å¡estnástkové číslo" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "neplatné číslo" @@ -297,25 +297,35 @@ msgstr "upozornenie: voľba -C nemusí fungovaÅ¥ tak ako očakávate" msgid "not currently executing completion function" msgstr "momentálne sa nevykonáva funkcia doplňovania" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "je možné použiÅ¥ iba vo funkcii" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "nie je možné použiÅ¥ „-f“ pre tvorbu funkcií" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funkcia iba na čítanie" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: nie je možné previesÅ¥ asociatívne pole na indexované" @@ -344,23 +354,23 @@ msgstr "%s: nie je dynamicky načítané" msgid "%s: cannot delete: %s" msgstr "%s: nie je možné zmazaÅ¥: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: je adresár" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: nie je obyčajný súbor" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: súbor je príliÅ¡ veľký" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" @@ -456,7 +466,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: nie je možné otvoriÅ¥: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -499,16 +509,16 @@ msgstr "%s: inlib zlyhalo" msgid "no other options allowed with `-x'" msgstr "iné voľby prípustné s „-x“" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Neznáma chyba" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "očakával sa výraz" @@ -517,64 +527,64 @@ msgstr "očakával sa výraz" msgid "%s: not an indexed array" msgstr "%s: nie je indexované pole" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neplatná Å¡pecifikácia popisovača súboru" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neplatný popisovač súboru: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: neplatný počet riadkov" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: neplatný začiatok poľa" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neplatné kvantum spätného volania" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "názov prázdnej premennej poľa" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "vyžaduje sa podpora premennej poľa" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "„%s“: chýba formátovací znak" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "„%c“: neplatná Å¡pecifikácia formátu času" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "„%c“: neplatný formátovací znak" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "upozornenie: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "chýba hexadecimálna číslica v \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "chýba číslica Unicode pre \\%c" @@ -583,19 +593,24 @@ msgstr "chýba číslica Unicode pre \\%c" msgid "no other directory" msgstr "žiadny iný adresár" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: neplatný argument limitu" + +#: builtins/pushd.def:468 msgid "" msgstr "<žiadny aktuálny adresár>" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "zásobník adresárov je prázdny" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "index zásobníka adresárov" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -637,7 +652,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:705 +#: builtins/pushd.def:711 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" @@ -681,7 +696,7 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -720,12 +735,12 @@ msgstr "" " \n" " Zásobník adresárov môžete zobraziÅ¥ vstavaným príkazom „dirs“." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neplatná Å¡pecifikácia expirácie (timeout)" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "chyba pri čítaní: %d: %s" @@ -736,26 +751,26 @@ msgstr "" "návrat („return“) je možné vykonaÅ¥ iba z funkcie alebo skriptu vyvolaného " "pomocou „source“" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "nie je možné zároveň zruÅ¡iÅ¥ funkciu a premennú" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: nie je možné zruÅ¡iÅ¥" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: nie je možné zruÅ¡iÅ¥: len na čítanie %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: nie je premenná poľa" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: nie je funkcia" @@ -764,11 +779,11 @@ msgstr "%s: nie je funkcia" msgid "shift count" msgstr "posun o" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 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:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neplatný názov voľby shellu" @@ -893,127 +908,127 @@ msgstr "chybný skok" msgid "%s: unbound variable" msgstr "%s: neviazaná premenná" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "chyba rúry" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, 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:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: príkaz nenájdený" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: chybný interpreter" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: nie je možné vykonaÅ¥ binárny súbor" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s je vstavaný príkaz (builtin) shellu\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "nie je možné duplikovaÅ¥ fd %d na fd %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "bola prekročená úroveň rekurzie výrazu" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "podtečenie zásobníka rekurzie" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "chyba syntaxe vo výraze" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "pokus o priradenie mimo premennej" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "delenie nulou" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "chyba: chybný expassign token" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "pre podmienený výraz sa očakáva „:“" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "exponent menší ako 0" -#: expr.c:948 +#: expr.c:957 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:973 +#: expr.c:983 msgid "missing `)'" msgstr "chýba „)“" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "chyba syntaxe: očakáva sa operand" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "chyba syntaxe: neplatný aritmetický operátor" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (chybný token je „%s”)" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "neplatný aritmetický základ" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "hodnota je ako základ príliÅ¡ veľká" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: chyba výrazu\n" @@ -1022,163 +1037,163 @@ msgstr "%s: chyba výrazu\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: nie je možné pristupovaÅ¥ k rodičovským adresárom" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "nie j emožné resetovaÅ¥ nodelay režim fd %d" -#: input.c:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: bufer už existuje pre nový fd %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rúra" -#: jobs.c:891 +#: jobs.c:892 #, 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:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: proces %5ld (%s) v the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: taký pid neexistuje" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signál %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Hotovo" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Zastavené" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Zastavené(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Beží" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Hotovo(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Ukončenie %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Neznámy stav" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(bol uložený výpis pamäte) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid detského procesu (%ld to %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Neexistuje záznam o procese %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: úloha %d je zastavená" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: úloha skončila" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: úloha %d už je v pozadí" -#: jobs.c:3105 +#: jobs.c:3215 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:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: riadok %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (bol uložený výpis pamäte)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd teraz: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: funkcia getpgrp zlyhala" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: riadkový systém" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "nie je možné nastaviÅ¥ skupinu procesu terminálu (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "v tomto shelli nie je riadenie úloh" @@ -1200,49 +1215,49 @@ msgstr "" msgid "unknown" msgstr "neznámy" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: blok na zozname voľných zaprataný" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: zavolaný s argumentom už uvoľneného bloku" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: zavolaný s argumentom nealokovaného bloku" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: bolo detekované podtečenie; mh_nbytes mimo rozsahu" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 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" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: alok. tabuľla je plná s FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p už je v tabuľke ako alokovaný?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p už je v tabuľke ako voľný?\n" @@ -1290,15 +1305,15 @@ msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: nie je možné zmeniÅ¥ locale (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Máte poÅ¡tu v súbore $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Máte novú poÅ¡tu v súbore $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v súbore %s bola prečítaná\n" @@ -1332,103 +1347,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: inÅ¡trukcia presmerovania „%d“ mimo rozsahu" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, 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:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "neočakávaný koniec súboru počas hľadania „]]“" -#: parse.y:4043 +#: parse.y:4091 #, 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:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "chyba syntaxe v podmienečnom príkaze" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "neočakávaný token „%s“, očakávalo sa `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "očakávalo sa `)'" -#: parse.y:4157 +#: parse.y:4205 #, 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:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "neočakávaný argument podmienečného unárneho operátora" -#: parse.y:4207 +#: parse.y:4255 #, 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:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "očakáva sa podmienečný binárny operátor" -#: parse.y:4233 +#: parse.y:4281 #, 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:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "neočakávaný argument v podmienečnom binárnom operátore" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "neočakávaný token „%c“ v podmienečnom príkaze" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "neočakávaný token „%s“ v podmienečnom príkaze" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "neočakávaný token %d v podmienečnom príkaze" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "chyba syntaxe neďaleko neočakávaného tokenu „%s“" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "chyba syntaxe neďaleko „%s“" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "chyba syntaxe: neočakávaný koniec súboru" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "chyba syntaxe" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Na opustenie shellu použite „%s“.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "neočakávaný koniec súboru počas hľadania zodpovedajúceho „)“" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "dokončovanie: funkcia „%s“ nebola nájdená" @@ -1457,71 +1472,71 @@ msgstr "xtrace_set: ukazovateľ súboru je NULL" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: „%c“: neplatný formátovací znak" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "popisovač súboru mimo rozsahu" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: nejednoznačné presmerovanie" -#: redir.c:182 +#: redir.c:181 #, 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:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ombedzené: nie je možné presmerovaÅ¥ výstup" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: nie je možné priradiÅ¥ popisovač súboru premennej" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "chyba presmerovania: nie je možné duplikovaÅ¥ fd" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "nenaÅ¡iel sa /tmp, vytvorte ho prosím!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp musí byÅ¥ platný názov adresára" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neplatná voľba" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Nemám meno!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, verzia %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1530,42 +1545,43 @@ 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:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU dlhé voľby:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Voľby shellu:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s alebo -o voľba\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neplatná operácia" @@ -1739,72 +1755,77 @@ msgstr "Neznáme číslo signálu" msgid "Unknown Signal #%d" msgstr "Neznámy signál #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "chybná substitúcia: chýba „%s“ v %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: nie je možné priradiÅ¥ zoznam položke poľa" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu procesov" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu procesov" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na čítanie" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na zápis" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "nie je možné duplikovaÅ¥ pomenovanú rúru %s ako fd %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "nie je možné vytvoriÅ¥ rúru pre substitúciu príkazov" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "nie je možné vytvoriÅ¥ potomka pre substitúciu príkazov" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: nie je možné duplikovaÅ¥ rúru ako fd 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je null alebo nenastavený" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: výraz podreÅ¥azca < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: chybná substitúcia" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: nie je možné vykonaÅ¥ priradenie takýmto spôsobom" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1812,129 +1833,140 @@ msgstr "" "budúce verzie shellu budú vynucovaÅ¥ vyhodnocovanie ako aritmetickú " "substitúciu" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`”" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "bez zhody: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "očakával sa argument" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: očakával sa celočíselný výraz" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "očakávala sa „)“" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "očakávala sa „)“, bolo nájdené %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: očakával sa unárny operátor" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: očakával sa binárny operátor" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "chýba „]“" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "neplatné číslo signálu" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: chybný signál %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "chyba pri importe definície funkcie „%s“" -#: variables.c:764 +#: variables.c:778 #, 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:1941 +#: variables.c:2198 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:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: nie je možné priradiÅ¥ popisovač súboru premennej" + +#: variables.c:3554 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:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s má null exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neplatný znak %d v exportstr %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "žiadne „=“ v exportstr %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: chýba kontext global_variables" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: nemožno otvoriÅ¥ ako SÚBOR" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neplatná hodnota popisovača trasovacieho súboru" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s je mimo rozsahu" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1942,37 +1974,23 @@ msgstr "" "Licencia GPLv3+: GNU GPL verzie 3 alebo novÅ¡ia http://gnu.org/licenses/gpl." "html\n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, verzia %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Toto je slobodný softvér; môžete ho slobodne meniÅ¥ a šíriÅ¥.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" "Nie sú poskytované ŽIADNE ZÁRUKY v rozsahu aký povoľuje\n" "aplikovateľné právo.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -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" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2052,7 +2070,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] command [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [názov[=hodnota] ...]" #: builtins.c:78 @@ -2161,7 +2180,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o názov_voľby] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [názov ...]" #: builtins.c:144 @@ -2219,12 +2239,13 @@ msgstr "umask [-p] [-S] [režim]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2746,6 +2767,7 @@ msgstr "" " Vráti návratovú hodnotu PRÍKAZu alebo zlyhá ak nenájde PRÍKAZ." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2765,6 +2787,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2780,7 +2803,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "NastaviÅ¥ hodnoty a atribúty premennných.\n" " \n" @@ -2816,7 +2840,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2826,7 +2850,8 @@ msgstr "" " \n" " Zastaralé. Pozri „help declare“." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2837,8 +2862,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "DefinovaÅ¥ lokálne premenné.\n" " \n" @@ -2852,7 +2877,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba, nevyskytla sa chyba a\n" " shell práve nevykonáva funkciu." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2914,7 +2939,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nevyskytla sa chyba pri zápise." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2936,7 +2961,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nevyskytla sa chyba pri zápise." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2990,7 +3015,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak NÁZOV nie je vstavaná funkcia shellu a nevyskytla sa chyba." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3009,7 +3034,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu príkazu alebo 0 ak je príkaz prázdny." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3085,7 +3110,7 @@ msgstr "" " Vráti 0 ak je voľba nájdená; zlyhá po dosiahnutí konca reÅ¥azca volieb\n" " alebo ak sa vyskytne chyba." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3125,7 +3150,7 @@ msgstr "" " Vráti 0 ak sa nestane, že PRÍKAZ nebol nájdený a nevyskytne sa chyba\n" " presmerovania." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3137,7 +3162,7 @@ msgstr "" " Ukončí shell s návratovou hodnotou N. Ak sa N vynechá, návratová\n" " hodnota sa nastaví podľa stavu posledného vykonaného príkazu." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3150,7 +3175,7 @@ msgstr "" " Ukončí login shell s návratovou hodnotou N. Vráti chybu ak nie je\n" " spustený v login shelli." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3206,7 +3231,7 @@ msgstr "" " Vráti 0 alebo stav vykonaného príkazu; nenulovú hodnotu ak sa vyskytne\n" " chyba." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3226,7 +3251,7 @@ msgstr "" " Stav príkazu umiestneného do popredia; nenulovú hodnotu ak sa vyskytne\n" " chyba." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3247,7 +3272,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nie je riadenie úloh vypnuté a nevyskytne sa chyba." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3294,7 +3319,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že NÁZOV nebol nájdený a nebola zadaná\n" " neplatná voľba." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3334,7 +3359,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že VZOR nebol nájdený a nebola zadaná\n" " neplatná voľba." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3397,7 +3422,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3440,7 +3465,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:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3470,7 +3495,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná JOBSPEC." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3510,7 +3535,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3595,7 +3620,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:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3631,7 +3656,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3689,7 +3714,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:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3710,7 +3735,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti N alebo zlyhá ak shell nevykonáva funkciu či skript." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3881,7 +3906,8 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3890,6 +3916,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3918,7 +3946,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3953,7 +3981,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3991,7 +4019,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je NÁZOV neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4009,7 +4037,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je N záporné alebo väčšie ako $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4033,7 +4061,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:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4057,7 +4085,8 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4122,6 +4151,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4216,7 +4247,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:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4228,7 +4259,7 @@ msgstr "" " Toto je synonymum vsatavanej funkcie „test“, ale posledný\n" " argument musí byÅ¥ literál „]“, ktorý uzatvára otvárajúcu „[“." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4247,7 +4278,7 @@ msgstr "" " Návratová hodnota:\n" " Vždy vráti 0." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4327,7 +4358,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4382,7 +4413,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak boli nájdené vÅ¡etky NÁZVY; zlyhá ak nie." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4470,7 +4501,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4504,7 +4535,7 @@ msgstr "" " Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n" " neplatná voľba." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4517,6 +4548,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4533,18 +4567,20 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n" " neplatná voľba." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "ČakaÅ¥ na ukončenie zadaného procesu a vypísaÅ¥ jeho návratovú hodnotu.\n" " \n" @@ -4557,7 +4593,7 @@ msgstr "" " Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n" " voľba." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4579,7 +4615,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4609,7 +4645,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4644,7 +4680,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4672,7 +4708,7 @@ msgstr "" " Návratová hodnota:\n" " Návratová hodnota je návratová hodnota RÚRY." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4690,7 +4726,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4727,7 +4763,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4745,7 +4781,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4763,7 +4799,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4785,7 +4821,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu PRÍKAZu." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4810,7 +4846,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak sa nestalo, že je NÁZOV iba na čítanie." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4828,7 +4864,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu posledného vykonaného príkazu." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4852,7 +4888,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti návratovú hodnotu obnovenej úlohy." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4870,7 +4906,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 1 ak sa VÝRAZ vyhodnotí na 0; inak vráti 0." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4918,7 +4954,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 alebo 1 v závislosti na hodnote VÝRAZu." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5022,7 +5058,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:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5078,7 +5114,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5128,7 +5164,7 @@ msgstr "" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n" " chyba pri zmene adresára." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5179,7 +5215,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5217,7 +5253,7 @@ msgstr "" " Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n" " neplatná voľba alebo OPTNAME je vypnuté." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5245,6 +5281,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5276,7 +5318,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n" " zápise či priradení." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5324,7 +5366,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5344,7 +5386,7 @@ msgstr "" " Návratová hodnota:\n" " Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5400,7 +5442,7 @@ msgstr "" " Vráti 0 ak nebola zadaná neplatná voľba a NÁZOV nemá definovanú\n" " Å¡pecifikáciu dopĺňania." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5473,7 +5515,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:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5483,6 +5525,19 @@ msgstr "" " \n" " Synonymum k „mapfile“." +#~ 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 97c4f907a..0f33b7229 100644 Binary files a/po/sl.gmo and b/po/sl.gmo differ diff --git a/po/sl.po b/po/sl.po index f929d89a1..f27d5cf59 100644 --- a/po/sl.po +++ b/po/sl.po @@ -1,68 +1,70 @@ -# Slovenian translation of bash. -# Copyright (C) 2012 - 2013 Free Software Foundation, Inc. +# Slovenian translation for bash. +# Copyright (C) 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# -# Damir JerovÅ¡ek , 2012 - 2013. -# Klemen KoÅ¡ir , 2012 - 2013. +# Klemen KoÅ¡ir , 2012. +# Andrej ŽnidarÅ¡ič , 2012. +# Damir JerovÅ¡ek , 2012. # msgid "" msgstr "" -"Project-Id-Version: bash-4.2\n" +"Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-28 22:09-0500\n" -"PO-Revision-Date: 2013-03-09 20:21+0100\n" -"Last-Translator: Klemen KoÅ¡ir \n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" +"PO-Revision-Date: 2012-05-29 16:17+0100\n" +"Last-Translator: Klemen KoÅ¡ir \n" "Language-Team: Slovenian \n" -"Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n" +"Language: sl\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:50 +#: arrayfunc.c:51 msgid "bad array subscript" msgstr "slab podpis polja" -#: arrayfunc.c:313 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: ni mogoče pretvoriti zabeleženega polja v povezano polje" -#: arrayfunc.c:480 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: neveljaven ključ povezanega polja" -#: arrayfunc.c:482 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ni mogoče dodeliti v ne-Å¡tevilčno kazalo" -#: arrayfunc.c:518 +#: arrayfunc.c:586 #, 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:387 +#: bashhist.c:388 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ni mogoče ustvariti: %s" -#: bashline.c:3498 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "bash_execute_unix_command: ni mogoče najti tipkovne razvrstitve za ukaz" +msgstr "" +"bash_execute_unix_command: ni mogoče najti tipkovne razvrstitve za ukaz" -#: bashline.c:3584 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: prvi znak brez presledka ni `\"'" -#: bashline.c:3613 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "brez zaključka `%c' v %s" -#: bashline.c:3647 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: manjka ločilnik dvopičja" @@ -72,36 +74,36 @@ msgstr "%s: manjka ločilnik dvopičja" msgid "`%s': invalid alias name" msgstr "`%s': neveljaven vzdevek" -#: builtins/bind.def:120 builtins/bind.def:123 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "urejanje vrstic ni omogočeno" -#: builtins/bind.def:206 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': neveljavno ime tipkovne razvrstitve" -#: builtins/bind.def:245 +#: builtins/bind.def:251 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ni mogoče brati: %s" -#: builtins/bind.def:260 +#: builtins/bind.def:266 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': ni mogoče odvezati" -#: builtins/bind.def:295 builtins/bind.def:325 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': neznano ime funkcije" -#: builtins/bind.def:303 +#: 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:307 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s se lahko pokliče s pomočjo " @@ -124,11 +126,15 @@ msgstr "" " \n" " Brez EXPR vrne " -#: builtins/cd.def:235 +#: builtins/cd.def:239 msgid "HOME not set" msgstr "HOME ni nastavljen" -#: builtins/cd.def:247 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 +msgid "too many arguments" +msgstr "preveč argumentov" + +#: builtins/cd.def:258 msgid "OLDPWD not set" msgstr "OLDPWD ni nastavljen" @@ -137,7 +143,7 @@ msgstr "OLDPWD ni nastavljen" msgid "line %d: " msgstr "vrstica %d: " -#: builtins/common.c:139 error.c:261 +#: builtins/common.c:139 error.c:265 #, c-format msgid "warning: " msgstr "opozorilo: " @@ -147,11 +153,7 @@ msgstr "opozorilo: " msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "preveč argumentov" - -#: builtins/common.c:191 shell.c:500 shell.c:782 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: možnost zahteva argument" @@ -166,7 +168,7 @@ msgstr "%s: zahtevan je Å¡tevni argument" msgid "%s: not found" msgstr "%s: ni mogoče najti" -#: builtins/common.c:214 shell.c:795 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: neveljavna možnost" @@ -176,7 +178,7 @@ msgstr "%s: neveljavna možnost" msgid "%s: invalid option name" msgstr "%s: neveljavno ime možnosti" -#: builtins/common.c:228 general.c:231 general.c:236 +#: builtins/common.c:228 general.c:234 general.c:239 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': neveljavno določilo" @@ -189,7 +191,7 @@ msgstr "neveljavno osmiÅ¡ko Å¡tevilo" msgid "invalid hex number" msgstr "neveljavno Å¡estnajstiÅ¡ko Å¡tevilo" -#: builtins/common.c:242 expr.c:1362 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "neveljavno Å¡tevilo" @@ -203,7 +205,7 @@ msgstr "%s: neveljavno določilo signala" msgid "`%s': not a pid or valid job spec" msgstr "`%s': ni določilo opravila ali neveljavno določilo posla" -#: builtins/common.c:264 error.c:454 +#: builtins/common.c:264 error.c:458 #, c-format msgid "%s: readonly variable" msgstr "%s: spremenljivka le za branje" @@ -275,48 +277,58 @@ msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n" msgid "%s: ambiguous job spec" msgstr "%s: dvoumno določilo posla" -#: builtins/complete.def:276 +#: builtins/complete.def:277 #, c-format msgid "%s: invalid action name" msgstr "%s: neveljavno ime dejanja" -#: builtins/complete.def:449 builtins/complete.def:644 -#: builtins/complete.def:853 +#: builtins/complete.def:450 builtins/complete.def:645 +#: builtins/complete.def:855 #, c-format msgid "%s: no completion specification" msgstr "%s: ni določila dopolnjevanja" -#: builtins/complete.def:696 +#: builtins/complete.def:697 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:698 +#: builtins/complete.def:699 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:826 +#: builtins/complete.def:828 msgid "not currently executing completion function" msgstr "trenutno se ne izvaja funkcija dopolnjevanja" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "se lahko uporabi samo v funkciji" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "ni mogoče uporabiti `-f' za ustvarjanje funkcij" -#: builtins/declare.def:378 execute_cmd.c:5105 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za branje" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: ni mogoče pretvoriti povezanega polja v zabeleženo polje" @@ -345,24 +357,23 @@ msgstr "%s: ni dinamično naloženo" msgid "%s: cannot delete: %s" msgstr "%s: ni mogoče izbrisati: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 -#: shell.c:1457 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: je mapa" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: ni običajna datoteka" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 -#: shell.c:1467 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ni mogoče izvesti binarne datoteke" @@ -448,15 +459,18 @@ msgstr[3] "Ključne besede, ki se ujemajo z ukazi lupine `" #: builtins/help.def:168 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "nobena tema pomoči se ne ujema s `%s'. Poskusite `help help' ali `man -k %s' ali `info %s'." +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"nobena tema pomoči se ne ujema s `%s'. Poskusite `help help' ali `man -k %" +"s' ali `info %s'." #: builtins/help.def:185 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ni mogoče odpreti: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -467,10 +481,12 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Ti ukazi lupine so določeni znotraj lupine. VpiÅ¡ite `help' za prikaz tega seznama.\n" +"Ti ukazi lupine so določeni znotraj lupine. VpiÅ¡ite `help' za prikaz tega " +"seznama.\n" "VpiÅ¡ite `help ime', če želite izvedeti več o `imenu' funkcije.\n" "Uporabite `info bash', če želite izvedeti več o lupini na sploÅ¡no.\n" -"Uporabite `man -k' ali `info', če želite izvedeti več o ukazih, ki niso na tem seznamu.\n" +"Uporabite `man -k' ali `info', če želite izvedeti več o ukazih, ki niso na " +"tem seznamu.\n" "\n" "Zvezdica (*) poleg imena pomeni, da je ukaz onemogočen.\n" "\n" @@ -483,7 +499,7 @@ msgstr "ni mogoče uporabiti več kot eno od -anrw" msgid "history position" msgstr "položaj zgodovine" -#: builtins/history.def:365 +#: builtins/history.def:366 #, c-format msgid "%s: history expansion failed" msgstr "%s: razÅ¡iritev zgodovine je spodletela" @@ -497,16 +513,16 @@ msgstr "%s: inlib je spodletel" msgid "no other options allowed with `-x'" msgstr "druge možnosti niso dovoljene z `-x'" -#: builtins/kill.def:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Neznana napaka" -#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "izraz je bil pričakovan" @@ -515,64 +531,64 @@ msgstr "izraz je bil pričakovan" msgid "%s: not an indexed array" msgstr "%s: ni zabeleženo polje" -#: builtins/mapfile.def:256 builtins/read.def:279 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: neveljavno določilo opisnika datoteke" -#: builtins/mapfile.def:264 builtins/read.def:286 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: neveljaven opisnik datoteke: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: neveljavno Å¡tetje vrstic" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: neveljaven izvor polja" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: neveljaven del povratnega klica" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "prazno ime spremenljivke polja" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "potrebna podpora spremenljivke polja" -#: builtins/printf.def:394 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': manjka znak oblike" -#: builtins/printf.def:448 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': neveljavno določilo vrste časa" -#: builtins/printf.def:635 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': neveljaven znak oblike" -#: builtins/printf.def:662 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "opozorilo: %s: %s" -#: builtins/printf.def:840 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "manjka Å¡estnajstiÅ¡ka Å¡tevka za \\x" -#: builtins/printf.def:855 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "manjka Å¡tevka s podporo unicode za \\%c" @@ -581,19 +597,24 @@ msgstr "manjka Å¡tevka s podporo unicode za \\%c" msgid "no other directory" msgstr "ni druge mape" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: neveljaven argument omejitve" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "sklad mape je prazen" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "kazalo sklada mape" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -608,10 +629,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Prikaže seznam trenutno pomnjenih map. Mape\n" @@ -632,7 +655,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:705 +#: builtins/pushd.def:711 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" @@ -678,7 +701,7 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -716,40 +739,40 @@ msgstr "" " \n" " Ukaz lupine `dirs' prikaže sklad map." -#: builtins/read.def:252 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: neveljavno določilo časovne omejitve" -#: builtins/read.def:588 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "napaka med branjem: %d: %s" -#: builtins/return.def:73 +#: builtins/return.def:75 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:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "ni mogoče ponastaviti funkcije in spremenljivke hkrati" -#: builtins/set.def:808 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: ni mogoče ponastaviti" -#: builtins/set.def:815 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ni mogoče ponastaviti: samo za branje %s" -#: builtins/set.def:826 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: ni spremenljivka polja" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: ni funkcija" @@ -758,11 +781,11 @@ msgstr "%s: ni funkcija" msgid "shift count" msgstr "Å¡tetje premika" -#: builtins/shopt.def:264 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "ni mogoče nastaviti in ponastaviti možnosti lupine hkrati" -#: builtins/shopt.def:329 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: neveljavno ime možnosti lupine" @@ -804,7 +827,7 @@ msgstr "%s je funkcija\n" msgid "%s is a shell builtin\n" msgstr "%s je vgrajena lupina\n" -#: builtins/type.def:317 builtins/type.def:391 +#: builtins/type.def:317 builtins/type.def:393 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" @@ -814,26 +837,26 @@ msgstr "%s je %s\n" msgid "%s is hashed (%s)\n" msgstr "%s je razprÅ¡eno (%s)\n" -#: builtins/ulimit.def:376 +#: builtins/ulimit.def:379 #, c-format msgid "%s: invalid limit argument" msgstr "%s: neveljaven argument omejitve" -#: builtins/ulimit.def:402 +#: builtins/ulimit.def:405 #, c-format msgid "`%c': bad command" msgstr "`%c': slab ukaz" -#: builtins/ulimit.def:431 +#: builtins/ulimit.def:434 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ni mogoče dobiti omejitve: %s" -#: builtins/ulimit.def:457 +#: builtins/ulimit.def:460 msgid "limit" msgstr "omejitev" -#: builtins/ulimit.def:469 builtins/ulimit.def:769 +#: builtins/ulimit.def:472 builtins/ulimit.def:772 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ni mogoče spremeniti omejitve: %s" @@ -852,7 +875,7 @@ 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:321 error.c:323 error.c:325 +#: error.c:90 error.c:325 error.c:327 error.c:329 msgid " line " msgstr " vrstica " @@ -866,133 +889,148 @@ msgstr "zadnji ukaz: %s\n" msgid "Aborting..." msgstr "Prekinjanje ..." -#: error.c:406 +#: error.c:410 msgid "unknown command error" msgstr "neznana napaka ukaza" -#: error.c:407 +#: error.c:411 msgid "bad command type" msgstr "slaba vrsta ukaza" -#: error.c:408 +#: error.c:412 msgid "bad connector" msgstr "slab povezovalnik" -#: error.c:409 +#: error.c:413 msgid "bad jump" msgstr "slab skok" -#: error.c:447 +#: error.c:451 #, c-format msgid "%s: unbound variable" msgstr "%s: nedoločena spremenljivka" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, 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:1168 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': neveljaven znak oblike" -#: execute_cmd.c:2121 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "napaka cevi" -#: execute_cmd.c:4640 +#: execute_cmd.c:4347 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: omejeno: ni mogoče določiti `/' v imenih ukaza" -#: execute_cmd.c:4735 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: ukaza ni mogoče najti" -#: execute_cmd.c:4959 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:4995 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: slab tolmač" -#: execute_cmd.c:5144 +#: execute_cmd.c:5234 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: ni mogoče izvesti binarne datoteke" + +#: execute_cmd.c:5306 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s je vgrajena lupina\n" + +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "ni mogoče podvajati fd %d v fd %d" -#: expr.c:256 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "stopnja rekurzivnosti izraza presežena" -#: expr.c:280 +#: expr.c:286 msgid "recursion stack underflow" msgstr "prekoračitev spodnje meje sklada rekurzivnosti" -#: expr.c:422 +#: expr.c:434 msgid "syntax error in expression" msgstr "skladenjska napaka v izrazu" -#: expr.c:463 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "poskus dodelitve ne-spremenljivki" -#: expr.c:486 expr.c:491 expr.c:807 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "delitev z 0" -#: expr.c:517 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "hrošč: slab žeton expassign" -#: expr.c:564 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "`:' pričakovano za pogojni izraz" -#: expr.c:832 +#: expr.c:904 msgid "exponent less than 0" msgstr "eksponent je manjÅ¡i kot 0" -#: expr.c:887 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "po predhodnem večanju ali manjÅ¡anju je pričakovano določilo" -#: expr.c:910 +#: expr.c:983 msgid "missing `)'" msgstr "manjka `)'" -#: expr.c:959 expr.c:1282 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "skladenjska napaka: pričakovan operand" -#: expr.c:1284 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "skladenjska napaka: neveljaven aritmetični operand" -#: expr.c:1308 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (žeton napake je \"%s\")" -#: expr.c:1366 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "neveljavna aritmetična zbirka" -#: expr.c:1386 +#: expr.c:1475 msgid "value too great for base" msgstr "vrednost je prevelika za zbirko" -#: expr.c:1435 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: napaka izraza\n" @@ -1001,163 +1039,163 @@ msgstr "%s: napaka izraza\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: ni mogoče dostopati do nadrejenih map" -#: input.c:94 subst.c:5082 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "ni mogoče ponastaviti načina brez zakasnitve za fd %d" -#: input.c:260 +#: input.c:267 #, 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:268 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d" -#: jobs.c:468 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: cev pgrp" -#: jobs.c:889 +#: jobs.c:892 #, 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:1007 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "brisanje ustavljenega posla %d s skupino opravila %ld" -#: jobs.c:1112 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: opravilo %5ld (%s) v the_pipeline" -#: jobs.c:1115 +#: jobs.c:1118 #, 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:1430 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ni takÅ¡nega določila opravila" -#: jobs.c:1445 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1459 jobs.c:1484 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Končano" -#: jobs.c:1464 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Zaustavljeno" -#: jobs.c:1468 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Zaustavljeno(%s)" -#: jobs.c:1472 +#: jobs.c:1475 msgid "Running" msgstr "Se izvaja" -#: jobs.c:1486 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Končano(%d)" -#: jobs.c:1488 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Končaj %d" -#: jobs.c:1491 +#: jobs.c:1494 msgid "Unknown status" msgstr "Neznano stanje" -#: jobs.c:1578 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(izpis jedra) " -#: jobs.c:1597 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1805 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "podrejeno opravilo setpgid (%ld v %ld)" -#: jobs.c:2133 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2360 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: ni zapisov o opravilu %ld" -#: jobs.c:2637 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: posel %d je zaustavljen" -#: jobs.c:2859 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: posel je uničen" -#: jobs.c:2868 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: posel %d se že izvaja v ozadju" -#: jobs.c:3089 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: vklop WNOHANG za preprečitev nedoločenosti bloka" -#: jobs.c:3538 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: vrstica %d: " -#: jobs.c:3552 nojobs.c:814 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (izpis jedra)" -#: jobs.c:3564 jobs.c:3577 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd zdaj: %s)\n" -#: jobs.c:3609 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp je spodletel" -#: jobs.c:3669 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: vrstična disciplina" -#: jobs.c:3679 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3707 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ni mogoče nastaviti skupine opravil terminala (%d)" -#: jobs.c:3712 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "brez nadzora posla v tej lupini" @@ -1179,54 +1217,58 @@ msgstr "" msgid "unknown" msgstr "neznano" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: poklican z že sproščenim argumentom bloka" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "free: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se razlikujejo" +msgstr "" +"free: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " +"razlikujejo" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: klic z nedodeljenim argumentom bloka" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 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:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" -msgstr "realloc: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se razlikujejo" +msgstr "" +"realloc: velikosti začetnih in končnih podatkovnih kosov \"chunk\" se " +"razlikujejo" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: je dodelitvena razpredelnica polna z FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: je %p že v razpredelnici kot dodeljen?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: je %p že v razpredelnici kot prost?\n" -#: lib/sh/fmtulong.c:101 +#: lib/sh/fmtulong.c:102 msgid "invalid base" msgstr "neveljavna zbirka" @@ -1249,35 +1291,35 @@ msgstr "%s: slabo določilo omrežne poti" msgid "network operations not supported" msgstr "omrežno opravilo ni podprto" -#: locale.c:192 +#: locale.c:204 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:194 +#: locale.c:206 #, 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:247 +#: locale.c:263 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s)" -#: locale.c:249 +#: locale.c:265 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ni mogoče spremeniti jezikovne oznake (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Imate poÅ¡to v $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Imate novo poÅ¡to v $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "PoÅ¡ta v %s je bila prebrana\n" @@ -1295,118 +1337,118 @@ msgstr "skladenjska napaka: `;' nepričakovano" msgid "syntax error: `((%s))'" msgstr "skladenjska napaka: `((%s))'" -#: make_cmd.c:575 +#: make_cmd.c:578 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: slaba vrsta navodila %d" -#: make_cmd.c:659 +#: make_cmd.c:662 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')" -#: make_cmd.c:756 +#: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega" -#: parse.y:3173 parse.y:3444 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `%c'" -#: parse.y:4025 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `]]'" -#: parse.y:4030 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "skladenjska napaka v pogojnem izrazu: nepričakovan žeton `%s'" -#: parse.y:4034 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "skladenjska napaka v pogojnem izrazu" -#: parse.y:4112 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "nepričakovan žeton `%s', pričakovan je bil `)'" -#: parse.y:4116 +#: parse.y:4177 msgid "expected `)'" msgstr "pričakovan `)'" -#: parse.y:4144 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "nepričakovan argument `%s' do pogojnega enoslovnega operatorja" -#: parse.y:4148 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "nepričakovan argument do pogojnega enoslovnega operatorja" -#: parse.y:4194 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "nepričakovan žeton `%s', pričakovan je binarni pogojni operator" -#: parse.y:4198 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "pričakovan je binarni pogojni operator" -#: parse.y:4220 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "nepričakovan argument `%s' do pogojnega binarnega operatorja" -#: parse.y:4224 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "nepričakovan argument do pogojnega binarnega operatorja" -#: parse.y:4235 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "nepričakovan žeton `%c' v pogojnem ukazu" -#: parse.y:4238 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "nepričakovan žeton `%s' v pogojnem ukazu" -#: parse.y:4242 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "nepričakovan žeton %d v pogojnem ukazu" -#: parse.y:5566 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "skladenjska napaka blizu nepričakovanega žetona `%s'" -#: parse.y:5584 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "skladenjska napaka blizu `%s'" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "skladenjska napaka: nepričakovan konec datoteke" -#: parse.y:5594 +#: parse.y:5677 msgid "syntax error" msgstr "skladenjska napaka" -#: parse.y:5656 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Uporabite \"%s\", če želite zapustiti lupino.\n" -#: parse.y:5818 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "nepričakovan konec datoteke med iskanjem ujemanja z `)'" -#: pcomplete.c:1030 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "končano: funkcije `%s' ni mogoče najti" @@ -1416,90 +1458,90 @@ msgstr "končano: funkcije `%s' ni mogoče najti" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:296 +#: print_cmd.c:300 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: slab povezovalnik `%d'" -#: print_cmd.c:368 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: neveljaven opisnik datoteke" -#: print_cmd.c:373 +#: print_cmd.c:378 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: prazen kazalec datoteke NULL" -#: print_cmd.c:377 +#: 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:1478 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': neveljaven znak oblike" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "opisnik datoteke je izven dosega" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: dvoumna preusmeritev" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ni mogoče prepisati obstoječe datoteke" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: omejitev: ni mogoče preusmeriti izhoda" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ni mogoče dodeliti fd spremenljivki" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1136 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "napaka preusmeritve: ni mogoče podvajati fd" -#: shell.c:333 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "ni mogoče najti /tmp, ustvarite ga!" -#: shell.c:337 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti veljavno ime mape" -#: shell.c:884 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: neveljavna možnost" -#: shell.c:1652 +#: shell.c:1682 msgid "I have no name!" msgstr "Ni imena!" -#: shell.c:1795 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, različica %s-(%s)\n" -#: shell.c:1796 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1508,39 +1550,40 @@ msgstr "" "Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n" "\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n" -#: shell.c:1798 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Dolge možnosti GNU:\n" -#: shell.c:1802 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Možnosti lupine:\n" -#: shell.c:1803 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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:1818 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ali možnost -o\n" -#: shell.c:1824 +#: shell.c:1856 #, 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:1825 +#: shell.c:1857 #, 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:1826 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uporabite ukaz `bashbug' za poročanje hroščev.\n" -#: sig.c:638 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: neveljavno opravilo" @@ -1714,224 +1757,239 @@ msgstr "Neznan signal #" msgid "Unknown Signal #%d" msgstr "Neznan signal #%d" -#: subst.c:1333 subst.c:1502 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "slaba zamenjava: ni zaključka `%s' v %s" -#: subst.c:2795 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ni mogoče dodeliti seznama članu polja" -#: subst.c:4979 subst.c:4995 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" -msgstr "ni mogoče ustvariti cevi za zamenjavo opravila" +msgstr "ni mogoče ustvariti pipe za zamenjavo opravila" -#: subst.c:5027 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo opravila" -#: subst.c:5072 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "ni mogoče odpreti imenovane cevi %s za branje" -#: subst.c:5074 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "ni mogoče odpreti imenovane cevi %s za pisanje" -#: subst.c:5092 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "ni mogoče podvajati imenovane cevi %s kot fd %d" -#: subst.c:5284 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "ni mogoče ustvariti cevi za zamenjavo ukaza" -#: subst.c:5322 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "ni mogoče ustvariti podrejenega opravila za zamenjavo ukaza" -#: subst.c:5339 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: ni mogoče podvajati cevi kot fd 1" -#: subst.c:5859 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parameter je prazen ali pa ni določen" -#: subst.c:6125 subst.c:6140 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: izraz podniza < 0" -#: subst.c:7271 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: slaba zamenjava" -#: subst.c:7347 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ni mogoče dodeliti na tak način" -#: subst.c:7684 -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:7767 +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:8149 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "slaba zamenjava: ni zaključka \"`\" v %s" -#: subst.c:9036 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "ni ujemanja: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "pričakovan je argument" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: pričakovan je izraz celega Å¡tevila" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "pričakovan je `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "pričakovan je `)', najden je %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: pričakuje se enosnoven operator" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: pričakuje se binarni operator" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "manjka `]'" -#: trap.c:207 +#: trap.c:217 msgid "invalid signal number" msgstr "neveljavna Å¡tevka signala" -#: trap.c:337 +#: trap.c:348 #, 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:341 +#: trap.c:352 #, 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" +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:393 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: slab signal %d" -#: variables.c:363 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "napaka med uvozom določila funkcije `%s'" -#: variables.c:755 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1" -#: variables.c:1932 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:3182 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: ni mogoče dodeliti fd spremenljivki" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije" -#: variables.c:3427 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s ima prazen exportstr" -#: variables.c:3432 variables.c:3441 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "neveljaven znak %d v exportstr za %s" -#: variables.c:3447 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "ni `=' v exportstr za %s" -#: variables.c:3891 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: glava shell_variables ni vsebina funkcije" -#: variables.c:3904 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ni vsebine global_variables" -#: variables.c:3978 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja" -#: variables.c:4786 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ni mogoče odpreti kot DATOTEKO" -#: variables.c:4791 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s izven dosega" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc." -#: version.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Dovoljenje GPLv3+: GNU GPL različica 3 ali poznejÅ¡e \n" +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Dovoljenje GPLv3+: GNU GPL različica 3 ali poznejÅ¡e \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, različica %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "To je prosta programska oprema; lahko jo spreminjate in razÅ¡irjate.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Je BREZ KAKRÅ NEKOLI GARANCIJE, v obsegu, ki ga dovoljuje zakonodaja.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "License GPLv2+: GNU GPL version 2 or later \n" -msgstr "Dovoljenje GPLv2+: GNU GPL različica 2 ali kasnejÅ¡e \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1961,8 +2019,14 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ime [ime ...]" #: builtins.c:51 -msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpvsPVS] [-m tipk_razvrstitev] [-f ime_dat] [-q ime] [-u ime] [-r tipk_zaporedje] [-x tipk_zaporedje:ukaz_lupine] [tipk_zaporedje:funkcija_brane_vrstice ali ukaz_brane_vrstice]" +#, 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 tipk_razvrstitev] [-f ime_dat] [-q ime] [-u ime] [-r " +"tipk_zaporedje] [-x tipk_zaporedje:ukaz_lupine] [tipk_zaporedje:" +"funkcija_brane_vrstice ali ukaz_brane_vrstice]" #: builtins.c:54 msgid "break [n]" @@ -2005,7 +2069,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "ukaz [-pVv] ukaz [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [ime[=vrednost] ...]" #: builtins.c:78 @@ -2050,7 +2115,9 @@ msgstr "logout [n]" #: builtins.c:103 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "fc [-e ime_urejevalnika] [-lnr] [prvi] [zadnji] ali fc -s [vzorec=zamenjava] [ukaz]" +msgstr "" +"fc [-e ime_urejevalnika] [-lnr] [prvi] [zadnji] ali fc -s [vzorec=zamenjava] " +"[ukaz]" #: builtins.c:107 msgid "fg [job_spec]" @@ -2069,8 +2136,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [vzorec ...]" #: builtins.c:121 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d odmik] [n] ali history -anrw [ime_datoteke] ali history -ps arg [arg...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d odmik] [n] ali history -anrw [ime_datoteke] ali history -ps " +"arg [arg...]" #: builtins.c:125 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2081,16 +2152,24 @@ msgid "disown [-h] [-ar] [jobspec ...]" msgstr "disown [-h] [-ar] [določilo_posla ...]" #: builtins.c:132 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s določilo_signala | -n Å¡t_signala | -določilo_signala] pid | določilo_posla ... ali kill -l [določilo_signala]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s določilo_signala | -n Å¡t_signala | -določilo_signala] pid | " +"določilo_posla ... ali kill -l [določilo_signala]" #: builtins.c:134 msgid "let arg [arg ...]" msgstr "let arg [arg ...]" #: builtins.c:136 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a polje] [-d razmejilnik] [-i besedilo] [-n n-znakov] [-N n-znakov] [-p poziv] [-t časovna_omejitev] [-u fd] [ime ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a polje] [-d razmejilnik] [-i besedilo] [-n n-znakov] [-N n-" +"znakov] [-p poziv] [-t časovna_omejitev] [-u fd] [ime ...]" #: builtins.c:138 msgid "return [n]" @@ -2101,7 +2180,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o ime_možnosti] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [ime ...]" #: builtins.c:144 @@ -2149,7 +2229,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] ime [ime ...]" #: builtins.c:169 -msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [meja]" #: builtins.c:172 @@ -2157,11 +2238,13 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [način]" #: builtins.c:175 -msgid "wait [id]" +#, fuzzy +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" msgstr "wait [id_opravila]" #: builtins.c:182 @@ -2185,8 +2268,11 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case IME in [VZOREC [| VZOREC]...) UKAZI ;;]... esac" #: builtins.c:192 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" -msgstr "if UKAZI; then UKAZI; [ elif UKAZI; then UKAZI; ]... [ else UKAZI; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" +msgstr "" +"if UKAZI; then UKAZI; [ elif UKAZI; then UKAZI; ]... [ else UKAZI; ] fi" #: builtins.c:194 msgid "while COMMANDS; do COMMANDS; done" @@ -2245,24 +2331,43 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v spremenljivka] oblika [argumenti]" #: builtins.c:229 -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 možnost] [-A dejanje] [-G krajevni_vzorec] [-W seznam_besed] [-F funkcija] [-C ukaz] [-X filtrirni_vzorec] [-P predpona] [-S pripona] [ime ...]" +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 možnost] [-A dejanje] [-G " +"krajevni_vzorec] [-W seznam_besed] [-F funkcija] [-C ukaz] [-X " +"filtrirni_vzorec] [-P predpona] [-S pripona] [ime ...]" #: builtins.c:233 -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 možnost] [-A dejanje] [-G krajevni_vzorec] [-W seznam_besed] [-F funkcija] [-C ukaz] [-X filtrirni_vzorec] [-P predpona] [-S pripona] [beseda]" +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 možnost] [-A dejanje] [-G krajevni_vzorec] [-W " +"seznam_besed] [-F funkcija] [-C ukaz] [-X filtrirni_vzorec] [-P predpona] [-" +"S pripona] [beseda]" #: builtins.c:237 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o možnost] [-DE] [ime ...]" #: builtins.c:240 -msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] [-c del] [polje]" +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n Å¡tevec] [-O izvor] [-s Å¡tevec] [-t] [-u fd] [-C povratni_klic] [-" +"c del] [polje]" #: builtins.c:242 -msgid "readarray [-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]" +msgid "" +"readarray [-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]" #: builtins.c:254 msgid "" @@ -2279,7 +2384,8 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Določi ali prikaže vzdevke.\n" @@ -2316,6 +2422,7 @@ msgstr "" " Vrne pravilno, razen če IME ni obstoječ vzdevek." #: builtins.c:289 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2327,24 +2434,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" +" -X\t\t List key sequences bound with -x and associated commands\n" +" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." @@ -2358,21 +2471,27 @@ msgstr "" " na primer, bind '\"\\C-x\\C-r\": re-read-init-file'.\n" " \n" " Možnosti:\n" -" -m tipk_razvr Uporabi TIPK_RAZVR kot tipkovno razvrstitev za čas trajanja\n" -" tega ukaza. Sprejemljiva imena tipkovnih razvrstitev so emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" -m tipk_razvr Uporabi TIPK_RAZVR kot tipkovno razvrstitev za čas " +"trajanja\n" +" tega ukaza. Sprejemljiva imena tipkovnih " +"razvrstitev so emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command in vi-insert.\n" " -l Prikaži imena funkcij.\n" " -P Prikaži imena funkcij in tipkovne bližnjice.\n" " -p Prikaži imena funkcij in tipkovne bližnjice v obliki, ki se lahko\n" " ponovno uporabi kot vnos.\n" -" -S Prikaži tipkovna zaporedja, ki se sklicujejo na makre in njihove vrednosti.\n" -" -s Prikaži tipkovna zaporedja, ki se sklicujejo na makre in njihove vrednosti\n" +" -S Prikaži tipkovna zaporedja, ki se sklicujejo na makre in njihove " +"vrednosti.\n" +" -s Prikaži tipkovna zaporedja, ki se sklicujejo na makre in njihove " +"vrednosti\n" " v obliki, ki se lahko ponovno uporabi kot vnos.\n" " -V Prikaži imena spremenljivk in vrednosti\n" " -v Prikaži imena spremenljivk in vrednosti v obliki, ki se lahko\n" " ponovno uporabi kot vnos.\n" -" -q ime_funkcije Poizvedi, katere tipke se sklicujejo na imenovano funkcijo.\n" +" -q ime_funkcije Poizvedi, katere tipke se sklicujejo na imenovano " +"funkcijo.\n" " -u ime_funkcije Odveži vse tipke, ki se vežejo na imenovano funkcijo.\n" " -r zaporedje_tipk Odstrani vez za ZAPOREDJE_TIPK.\n" " -f ime_datoteke Beri tipkovne bližnjice iz IME_DATOTEKE.\n" @@ -2382,7 +2501,7 @@ msgstr "" " Status končanja:\n" " bind vrne 0, razen, če je dana neprepoznana možnost ali se pojavi napaka." -#: builtins.c:326 +#: builtins.c:328 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2400,7 +2519,7 @@ msgstr "" " Stanje končanja:\n" " Stanje končanja je 0, razen če N ni večji kot ali enak 1." -#: builtins.c:338 +#: builtins.c:340 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2418,13 +2537,14 @@ msgstr "" " Stanje končanja:\n" " Stanje končanja je 0, razen če N ni večji kot ali enak 1." -#: builtins.c:350 +#: builtins.c:352 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2434,13 +2554,14 @@ msgstr "" " \n" " Izvede VGRAJENO_LUPINO z argumenti ARG brez opravljanja iskanja\n" " ukaza. To je uporabno, ko želite ponovno izvesti vgrajeno lupino\n" -" kot funkcijo lupine, vendar bi radi izvedli vgrajeno lupino znotraj funkcije.\n" +" kot funkcijo lupine, vendar bi radi izvedli vgrajeno lupino znotraj " +"funkcije.\n" " \n" " Stanje končanja:\n" " Vrne stanje končanja VGRAJENE_LUPINE ali napak, če VGRAJENA_LUPINA\n" " ni vgrajena lupina .." -#: builtins.c:365 +#: builtins.c:367 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2468,33 +2589,46 @@ msgstr "" " Vrne 0, razen če lupina ne izvrÅ¡uje funkcije lupine ali pa IZRAZ\n" " ni veljaven." -#: builtins.c:383 +#: builtins.c:385 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed\n" +" -L\tforce symbolic links to be followed: resolve symbolic links in\n" +" \tDIR after processing instances of `..'\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks\n" +" \tlinks: resolve symbolic links in DIR before processing instances\n" +" \tof `..'\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Spremeni delovno mapo lupine.\n" @@ -2525,7 +2659,7 @@ msgstr "" " Vrne 0, če je mapa spremenjena in če je $PWD uspeÅ¡no nastavljen, kadar\n" " je uporabljena možnost -P; drugače je ne-ničelna vrednost" -#: builtins.c:414 +#: builtins.c:420 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2553,7 +2687,7 @@ msgstr "" " Vrne 0, razen če je dana neveljavna možnost ali pa trenutne mape\n" " ni mogoče prebrati." -#: builtins.c:431 +#: builtins.c:437 msgid "" "Null command.\n" " \n" @@ -2569,7 +2703,7 @@ msgstr "" " Stanje končanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:442 +#: builtins.c:448 msgid "" "Return a successful result.\n" " \n" @@ -2581,7 +2715,7 @@ msgstr "" " Stanje končanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:451 +#: builtins.c:457 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2593,12 +2727,13 @@ msgstr "" " Stanje končanja:\n" " Vedno neuspeÅ¡no." -#: builtins.c:460 +#: builtins.c:466 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2625,7 +2760,8 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja UKAZA ali neuspeÅ¡no, če UKAZA ni mogoče najti." -#: builtins.c:479 +#: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2645,6 +2781,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2655,11 +2792,13 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Nastavi vrednosti spremenljivk in atributov.\n" " \n" @@ -2697,7 +2836,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali pride\n" " do napake." -#: builtins.c:517 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2707,7 +2846,8 @@ msgstr "" " \n" " Zastarelo. Oglejte si `help declare'." -#: builtins.c:525 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2718,8 +2858,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Določi krajevne spremenljivke.\n" " \n" @@ -2733,11 +2873,14 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost, pride\n" " do napake ali pa lupina ne izvaja funkcije." -#: builtins.c:542 +#: builtins.c:550 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs on the standard output followed by a newline.\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" @@ -2749,6 +2892,7 @@ msgid "" " \\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" @@ -2791,7 +2935,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če pride do napake pri pisanju." -#: builtins.c:576 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2813,7 +2957,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če pride do napake pri pisanju." -#: builtins.c:591 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2865,11 +3009,12 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če IME ni vgrajena lupina ali če pride do napake." -#: builtins.c:619 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -2883,7 +3028,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja ali uspeÅ¡no, če je ukaz prazen." -#: builtins.c:631 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2961,12 +3106,13 @@ msgstr "" " Vrne uspeÅ¡no, če je možnost najdena; neuspeÅ¡no, če pride\n" " do konca možnosti ali do napake." -#: builtins.c:673 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2974,11 +3120,13 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "Zamenja lupino z danim ukazom.\n" " \n" @@ -2997,7 +3145,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če UKAZ ni najden ali pride do napake preusmeritve." -#: builtins.c:694 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3009,11 +3157,12 @@ msgstr "" " Konča lupino s stanjem N. Če je N izpuščen, se uporabi stanje\n" " končanja zadnjega izvrÅ¡enega ukaza." -#: builtins.c:703 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Konča prijavno lupino.\n" @@ -3021,17 +3170,19 @@ msgstr "" " Konča prijavno lupino s stanjem končanja N. Vrne napako, če se\n" " ne izvede v prijavni lupini." -#: builtins.c:713 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3045,13 +3196,16 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Prikaže ali izvede ukaze s seznama zgodovine.\n" " \n" " fc se uporablja za seznam ali urejanje in ponovno izvajanje ukazov\n" -" s seznama zgodovine. PRVI in ZADNJI sta lahko Å¡tevili, ki določata obseg\n" -" oz. PRVI je lahko niz, kar pomeni, da se nedavni ukaz začne s tem nizom.\n" +" s seznama zgodovine. PRVI in ZADNJI sta lahko Å¡tevili, ki določata " +"obseg\n" +" oz. PRVI je lahko niz, kar pomeni, da se nedavni ukaz začne s tem " +"nizom.\n" " \n" " Možnosti:\n" " -e IME_UREJEVALNIKA\tizbere urejevalnik za uporabo. Privzet je\n" @@ -3070,7 +3224,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no ali stanje izvedenega ukaza; ne-ničelno, če pride do napake." -#: builtins.c:743 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3091,12 +3245,14 @@ msgstr "" " Stanje ukaza, postavljenega v ospredje, ali neuspeÅ¡no, če se\n" " pojavi napaka." -#: builtins.c:758 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3112,12 +3268,13 @@ msgstr "" " Vrne uspeÅ¡no, razen če nadzor posla ni omogočen ali če pride\n" " do napake." -#: builtins.c:772 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -3153,7 +3310,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če IME ni najdeno ali če je dana neveljavna možnost." -#: builtins.c:797 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3171,7 +3328,8 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Prikaže podrobnosti o ukazih vgrajene lupine.\n" " \n" @@ -3192,7 +3350,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če VZOREC ni najden ali pa je dana neveljavna\n" " možnost." -#: builtins.c:821 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3219,7 +3377,8 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3258,7 +3417,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je podana neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:857 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3302,7 +3461,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:884 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3334,7 +3493,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je dano\n" " DOLOČILO_POSLA." -#: builtins.c:903 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3375,14 +3534,15 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:926 +#: builtins.c:936 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" +" 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" @@ -3421,8 +3581,10 @@ msgstr "" "Ovrednoti aritmetične izraze.\n" " \n" " Ovrednoti vsak ARG kot aritmetični izraz. Vrednotenje se opravi\n" -" v celih Å¡tevilih z nespremenjeno Å¡irino brez preverjanja za prekoračitev,\n" -" čeprav je deljenje z 0 ujeto in označeno kot napaka. Seznam operatorjev,\n" +" v celih Å¡tevilih z nespremenjeno Å¡irino brez preverjanja za " +"prekoračitev,\n" +" čeprav je deljenje z 0 ujeto in označeno kot napaka. Seznam " +"operatorjev,\n" " ki sledi, je združen v stopnje operatorjev enakih prednosti. Stopnje so\n" " razvrščene po padajoči prednosti.\n" " \n" @@ -3459,18 +3621,22 @@ msgstr "" " Stanje končanja\n" " Če zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0." -#: builtins.c:971 +#: builtins.c:981 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3482,22 +3648,28 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" -" \t\tif input is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +" \t\twithout trying to read any data, returning success only if\n" +" \t\tinput is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out,\n" +" 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 "" "Prebere vrstico iz standardnega vhoda in jo razdeli v polja.\n" @@ -3541,7 +3713,7 @@ msgstr "" " omejitev prekoračena ali če je dan neveljaven opisnik datotek kot\n" " argument v -u." -#: builtins.c:1014 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3561,7 +3733,8 @@ msgstr "" " Stanje končanja\n" " Vrne N ali neuspeÅ¡no, če lupina ne izvede funkcije ali skripta." -#: builtins.c:1027 +#: builtins.c:1039 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3604,7 +3777,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3626,7 +3800,7 @@ msgid "" " -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 follow symbolic links when executing commands\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" @@ -3684,7 +3858,8 @@ msgstr "" " onecmd enako kot -t\n" " physical enako kot -P\n" " pipefail vrnjena vrednost cevovoda je stanje zadnjega\n" -" ukaza, ki je končal z ne-ničelnim stanjem ali nič,\n" +" ukaza, ki je končal z ne-ničelnim stanjem ali " +"nič,\n" " če noben ukaz ni končal ne-ničelnim stanjem\n" " posix spremeni obnaÅ¡anje bash-a, kjer se privzeto\n" " opravilo razlikuje od standarda POSIX pri\n" @@ -3730,7 +3905,8 @@ msgstr "" " Stanje končanja\n" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost." -#: builtins.c:1112 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3739,8 +3915,11 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" 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" @@ -3765,12 +3944,13 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je IME samo\n" " za branje." -#: builtins.c:1132 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3798,7 +3978,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1151 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3836,7 +4016,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če je\n" " neveljavno IME." -#: builtins.c:1172 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3854,7 +4034,7 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je N negativen ali večji kot $#." -#: builtins.c:1184 builtins.c:1199 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3878,7 +4058,7 @@ msgstr "" " Vrne stanje zadnjega izvrÅ¡enega ukaza v IMENU_DATOTEKE; vrne\n" " neuspeÅ¡no, če IMENA_DATOTEKE ni mogoče brati." -#: builtins.c:1215 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3904,7 +4084,8 @@ msgstr "" " Vrne uspeÅ¡no, razen če nadzor posla ni omogočen ali če pride do\n" " napake." -#: builtins.c:1231 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -3938,7 +4119,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3959,7 +4141,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3967,6 +4150,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4061,7 +4246,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:1311 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4073,11 +4258,12 @@ msgstr "" " To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n" " mora biti dobesedni `]' za ujemanje z uklepajem `['." -#: builtins.c:1320 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4091,11 +4277,12 @@ msgstr "" " Stanje končanja:\n" " Vedno uspeÅ¡no." -#: builtins.c:1332 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4104,30 +4291,39 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Signali trap in ostali dogodki.\n" " \n" -" Določi in omogoči ročnik, da se jih zažene, kadar lupina sprejme signale\n" +" Določi in omogoči ročnik, da se jih zažene, kadar lupina sprejme " +"signale\n" " ali ostale pogoje.\n" " \n" " ARG je ukaz, ki se ga prebere in izvrÅ¡i, kadar lupina sprejme signal(e)\n" @@ -4138,9 +4334,11 @@ msgstr "" " \n" " Če je SIGNAL_SPEC EXIT (0), se ARG izvrÅ¡i ob izhodu iz lupine. Če je\n" " SIGNAL_SPEC DEBUG, je ARG izvrÅ¡en pred vsakim ukazom. Če je\n" -" SIGNAL_SPEC RETURN, se ARG izvrÅ¡i vsakič, ko funkcija lupine ali skript,\n" +" SIGNAL_SPEC RETURN, se ARG izvrÅ¡i vsakič, ko funkcija lupine ali " +"skript,\n" " zagnan s strani . ali vgrajenih virov, konča z izvajanjem. SIGNAL_SPEC\n" -" od ERR pomeni, da se ARG izvede vsakič, ko bi napaka ukaza povzročila, da\n" +" od ERR pomeni, da se ARG izvede vsakič, ko bi napaka ukaza povzročila, " +"da\n" " bi se lupina končala, kadar je omogočena možnost -e.\n" " \n" " Če ni predloženih argumentov, trap prikaže seznam ukazov, povezanih z\n" @@ -4150,14 +4348,16 @@ msgstr "" " -l\tPrikaži seznam imen signalov in njihove ustrezne Å¡tevilke\n" " -p\tprikaži ukaze trap, povezane z vsakim SIGNAL_SPEC\n" " \n" -" Vsak SIGNAL_SPEC je bodisi ime signala v bodisi Å¡tevilka signala.\n" +" Vsak SIGNAL_SPEC je bodisi ime signala v bodisi Å¡tevilka " +"signala.\n" " Imena signalov ločujejo velikost črk in predpona SIG je izbirna.\n" " Signal je lahko poslan v lupino s \"kill -signal $$\".\n" " \n" " Stanje končanja:\n" -" Vrne uspeÅ¡no, razen če je SIGSPEC neveljaven ali je dana neveljavna možnost." +" Vrne uspeÅ¡no, razen če je SIGSPEC neveljaven ali je dana neveljavna " +"možnost." -#: builtins.c:1368 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4183,7 +4383,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Prikaže podrobnosti o vrsti ukaza.\n" " \n" @@ -4213,11 +4414,13 @@ msgstr "" " Vrne uspeÅ¡no, če so vsa IMENA najdena; vrne neuspeÅ¡no, če katero\n" " ni najdeno." -#: builtins.c:1399 +#: builtins.c:1414 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4241,6 +4444,9 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" +" -T the maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -4268,7 +4474,8 @@ msgstr "" " -c\tnajvečja velikost ustvarjenih datotek jedra\n" " -d\tnajvečja velikost odseka podatkov opravila\n" " -e\tnajvečja prednost razporejanja (`nice')\n" -" -f\tnajvečja velikost datotek, ki so napisane s strani lupine in njenih\n" +" -f\tnajvečja velikost datotek, ki so napisane s strani lupine in " +"njenih\n" " \tpodrejenih opravil\n" " -i\tnajvečje Å¡tevilo signalov na čakanju\n" " -l\tnajvečja velikost, ki jo opravilo lahko zaklene v pomnilnik\n" @@ -4297,7 +4504,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do\n" " napake." -#: builtins.c:1444 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4323,30 +4530,38 @@ msgstr "" " sicer je niz simbolnega načina kot je sprejet s strani chmod(1).\n" " \n" " Možnosti:\n" -" -p\tče je NAČIN izpuščen, izpiÅ¡i v obliki, ki se lahko uporabi kot vnos\n" +" -p\tče je NAČIN izpuščen, izpiÅ¡i v obliki, ki se lahko uporabi kot " +"vnos\n" " -S\tnaredi simbolni izpis; sicer se izpiÅ¡e osmiÅ¡ko Å¡tevilo\n" " \n" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je NAČIN neveljaven ali če je dana neveljavna\n" " možnost." -#: builtins.c:1464 +#: builtins.c:1482 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for the process identified by ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\n" -" in the job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." msgstr "" "Čaka na dokončanje posla in vrne stanje končanja.\n" " \n" -" Počaka na opravilo, določeno s strani ID-ja, ki je lahko ID opravila ali\n" +" Počaka na opravilo, določeno s strani ID-ja, ki je lahko ID opravila " +"ali\n" " določilo posla in poroča svoje stanje uničenja. Če ID ni dan, počaka\n" " vsa trenutno dejavna podrejena opravila in stanje končanja je nič.\n" " Če je ID določilo posla, počaka vsa opravila v cevovodu\n" @@ -4356,17 +4571,20 @@ msgstr "" " Vrne stanje ID-ja; vrne neuspeÅ¡no, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1482 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Čaka na končanje opravila in vrne stanje končanja.\n" " \n" @@ -4378,7 +4596,7 @@ msgstr "" " Vrne stanje ID-ja; neuspeÅ¡no, če je ID neveljaven ali če je dana\n" " neveljavna možnost." -#: builtins.c:1497 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4393,14 +4611,15 @@ msgstr "" "Izvede ukaze za vsakega člana na seznamu.\n" " \n" " Zanka `for' izvede zaporedje ukazov za vsakega člana na seznamu\n" -" predmetov. Če `in BESEDE ...;' niso prisotna, se predvideva `in \"$@\"'.\n" +" predmetov. Če `in BESEDE ...;' niso prisotna, se predvideva `in \"$@" +"\"'.\n" " Za vsak element v BESEDAH je IME nastavljeno temu predmetu in\n" " UKAZI so izvrÅ¡eni.\n" " \n" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1511 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4424,13 +4643,14 @@ msgstr "" " \t\tUKAZI\n" " \t\t(( IZRAZ3 ))\n" " \tdone\n" -" IZRAZ1, IZRAZ2, in IZRAZ3 so aritmetični izrazi. Če je kateri izraz izpuščen,\n" +" IZRAZ1, IZRAZ2, in IZRAZ3 so aritmetični izrazi. Če je kateri izraz " +"izpuščen,\n" " se obnaÅ¡a, kot da so enaki 1.\n" " \n" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1529 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4460,13 +4680,14 @@ msgstr "" " Če je vrstica prazna, so BESEDE v pozivu prikazane \n" " ponovno. Če se prebere konec datoteke, se ukaz zaključi. Vsaka druga \n" " prebrana vrednost povzroči, da se IME nastavi na prazno vrednost.\n" -" Prebrana vrstica je shranjena v spremenljivki ODGOVOR. UKAZI so izvrÅ¡eni \n" +" Prebrana vrstica je shranjena v spremenljivki ODGOVOR. UKAZI so " +"izvrÅ¡eni \n" " po vsakem izboru, dokler se ne izvede ukaz break.\n" " \n" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1550 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4495,7 +4716,7 @@ msgstr "" " Stanje končanja:\n" " Stanje končanja je stanje končanja CEVOVODA." -#: builtins.c:1567 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4513,16 +4734,21 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1579 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4535,13 +4761,14 @@ msgstr "" " in če je njegovo stanje nič, se izvede ustrezen seznam `then UKAZI' \n" " in ukaz if se zaključi. V nasprotnem primeru se izvede seznam \n" " `else UKAZI', če je prisoten. Stanje končanja celotnega izgrajenja \n" -" je stanje končanja zadnjega izvrÅ¡enega ukaza ali nič, če noben pogoj ni \n" +" je stanje končanja zadnjega izvrÅ¡enega ukaza ali nič, če noben pogoj " +"ni \n" " dal prav.\n" " \n" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1596 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4559,7 +4786,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1608 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4577,7 +4804,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1620 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4599,12 +4826,13 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje končanja UKAZA." -#: builtins.c:1634 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4613,14 +4841,16 @@ msgid "" msgstr "" "Določi funkcijo lupine.\n" " \n" -" Ustvari funkcijo lupine, imenovano IME. Kadar je poklicana kot preprost ukaz,\n" -" IME zažene UKAZE v vsebini klicoče lupine. Kadar se kliče IME, so argumenti\n" +" Ustvari funkcijo lupine, imenovano IME. Kadar je poklicana kot preprost " +"ukaz,\n" +" IME zažene UKAZE v vsebini klicoče lupine. Kadar se kliče IME, so " +"argumenti\n" " posredovani v funkcijo kot $1...$n in ime funkcije je v $FUNCNAME.\n" " \n" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je IME samo za branje." -#: builtins.c:1648 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4638,7 +4868,7 @@ msgstr "" " Stanje končanja:\n" " Vrne stanje zadnjega izvrÅ¡enega ukaza." -#: builtins.c:1660 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4656,12 +4886,13 @@ msgstr "" " Je enakovreden argumentu DOLOČILO_POSLA v ukazu `fg'. Obnovi posel,\n" " ki je ustavljen ali v ozadju. DOLOČILO_POSLA lahko določi bodisi ime\n" " posla bodisi Å¡tevilko posla. DOLOČILU_POSLA sledi `&', ki postavi posel\n" -" v ozadje, kot če bi določilo posla bilo dobavljeno kot argument ukazu `bg'.\n" +" v ozadje, kot če bi določilo posla bilo dobavljeno kot argument ukazu " +"`bg'.\n" " \n" " Stanje končanja:\n" " Vrne stanje obnovljenega posla." -#: builtins.c:1675 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4679,13 +4910,16 @@ msgstr "" " Stanje končanja:\n" " Vrne 1, če je IZRAZ enakovreden; sicer vrne 0." -#: builtins.c:1687 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4706,26 +4940,31 @@ msgstr "" "IzvrÅ¡i pogojni ukaz.\n" " \n" " Vrne stanje 0 ali 1, odvisno od vrednotenja pogojnega izraza IZRAZ.\n" -" expression EXPRESSION. Izrazi so sestavljeni iz istih osnov, ki so uporabljajo\n" -" s strani vgrajene lupine `test' in se lahko spajajo s pomočjo naslednjih\n" +" expression EXPRESSION. Izrazi so sestavljeni iz istih osnov, ki so " +"uporabljajo\n" +" s strani vgrajene lupine `test' in se lahko spajajo s pomočjo " +"naslednjih\n" " operatorjev:\n" " \n" " ( IZRAZ )\tVrne vrednost IZRAZA\n" " ! IZRAZ\t\tPrav, če je IZRAZ napak; sicer vrne napak\n" -" IZRAZ1 && IZRAZ2\tPrav, če sta IZRAZ1 in IZRAZ2 prav; sicer vrne napak\n" -" IZRAZ1 || IZRAZ2\tTPrav, če je IZRAZ1 ali IZRAZ2 prav; sicer vrne napak\n" +" IZRAZ1 && IZRAZ2\tPrav, če sta IZRAZ1 in IZRAZ2 prav; sicer vrne " +"napak\n" +" IZRAZ1 || IZRAZ2\tTPrav, če je IZRAZ1 ali IZRAZ2 prav; sicer vrne " +"napak\n" " \n" " Kadar se uporabita operatorja `==' in `!=', se niz desno od operatorja \n" " uporabi kot vzorec in izvrÅ¡i se ujemanje vzorcev. Kadar se uporabi \n" " operator `=~', se niz desno od operatorja ujema kot logični izraz.\n" " \n" -" Operatorja && in || ne vrednotita IZRAZ2, če IZRAZ1 zadošča za določitev \n" +" Operatorja && in || ne vrednotita IZRAZ2, če IZRAZ1 zadošča za " +"določitev \n" " vrednosti izraza.\n" " \n" " Stanje končanja:\n" " 0 ali 1, odvisno od vrednosti IZRAZA." -#: builtins.c:1713 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4786,7 +5025,8 @@ msgstr "" " GLOBIGNORE\tZ dvopičjem ločen seznam vzorcev z opisom imen datotek,\n" " \t\tki se jih ne upoÅ¡teva pri razÅ¡iritvi imena poti.\n" " HISTFILE\tIme datoteke, kjer je shranjena vaÅ¡a zgodovina ukazov.\n" -" HISTFILESIZE\tNajvečje Å¡tevilo vrstic, ki jih ta datoteka lahko vsebuje.\n" +" HISTFILESIZE\tNajvečje Å¡tevilo vrstic, ki jih ta datoteka lahko " +"vsebuje.\n" " HISTSIZE\tNajvečje Å¡tevilo vrstic zgodovine, do katerih izvajajoča\n" " \t\tlupina lahko dostopa.\n" " HOME\tCelotno ime poti do vaÅ¡e prijavne mape.\n" @@ -4828,7 +5068,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:1770 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -4884,7 +5124,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1804 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4934,7 +5174,7 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložen neveljaven argument ali če\n" " sprememba mape spodleti." -#: builtins.c:1834 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -4951,10 +5191,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" @@ -4983,12 +5225,13 @@ msgstr "" " Stanje končanja:\n" " Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do napake." -#: builtins.c:1863 +#: builtins.c:1884 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" +" arguments, list all shell options with an indication of whether or not " +"each\n" " is set.\n" " \n" " Options:\n" @@ -5019,7 +5262,8 @@ 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:1884 +#: builtins.c:1905 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5027,22 +5271,34 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1)\n" -" and printf(3), printf interprets:\n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" +" %(fmt)T output the date-time string resulting from using FMT as a " +"format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Oblikuje in prikaže ARGUMENTE pod nadzorom OBLIKE.\n" @@ -5052,7 +5308,8 @@ msgstr "" " \t\tprikaza na standardni izpis\n" " \n" " OBLIKA je niz znakov, ki vsebuje tri vrste predmetov: običajni znaki, \n" -" ki so preprosto kopirani na standardni izhod; zaporedja ubežnega zaporedja, \n" +" ki so preprosto kopirani na standardni izhod; zaporedja ubežnega " +"zaporedja, \n" " ki so pretvorjena in kopirana na standardni izhod; in določila oblike, \n" " od katerih vsako povzroči prikaz naslednjega zaporednega argumenta.\n" " \n" @@ -5062,19 +5319,23 @@ msgstr "" " %b\trazÅ¡iri ubežno zaporedje levih poÅ¡evnic v ustreznem argumentu\n" " %q\tnavedi argument na način, ki je lahko ponovno uporaben kot\n" " \tvnos lupine\n" -" %(fmt)T izpiÅ¡i niz datuma-časa, ki izhaja iz uporabe FMT-ja kot niza oblike \n" +" %(fmt)T izpiÅ¡i niz datuma-časa, ki izhaja iz uporabe FMT-ja kot niza " +"oblike \n" " za strftime(3)\n" " \n" " Stanje končanja:\n" -" Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do napake\n" +" Vrne uspeÅ¡no, razen če je dana neveljavna možnost ali če pride do " +"napake\n" " branja ali dodelitve." -#: builtins.c:1913 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5096,7 +5357,8 @@ msgstr "" "Navede, kako bodo argumenti dopolnjeni s pomočjo Readline.\n" " \n" " Za vsako IME navedi, kako bodo argumenti dopolnjeni. Če ni predloženih\n" -" možnosti, so obstoječe določitve dopolnjevanja prikazane na način, ki jim\n" +" možnosti, so obstoječe določitve dopolnjevanja prikazane na način, ki " +"jim\n" " omogoča, da se ponovno uporabijo kot vnos.\n" " \n" " Možnosti:\n" @@ -5117,12 +5379,13 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:1941 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5138,13 +5401,16 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali če pride\n" " do napake." -#: builtins.c:1956 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5191,22 +5457,28 @@ msgstr "" " Vrne uspeÅ¡no, razen če je predložena neveljavna možnost ali pa IME\n" " nima določenega določila dopolnjevanja." -#: builtins.c:1986 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -5216,23 +5488,27 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Prebere vrstice s standardnega vnosa v spremenljivko zabeleženega polja.\n" " \n" -" Prebere vrstice iz standardnega vnosa v spremenljivko zabeleženega polja \n" +" Prebere vrstice iz standardnega vnosa v spremenljivko zabeleženega " +"polja \n" " POLJE ali iz opisnika datotek FD, če je predložena možnost -u.\n" " Spremenljivka MAPFILE je privzeto POLJE.\n" " \n" " Možnosti:\n" " -n Å¡tevec\tKopiraj največ vrstic Å TEVCA. Če je Å TEVEC 0, se kopirajo\n" " \tvse vrstice.\n" -" -O izvor\tZačni dodeljevati POLJU pri kazalu IZVOR. Privzeto kazalo je 0.\n" +" -O izvor\tZačni dodeljevati POLJU pri kazalu IZVOR. Privzeto kazalo je " +"0.\n" " -s Å¡tevec \tZavrzi prve prebrane vrstice Å TEVCA.\n" " -t\t\tIz vsake prebrane vrstice odstrani vmesno novo vrstico.\n" " -u fd\t\tBeri vrstice iz opisnika datotek FD namesto standardnega\n" @@ -5257,7 +5533,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:2020 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5266,3 +5542,13 @@ msgstr "" "Prebere vrstice iz datoteke v spremenljivko polja.\n" " \n" " Je sopomenka za `mapfile'." + +#~ 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/sv.gmo b/po/sv.gmo index edd930314..821d45a83 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index fc77bede6..070bc8360 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8,36 +8,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-02-16 23:42+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" -"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "felaktigt vektorindex" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, 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:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: ogiltig nyckel till associativ vektor" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: det gÃ¥r inte att tilldela till ickenumeriska index" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, 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" @@ -47,23 +47,23 @@ msgstr "%s: %s: mÃ¥ste använda index vid tilldelning av associativ vektor" msgid "%s: cannot create: %s" msgstr "%s: det gÃ¥r inte att skapa: %s" -#: bashline.c:3868 +#: bashline.c:3923 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:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: första ickeblanka tecknet är inte '\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "ingen avslutande \"%c\" i %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: kolonseparator saknas" @@ -129,7 +129,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME är inte satt" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "för mÃ¥nga argument" @@ -152,7 +152,7 @@ msgstr "varning: " msgid "%s: usage: " msgstr "%s: användning: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: flaggan kräver ett argument" @@ -167,7 +167,7 @@ msgstr "%s: numeriskt argument krävs" msgid "%s: not found" msgstr "%s: finns inte" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: ogiltig flagga" @@ -190,7 +190,7 @@ msgstr "ogiltigt oktalt tal" msgid "invalid hex number" msgstr "ogiltigt hexadecimalt tal" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "ogiltigt tal" @@ -299,25 +299,35 @@ msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig" msgid "not currently executing completion function" msgstr "kör inte en kompletteringsfunktion" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "kan endast användas i en funktion" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 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:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: endast läsbar funktion" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: det gÃ¥r inte att konvertera en associativ vektor till indexerad" @@ -346,23 +356,23 @@ msgstr "%s: inte dynamiskt laddad" msgid "%s: cannot delete: %s" msgstr "%s: kan inte ta bort: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: är en katalog" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: inte en normal fil" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: filen är för stor" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: det gÃ¥r inte att köra binär fil" @@ -457,7 +467,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: det gÃ¥r inte att öppna: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -499,16 +509,16 @@ msgstr "%s: inlib misslyckades" msgid "no other options allowed with `-x'" msgstr "inga andra flaggor är tillÃ¥tna med \"-x\"" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argument mÃ¥ste vara processer eller job-id:n" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Okänt fel" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "uttryck förväntades" @@ -517,64 +527,64 @@ msgstr "uttryck förväntades" msgid "%s: not an indexed array" msgstr "%s: inte en indexerad vektor" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: ogiltig filidentifierarspecifikation" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: ogiltig filbeskrivare: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: ogiltigt radantal" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: ogiltig vektorstart" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: ogiltigt Ã¥teranropskvanta" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "tomt vektorvariabelnamn" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "stöd för vektorvariabler krävs" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "\"%s\": formateringstecken saknas" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": ogiltig specifikation av tidsformat" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ogiltigt formateringstecken" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "varning: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "hexadecimal siffra saknas för \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "unicode-siffra saknas för \\%c" @@ -583,19 +593,24 @@ msgstr "unicode-siffra saknas för \\%c" msgid "no other directory" msgstr "ingen annan katalog" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: ogiltigt gränsargument" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "katalogstacken är tom" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "katalogstackindex" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -637,7 +652,7 @@ msgstr "" " -N\tVisa den N:e posten räkntat 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:705 +#: builtins/pushd.def:711 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" @@ -683,7 +698,7 @@ msgstr "" " \n" " Den inbyggda \"dirs\" visar katalogstacken." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -721,12 +736,12 @@ msgstr "" " \n" " Den inbyggda \"dirs\" visar katalogstacken." -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: ogiltig tidsgränsspecifikation" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "läsfel: %d: %s" @@ -736,26 +751,26 @@ 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:771 +#: builtins/set.def:782 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:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: det gÃ¥r inte att ta bort tilldelning" -#: builtins/set.def:829 +#: builtins/set.def:843 #, 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:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: inte en vektorvariabel" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: inte en funktion" @@ -764,11 +779,11 @@ msgstr "%s: inte en funktion" msgid "shift count" msgstr "skiftantal" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "det gÃ¥r inte att sätta och ta bort skalflaggor samtidigt" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ogiltigt skalflaggsnamn" @@ -893,127 +908,127 @@ msgstr "felaktigt hopp" msgid "%s: unbound variable" msgstr "%s: obunden variabel" -#: eval.c:181 +#: eval.c:189 #, 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:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "det gÃ¥r inte att omdiregera standard in frÃ¥n /dev/null: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: \"%c\": ogiltigt formateringstecken" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "rörfel" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, 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:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: kommandot finns inte" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: felaktig tolk" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: det gÃ¥r inte att köra binär fil" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s är inbyggt i skalet\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "det gÃ¥r inte att duplicera fb %d till fb %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "rekursionsnivÃ¥ i uttryck överskriden" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "underspill i rekursionsstacken" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "syntaxfel i uttrycket" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "försök att tilldela till en icke-variabel" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "division med 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "bug: felaktig expassign-token" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "\":\" förväntades i villkorligt uttryck" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "exponenten är mindre än 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "\")\" saknas" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "syntaxfel: en operand förväntades" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "syntaxfel: ogiltig aritmetisk operator" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (felsymbol är \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "ogiltig aritmetisk bas" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "värdet är för stort för basen" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: uttrycksfel\n" @@ -1022,164 +1037,164 @@ msgstr "%s: uttrycksfel\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: det gÃ¥r inte att komma Ã¥t föräldrakatalogen" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, 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:265 +#: input.c:267 #, 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:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: buffert finns redan för ny fb %d" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp rör" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "avgrenad pid %d fins i körande jobb %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "tar bort stoppat jobb %d med processgrupp %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: process %5ld (%s) i the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, 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:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ingen sÃ¥dan pid" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Klart" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Stoppat" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Stoppat(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Kör" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Klart(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Avslut %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Okänd status" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(minnesutskrift skapad) " -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (ak: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "barns setpgid (%ld till %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Ingen uppgift om process %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: jobb %d är stoppat" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: jobbet har avslutat" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: jobb %d är redan i bakgrunden" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: slÃ¥r pÃ¥ WNOHANG för att undvika oändlig blockering" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: rad %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (minnesutskrift skapad)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(ak nu: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp misslyckades" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: linjedisciplin" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "det gÃ¥r inte att sätta terminalprocessgrupp (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "ingen jobbstyrning i detta skal" @@ -1201,49 +1216,49 @@ msgstr "" msgid "unknown" msgstr "okänd" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: block pÃ¥ frilista överskrivet" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: anropad med redan frigjort block som argument" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: anropad med oallokerat block som argument" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: start- och slutstyckesstorlekar skiljer" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: anropat med oallokerat block som argument" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: start- och slutstycesstorlekar skiljer" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: allokeringstabellen är full med FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p finns redan i tabellen som allokerat?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p finns redan i tabellen som fritt?\n" @@ -1291,15 +1306,15 @@ msgstr "setlocale: %s: det gÃ¥r inte att ändra lokal (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: det gÃ¥r inte att ändra lokal (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Du har post i $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Du har ny post i $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Posten i %s har lästs\n" @@ -1333,103 +1348,103 @@ msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" "make_redirection: omdirigeringsinstruktion \"%d\" utanför giltigt intervall" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "oväntat filslut vid sökning efter matchande \"%c\"" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "oväntat filslut vid sökning efter \"]]\"" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "syntaxfel i villkorligt uttryck: oväntad symbol \"%s\"" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "syntaxfel i villkorligt uttryck" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "oväntad symbol \"%s\", \")\" förväntades" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "\")\" förväntades" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "oväntat argument \"%s\" till villkorlig unär operator" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "oväntat argument till villkorlig unär operator" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "oväntad symbol \"%s\", villkorlig binär operator förväntades" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "villkorlig binär operato förväntades" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "oväntat argument \"%s\" till villkorlig binär operator" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "oväntat argument till villkorlig binär operator" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "oväntad symbol \"%c\" i villkorligt kommando" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "oväntad symbol \"%s\" i villkorligt kommando" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "oväntad symbol %d i villkorligt kommando" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "syntaxfel nära den oväntade symbolen \"%s\"" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "syntaxfel nära \"%s\"" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "syntaxfel: oväntat filslut" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "syntaxfel" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Använd \"%s\" fär att lämna skalet.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "oväntat filslut när matchande \")\" söktes" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "komplettering: funktion \"%s\" finns inte" @@ -1458,71 +1473,71 @@ msgstr "xtrace_set: NULL-filpekare" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ogiltigt formateringstecken" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "filbeskrivare utanför giltigt intervall" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: tvetydig omdirigering" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: begränsad: det gÃ¥r inte att skriva över en existerande fil" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: begränsad: det gÃ¥r inte att omdirigera utdata" -#: redir.c:192 +#: redir.c:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: det gÃ¥r inte att tilldela fb till variabel" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "omdirigeringsfel: det gÃ¥r inte att duplicera fb" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "hittade inte /tmp, var god skapa!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp mÃ¥ste vara ett giltigt katalognamn" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: ogiltig flagga" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "Jag har inget namn!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, version %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1531,41 +1546,42 @@ msgstr "" "Användning:\t%s [GNU lÃ¥ng flagga] [flagga] ...\n" "\t\t%s [GNU lÃ¥ng flagga] [flagga] skriptfil ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU lÃ¥nga flaggor:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Skalflaggor:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, 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_flagga\t\t(bara uppstart)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s eller -o flagga\n" -#: shell.c:1836 +#: shell.c:1856 #, 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:1837 +#: shell.c:1857 #, 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:1838 +#: shell.c:1858 #, 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" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: ogiltig operation" @@ -1739,72 +1755,77 @@ msgstr "Okänd signal nr " msgid "Unknown Signal #%d" msgstr "Okänd signal nr %d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "felaktig substitution: ingen avslutande \"%s\" i %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: det gÃ¥r inte att tilldela listor till vektormedlemmar" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "det gÃ¥r inte att skapa rör för processubstitution" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "det gÃ¥r inte att skapa barn för processubstitution" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "det gÃ¥r inte att öppna namngivet rör %s för läsning" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "det gÃ¥r inte att öppna namngivet rör %s för skrivning" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "det gÃ¥r inte att duplicera namngivet rör %s som fb %d" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "det gÃ¥r inte att skapa rör för kommandosubstitution" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "det gÃ¥r inte att skapa barn för kommandosubstitution" -#: subst.c:5351 +#: subst.c:5330 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:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: ogiltigt värde för spÃ¥rningsfilbeskrivare" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametern tom eller inte satt" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: delstränguttryck < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: felaktig substitution" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: det gÃ¥r inte att tilldela pÃ¥ detta sätt" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" @@ -1812,58 +1833,58 @@ msgstr "" "framtida versioner av skalet kommer att framtvinga evaluering som en " "aritmetisk substition" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "felaktig ersättning: ingen avslutande \"`\" i %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "ingen match: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "argument förväntades" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: heltalsuttryck förväntades" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "\")\" förväntades" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "\")\" förväntades, fann %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: unär operator förväntades" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: binär operator förväntades" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "\"]\" saknas" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "ogiltigt signalnummer" -#: trap.c:329 +#: trap.c:348 #, 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:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1871,73 +1892,84 @@ msgstr "" "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig " "själv" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: felaktig signal %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "fel vid import av funktionsdefinition för \"%s\"" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "skalnivÃ¥ (%d) för hög, Ã¥terställer till 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: det gÃ¥r inte att tilldela fb till variabel" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s har tom exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "ogiltigt tecken %d i exportstr för %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "inget \"=\" i exportstr för %s" -#: variables.c:3917 +#: variables.c:4252 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:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: ingen kontext global_variables" -#: variables.c:4004 +#: variables.c:4339 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:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: gÃ¥r inte att öppna som FILE" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: ogiltigt värde för spÃ¥rningsfilbeskrivare" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s utanför giltigt intervall" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright © 2011 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1945,36 +1977,22 @@ msgstr "" "Licens GPLv3+: GNU GPL version 3 eller senare \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, version %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "" "Detta är fri programvara, det fÃ¥r fritt ändra och vidaredistribuera den.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Det finns INGEN GARANTI, sÃ¥ lÃ¥ngt lagen tillÃ¥ter.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright © 2009 Free Software Foundation, Inc.\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Licens GPLv2+: GNU GPL version 2 eller senare \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2054,7 +2072,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] kommando [arg ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [namn[=värde] ...]" #: builtins.c:78 @@ -2163,7 +2182,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o flaggnamn] [--] [arg ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [namn ...]" #: builtins.c:144 @@ -2221,12 +2241,13 @@ msgstr "umask [-p] [-S] [rättigheter]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [id]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2753,6 +2774,7 @@ msgstr "" " finns." #: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2772,6 +2794,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2787,7 +2810,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Sätt variabelvärden och -attribut.\n" " \n" @@ -2825,7 +2849,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2835,7 +2859,8 @@ msgstr "" " \n" " FörÃ¥ldrat. Se \"help declare\"." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2846,8 +2871,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Definiera lokala variabler.\n" " \n" @@ -2862,7 +2887,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges, ett fel inträffar\n" " eller skalet inte exekverar en funktion." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2924,7 +2949,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett skrivfel inträffar." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2946,7 +2971,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte ett skrivfel inträffar." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3000,7 +3025,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte NAMN inte är inbyggd i skalet eller ett fel\n" " inträffar." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3020,7 +3045,7 @@ msgstr "" " Slutstatus:\n" " Returnerar slutstatus av kommandot eller framgÃ¥ng om kommandot är tomt." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3097,7 +3122,7 @@ msgstr "" " Returnerar framgÃ¥ng om en flagga hittas, misslyckas om slutet av\n" " flaggorna nÃ¥s eller ett fel inträffar." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3138,7 +3163,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte KOMMANDO inte finns eller ett fel vid\n" " omdirigering inträffar." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3150,7 +3175,7 @@ msgstr "" " Avslutar skalet med statusen N. Om N utelämnas är slutstatusen den\n" " hos det sist körda kommandot." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3163,7 +3188,7 @@ msgstr "" " Avslutar ett inloggningsskal med slutstatus N. Returnerar ett fel om\n" " det inte körs i ett inloggningsskal." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3219,7 +3244,7 @@ msgstr "" " Returnerar framgÃ¥ng eller status pÃ¥ exekverat kommando, skilt frÃ¥n noll\n" " om ett fel inträffar." -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3240,7 +3265,7 @@ msgstr "" " Status pÃ¥ kommandot som placerades i förgrunden, eller misslyckande om\n" " ett fel inträffar." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3266,7 +3291,7 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3309,7 +3334,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN inte hittas eller en ogiltig flagga ges." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3350,7 +3375,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte MÖNSTER inte finns eller en ogiltig flagga " "ges." -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3416,7 +3441,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3460,7 +3485,7 @@ msgstr "" "inträffar.\n" " Om -x används returneras slutstatus frÃ¥n KOMMANDO." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3490,7 +3515,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga eller JOBBSPEC ges." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3534,7 +3559,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga angivits eller ett fel\n" " inträffar." -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -3622,7 +3647,7 @@ msgstr "" " Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 " "annars." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3658,7 +3683,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3717,7 +3742,7 @@ msgstr "" " Returkoden är noll om inte filslut nÃ¥s, läsningens tidsgräns överskrids\n" " eller en ogiltig filbeskrivare ges som argument till -u." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3738,7 +3763,7 @@ msgstr "" " Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n" " skript." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3912,7 +3937,8 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3921,6 +3947,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3948,7 +3976,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN endast är\n" " läsbart." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3981,7 +4009,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4017,7 +4045,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN är ogiltigt." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4036,7 +4064,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte N är negativt eller större än $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4060,7 +4088,7 @@ msgstr "" " Returnerar status pÃ¥ det sista kommandot som körs i FILNAMN, misslyckas\n" " om FILNAMN inte kan läsas." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4086,7 +4114,8 @@ msgstr "" "fel\n" " inträffar." -#: builtins.c:1241 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -4151,6 +4180,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4242,7 +4273,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:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4255,7 +4286,7 @@ msgstr "" "argumentet\n" " mÃ¥ste vara en bokstavlig \"]\", för att matcha den inledande \"[\"." -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4275,7 +4306,7 @@ msgstr "" " Slutstatus:\n" " Lyckas alltid." -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -4353,7 +4384,7 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4410,7 +4441,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om alla NAMNen finns, misslyckas om nÃ¥got inte finns." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4502,7 +4533,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga anges eller ett fel " "inträffar." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4538,7 +4569,7 @@ msgstr "" "flagga\n" " ges." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4551,6 +4582,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4568,18 +4602,20 @@ msgstr "" "ogiltig\n" " flagga ges." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Vänta pÃ¥ att en process blir färdig och returnerar slutstatus.\n" " \n" @@ -4594,7 +4630,7 @@ msgstr "" "ogiltig\n" " flagga ges." -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4617,7 +4653,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status för det sist exekverade kommandot." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4647,7 +4683,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4682,7 +4718,7 @@ msgstr "" " Sluttatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4711,7 +4747,7 @@ msgstr "" " Slutstatus:\n" " Returstatusen är returstatusen frÃ¥n RÖR." -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4729,7 +4765,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4765,7 +4801,7 @@ msgstr "" " Slutstatus:\n" " Returnerar status frÃ¥n det sist exekverade kommandot." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4783,7 +4819,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4801,7 +4837,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4823,7 +4859,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen frÃ¥n KOMMANDO." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4846,7 +4882,7 @@ msgstr "" " Slutstatus:\n" " Returnerar framgÃ¥ng om inte NAMN endast är läsbart." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4864,7 +4900,7 @@ msgstr "" " Slutstatus:\n" " Returnerar stutusen frÃ¥n det sist exekverade kommandot." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4888,7 +4924,7 @@ msgstr "" " Slutstatus:\n" " Returnerar statusen pÃ¥ det Ã¥terupptagna jobbet." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4906,7 +4942,7 @@ msgstr "" " Slutstatus:\n" " Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4959,7 +4995,7 @@ msgstr "" " Slutstatus:\n" " 0 eller 1 beroende pÃ¥ värdet av UTTRYCK." -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5064,7 +5100,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:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5122,7 +5158,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5172,7 +5208,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte ett ogiltigt argument ges eller bytet av\n" " katalog misslyckas." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5225,7 +5261,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5261,7 +5297,7 @@ msgstr "" " Returnerar framgÃ¥ng om FLGNAMN är aktiverat, misslyckas om en ogiltig\n" " flagga ges eller FLGNAMN är avaktiverat." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5289,6 +5325,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5320,7 +5362,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett skriv-\n" " eller tilldelningsfel inträffar." -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5370,7 +5412,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5392,7 +5434,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller ett fel " "inträffar." -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -5451,7 +5493,7 @@ msgstr "" " Returnerar framgÃ¥ng om inte en ogiltig flagga ges eller NAMN inte har\n" " nÃ¥gon kompletteringsspecifikaation definierad." -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -5525,7 +5567,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:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5534,3 +5576,16 @@ msgstr "" "Läs rader frÃ¥n en fil till en vektorvariabel.\n" " \n" " En synonym till \"mapfile\"." + +#~ 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 "" +#~ "Licens GPLv2+: GNU GPL version 2 eller senare \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [pid]" diff --git a/po/tr.gmo b/po/tr.gmo index 89e7eda94..52c0cbc63 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index 31cee3b56..302a91f73 100644 --- a/po/tr.po +++ b/po/tr.po @@ -1,153 +1,157 @@ -# translation of bash-3.2.po to Turkish +# translation of bash-4.2.po to Turkish # Copyright (C) 2006 Free Software Foundation, Inc. -# Nilgün Belma Bugüner , 2006. +# This file is distributed under the same license as the bash package. # +# Nilgün Belma Bugüner , 2006. +# Volkan Gezer , 2013. msgid "" msgstr "" -"Project-Id-Version: bash 3.2\n" +"Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" -"PO-Revision-Date: 2006-10-30 20:00+0200\n" -"Last-Translator: Nilgün Belma Bugüner \n" +"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"PO-Revision-Date: 2013-03-08 19:55+0100\n" +"Last-Translator: Volkan Gezer \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.1\n" +"X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: arrayfunc.c:51 +#: arrayfunc.c:50 msgid "bad array subscript" msgstr "hatalı dizi indisi" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:313 builtins/declare.def:487 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" +msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez" -#: arrayfunc.c:513 -#, fuzzy, c-format +#: arrayfunc.c:480 +#, c-format msgid "%s: invalid associative array key" -msgstr "%s: eylem adı geçersiz" +msgstr "%s: geçersiz ilişkisel dizi anahtarı" -#: arrayfunc.c:515 +#: arrayfunc.c:482 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: sayısal olmayan indise atama yapılamaz" -#: arrayfunc.c:557 +#: arrayfunc.c:518 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "" +msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır" -#: bashhist.c:388 +#: bashhist.c:387 #, c-format msgid "%s: cannot create: %s" msgstr "%s: oluşturulamıyor: %s" -#: bashline.c:3868 +#: bashline.c:3498 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor" -#: bashline.c:3955 +#: bashline.c:3584 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: boşluk olmayan ilk karakter `\"' değil" -#: bashline.c:3984 +#: bashline.c:3613 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s içinde kapatan `%1$c' yok" -#: bashline.c:4018 +#: bashline.c:3647 #, c-format msgid "%s: missing colon separator" msgstr "%s: ikinokta imi eksik" #: builtins/alias.def:132 -#, fuzzy, c-format +#, c-format msgid "`%s': invalid alias name" -msgstr "`%s': kısayol ismi geçersiz" +msgstr "`%s': geçersiz takma isim" -#: builtins/bind.def:123 builtins/bind.def:126 +#: builtins/bind.def:120 builtins/bind.def:123 msgid "line editing not enabled" -msgstr "" +msgstr "satır düzenleme etkin değil" -#: builtins/bind.def:212 +#: builtins/bind.def:206 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': kısayol ismi geçersiz" -#: builtins/bind.def:251 +#: builtins/bind.def:245 #, c-format msgid "%s: cannot read: %s" msgstr "%s: okunamıyor: %s" -#: builtins/bind.def:266 +#: builtins/bind.def:260 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': kısayol değiştirilemiyor" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:295 builtins/bind.def:325 #, c-format msgid "`%s': unknown function name" msgstr "`%s': işlev ismi bilinmiyor" -#: builtins/bind.def:312 +#: builtins/bind.def:303 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s için bir kısayol atanmamış.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:307 #, c-format msgid "%s can be invoked via " msgstr "%s bunun üzerinden çağrılabilir: " #: builtins/break.def:77 builtins/break.def:117 msgid "loop count" -msgstr "" +msgstr "döngü sayısı" #: builtins/break.def:137 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı" #: builtins/caller.def:133 -#, fuzzy msgid "" "Returns the context of the current subroutine call.\n" " \n" " Without EXPR, returns " -msgstr "Geçerli altyordam çağrısının bağlamı döner." +msgstr "" +"Geçerli altyordam çağrısının bağlamı döndürür.\n" +" \n" +" İFADE olmadan, şu döner " -#: builtins/cd.def:239 +#: builtins/cd.def:235 msgid "HOME not set" msgstr "HOME atanmamış" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "çok fazla argüman" - -#: builtins/cd.def:258 +#: builtins/cd.def:247 msgid "OLDPWD not set" msgstr "OLDPWD boş" #: builtins/common.c:101 #, c-format msgid "line %d: " -msgstr "" +msgstr "satır %d: " -#: builtins/common.c:139 error.c:265 -#, fuzzy, c-format +#: builtins/common.c:139 error.c:261 +#, c-format msgid "warning: " -msgstr "%s: uyarı: " +msgstr "uyarı: " #: builtins/common.c:153 -#, fuzzy, c-format +#, c-format msgid "%s: usage: " -msgstr "%s: uyarı: " +msgstr "%s: kullanım: " + +#: builtins/common.c:166 test.c:832 +msgid "too many arguments" +msgstr "çok fazla argüman" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:500 shell.c:782 #, c-format msgid "%s: option requires an argument" msgstr "%s: seçenek bir argüman gerektirir" @@ -162,7 +166,7 @@ msgstr "%s: sayısal argüman gerekli" msgid "%s: not found" msgstr "%s:yok" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:795 #, c-format msgid "%s: invalid option" msgstr "%s: seçenek geçersiz" @@ -172,22 +176,20 @@ msgstr "%s: seçenek geçersiz" msgid "%s: invalid option name" msgstr "%s: seçenek ismi geçersiz" -#: builtins/common.c:228 general.c:234 general.c:239 +#: builtins/common.c:228 general.c:231 general.c:236 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': geçerli bir belirteç değil" #: builtins/common.c:238 -#, fuzzy msgid "invalid octal number" -msgstr "geçersiz sinyal numarası" +msgstr "geçersiz sekizli sayı" #: builtins/common.c:240 -#, fuzzy msgid "invalid hex number" -msgstr "geçersiz sayı" +msgstr "geçersiz onaltılık sayı" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1362 msgid "invalid number" msgstr "geçersiz sayı" @@ -201,7 +203,7 @@ msgstr "%s: sinyal belirtimi geçersiz" 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:264 error.c:458 +#: builtins/common.c:264 error.c:454 #, c-format msgid "%s: readonly variable" msgstr "%s: salt okunur değişken" @@ -256,12 +258,12 @@ msgstr "yazma hatası: %s" #: builtins/common.c:329 #, c-format msgid "error setting terminal attributes: %s" -msgstr "" +msgstr "uçbirim nitelikleri ayarlanırken hata: %s" #: builtins/common.c:331 #, c-format msgid "error getting terminal attributes: %s" -msgstr "" +msgstr "uçbirim nitelikleri alınırken hata: %s" #: builtins/common.c:563 #, c-format @@ -273,28 +275,28 @@ msgstr "%s: geçerli dizin alınırken hata: %s: %s\n" msgid "%s: ambiguous job spec" msgstr "%s: iş belirtimi belirsiz" -#: builtins/complete.def:277 +#: builtins/complete.def:276 #, c-format msgid "%s: invalid action name" msgstr "%s: eylem adı geçersiz" -#: builtins/complete.def:450 builtins/complete.def:645 -#: builtins/complete.def:855 +#: builtins/complete.def:449 builtins/complete.def:644 +#: builtins/complete.def:853 #, c-format msgid "%s: no completion specification" msgstr "%s: tamamlama belirtimi yok" -#: builtins/complete.def:697 +#: builtins/complete.def:696 msgid "warning: -F option may not work as you expect" msgstr "uyarı: -F seçeneği umduğunuz gibi çalışmayabilir" -#: builtins/complete.def:699 +#: builtins/complete.def:698 msgid "warning: -C option may not work as you expect" msgstr "uyarı: -C seçeneği umduğunuz gibi çalışmayabilir" -#: builtins/complete.def:828 +#: builtins/complete.def:826 msgid "not currently executing completion function" -msgstr "" +msgstr "şuan tamamlama işlevi çalıştırılmıyor" #: builtins/declare.def:124 msgid "can only be used in a function" @@ -304,7 +306,7 @@ msgstr "sadece bir işlevde kullanılabilir" msgid "cannot use `-f' to make functions" msgstr "işlev yapmak için `-f' kullanılamaz" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:378 execute_cmd.c:5105 #, c-format msgid "%s: readonly function" msgstr "%s: salt okunur işlev" @@ -314,10 +316,10 @@ msgstr "%s: salt okunur işlev" msgid "%s: cannot destroy array variables in this way" msgstr "%s: dizi değişkenleri bu yolla iptal edilemez" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:481 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" +msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez" #: builtins/enable.def:137 builtins/enable.def:145 msgid "dynamic loading not available" @@ -343,8 +345,8 @@ msgstr "%s: özdevimli olarak yüklenmemiş" msgid "%s: cannot delete: %s" msgstr "%s: silinemiyor: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 +#: shell.c:1457 #, c-format msgid "%s: is a directory" msgstr "%s: bir dizin" @@ -359,7 +361,8 @@ msgstr "%s: bir dosya değil" msgid "%s: file is too large" msgstr "%s: dosya çok büyük" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 +#: shell.c:1467 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ikili dosya çalıştırılamıyor" @@ -372,7 +375,7 @@ msgstr "%s: çalıştırılamıyor: %s" #: builtins/exit.def:65 #, c-format msgid "logout\n" -msgstr "" +msgstr "çıkış\n" #: builtins/exit.def:88 msgid "not login shell: use `exit'" @@ -384,9 +387,9 @@ msgid "There are stopped jobs.\n" msgstr "Durmuş işler var.\n" #: builtins/exit.def:122 -#, fuzzy, c-format +#, c-format msgid "There are running jobs.\n" -msgstr "Durmuş işler var.\n" +msgstr "Çalışan görevler mevcut.\n" #: builtins/fc.def:262 msgid "no command found" @@ -403,7 +406,7 @@ msgstr "%s: geçici dosya açılamıyor: %s" #: builtins/fg_bg.def:149 builtins/jobs.def:282 msgid "current" -msgstr "" +msgstr "şimdiki" #: builtins/fg_bg.def:158 #, c-format @@ -430,24 +433,21 @@ msgid "%s: hash table empty\n" msgstr "%s: çitleme tablosu boş\n" #: builtins/hash.def:245 -#, fuzzy, c-format +#, c-format msgid "hits\tcommand\n" -msgstr "son komut: %s\n" +msgstr "eşleşme\tkomut\n" #: builtins/help.def:130 -#, fuzzy, c-format +#, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" -msgstr[0] "Bu anahtar sözcüğe uygun kabuk komutları: `" -msgstr[1] "Bu anahtar sözcüğe uygun kabuk komutları: `" +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:168 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da " -"`info %s'.yazmayı deneyebilirsiniz." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da `info %s'.yazmayı deneyebilirsiniz." #: builtins/help.def:185 #, c-format @@ -482,15 +482,15 @@ msgstr "tek bir -anrw kullanılabilir" msgid "history position" msgstr "geçmiş konumu" -#: builtins/history.def:366 +#: builtins/history.def:365 #, c-format msgid "%s: history expansion failed" msgstr "%s: geçmiş yorumlaması başarısız" #: builtins/inlib.def:71 -#, fuzzy, c-format +#, c-format msgid "%s: inlib failed" -msgstr "%s: geçmiş yorumlaması başarısız" +msgstr "%s: inlib başarısız" #: builtins/jobs.def:109 msgid "no other options allowed with `-x'" @@ -505,77 +505,76 @@ msgstr "%s: argümanlar süreç veya iş kimlikleri olmalı" msgid "Unknown error" msgstr "Bilinmeyen hata" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 msgid "expression expected" msgstr "ifade bekleniyordu" #: builtins/mapfile.def:172 -#, fuzzy, c-format +#, c-format msgid "%s: not an indexed array" -msgstr "%s: bir dizi değişkeni değil" +msgstr "%s: bir sıralı dizi değil" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:256 builtins/read.def:279 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: dosya tanıtıcı belirtimi geçersiz" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:264 builtins/read.def:286 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: dosya tanıtıcı geçersiz: %s" #: builtins/mapfile.def:273 builtins/mapfile.def:311 -#, fuzzy, c-format +#, c-format msgid "%s: invalid line count" -msgstr "%s: seçenek geçersiz" +msgstr "%s: geçersiz satır sayısı" #: builtins/mapfile.def:284 -#, fuzzy, c-format +#, c-format msgid "%s: invalid array origin" -msgstr "%s: seçenek geçersiz" +msgstr "%s: geçersiz dizi kökeni" #: builtins/mapfile.def:301 -#, fuzzy, c-format +#, c-format msgid "%s: invalid callback quantum" -msgstr "%s: eylem adı geçersiz" +msgstr "%s: geçersiz geri çağırım niceliği" #: builtins/mapfile.def:333 -#, fuzzy msgid "empty array variable name" -msgstr "%s: bir dizi değişkeni değil" +msgstr "boş bir dizi değişken adı" #: builtins/mapfile.def:354 msgid "array variable support required" -msgstr "" +msgstr "dizi değişken desteği gerekli" -#: builtins/printf.def:397 +#: builtins/printf.def:394 #, c-format msgid "`%s': missing format character" msgstr "`%s': biçim karakteri eksik" -#: builtins/printf.def:451 -#, fuzzy, c-format +#: builtins/printf.def:448 +#, c-format msgid "`%c': invalid time format specification" -msgstr "%s: zamanaşımı belirtimi geçersiz" +msgstr "`%c': geçersiz zaman biçimi belirtimi" -#: builtins/printf.def:647 +#: builtins/printf.def:635 #, c-format msgid "`%c': invalid format character" msgstr "`%c': biçim karakteri geçersiz" -#: builtins/printf.def:673 -#, fuzzy, c-format +#: builtins/printf.def:662 +#, c-format msgid "warning: %s: %s" -msgstr "%s: uyarı: " +msgstr "uyarı: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:840 msgid "missing hex digit for \\x" msgstr "\\x için onaltılık rakam eksik" -#: builtins/printf.def:869 -#, fuzzy, c-format +#: builtins/printf.def:855 +#, c-format msgid "missing unicode digit for \\%c" -msgstr "\\x için onaltılık rakam eksik" +msgstr "evrensel kod rakamı eksik \\%c" #: builtins/pushd.def:195 msgid "no other directory" @@ -587,15 +586,13 @@ msgstr "" #: builtins/pushd.def:506 msgid "directory stack empty" -msgstr "" +msgstr "dizin yığını boş" #: builtins/pushd.def:508 -#, fuzzy msgid "directory stack index" -msgstr "özyineleme yığıtı alttan taştı" +msgstr "dizin yığını indisi" #: builtins/pushd.def:683 -#, fuzzy msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -610,30 +607,30 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"\rdirs [-clpv] [+N] [-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." +"Geçerli hatırlanan dizinlerin listesini görüntüler. Dizinler\n" +" listeye yollarını `pushd' komutu ile bulurlar; ve liste boyunca\n" +" yedeği `popd' komutu ile alabilirsiniz.\n" +" \n" +" Seçenekler:\n" +" -c\tögelerin tümünü silerek dizin yığınını temizle\n" +" -l\tev dizininize göreceli dizinlerin yaklaşık işareti\n" +" \tile başlayan sürümlerini yazdırma\n" +" -p\tdizin yığınını her satırda bir girdi ile yazdır\n" +" -v\tdizin yığınını, yığındaki konumu ile her satıra\n" +" \tön ek yapılmış bir girişi yazdır\n" +" \n" +" Argümanlar:\n" +" +N\tDizinler tarafından gösterilen listenin solundan başlayarak\n" +" \tN'inci girdiyi gösterir. Seçenek kullanılmadığında sıfırdan başlar.\n" +" \n" +" -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:705 #, fuzzy @@ -669,7 +666,7 @@ msgstr "" " 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" +" -N (`dirs' tarafından gösterilen listenin s ağından saymaya\n" " sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n" " yığıtı döndürür.\n" "\n" @@ -716,17 +713,17 @@ msgstr "" " engeller, böylece sadece yığıt değiştirilmiş olur. \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins/read.def:272 +#: builtins/read.def:252 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: zamanaşımı belirtimi geçersiz" -#: builtins/read.def:644 +#: builtins/read.def:588 #, c-format msgid "read error: %d: %s" msgstr "okuma hatası: %d: %s" -#: builtins/return.def:75 +#: builtins/return.def:73 msgid "can only `return' from a function or sourced script" msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir" @@ -734,17 +731,17 @@ msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir" 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:812 +#: builtins/set.def:808 #, c-format msgid "%s: cannot unset" msgstr "%s: unset yapılamaz" -#: builtins/set.def:829 +#: builtins/set.def:815 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s:unset yapılamaz: %s salt okunur" -#: builtins/set.def:841 +#: builtins/set.def:826 #, c-format msgid "%s: not an array variable" msgstr "%s: bir dizi değişkeni değil" @@ -758,11 +755,11 @@ msgstr "%s: bir işlev değil" msgid "shift count" msgstr "shift sayısı" -#: builtins/shopt.def:277 +#: builtins/shopt.def:264 msgid "cannot set and unset shell options simultaneously" msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez" -#: builtins/shopt.def:342 +#: builtins/shopt.def:329 #, c-format msgid "%s: invalid shell option name" msgstr "%s: kabuk seçenek ismi geçersiz" @@ -804,7 +801,7 @@ msgstr "%s bir işlevdir\n" msgid "%s is a shell builtin\n" msgstr "%s bir kabuk yerleşiğidir\n" -#: builtins/type.def:317 builtins/type.def:393 +#: builtins/type.def:317 builtins/type.def:391 #, c-format msgid "%s is %s\n" msgstr "%s %s'dir\n" @@ -814,26 +811,26 @@ msgstr "%s %s'dir\n" msgid "%s is hashed (%s)\n" msgstr "%s çitilmiş (%s)\n" -#: builtins/ulimit.def:379 +#: builtins/ulimit.def:376 #, c-format msgid "%s: invalid limit argument" msgstr "%s: sınırlama argümanı geçersiz" -#: builtins/ulimit.def:405 +#: builtins/ulimit.def:402 #, c-format msgid "`%c': bad command" msgstr "`%c': hatalı komut" -#: builtins/ulimit.def:434 +#: builtins/ulimit.def:431 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: sınır alınamıyor: %s" -#: builtins/ulimit.def:460 +#: builtins/ulimit.def:457 msgid "limit" -msgstr "" +msgstr "sınır" -#: builtins/ulimit.def:472 builtins/ulimit.def:772 +#: builtins/ulimit.def:469 builtins/ulimit.def:769 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: sınır değiştirilemiyor: %s" @@ -852,9 +849,9 @@ 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:325 error.c:327 error.c:329 +#: error.c:90 error.c:321 error.c:323 error.c:325 msgid " line " -msgstr "" +msgstr " satır " #: error.c:165 #, c-format @@ -866,23 +863,23 @@ msgstr "son komut: %s\n" msgid "Aborting..." msgstr "Çıkılıyor..." -#: error.c:410 +#: error.c:406 msgid "unknown command error" msgstr "bilinmeyen komut hatası" -#: error.c:411 +#: error.c:407 msgid "bad command type" msgstr "hatalı komut türü" -#: error.c:412 +#: error.c:408 msgid "bad connector" msgstr "hatalı bağlantı" -#: error.c:413 +#: error.c:409 msgid "bad jump" msgstr "hatalı sıçrama" -#: error.c:451 +#: error.c:447 #, c-format msgid "%s: unbound variable" msgstr "%s: bağlanmamış değişken" @@ -897,284 +894,267 @@ msgstr "\agirdi beklerken zamanaşımı: auto-logout\n" msgid "cannot redirect standard input from /dev/null: %s" msgstr "/dev/null'dan standart girdiye yönlendirme yapılamaz: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1168 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz" -#: execute_cmd.c:2240 -#, fuzzy +#: execute_cmd.c:2121 msgid "pipe error" -msgstr "yazma hatası: %s" +msgstr "iletişim tüneli hatası" -#: execute_cmd.c:4284 -#, c-format -msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "" - -#: execute_cmd.c:4777 +#: execute_cmd.c:4640 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız" -#: execute_cmd.c:4872 +#: execute_cmd.c:4735 #, c-format msgid "%s: command not found" msgstr "%s: komut yok" -#: execute_cmd.c:5098 -#, fuzzy, c-format +#: execute_cmd.c:4959 +#, c-format msgid "%s: %s" -msgstr "%s %s'dir\n" +msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:4995 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: hatalı yorumlayıcı" -#: execute_cmd.c:5172 -#, fuzzy, c-format -msgid "%s: cannot execute binary file: %s" -msgstr "%s: ikili dosya çalıştırılamıyor" - -#: execute_cmd.c:5244 -#, fuzzy, c-format -msgid "`%s': is a special builtin" -msgstr "%s bir kabuk yerleşiğidir\n" - -#: execute_cmd.c:5296 +#: execute_cmd.c:5144 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "fd %d, fd %d olarak yinelenemiyor" -#: expr.c:258 +#: expr.c:256 msgid "expression recursion level exceeded" msgstr "ifade özyineleme düzeyi aşıldı" -#: expr.c:282 +#: expr.c:280 msgid "recursion stack underflow" msgstr "özyineleme yığıtı alttan taştı" -#: expr.c:430 +#: expr.c:422 msgid "syntax error in expression" msgstr "ifadede sözdizimi hatası" -#: expr.c:474 +#: expr.c:463 msgid "attempted assignment to non-variable" msgstr "değişken olmayana atama yapmaya çalışıldı" -#: expr.c:493 expr.c:838 +#: expr.c:486 expr.c:491 expr.c:807 msgid "division by 0" msgstr "sıfırla bölme" -#: expr.c:540 +#: expr.c:517 msgid "bug: bad expassign token" msgstr "yazılım hatası: bad expassign token" -#: expr.c:589 +#: expr.c:564 msgid "`:' expected for conditional expression" msgstr "koşullu ifade için `:' bekleniyordu" -#: expr.c:895 +#: expr.c:832 msgid "exponent less than 0" msgstr "üs sıfırdan küçük" -#: expr.c:948 +#: expr.c:887 msgid "identifier expected after pre-increment or pre-decrement" msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu" -#: expr.c:973 +#: expr.c:910 msgid "missing `)'" msgstr "eksik `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:959 expr.c:1282 msgid "syntax error: operand expected" msgstr "sözdizimi hatası: terim umuluyordu" -#: expr.c:1353 +#: expr.c:1284 msgid "syntax error: invalid arithmetic operator" msgstr "sözdizimi hatası: geçersiz aritmetik işleci" -#: expr.c:1377 +#: expr.c:1308 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "" +msgstr "%s%s%s: %s (hata belirtisi \"%s\")" -#: expr.c:1435 +#: expr.c:1366 msgid "invalid arithmetic base" msgstr "geçersiz sayı tabanı" -#: expr.c:1455 +#: expr.c:1386 msgid "value too great for base" msgstr "değer taban için fazla büyük" -#: expr.c:1504 -#, fuzzy, c-format +#: expr.c:1435 +#, c-format msgid "%s: expression error\n" -msgstr "%s: tamsayı ifadesi bekleniyordu" +msgstr "%s: ifade hatası\n" #: general.c:61 msgid "getcwd: cannot access parent directories" msgstr "getcwd: üst dizinlere erişilemiyor" -#: input.c:99 subst.c:5094 -#, fuzzy, c-format +#: input.c:94 subst.c:5082 +#, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor" -#: input.c:265 +#: input.c:260 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" -"fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" +msgstr "fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor" -#: input.c:273 +#: input.c:268 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: yeni fd %d için tampon zaten var" -#: jobs.c:470 +#: jobs.c:468 msgid "start_pipeline: pgrp pipe" -msgstr "" +msgstr "start_pipeline: pgrp iletişim tüneli" -#: jobs.c:891 +#: jobs.c:889 #, 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:1009 +#: jobs.c:1007 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "durdurulan %2$ld süreç gruplu iş %1$d siliniyor" -#: jobs.c:1114 +#: jobs.c:1112 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" -msgstr "" +msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde" -#: jobs.c:1117 +#: jobs.c:1115 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" +msgstr "add_process: %5ld (%s) program kimliği hala canlı olarak işaretli" -#: jobs.c:1432 +#: jobs.c:1430 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: böyle bir pid yok" -#: jobs.c:1447 +#: jobs.c:1445 #, c-format msgid "Signal %d" -msgstr "" +msgstr "Sinyal %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1459 jobs.c:1484 msgid "Done" -msgstr "" +msgstr "Bitti" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1464 siglist.c:123 msgid "Stopped" -msgstr "" +msgstr "Durdu" -#: jobs.c:1470 +#: jobs.c:1468 #, c-format msgid "Stopped(%s)" -msgstr "" +msgstr "Durdu(%s)" -#: jobs.c:1474 +#: jobs.c:1472 msgid "Running" -msgstr "" +msgstr "Çalışıyor" -#: jobs.c:1488 +#: jobs.c:1486 #, c-format msgid "Done(%d)" -msgstr "" +msgstr "Bitti(%d)" -#: jobs.c:1490 +#: jobs.c:1488 #, c-format msgid "Exit %d" -msgstr "" +msgstr "Çıkış %d" -#: jobs.c:1493 +#: jobs.c:1491 msgid "Unknown status" -msgstr "" +msgstr "Bilinmeyen durum" -#: jobs.c:1580 +#: jobs.c:1578 #, c-format msgid "(core dumped) " -msgstr "" +msgstr "(çekirdek döküldü)" -#: jobs.c:1599 +#: jobs.c:1597 #, c-format msgid " (wd: %s)" -msgstr "" +msgstr " (wd: %s)" -#: jobs.c:1807 +#: jobs.c:1805 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "" +msgstr "alt setpgid (şuradan: %ld şuraya: %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2133 nojobs.c:585 #, 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:2372 +#: jobs.c:2360 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: süreç %ld için kayıt yok" -#: jobs.c:2653 +#: jobs.c:2637 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: iş %d durdu" -#: jobs.c:2875 +#: jobs.c:2859 #, c-format msgid "%s: job has terminated" msgstr "%s: iş sonlanmış" -#: jobs.c:2884 +#: jobs.c:2868 #, c-format msgid "%s: job %d already in background" msgstr "%s: iş %d zaten artalanda" -#: jobs.c:3105 +#: jobs.c:3089 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor" -#: jobs.c:3571 -#, fuzzy, c-format +#: jobs.c:3538 +#, c-format msgid "%s: line %d: " -msgstr "%s: uyarı: " +msgstr "%s: satır %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3552 nojobs.c:814 #, c-format msgid " (core dumped)" -msgstr "" +msgstr " (çekirdek döküldü)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3564 jobs.c:3577 #, c-format msgid "(wd now: %s)\n" -msgstr "" +msgstr "(wd artık: %s)\n" -#: jobs.c:3642 +#: jobs.c:3609 msgid "initialize_job_control: getpgrp failed" -msgstr "" +msgstr "initialize_job_control: getpgrp başarısız" -#: jobs.c:3703 +#: jobs.c:3669 msgid "initialize_job_control: line discipline" -msgstr "" +msgstr "initialize_job_control: satır düzeni" -#: jobs.c:3713 +#: jobs.c:3679 msgid "initialize_job_control: setpgid" -msgstr "" +msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3707 #, c-format msgid "cannot set terminal process group (%d)" -msgstr "" +msgstr "uçbirim süreç grunu (%d) ayarlanamaz" -#: jobs.c:3748 +#: jobs.c:3712 msgid "no job control in this shell" msgstr "bu kabukta iş denetimi yok" @@ -1193,9 +1173,8 @@ msgstr "" "malloc: %s:%d: kanaat doğrulaması battı\r\n" #: lib/malloc/malloc.c:313 -#, fuzzy msgid "unknown" -msgstr "%s: konak bilinmiyor" +msgstr "bilinmeyen" #: lib/malloc/malloc.c:797 msgid "malloc: block on free list clobbered" @@ -1244,7 +1223,7 @@ msgstr "register_alloc: %p zaten ayrılmış olarak tabloda değil mi?\n" msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p zaten serbest bırakılmış olarak tabloda değil mi?\n" -#: lib/sh/fmtulong.c:102 +#: lib/sh/fmtulong.c:101 msgid "invalid base" msgstr "geçersiz taban" @@ -1267,25 +1246,25 @@ msgstr "%s: hatalı ağ yolu belirtimi" msgid "network operations not supported" msgstr "desteklenmeyen ağ işlemleri" -#: locale.c:204 +#: locale.c:192 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" -msgstr "" +msgstr "setlocale: LC_ALL: (%s) diline değiştirilemedi" -#: locale.c:206 +#: locale.c:194 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" -msgstr "" +msgstr "setlocale: LC_ALL: şu dile (%s) değiştirilemedi: %s" -#: locale.c:263 -#, fuzzy, c-format +#: locale.c:247 +#, c-format msgid "setlocale: %s: cannot change locale (%s)" -msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor" +msgstr "setlocale: %s: yerel (%s) değiştirilemiyor" -#: locale.c:265 -#, fuzzy, c-format +#: locale.c:249 +#, c-format msgid "setlocale: %s: cannot change locale (%s): %s" -msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor" +msgstr "setlocale: %s: yerel (%s) değiştirilemiyor: %s" #: mailcheck.c:433 msgid "You have mail in $_" @@ -1313,118 +1292,118 @@ msgstr "sözdizimi hatası: `;' beklenmiyordu" msgid "syntax error: `((%s))'" msgstr "sözdizimi hatası: `((%s))'" -#: make_cmd.c:578 +#: make_cmd.c:575 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: hatalı yönerge türü %d" -#: make_cmd.c:662 +#: make_cmd.c:659 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" +msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')" -#: make_cmd.c:759 +#: 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:3173 parse.y:3448 +#: parse.y:3173 parse.y:3444 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "`%c' için eşleşme aranırken beklenmedik dosya sonu" -#: parse.y:4038 +#: parse.y:4025 msgid "unexpected EOF while looking for `]]'" msgstr "`]]' aranırken beklenmedik dosya sonu" -#: parse.y:4043 +#: parse.y:4030 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'" -#: parse.y:4047 +#: parse.y:4034 msgid "syntax error in conditional expression" msgstr "koşullu ifadede sözdizimi hatası" -#: parse.y:4125 +#: parse.y:4112 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "beklenmedik dizgecik `%s', `)' umuluyordu" -#: parse.y:4129 +#: parse.y:4116 msgid "expected `)'" msgstr "`)' umuluyordu" -#: parse.y:4157 +#: parse.y:4144 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "koşullu tek terimli işlece beklenmedik argüman `%s'" -#: parse.y:4161 +#: parse.y:4148 msgid "unexpected argument to conditional unary operator" msgstr "koşullu tek terimli işlece beklenmedik argüman" -#: parse.y:4207 +#: parse.y:4194 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu" -#: parse.y:4211 +#: parse.y:4198 msgid "conditional binary operator expected" msgstr "koşullu iki terimli işleç umuluyordu" -#: parse.y:4233 +#: parse.y:4220 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "koşullu iki terimli işlece beklenmedik argüman `%s'" -#: parse.y:4237 +#: parse.y:4224 msgid "unexpected argument to conditional binary operator" msgstr "koşullu iki terimli işlece beklenmedik argüman" -#: parse.y:4248 +#: parse.y:4235 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik `%c'" -#: parse.y:4251 +#: parse.y:4238 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik `%s'" -#: parse.y:4255 +#: parse.y:4242 #, c-format msgid "unexpected token %d in conditional command" msgstr "koşullu komutta beklenmeyen dizgecik %d" -#: parse.y:5590 +#: parse.y:5566 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası" -#: parse.y:5608 +#: parse.y:5584 #, c-format msgid "syntax error near `%s'" msgstr "`%s' yakınında sözdizimi hatası" -#: parse.y:5618 +#: parse.y:5594 msgid "syntax error: unexpected end of file" msgstr "sözdizimi hatası: beklenmeyen dosya sonu" -#: parse.y:5618 +#: parse.y:5594 msgid "syntax error" msgstr "sözdizimi hatası" -#: parse.y:5680 +#: parse.y:5656 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Kabuğu bırakmak için \"%s\" kullanın.\n" -#: parse.y:5842 +#: parse.y:5818 msgid "unexpected EOF while looking for matching `)'" msgstr "`)' için eşleşme aranırken beklenmedik dosya sonu" -#: pcomplete.c:1079 +#: pcomplete.c:1030 #, c-format msgid "completion: function `%s' not found" msgstr "completion: `%s' işlevi yok" @@ -1434,26 +1413,26 @@ msgstr "completion: `%s' işlevi yok" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:296 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: hatalı bağlayıcı `%d'" -#: print_cmd.c:373 -#, fuzzy, c-format +#: print_cmd.c:368 +#, c-format msgid "xtrace_set: %d: invalid file descriptor" -msgstr "%d: dosya tanıtıcı geçersiz: %s" +msgstr "xtrace_set: %d: geçersiz dosya tanımlayıcısı" -#: print_cmd.c:378 +#: print_cmd.c:373 msgid "xtrace_set: NULL file pointer" -msgstr "" +msgstr "xtrace_set: BOŞ dosya işaretçisi" -#: print_cmd.c:382 +#: print_cmd.c:377 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" -msgstr "" +msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1478 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': geçersiz biçim karakteri" @@ -1478,46 +1457,46 @@ msgid "%s: restricted: cannot redirect output" msgstr "%s: kısıtlı: çıktı yönlendirilemiyor" #: redir.c:192 -#, fuzzy, c-format +#, 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 -#, fuzzy, c-format +#, c-format msgid "%s: cannot assign fd to variable" -msgstr "%s: dizi üyesine liste atanamaz" +msgstr "%s: fd değişkene atanamıyor" #: redir.c:548 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port ağ olmaksızın desteklenmiyor" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:818 redir.c:930 redir.c:993 redir.c:1136 msgid "redirection error: cannot duplicate fd" msgstr "yönlendirme hatası: fd yinelenemiyor" -#: shell.c:337 +#: shell.c:333 msgid "could not find /tmp, please create!" msgstr "/tmp bulunamadı, lütfen oluşturun!" -#: shell.c:341 +#: shell.c:337 msgid "/tmp must be a valid directory name" msgstr "/tmp geçerli bir dizinin adı olmalıdır" -#: shell.c:888 +#: shell.c:884 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: geçersiz seçenek" -#: shell.c:1662 +#: shell.c:1652 msgid "I have no name!" msgstr "Hiç ismim yok!" -#: shell.c:1807 +#: shell.c:1795 #, c-format msgid "GNU bash, version %s-(%s)\n" -msgstr "" +msgstr "GNU bash, sürüm %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1796 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1526,296 +1505,289 @@ 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:1810 +#: shell.c:1798 msgid "GNU long options:\n" msgstr "GNU uzun seçenekleri:\n" -#: shell.c:1814 +#: shell.c:1802 msgid "Shell options:\n" msgstr "Kabuk seçenekleri:\n" -#: shell.c:1815 +#: shell.c:1803 msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD veya -c KOMUT veya -O shopt_seçeneği\t(sadece çağrı için)\n" -#: shell.c:1830 +#: shell.c:1818 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ya da -o seçeneği\n" -#: shell.c:1836 +#: shell.c:1824 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' " -"yazın.\n" +msgstr "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' yazın.\n" -#: shell.c:1837 +#: shell.c:1825 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "" -"Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" +msgstr "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n" -#: shell.c:1838 +#: shell.c:1826 #, 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" -#: sig.c:647 +#: sig.c:638 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: geçersiz işlem" #: siglist.c:48 msgid "Bogus signal" -msgstr "" +msgstr "Bogus sinyali" #: siglist.c:51 msgid "Hangup" -msgstr "" +msgstr "Engelle" #: siglist.c:55 msgid "Interrupt" -msgstr "" +msgstr "Kes" #: siglist.c:59 msgid "Quit" -msgstr "" +msgstr "Çık" #: siglist.c:63 msgid "Illegal instruction" -msgstr "" +msgstr "Geçersiz talimat" #: siglist.c:67 msgid "BPT trace/trap" -msgstr "" +msgstr "BPT izle/tuzak" #: siglist.c:75 msgid "ABORT instruction" -msgstr "" +msgstr "Talimatı DURDUR" #: siglist.c:79 msgid "EMT instruction" -msgstr "" +msgstr "EMT talimatı" #: siglist.c:83 msgid "Floating point exception" -msgstr "" +msgstr "Kayan nokta istisnası" #: siglist.c:87 msgid "Killed" -msgstr "" +msgstr "Öldürüldü" #: siglist.c:91 -#, fuzzy msgid "Bus error" -msgstr "sözdizimi hatası" +msgstr "Veriyolu hatası" #: siglist.c:95 msgid "Segmentation fault" -msgstr "" +msgstr "Bölünme hatası" #: siglist.c:99 msgid "Bad system call" -msgstr "" +msgstr "Bozuk sistem çağırımı" #: siglist.c:103 msgid "Broken pipe" -msgstr "" +msgstr "Bozuk iletişim tüneli" #: siglist.c:107 msgid "Alarm clock" -msgstr "" +msgstr "Çalar saat" #: siglist.c:111 -#, fuzzy msgid "Terminated" -msgstr "kısıtlı" +msgstr "Sonlandırıldı" #: siglist.c:115 msgid "Urgent IO condition" -msgstr "" +msgstr "Acil GÇ koşulu" #: siglist.c:119 msgid "Stopped (signal)" -msgstr "" +msgstr "Durduruldu (sinyal)" #: siglist.c:127 msgid "Continue" -msgstr "" +msgstr "Devam et" #: siglist.c:135 msgid "Child death or stop" -msgstr "" +msgstr "Alt ölümü veya durdurulma" #: siglist.c:139 msgid "Stopped (tty input)" -msgstr "" +msgstr "Durduruldu (tty girişi)" #: siglist.c:143 msgid "Stopped (tty output)" -msgstr "" +msgstr "Durduruldu (tty çıkışı)" #: siglist.c:147 msgid "I/O ready" -msgstr "" +msgstr "G/Ç hazır" #: siglist.c:151 msgid "CPU limit" -msgstr "" +msgstr "CPU sınırı" #: siglist.c:155 msgid "File limit" -msgstr "" +msgstr "Dosya sınırı" #: siglist.c:159 msgid "Alarm (virtual)" -msgstr "" +msgstr "Alarm (sanal)" #: siglist.c:163 msgid "Alarm (profile)" -msgstr "" +msgstr "Alarm (profil)" #: siglist.c:167 msgid "Window changed" -msgstr "" +msgstr "Pencere değiştirildi" #: siglist.c:171 msgid "Record lock" -msgstr "" +msgstr "Kayıt kilidi" #: siglist.c:175 msgid "User signal 1" -msgstr "" +msgstr "Kullanıcı sinyali 1" #: siglist.c:179 msgid "User signal 2" -msgstr "" +msgstr "Kullanıcı sinyali 2" #: siglist.c:183 msgid "HFT input data pending" -msgstr "" +msgstr "HFT girdi verisi bekliyor" #: siglist.c:187 msgid "power failure imminent" -msgstr "" +msgstr "yakın güç başarısızlığı" #: siglist.c:191 msgid "system crash imminent" -msgstr "" +msgstr "yakın sistem çökmesi" #: siglist.c:195 msgid "migrate process to another CPU" -msgstr "" +msgstr "süreci başka bir işlemciye aktar" #: siglist.c:199 msgid "programming error" -msgstr "" +msgstr "programlama hatası" #: siglist.c:203 msgid "HFT monitor mode granted" -msgstr "" +msgstr "HFT izleyici kipine geçildi" #: siglist.c:207 msgid "HFT monitor mode retracted" -msgstr "" +msgstr "HFT izleyici kipi kapatıldı" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "" +msgstr "HFT ses sırası tamamlandı" #: siglist.c:215 msgid "Information request" -msgstr "" +msgstr "Bilgi talebi" #: siglist.c:223 msgid "Unknown Signal #" -msgstr "" +msgstr "Bilinmeyen Sinyal #" #: siglist.c:225 #, c-format msgid "Unknown Signal #%d" -msgstr "" +msgstr "Bilinmeyen Sinyal #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1333 subst.c:1502 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" -#: subst.c:2801 +#: subst.c:2795 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: dizi üyesine liste atanamaz" -#: subst.c:4991 subst.c:5007 +#: subst.c:4979 subst.c:4995 msgid "cannot make pipe for process substitution" msgstr "süreç ikamesi için borulama yapılamıyor" -#: subst.c:5039 +#: subst.c:5027 msgid "cannot make child for process substitution" msgstr "süreç ikamesi için alt süreç yapılamıyor" -#: subst.c:5084 +#: subst.c:5072 #, c-format msgid "cannot open named pipe %s for reading" msgstr "isimli boru %s okumak için açılamıyor" -#: subst.c:5086 +#: subst.c:5074 #, c-format msgid "cannot open named pipe %s for writing" msgstr "isimli boru %s yazmak için açılamıyor" -#: subst.c:5104 +#: subst.c:5092 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "isimli boru %s fd %d olarak yinelenemiyor" -#: subst.c:5296 +#: subst.c:5284 msgid "cannot make pipe for command substitution" msgstr "komut ikamesi için boru yapılamıyor" -#: subst.c:5334 +#: subst.c:5322 msgid "cannot make child for command substitution" msgstr "komut ikamesi için alt süreç yapılamıyor" -#: subst.c:5351 +#: subst.c:5339 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: boru fd 1 olarak yinelenemiyor" -#: subst.c:5875 +#: subst.c:5859 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parametre boş ya da değer atanmamış" -#: subst.c:6141 subst.c:6156 +#: subst.c:6125 subst.c:6140 #, c-format msgid "%s: substring expression < 0" msgstr "%s: altdizge ifadesi < 0" -#: subst.c:7284 +#: subst.c:7271 #, c-format msgid "%s: bad substitution" msgstr "%s: hatalı ikame" -#: subst.c:7361 +#: subst.c:7347 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: bu yolla atama yapılmaz" -#: subst.c:7697 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" +#: subst.c:7684 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye zorlayacak" -#: subst.c:8165 -#, fuzzy, c-format +#: subst.c:8149 +#, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok" +msgstr "hatalı ikame: %s içinde kapatan \"`\" yok" -#: subst.c:9056 +#: subst.c:9036 #, c-format msgid "no match: %s" msgstr "eşleşme yok: %s" @@ -1852,479 +1824,446 @@ msgstr "%s: iki terimli işleci bekleniyordu" msgid "missing `]'" msgstr "eksik `]'" -#: trap.c:209 +#: trap.c:207 msgid "invalid signal number" msgstr "geçersiz sinyal numarası" -#: trap.c:329 +#: trap.c:337 #, 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:333 +#: trap.c:341 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek" -#: trap.c:379 +#: trap.c:393 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:hatalı sinyal %d" -#: variables.c:366 +#: variables.c:363 #, 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:764 +#: variables.c:755 #, 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:1941 +#: variables.c:1932 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:3192 +#: variables.c:3182 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:3437 -#, fuzzy, c-format +#: variables.c:3427 +#, c-format msgid "%s has null exportstr" -msgstr "%s: parametre boş ya da değer atanmamış" +msgstr "%s boş exportstr içeriyor" -#: variables.c:3442 variables.c:3451 +#: variables.c:3432 variables.c:3441 #, 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:3457 +#: variables.c:3447 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s için exportstr içinde `=' yok" -#: variables.c:3917 +#: variables.c:3891 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:3930 +#: variables.c:3904 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: genel değişkenler bağlamı yok" -#: variables.c:4004 +#: variables.c:3978 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" -"pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil" +msgstr "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil" -#: variables.c:4821 -#, fuzzy, c-format +#: variables.c:4786 +#, c-format msgid "%s: %s: cannot open as FILE" -msgstr "%s: açılamıyor: %s" +msgstr "%s: %s: DOSYA olarak açılamaz" -#: variables.c:4826 -#, fuzzy, c-format +#: variables.c:4791 +#, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "%d: dosya tanıtıcı geçersiz: %s" +msgstr "%s: %s: dosya izleme tanımlayıcısı için geçersiz değer" #: version.c:46 -#, fuzzy msgid "Copyright (C) 2011 Free Software Foundation, Inc." -msgstr "Copyright © 2006 Free Software Foundation, Inc.\n" +msgstr "Telif Hakkı (C) 2011 Free Software Foundation, Inc." #: version.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Lisans GPLv3+: GNU GPL sürüm 3 veya sonrası \n" #: version.c:86 version2.c:83 #, c-format msgid "GNU bash, version %s (%s)\n" -msgstr "" +msgstr "GNU bash, sürüm %s (%s)\n" #: version.c:91 version2.c:88 #, c-format msgid "This is free software; you are free to change and redistribute it.\n" -msgstr "" +msgstr "Bu ücretsiz bir yazılımdır; değiştirmekte ve dağıtmakta özgürsünüz.\n" #: version.c:92 version2.c:89 #, c-format msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" +msgstr "İzin verilen yasalar kapsamında hiçbir GARANTİSİ BULUNMAMAKTADIR.\n" #: version2.c:86 -#, fuzzy, c-format +#, c-format msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright © 2006 Free Software Foundation, Inc.\n" +msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n" #: version2.c:87 #, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" +msgid "License GPLv2+: GNU GPL version 2 or later \n" +msgstr "Lisans GPLv2+: GNU GPL sürüm 2 veya sonrası \n" #: xmalloc.c:91 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" +msgstr "%s: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" #: xmalloc.c:93 -#, fuzzy, c-format +#, c-format msgid "%s: cannot allocate %lu bytes" -msgstr "xmalloc: %lu bayt ayrılamıyor" +msgstr "%s: %lu bayt ayrılamıyor" #: xmalloc.c:163 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" -msgstr "xmalloc: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" +msgstr "%s: %s:%d: %lu bayt ayrılamıyor (%lu bayt ayrıldı)" #: xmalloc.c:165 -#, fuzzy, c-format +#, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" -msgstr "xmalloc: %s:%d: %lu bayt ayrılamıyor" +msgstr "%s: %s:%d: %lu bayt ayrılamıyor" #: builtins.c:43 msgid "alias [-p] [name[=value] ... ]" -msgstr "" +msgstr "alias [-p] [isim[=değer] ... ]" #: builtins.c:47 msgid "unalias [-a] name [name ...]" -msgstr "" +msgstr "unalias [-a] isim [isim ...]" #: builtins.c:51 -msgid "" -"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-" -"x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "" +msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" +msgstr "bind [-lpvsPVS] [-m anahtar eşleniği] [-f dosyaadı] [-q isim] [-u isim] [-r anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-işlevi veya satırokuma-komutu]" #: builtins.c:54 msgid "break [n]" -msgstr "" +msgstr "break [n]" #: builtins.c:56 msgid "continue [n]" -msgstr "" +msgstr "continue [n]" #: builtins.c:58 msgid "builtin [shell-builtin [arg ...]]" -msgstr "" +msgstr "builtin [kabuk-dahili [arg ...]]" #: builtins.c:61 msgid "caller [expr]" -msgstr "" +msgstr "caller [ifade]" #: builtins.c:64 msgid "cd [-L|[-P [-e]]] [dir]" -msgstr "" +msgstr "cd [-L|[-P [-e]]] [dizin]" #: builtins.c:66 msgid "pwd [-LP]" -msgstr "" +msgstr "pwd [-LP]" #: builtins.c:68 msgid ":" -msgstr "" +msgstr ":" #: builtins.c:70 msgid "true" -msgstr "" +msgstr "true" #: builtins.c:72 msgid "false" -msgstr "" +msgstr "false" #: builtins.c:74 msgid "command [-pVv] command [arg ...]" -msgstr "" +msgstr "command [-pVv] command [arg ...]" #: builtins.c:76 msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" -msgstr "" +msgstr "declare [-aAfFgilrtux] [-p] [isim[=değer] ...]" #: builtins.c:78 msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..." -msgstr "" +msgstr "typeset [-aAfFgilrtux] [-p] isim[=değer] ..." #: builtins.c:80 msgid "local [option] name[=value] ..." -msgstr "" +msgstr "local [seçenek] isim[=değer] ..." #: builtins.c:83 msgid "echo [-neE] [arg ...]" -msgstr "" +msgstr "echo [-neE] [arg ...]" #: builtins.c:87 msgid "echo [-n] [arg ...]" -msgstr "" +msgstr "echo [-n] [arg ...]" #: builtins.c:90 msgid "enable [-a] [-dnps] [-f filename] [name ...]" -msgstr "" +msgstr "enable [-a] [-dnps] [-f dosyaadı] [isim ...]" #: builtins.c:92 msgid "eval [arg ...]" -msgstr "" +msgstr "eval [arg ...]" #: builtins.c:94 msgid "getopts optstring name [arg]" -msgstr "" +msgstr "getopts optstring isim [arg]" #: builtins.c:96 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "" +msgstr "exec [-cl] [-a isim] [komut [argümanlar ...]] [yönlendirme ...]" #: builtins.c:98 msgid "exit [n]" -msgstr "" +msgstr "exit [n]" #: builtins.c:100 msgid "logout [n]" -msgstr "" +msgstr "logout [n]" #: builtins.c:103 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" +msgstr "fc [-e ename] [-lnr] [ilk] [son] veya fc -s [pat=rep] [komut]" #: builtins.c:107 msgid "fg [job_spec]" -msgstr "" +msgstr "fg [görev_tan]" #: builtins.c:111 msgid "bg [job_spec ...]" -msgstr "" +msgstr "bg [görev_tan ...]" #: builtins.c:114 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" -msgstr "" +msgstr "hash [-lr] [-p yoladı] [-dt] [isim ...]" #: builtins.c:117 msgid "help [-dms] [pattern ...]" -msgstr "" +msgstr "help [-dms] [desen ...]" #: builtins.c:121 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d başlangıç] [n] veya history -anrw [dosyaadı] veya history -ps arg [arg...]" #: builtins.c:125 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "" +msgstr "jobs [-lnprs] [görevtan ...] veya jobs -x komut [argü]" #: builtins.c:129 msgid "disown [-h] [-ar] [jobspec ...]" -msgstr "" +msgstr "disown [-h] [-ar] [görevtan ...]" #: builtins.c:132 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l [sigspec]" #: builtins.c:134 msgid "let arg [arg ...]" -msgstr "" +msgstr "let arg [arg ...]" #: builtins.c:136 -msgid "" -"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " -"prompt] [-t timeout] [-u fd] [name ...]" -msgstr "" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a dizi] [-d sonlandırıcı] [-i metin] [-n nkarakter] [-N nkarakter] [-p istem] [-t zamanaşımı] [-u fd] [isim ...]" #: builtins.c:138 msgid "return [n]" -msgstr "" +msgstr "return [n]" #: builtins.c:140 msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" -msgstr "" +msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" #: builtins.c:142 msgid "unset [-f] [-v] [name ...]" -msgstr "" +msgstr "unset [-f] [-v] [isim ...]" #: builtins.c:144 msgid "export [-fn] [name[=value] ...] or export -p" -msgstr "" +msgstr "export [-fn] [isim[=değer] ...] veya export -p" #: builtins.c:146 msgid "readonly [-aAf] [name[=value] ...] or readonly -p" -msgstr "" +msgstr "readonly [-aAf] [isim[=değer] ...] veya readonly -p" #: builtins.c:148 -#, fuzzy msgid "shift [n]" -msgstr "shift sayısı" +msgstr "shift [n]" #: builtins.c:150 -#, fuzzy msgid "source filename [arguments]" -msgstr "dosya ismi argüman gerekir" +msgstr "source dosyaadı [argümanlar]" #: builtins.c:152 -#, fuzzy msgid ". filename [arguments]" -msgstr "dosya ismi argüman gerekir" +msgstr ". dosyaadı [argümanlar]" #: builtins.c:155 msgid "suspend [-f]" -msgstr "" +msgstr "suspend [-f]" #: builtins.c:158 msgid "test [expr]" -msgstr "" +msgstr "test [ifade]" #: builtins.c:160 msgid "[ arg... ]" -msgstr "" +msgstr "[ arg... ]" #: builtins.c:162 msgid "times" -msgstr "" +msgstr "times" #: builtins.c:164 msgid "trap [-lp] [[arg] signal_spec ...]" -msgstr "" +msgstr "trap [-lp] [[arg] sinyal_tan ...]" #: builtins.c:166 msgid "type [-afptP] name [name ...]" -msgstr "" +msgstr "type [-afptP] isim [isim ...]" #: builtins.c:169 -msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" -msgstr "" +msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +msgstr "ulimit [-SHacdefilmnpqrstuvx] [sınır]" #: builtins.c:172 msgid "umask [-p] [-S] [mode]" -msgstr "" +msgstr "umask [-p] [-S] [kip]" #: builtins.c:175 -msgid "wait [id ...]" -msgstr "" +msgid "wait [id]" +msgstr "wait [id]" #: builtins.c:179 msgid "wait [pid]" -msgstr "" +msgstr "wait [pid]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "" +msgstr "for İSİM [in KELİMELER ... ] ; do KOMUTLAR; done" #: builtins.c:184 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "" +msgstr "for (( ifade1; ifade2; ifade3 )); do KOMUTLAR; done" #: builtins.c:186 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "" +msgstr "select İSİM [in KELİMELER ... ;] do KOMUTLAR; done" #: builtins.c:188 msgid "time [-p] pipeline" -msgstr "" +msgstr "time [-p] zamantüneli" #: builtins.c:190 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "" +msgstr "case KELİME in [DESEN [| DESEN]...) KOMUTLAR ;;]... esac" #: builtins.c:192 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else KOMUTLAR; ] fi" #: builtins.c:194 msgid "while COMMANDS; do COMMANDS; done" -msgstr "" +msgstr "while KOMUTLAR; do KOMUTLAR; done" #: builtins.c:196 msgid "until COMMANDS; do COMMANDS; done" -msgstr "" +msgstr "until KOMUTLAR; do KOMUTLAR; done" #: builtins.c:198 msgid "coproc [NAME] command [redirections]" -msgstr "" +msgstr "coproc [isim] command [yönlendirmeler]" #: builtins.c:200 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "" +msgstr "function isim { KOMUTLAR ; } veya isim () { KOMUTLAR ; }" #: builtins.c:202 msgid "{ COMMANDS ; }" -msgstr "" +msgstr "{ KOMUTLAR ; }" #: builtins.c:204 msgid "job_spec [&]" -msgstr "" +msgstr "görev_tan [&]" #: builtins.c:206 -#, fuzzy msgid "(( expression ))" -msgstr "ifade bekleniyordu" +msgstr "(( ifade ))" #: builtins.c:208 -#, fuzzy msgid "[[ expression ]]" -msgstr "ifade bekleniyordu" +msgstr "[[ ifade ]]" #: builtins.c:210 msgid "variables - Names and meanings of some shell variables" -msgstr "" +msgstr "variables - Bazı kabuk değişkenlerinin isim ve anlamları" #: builtins.c:213 msgid "pushd [-n] [+N | -N | dir]" -msgstr "" +msgstr "pushd [-n] [+N | -N | dizin]" #: builtins.c:217 msgid "popd [-n] [+N | -N]" -msgstr "" +msgstr "popd [-n] [+N | -N]" #: builtins.c:221 msgid "dirs [-clpv] [+N] [-N]" -msgstr "" +msgstr "dirs [-clpv] [+N] [-N]" #: builtins.c:224 msgid "shopt [-pqsu] [-o] [optname ...]" -msgstr "" +msgstr "shopt [-pqsu] [-o] [optname ...]" #: builtins.c:226 msgid "printf [-v var] format [arguments]" -msgstr "" +msgstr "printf [-v var] biçim [argümanlar]" #: builtins.c:229 -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 "" +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 seçenek] [-A işlem] [-G genelyol] [-W kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] [isim ...]" #: builtins.c:233 -msgid "" -"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] " -"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" -msgstr "" +msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]" +msgstr "compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] [kelime]" #: builtins.c:237 msgid "compopt [-o|+o option] [-DE] [name ...]" -msgstr "" +msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]" #: builtins.c:240 -msgid "" -"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" +msgid "mapfile [-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]" #: builtins.c:242 -msgid "" -"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " -"quantum] [array]" -msgstr "" +msgid "readarray [-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:254 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2339,20 +2278,25 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has " -"been\n" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" -"\ralias [-p] [İSİM[=DEĞER] ...]\n" -" `alias' argümansız olarak veya -p seçeneği ile kullanıldığında rumuz\n" -" listesini alias İSİM=DEĞER biçiminde standart çıktıya basar.\n" -" Aksi takdirde belirtilen İSİM belirtilen DEĞERe rumuz olarak atanır.\n" -" DEĞERden sonra gelen boşluklar takma ad yorumlaması sırasında\n" -" sonraki sözcüğün takma ad ikamesi için sınanmasına sebep olur.\n" +"Rumuz tanımla veya görüntüle.\n" +" \n" +" `alias' argümansız kullanıldığında standart çıktıda kullanılabilecek tüm\n" +" rumuzları `alias İSİM=DEĞER' biçiminde listeler.\n" +" \n" +" Diğer durumda DEĞERi verilmiş her İSİM için bir rumuz tanımlanır.\n" +" DEĞERdeki boşluk, rumuz genişletildiğinde sonraki kelimenin rumuz\n" +" ikamesi için denetlenmesine sebep olur.\n" +" \n" +" Seçenekler:\n" +" -p\tTüm rumuzları tekrar kullanılabilir biçimde listele\n" +" \n" +" Çıkış Durumu:\n" " Hiçbir şeyin rumuzu olmayan bir İSİM verilmedikçe alias doğru döndürür." #: builtins.c:276 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2361,10 +2305,13 @@ msgid "" " \n" " Return success unless a NAME is not an existing alias." msgstr "" -"\runalias [-a] [İSİM ... ]\n" -" İSİMleri tanımlı rümuzlar listesinden siler. Eğer -a seçeneği " -"verilmişse,\n" -" tüm rümuz tanımları silinir." +"Tanımlı rumuzlar listesinden her İSMİ kaldır.\n" +" \n" +" Seçenekler:\n" +" -a\ttüm rumuz tanımlamalarını kaldır.\n" +" \n" +" İSİM mevcut olmayan bir rumuz olmadığı takdirde doğru\n" +" döndür." #: builtins.c:289 #, fuzzy @@ -2379,30 +2326,24 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their " -"values\n" -" -s List key sequences that invoke macros and their " -"values\n" +" -S List key sequences that invoke macros and their values\n" +" -s List key sequences that invoke macros and their values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named " -"function.\n" +" -u function-name Unbind all keys which are bound to the named function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" -" -X\t\t List key sequences bound with -x and associated commands\n" -" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." @@ -2431,10 +2372,8 @@ msgstr "" " TUŞDİZİSİnin her girilişinde KABUK-KOMUTUnun\n" " çalıştırılmasını sağlar.\n" " -f DOSYAİSMİ Tuş kısayollarını DOSYAİSMİnden okur.\n" -" -q İŞLEV İsmi belirtilen İŞLEVi çağıran tuşlar hakkında " -"sorgu.\n" -" -u İŞLEV İsmi belirtilen İŞLEVi çağıran tüm tuş " -"kısayollarını\n" +" -q İŞLEV İsmi belirtilen İŞLEVi çağıran tuşlar hakkında sorgu.\n" +" -u İŞLEV İsmi belirtilen İŞLEVi çağıran tüm tuş kısayollarını\n" " kaldırır.\n" " -V Değişken isimlerini ve değerlerini listeler.\n" " -v Değişken isimlerini ve değerlerini girdi olarak\n" @@ -2444,8 +2383,7 @@ msgstr "" " -s Makroları çağıran tuş dizilerini ve değerlerini\n" " girdi olarak kullanılabilir biçimde listeler." -#: builtins.c:328 -#, fuzzy +#: builtins.c:326 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2455,12 +2393,15 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"\rcontinue [N]\n" -" FOR, WHILE veya UNTIL döngülerinin sonraki yinelemesinden devam edilir.\n" -" N verilirse dışa doğru N. döngüden devam edilir. N >= 1 olmalıdır." +"for, while veya until döngülerinden çık.\n" +" \n" +" Bir FOR, WHILE veya UNTIL döngüsünden çık. Eğer N belirtilmişse, N ilişkili\n" +" döngüden çık.\n" +" \n" +" Çıkış Durumu:\n" +" N, 1'e eşit veya daha fazla olmadığında çıkış durumu 0'dır." -#: builtins.c:340 -#, fuzzy +#: builtins.c:338 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2470,26 +2411,36 @@ msgid "" " Exit Status:\n" " The exit status is 0 unless N is not greater than or equal to 1." msgstr "" -"\rcontinue [N]\n" -" FOR, WHILE veya UNTIL döngülerinin sonraki yinelemesinden devam edilir.\n" -" N verilirse dışa doğru N. döngüden devam edilir. N >= 1 olmalıdır." +"for, while veya until döngülerine devam et.\n" +" \n" +" İlişkili FOR, WHILE veya UNTIL döngüsünün sonraki adımına devam eder.\n" +" N tanımlanmışsa, N'inci ilişkili döngüye devam eder.\n" +" \n" +" Çıkış Durumu:\n" +" N, 1 veya daha büyük olmadığında çıkış durumu 0'dır." -#: builtins.c:352 +#: builtins.c:350 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the " -"function.\n" +" as a shell function, but need to execute the builtin within the function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" " not a shell builtin.." msgstr "" +"Kabuk dahillerini çalıştır.\n" +" \n" +" Komut araması yapmadan KABUK-DAHİLİ, ARGÜMANLAR argümanları ile\n" +" çalıştır. Bu, bir KABUK-DAHİLİ, bir kabuk işlevi olarak tekrar uygulamak isteyip\n" +" işlev içerisinde dahili olanı da çalıştırmanız gerektiğinizde kullanışlıdır.\n" +" \n" +" Çıkış Durumu:\n" +" KABUK-DAHİLİnin çıkış durumunu veya eğer KABUK-DAHİLİ değilse false döndürür." -#: builtins.c:367 -#, fuzzy +#: builtins.c:365 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2504,86 +2455,73 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" -"\rcaller [İFADE]\n" -" O anki altyordam çağrısının bağlamını döndürür.\n" -"\n" -" İFADE olmaksızın, caller o anki altyordam çağrısının kaynak dosya " -"ismini\n" -" ve satır numarasını gösterir. Eğer İFADE olarak negatiften farklı " -"bir\n" -" tamsayı belirtilmişse caller o anki icra çağrısı yığıtındaki o " -"konuma\n" -" karşılık gelen kaynak dosyası, satır numarası ve altyordam " -"ismini\n" -" gösterir; bu ek bilgi bir yığıtın izini sürmek için " -"kullanılabilir.\n" -"\n" -" İFADE değeri şu ankinden önce kaç çağrı çerçevesinin geri " -"döneceğini\n" -" belirtir; tepe çerçeve 0. çerçevedir." +"Geçerli alt yordam çağrısının bağlamını döndürür.\n" +" \n" +" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile kullanıldığında\n" +" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi sağlamak\n" +" için kullanılabilir.\n" +" \n" +" İFADE değeri, geçerli çerçeveden önce kaç tane çerçeve çağrılacağını\n" +" belirtir. Üst çerçeve 0. çerçevedir. \n" +" Çıkış Durumu:\n" +" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 döndürür." -#: builtins.c:385 -#, fuzzy +#: builtins.c:383 msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\n" +" Change the current directory to DIR. The default DIR is the value of the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory " -"containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon " -"(:).\n" -" A null directory name is the same as the current directory. If DIR " -"begins\n" +" The variable CDPATH defines the search path for the directory containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" +" A null directory name is the same as the current directory. If DIR begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is " -"set,\n" -" the word is assumed to be a variable name. If that variable has a " -"value,\n" +" If the directory is not found, and the shell option `cdable_vars' is set,\n" +" the word is assumed to be a variable name. If that variable has a value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed: resolve symbolic links in\n" -" \tDIR after processing instances of `..'\n" +" -L\tforce symbolic links to be followed\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks: resolve symbolic links in DIR before processing instances\n" -" \tof `..'\n" +" \tlinks\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" -"\rcd [-L|-P] [DİZİN]\n" -" Bulunulan dizinden DİZİNe geçilmesini sağlar. DİZİN verilmezse $HOME " -"ile\n" -" belirtilen dizine geçilir. CDPATH kabuk değişkeni mevcutsa " -"değeri,\n" -" DİZİNi arama yolu olarak kullanılır. CDPATH içindeki diğer dizin " -"isimleri\n" -" birer ikinokta imi (:) ile ayrılır. DİZİN bir / ile başlıyorsa " -"CDPATH\n" -" kullanılmaz. Eğer dizin yoksa ve `cdable_vars' kabuk seçeneği " -"etkinse\n" -" sözcük bir değişken ismi olarak denenir. Eğer bu değişken bir " -"değere\n" -" sahipse bu değerdeki dizine geçilir. -P seçeneği sembolik " -"bağların\n" -" izlenmeyip fiziksel dizin yapısının kullanılmasını sağlar; -L " -"seçeneği\n" -" sembolik bağların mutlaka izlenmesini sağlar." - -#: builtins.c:420 +"Kabuk çalışma dizinini değiştir.\n" +" \n" +" Geçerli dizini DİZİN olarak değiştir. Öntanımlı dizin kabuk değişkeninin EV\n" +" dizini değeridir.\n" +" \n" +" CDPATH değişkeni, DİZİN içeren dizinler için arama yolunu tanımlar. CDPATH\n" +" için alternatif dizin isimleri iki nokta (:) ile ayrılır.\n" +" Boş dizin adı, geçerli dizinle aynıdır. Eğer DİZİN bölü (/) ile başlıyorsa, CDPATH\n" +" kullanılmaz.\n" +" \n" +" Eğer dizin bulunamazsa ve kabuk seçeneği `cdable_vars' ayarlanmışsa, kelime\n" +" bir değişken adı olarak varsayılır. Eğer değişken bir değere sahipse, değeri DİZİN\n" +" 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" +" -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" +" \n" +" Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip etmektir.\n" +" \n" +" Çıkış Durumu:\n" +" Eğer dizin değişmişse ve -P kullanıldığında $PWD başarılı ayarlanırsa 0; diğer durumda\n" +" sıfır olmayan bir değer döndürür." + +#: builtins.c:414 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2598,9 +2536,18 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" +"Geçerli çalışma dizininin ismini yazdır.\n" +" \n" +" Seçenekler:\n" +" -L\teğer geçerli çalışma dizinini isimlendirmişse $PWD değerini yazdır\n" +" -P\thiçbir sembolik bağlantı kullanmadan fiziksel dizini yazdır\n" +" \n" +" Öntanımlı olarak `pwd', `-L' tanımlanmış şekilde davranır.\n" +" \n" +" Çıkış Durumu:\n" +" Dizin okunamadığı veya geçersiz seçenek verilmediği takdirde 0 döndürür." -#: builtins.c:437 -#, fuzzy +#: builtins.c:431 msgid "" "Null command.\n" " \n" @@ -2609,35 +2556,43 @@ msgid "" " Exit Status:\n" " Always succeeds." msgstr "" -"\r:\n" -" Etkisizdir; bu komut birşey yapmaz. Sıfır çıkış kodu döndürülür." +"Boş komut.\n" +" \n" +" Etkisizdir; bu komut birşey yapmaz.\n" +" \n" +" Çıkış Durumu:\n" +" Her zaman başarılıdır." -#: builtins.c:448 +#: builtins.c:442 msgid "" "Return a successful result.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" +"Bir başarılı sonuç dönrürür.\n" +" \n" +" Çıkış Durumu:\n" +" Her zaman başarılıdır." -#: builtins.c:457 -#, fuzzy +#: builtins.c:451 msgid "" "Return an unsuccessful result.\n" " \n" " Exit Status:\n" " Always fails." msgstr "" -"\rfalse\n" -" Başarısız bir sonuç döndürür." +"Başarısız bir sonuç döndür.\n" +" \n" +" Çıkış Durumu:\n" +" Her zaman başarısızdır." -#: builtins.c:466 +#: builtins.c:460 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke " -"commands\n" +" information about the specified COMMANDs. Can be used to invoke commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2649,9 +2604,22 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" +"Basit bir komut çalıştır veya komutlar hakkında bilgi görüntüle.\n" +" \n" +" KOMUTU ARGümanları ile kabuk işlevi aramasını ihmal ederek çalıştırır veya\n" +" belirtilen KOMUTlar hakkında bilgi görüntüler. Aynı isimde bir işlev varsa\n" +" 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" +" \tkullan\n" +" -v\t`type' dahilisine benzer bir KOMUT açıklaması göster\n" +" -V\ther 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." -#: builtins.c:485 -#, fuzzy +#: builtins.c:479 msgid "" "Set variable values and attributes.\n" " \n" @@ -2681,48 +2649,24 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the " -"`local'\n" +" When used in a function, `declare' makes NAMEs local, as with the `local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -"\rdeclare [-afFirtx] [-p] [İSİM[=DEĞER] ...]\n" -" Değişkenlerin özellikleri ile bildirilmesini sağlar. Hiçbir İSİM\n" -" verilmezse değişkenleri ve değerlerini listeler. -p seçeneği ile her\n" -" İSİM için değerler ve özellikleri gösterecektir.\n" -"\n" -" Seçenekler:\n" -"\n" -" -a Her İSİM bir dizi değişkenidir(destekleniyorsa)\n" -" -f Sadece işlev isimleri kullanılır.\n" -" -F Tanımları olmaksızın sadece işlev isimleri (ve hata ayıklaması\n" -" yapılıyorsa kaynak dosya isimleri ve satır sayıları) gösterilir\n" -" -i Her İSİMe `integer' özniteliği verir.\n" -" -r İSİMleri salt-okunur yapar.\n" -" -t Her İSİMe `trace' özniteliği verir.\n" -" -x İSİMleri ihraç edilebilir yapar\n" -"\n" -" Tamsayı öznitelikli değişkenlere bir DEĞER atandığında aritmetik\n" -" değerlendirme uygulanır (bkz, `let').\n" -"\n" -" Değişken değerleri gösterilirken, -f bir işlevin ismini ve tanımını\n" -" gösterir. -F seçeneği ile sadece işlev isminin gösterilmesini sağlar.\n" -"\n" -" `-' yerine `+' kullanarak belirtilen öznitelik kapatılabilir.\n" -" Bir işlevde kullanıldığında declare her İSİMi `local' komutu " -"kullanılmış\n" -" gibi yerel yapar." -#: builtins.c:523 +#: builtins.c:517 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" +"Değişken isim ve niteliklerini ayarla.\n" +" \n" +" Kullanılmıyor. Bkz. `help declare'." -#: builtins.c:531 +#: builtins.c:525 msgid "" "Define local variables.\n" " \n" @@ -2736,15 +2680,23 @@ msgid "" " Returns success unless an invalid option is supplied, an error occurs,\n" " or the shell is not executing a function." msgstr "" +"Yerel değişkenleri tanımla.\n" +" \n" +" İSİM adıyla bir yerel değişken oluştur ve DEĞER ata. SEÇENEK `declare'\n" +" tarafından kabul edilen herhangi bir seçenek olabilir.\n" +" \n" +" Yerel değişkenler sadece bir işlev içerisinde kullanılabilirler ve tanımlandıkları\n" +" işleve ve alt işlevlerine görünebilirler.\n" +" \n" +" Çıkış Durumu:\n" +" Geçersiz bir seçenek verilmediğinde, bir hata oluşmadığında veya kabuk bir işlev\n" +" çalıştırmıyorsa başarılı döner." -#: builtins.c:548 -#, fuzzy +#: builtins.c:542 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" +" Display the ARGs on the standard output followed by a newline.\n" " \n" " Options:\n" " -n\tdo not append a newline\n" @@ -2756,7 +2708,6 @@ msgid "" " \\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" @@ -2771,29 +2722,35 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -"\recho [-neE] [ARG ...]\n" -" ARGümanlarını çıktılar. -n seçeneği ile satırsonu karakteri " -"baskılanır.\n" -" -e seçeneği ile aşağıdaki tersbölü öncelemeli karakterlerin " -"yorumlanması\n" -" etkinleştirilir:\n" -" \t\\a\tsesli uyarı (bell)\n" -" \t\\b\tgerisilme\n" -" \t\\c\tkendisinden sonra gelen satırsonu karakterini kaldırır\n" -" \t\\E\tescape karakteri\n" -" \t\\f\tsayfa ileri\n" -" \t\\n\tsatırsonu\n" -" \t\\r\tsatırbaşı\n" -" \t\\t\tyatay sekme\n" -" \t\\v\tdüşey sekme\n" -" \t\\\\\ttersbölü\n" -" \t\\0nnn\tsekizlik değeri nnn olan sekiz bitlik karakter\n" -" \t \t(0, 1, 2 ya da 3 haneli olabilir)\n" -" \n" -" -E seçeneği ile yukarıdaki karakterlerin yorumlanmasını öntanımlı\n" -" olarak etkin olduğu sistemlerde bile kapatabilirsiniz." - -#: builtins.c:584 +"Argümanları standart çıktıya yaz.\n" +" \n" +" ARGümanları yeni satırla izlenen standart çıktıda görüntüle.\n" +" \n" +" Seçenekler:\n" +" -n\tyeni satıra başvurma\n" +" -e\ttakip eden ters bölü kaçışlarının yorumlanmasını etkinleştir\n" +" -E\tters bölü kaçışlarının yorumlanmasını açıkça gizle\n" +" \n" +" `echo' aşağıdaki ters bölü kaçışlı karakterleri yorumlar:\n" +" \\a\tuyarı (zil)\n" +" \\b\tgerisilme\n" +" \\c\tsonraki çıktıları gizle\n" +" \\e\tkaçış karakteri\n" +" \\f\tform besleme\n" +" \\n\tyeni satır\n" +" \\r\tsatırbaşı\n" +" \\t\tyatay sekme\n" +" \\v\tdikey sekme\n" +" \\\\\tters bölü\n" +" \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası sekizli\n" +" \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" +" \n" +" Çıkış Durumu:\n" +" Yazma hatası oluşmadığı takdirde başarılı döner." + +#: builtins.c:576 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2805,8 +2762,17 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" +"Argümanları standart çıktıya yaz.\n" +" \n" +" ARGümanları yeni satır ile takip eden standart çıktıda görüntüle.\n" +" \n" +" Seçenekler:\n" +" -n\tyeni bir satıra başvurma\n" +" \n" +" Çıkış Durumu:\n" +" Bir hata oluşmadığı sürece başarılı döner." -#: builtins.c:599 +#: builtins.c:591 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2833,19 +2799,25 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:619 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\n" +" Combine ARGs into a single string, use the result as input to the shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" " Returns exit status of command or success if command is null." msgstr "" +"Argümanları kabuk komutu olarak çalıştır.\n" +" \n" +" ARGümanları tek bir dizgeye birleştir, sonucu kabuğa girdi olarak kullan,\n" +" ve sonuçlanan komutları çalıştır.\n" +" \n" +" Çıkış Durumu:\n" +" Komutun çıkış durumunu döndürür veya komut boşsa başarılı döner." -#: builtins.c:639 +#: builtins.c:631 #, fuzzy msgid "" "Parse option arguments.\n" @@ -2887,63 +2859,43 @@ msgid "" " encountered or an error occurs." msgstr "" "\rgetopts SÇNDİZGESİ AD [ARG ...]\n" -" getopts kabuk betikleri tarafından konumsal parametreleri " -"çözümlemekte\n" +" getopts kabuk betikleri tarafından konumsal parametreleri çözümlemekte\n" " kullanılır.\n" "\n" -" SÇNDİZGESİ tanınan seçenek karakterlerini içerir; bir karakterden " -"sonra\n" -" bir ikinokta imi (:) geliyorsa seçeneğin ondan bir boşlukla ayrılmış " -"bir\n" +" SÇNDİZGESİ tanınan seçenek karakterlerini içerir; bir karakterden sonra\n" +" bir ikinokta imi (:) geliyorsa seçeneğin ondan bir boşlukla ayrılmış bir\n" " argümana sahip olacağı umulur.\n" "\n" -" Her çağrılışında getopts işlenecek sonraki argümanın indisini " -"OPTIND\n" -" kabuk değişkenine ve AD değişkenini de mevcut değilse " -"ilklendirerek\n" -" sonraki seçeneği $AD kabuk değişkenine yerleştirir. OPTIND kabuğun ya " -"da\n" -" bir kabuk betiğinin her çağrılışında 1 ile ilklendirilir. Bir " -"seçenek\n" -" bir argüman gerektirdiğinde getopts argümanı OPTARG " -"değişkenine\n" +" Her çağrılışında getopts işlenecek sonraki argümanın indisini OPTIND\n" +" kabuk değişkenine ve AD değişkenini de mevcut değilse ilklendirerek\n" +" sonraki seçeneği $AD kabuk değişkenine yerleştirir. OPTIND kabuğun ya da\n" +" bir kabuk betiğinin her çağrılışında 1 ile ilklendirilir. Bir seçenek\n" +" bir argüman gerektirdiğinde getopts argümanı OPTARG değişkenine\n" " yerleştirir.\n" "\n" -" getopts hataları iki yolla raporlayabilir. Eğer SÇNDİZGESİnin " -"ilk\n" -" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu " -"kipte\n" -" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa " -"getopt\n" -" OPTARG'a bulunan seçenek karakterini yerleştirir. Bir gerekli " -"argüman\n" -" verilmemişse, getopts AD'a bir ':' yerleştirir. Getopts sessiz " -"kipte\n" -" değilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini " -"AD'a\n" -" yerleştirir ve OPTARG değişkenini kaldırır. Eğer bir gerekli " -"argüman\n" -" bulunamazsa ve getopts sessiz kipte değilse AD'a ? " -"karakteri\n" +" getopts hataları iki yolla raporlayabilir. Eğer SÇNDİZGESİnin ilk\n" +" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu kipte\n" +" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa getopt\n" +" OPTARG'a bulunan seçenek karakterini yerleştirir. Bir gerekli argüman\n" +" verilmemişse, getopts AD'a bir ':' yerleştirir. Getopts sessiz kipte\n" +" değilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini AD'a\n" +" yerleştirir ve OPTARG değişkenini kaldırır. Eğer bir gerekli argüman\n" +" bulunamazsa ve getopts sessiz kipte değilse AD'a ? karakteri\n" " yerleştirilir, OPTARG kaldırılır ve bir tanı iletisi basılır.\n" "\n" -" OPTERR değişkeninin değeri 0 ise SÇNDİZGESİnin ilk karakteri bir " -"':'\n" -" olmasa bile hata iletileri gösterilmez. OPTERR değişkeninin " -"öntanımlı\n" +" OPTERR değişkeninin değeri 0 ise SÇNDİZGESİnin ilk karakteri bir ':'\n" +" olmasa bile hata iletileri gösterilmez. OPTERR değişkeninin öntanımlı\n" " değeri 1'dir.\n" "\n" -" getopts normalde konumsal parametreleri ($0 - $9) çözümlese de " -"başka\n" +" getopts normalde konumsal parametreleri ($0 - $9) çözümlese de başka\n" " argümanlar verilmişse bunları çözümler." -#: builtins.c:681 +#: builtins.c:673 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " -"specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2951,50 +2903,65 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, " -"unless\n" +" If the command cannot be executed, a non-interactive shell exits, unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error " -"occurs." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" +"Kabuğu verilen komutla değiştir.\n" +" \n" +" KOMUTU, belirtilen program ile değiştirerek çalıştır.\n" +" ARGÜMANLAR, KOMUTUN argümanları olur. Eğer KOMUT belirtilmemişse, tüm\n" +" yönlendirmeler geçerli kabukta uygulanır.\n" +" \n" +" Seçenekler:\n" +" -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n" +" -c\t\tKOMUTu boş bir ortamla çalıştır\n" +" -l\t\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" +" çıkış yapar.\n" +" \n" +" Çıkış Durumu:\n" +" KOMUT bulunduğu ve bir yönlendirme hatası olmadığı sürece başarılı döner." -#: builtins.c:702 -#, fuzzy +#: builtins.c:694 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 "" -"\rexit [N]\n" +"Exit the shell.\n" +" \n" " N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n" " çıkış durumu döner." -#: builtins.c:711 +#: builtins.c:703 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" +"Oturum kabuğundan çık.\n" +" \n" +" N durumuyla bir oturum kabuğundan çıkar. Eğer çalıştırılmamışsa oturum\n" +" kabuğunda bir hata döndürür." -#: builtins.c:721 +#: builtins.c:713 #, fuzzy msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history " -"list.\n" +" fc is used to list or edit and re-execute commands from the history list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then " -"EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3008,17 +2975,13 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "\rfc [-e DÜZENLEYİCİ] [-nlr] [İLK] [SON]\n" "fc -s [ESKİ=YENİ] [KOMUT]\n" -" fc, komut geçmişi listesindeki komutları listelemek, düzenlemek " -"ve\n" -" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara " -"vererek\n" -" bir aralık belirtilebileceği gibi İLK bir dizge de olabilir, bu " -"takdirde\n" +" fc, komut geçmişi listesindeki komutları listelemek, düzenlemek ve\n" +" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara vererek\n" +" bir aralık belirtilebileceği gibi İLK bir dizge de olabilir, bu takdirde\n" " bu dizge ile başlayan en son komut anlamına gelir.\n" "\n" " -e DÜZENLEYİCİ ile hangi düzenleyicinin kullanılacağı belirtilir.\n" @@ -3036,7 +2999,7 @@ msgstr "" " Böylece `r cc' yazarak `cc' ile başlayan son komut,\n" " r' yazarak en son komut çalıştırılabilir." -#: builtins.c:751 +#: builtins.c:743 #, fuzzy msgid "" "Move job to the foreground.\n" @@ -3053,15 +3016,13 @@ msgstr "" " Eğer İŞ_BELİRTİMİ belirtilmemişse kabuk iş belirtimi olarak\n" " o an ki işi kullanır." -#: builtins.c:766 +#: builtins.c:758 #, fuzzy msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if " -"they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's " -"notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3071,13 +3032,12 @@ msgstr "" " `&' ile başlatılmışçasına İŞ_BELİRTİMİni artalana yerleştirir.\n" " İŞ_BELİRTİMİ verilmemişse, iş belirtimi olarak o an ki iş kullanılır." -#: builtins.c:780 +#: builtins.c:772 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is " -"displayed.\n" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -3095,7 +3055,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:797 msgid "" "Display information about builtin commands.\n" " \n" @@ -3113,11 +3073,10 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" -#: builtins.c:829 +#: builtins.c:821 #, fuzzy msgid "" "Display or manipulate the history list.\n" @@ -3145,8 +3104,7 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed " -"otherwise.\n" +" with each displayed history entry. No time stamps are printed otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3175,7 +3133,7 @@ msgstr "" " damgasını basacak olan strftime(3) işlevine biçim girdisi olur; aksi\n" " takdirde hiç zaman damgası basılmaz." -#: builtins.c:865 +#: builtins.c:857 #, fuzzy msgid "" "Display status of jobs.\n" @@ -3212,7 +3170,7 @@ msgstr "" " ARGümanlar ile belirtilen tüm iş belirtimleri, işlerin süreç grup\n" " liderinin süreç grup kimliğine yerleştirilip KOMUT çalıştırılır." -#: builtins.c:892 +#: builtins.c:884 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3229,7 +3187,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:903 #, fuzzy msgid "" "Send a signal to a job.\n" @@ -3261,13 +3219,12 @@ msgstr "" " verilmezse öntanımlı olarak SIGTERM kullanılır. -l seçeneği ile sinyal\n" " isimleri listelenir. Argümanlı -l seçeneğinde argümanların listelenecek\n" " sinyal isimlerinin numaraları olduğu varsayılır. Kill iki sebepten\n" -" dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine iş " -"kimliklerinin\n" +" dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine iş kimliklerinin\n" " kullanımını mümkün kılar ve eğer oluşturabileceğiniz süreç sayısı\n" " sınırını aşarsanız başka bir süreci öldürecek bir süreci başlatmak\n" " zorunda kalmazsınız." -#: builtins.c:934 +#: builtins.c:926 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3275,8 +3232,7 @@ msgid "" " Evaluate each ARG as an arithmetic expression. Evaluation is done in\n" " fixed-width integers with no check for overflow, though division by 0\n" " is trapped and flagged as an error. The following list of operators is\n" -" grouped into levels of equal-precedence operators. The levels are " -"listed\n" +" grouped into levels of equal-precedence operators. The levels are listed\n" " in order of decreasing precedence.\n" " \n" " \tid++, id--\tvariable post-increment, post-decrement\n" @@ -3352,22 +3308,18 @@ msgstr "" "\n" " Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır." -#: builtins.c:979 -#, fuzzy +#: builtins.c:971 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with " -"word\n" +" if the -u option is supplied. The line is split into fields as with word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as " -"word\n" +" the last NAME. Only the characters found in $IFS are recognized as word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY " -"variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3379,76 +3331,26 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, " -"unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input " -"is\n" +" -t timeout\ttime out and return failure if a complete line of input is\n" " \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" -" \t\twithout trying to read any data, returning success only if\n" -" \t\tinput is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" +" \t\tif input is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times " -"out\n" -" (in which case it's greater than 128), a variable assignment error " -"occurs,\n" +" The return code is zero, unless end-of-file is encountered, read times out,\n" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -"\rread [-ers] [-u DSYTNT] [-t ZMAŞM] [-p İSTEM] [-a DİZİ]\n" -" [-n KRKSAY] [-d AYRAÇ] [İSİM ...]\n" -" Standart girdiden ya da -u seçeneği ile sağlanan DoSYaTaNıTıcıdan tek\n" -" satır okur ve ilk sözcük ilk İSİMe, ikinci sözcük ikinci İSİMe ve böyle\n" -" giderek, aradaki sözcükler ve ayraçlar son İSİMe kadar atanır. Satırı\n" -" sözcüklere ayırmakta sadece $IFS değişkeninin değerindeki karakterler\n" -" kullanılır. Tersbölü satırın devam ettirilmesi için ve kendinden sonra\n" -" gelen özel karakterlerin yorumlanması için kullanılabilir. Hiç isim\n" -" verilmemişse, satırın tamamı okunur ve REPLY değişkenine atanır. -r\n" -" verildiğinde tersbölü bir önceleme karakteri olarak ele alınmaz,\n" -" dolayısıyla tersbölü-satırsonu çifti satırın alt satırda devam " -"edeceğini\n" -" belirtmekte kullanılamaz. -d ile satırın satırsonu karakterine " -"kadar\n" -" değil AYRAÇ karakterine kadar okunması sağlanır. -p ile " -"girdi\n" -" beklendiğini belirtecek İSTEM dizgesi satırsonu karakteri " -"olmaksızın\n" -" görüntülenir. İstem sadece girdi bir uçbirimden gelecekse " -"gösterilir.\n" -" -a ile sözcükler sırayla DİZİ dizisinin elemanlarına atanır; dizinin " -"ilk\n" -" elemanının indisi 0'dır; atama yapılmadan önce DİZİ dizisinin " -"tüm\n" -" elemanları silinir; diğer İSİM argümanları yoksayılır. -e ile " -"kabuk\n" -" etkileşimliyse, satırı sağlamak için readline kullanılır. -n " -"ile\n" -" satırın okunması KRKSAYıncı karakterde sona erer; satırın kalanı " -"yok\n" -" sayılır. -s ile sessiz kipe girilir, girdi bir uçbirimden " -"geliyorsa\n" -" karakterler yansılanmaz. -t ile satır ZMAŞM saniye sonra " -"hala\n" -" sonlandırılmamışsa read zamanaşımına düşer ve hata döner. " -"$TMOUT\n" -" değişkeni bir değerle atanmışsa değeri öntanımlı zamanaşımı " -"değeri\n" -" olarak ele alınır. Bu seçenek, girdi bir uçbirim ya da " -"boruhattından\n" -" okunmuyorsa etkisizdir. Dosyasonu karakteri (Ctrl-D) " -"saptanmadıkça,\n" -" okuma zamanaşımına düşmedikçe ya da -u seçeneği ile sağlanan\n" -" DoSYaTaNıTıcı geçersiz olmadıkça dönüş durumu sıfırdır." - -#: builtins.c:1024 + +#: builtins.c:1014 msgid "" "Return from a shell function.\n" " \n" @@ -3460,7 +3362,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1027 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3504,8 +3406,7 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero " -"status\n" +" or zero if no command exited with a non-zero status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3527,7 +3428,7 @@ msgid "" " -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" +" -P If set, do not follow 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" @@ -3548,13 +3449,10 @@ msgstr "" "\rset [--abefhkmnptuvxBCHP] [-o seçenek] [arg ...]\n" " -a Müteakip komutların ortamına aktarılmak üzere değiştirilen veya\n" " oluşturulan işlev ve değişkenleri imler.\n" -" -b Sonlandırılan artalan işlerin durumunun anında raporlanmasını " -"sağlar.\n" -" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında " -"çıkar.\n" +" -b Sonlandırılan artalan işlerin durumunun anında raporlanmasını sağlar.\n" +" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında çıkar.\n" " -f Dosya ismi üretimini (globbing) iptal eder.\n" -" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar " -"(hash).\n" +" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar (hash).\n" " -k Atama deyimleri şeklindeki tüm argümanları komut isminden önce\n" " belirtmek yerine ortama yerleştirir.\n" " -m İş denetimi etkinleştirilir.\n" @@ -3585,31 +3483,23 @@ msgstr "" " nounset -u ile aynı\n" " onecmd -t ile aynı\n" " physical -P ile aynı\n" -" pipefail bir boruhattının dönüş değeri ya sıfırdan farklı " -"bir\n" -" durumla çıkan son (en sağdaki) komutun değeridir " -"ya\n" -" da boruhattındaki tüm komutlar başarılıysa " -"sıfırdır\n" -" posix Standart uyumu için POSIX 1003.2 " -"standardındakinden\n" -" farklı öntanımlı işlemde Bash davranışını " -"değiştirir\n" +" pipefail bir boruhattının dönüş değeri ya sıfırdan farklı bir\n" +" durumla çıkan son (en sağdaki) komutun değeridir ya\n" +" da boruhattındaki tüm komutlar başarılıysa sıfırdır\n" +" posix Standart uyumu için POSIX 1003.2 standardındakinden\n" +" farklı öntanımlı işlemde Bash davranışını değiştirir\n" " privileged -p ile aynı\n" " verbose -v ile aynı\n" " vi vi tarzı bir satır düzenleme arayüzü kullanılır\n" " xtrace -x ile aynı\n" -" -p Ayrıcalıklı kipi etkinleştirir. Bu kipte, $BASH_ENV ve $ENV " -"dosyaları\n" +" -p Ayrıcalıklı kipi etkinleştirir. Bu kipte, $BASH_ENV ve $ENV dosyaları\n" " işlenmez, kabuk işlevleri ortamdan miras alınmaz. Kabuk, gerçek\n" " kullanıcı (grup) kimliği ile aynı olmayan etkin kullanıcı (grup)\n" " kimliği ile başlatılmışsa ve -p seçeneği verilmemişse, bu eylemler\n" " alınır ve etkin kullanıcı (grup) kimliği, gerçek kullanıcı (grup)\n" " kimliğine ayarlanır. Başlatırken -p seçeneği verilmişse, etkin\n" -" kullanıcı (grup) kimliği sıfırlanmaz. Bu seçeneğin kapatılması " -"etkin\n" -" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup " -"kimliklerine\n" +" kullanıcı (grup) kimliği sıfırlanmaz. Bu seçeneğin kapatılması etkin\n" +" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup kimliklerine\n" " ayarlanmasına sebep olur.\n" " -t Tek bir komutu okuyup çalıştırdıktan sonra çıkar..\n" " -u Parametre yorumlaması uygulanırken bir hata sonucu değişkenlerin\n" @@ -3636,7 +3526,7 @@ msgstr "" " atanır. Özel parametre # ise N'e ayarlanır. Hiç argüman verilmezse,\n" " tüm kabuk değişkenleri basılır." -#: builtins.c:1122 +#: builtins.c:1112 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3646,8 +3536,7 @@ msgid "" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" " \n" -" Without options, unset first tries to unset a variable, and if that " -"fails,\n" +" Without options, unset first tries to unset a variable, and if that fails,\n" " tries to unset a function.\n" " \n" " Some variables cannot be unset; also see `readonly'.\n" @@ -3656,13 +3545,12 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1132 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before " -"exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3675,7 +3563,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1151 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3695,7 +3583,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1172 msgid "" "Shift positional parameters.\n" " \n" @@ -3706,7 +3594,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1184 builtins.c:1199 #, fuzzy msgid "" "Execute commands from a file in the current shell.\n" @@ -3722,19 +3610,14 @@ msgid "" msgstr "" "\rsource DOSYAİSMİ [ARGÜMANlar]\n" ". DOSYAİSMİ [ARGÜMANlar]\n" -" DOSYAİSMİndeki komutlar okunur ve çalıştırılır. DOSYAİSMİ / " -"içermiyorsa\n" -" DOSYAİSMİnin yerini bulmak için $PATH değişkeni kullanılır. Bash " -"POSIX\n" -" kipinde değilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine " -"bakılır.\n" -" Verilmiş ARGÜMANlar varsa, DOSYAİSMİ çalıştırılırken bunlar " -"konumsal\n" -" parametreler haline gelir. Aksi takdirde, konumsal " -"parametreler\n" +" DOSYAİSMİndeki komutlar okunur ve çalıştırılır. DOSYAİSMİ / içermiyorsa\n" +" DOSYAİSMİnin yerini bulmak için $PATH değişkeni kullanılır. Bash POSIX\n" +" kipinde değilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine bakılır.\n" +" Verilmiş ARGÜMANlar varsa, DOSYAİSMİ çalıştırılırken bunlar konumsal\n" +" parametreler haline gelir. Aksi takdirde, konumsal parametreler\n" " değiştirilmez." -#: builtins.c:1225 +#: builtins.c:1215 msgid "" "Suspend shell execution.\n" " \n" @@ -3748,7 +3631,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1231 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -3783,8 +3666,7 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last " -"read.\n" +" -N FILE True if the file has been modified since it was last read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3805,8 +3687,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3854,15 +3735,12 @@ msgstr "" " -s DOSYA DOSYA varsa ve uzunluğu sıfırdan büyükse doğrudur.\n" " -S DOSYA DOSYA varsa ve bir soketse doğrudur.\n" " -t DSYTNT DSYTNT açık ve bir uçbirime karşılıksa doğrudur.\n" -" -u DOSYA DOSYA varsa ve kullanıcı kimliği biti 1 ise " -"doğrudur.\n" +" -u DOSYA DOSYA varsa ve kullanıcı kimliği biti 1 ise doğrudur.\n" " -w DOSYA DOSYA dosya varsa ve yazabiliyorsanız doğrudur.\n" -" -x DOSYA DOSYA dosya varsa ve çalıştırabiliyorsanız " -"doğrudur.\n" +" -x DOSYA DOSYA dosya varsa ve çalıştırabiliyorsanız doğrudur.\n" " -O DOSYA DOSYA varsa ve etkin sahibi sizseniz doğrudur.\n" " -G DOSYA DOSYA varsa ve etkin grubu sizinkiyse doğrudur.\n" -" -N DOSYA DOSYA varsa ve son okunduğundan beri " -"değiştirilmişse\n" +" -N DOSYA DOSYA varsa ve son okunduğundan beri değiştirilmişse\n" " doğrudur.\n" "\n" " DOSYA1 -nt DOSYA2 dosya1, dosya2'den değişiklik tarihine göre\n" @@ -3872,8 +3750,7 @@ msgstr "" " DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise ya da dosya2\n" " mevcutken dosya1 yoksa doğrudur.\n" "\n" -" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya " -"düğümünü\n" +" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya düğümünü\n" " gösteriyorsa (ona sabit bağ ise) doğrudur.\n" "\n" " Dizge işleçleri:\n" @@ -3897,46 +3774,42 @@ msgstr "" " İFADE1 -a İFADE2 İFADE1 ve İFADE2 her ikisi de doğruysa doğrudur.\n" " İFADE1 -o İFADE2 İFADE1 veya İFADE2 doğruysa doğrudur.\n" "\n" -" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri " -"olmalıdır:\n" +" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri olmalıdır:\n" " -eq, -ne, -lt, -le, -gt veya -ge.\n" "\n" -" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eşitlik, " -"eşitsizlik,\n" +" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eşitlik, eşitsizlik,\n" " küçüklük, büyüklük, küçüklük veya eşitlik, büyüklük veya eşitlik varsa\n" " ifadenin sonucu doğrudur." -#: builtins.c:1321 -#, fuzzy +#: builtins.c:1311 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 "" -"\r[ [İFADE] ]\n" -" test yerleşiği ile aynıdır, fakat son argüman açan `[' ile eşleşen\n" +"Şartlı ifadeyi değerlendir.\n" +" \n" +" \"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:1330 +#: builtins.c:1320 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1332 #, fuzzy msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\n" +" Defines and activates handlers to be run when the shell receives signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -3945,34 +3818,26 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " -"If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " -"If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " -"a\n" -" script run by the . or source builtins finishes executing. A " -"SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause " -"the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" +" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands " -"associated\n" +" If no arguments are supplied, trap prints the list of commands associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is " -"given." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "\rtrap [-lp] [ARG SİNYAL ...]\n" " ARGüman içindeki komutlar, kabuk SİNYAL sinyalini aldığında okunur ve\n" @@ -3991,7 +3856,7 @@ msgstr "" " numaraları ile birlikte listelemesini sağlar. Kabuğa bir sinyal\n" " göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz." -#: builtins.c:1378 +#: builtins.c:1368 msgid "" "Display information about command type.\n" " \n" @@ -4017,17 +3882,15 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not " -"found." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1399 #, fuzzy msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\n" +" Provides control over the resources available to the shell and processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4051,9 +3914,6 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" -" -T the maximum number of threads\n" -" \n" -" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -4075,8 +3935,7 @@ msgstr "" "\n" " -S Yazılımsal (`soft') sınır kullanılır.\n" " -H Donanımsal (`hard') sınır kullanılır.\n" -" -a Mevcut tüm sınırlamalar gösterilir. -c Oluşan core dosyalarının " -"azami boyu\n" +" -a Mevcut tüm sınırlamalar gösterilir. -c Oluşan core dosyalarının azami boyu\n" " -d Bir sürecin veri segmanının azami boyu\n" " -e Azami zamanlama önceliği (`nice')\n" " -f Kabuk ve çocukları tarafından oluşturulan dosyaların azami boyu\n" @@ -4101,7 +3960,7 @@ msgstr "" " için 512 baytlık blok sayısı olarak, -n ve -u için birimsiz, kalan\n" " seçenekler için 1024 baytlık blok sayısı olarak belirtilmelidir." -#: builtins.c:1457 +#: builtins.c:1444 msgid "" "Display or set file mode mask.\n" " \n" @@ -4119,32 +3978,22 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 -#, fuzzy +#: builtins.c:1464 msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for each process identified by an ID, which may be a process ID or " -"a\n" +" Waits for the process identified by ID, which may be a process ID or a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all " -"processes\n" -" in that job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all processes\n" +" in the job's pipeline.\n" " \n" " Exit Status:\n" -" Returns the status of the last ID; fails if ID is invalid or an invalid\n" -" option is given." +" Returns the status of ID; fails if ID is invalid or an invalid option is\n" +" given." msgstr "" -"\rwait [N]\n" -" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. N\n" -" verilmezse, o an etkin olan tüm süreçler için beklenir ve sıfır\n" -" durumu ile dönülür. N bir süreç kimliği olabileceği gibi bir iş\n" -" belirtimi de olabilir; bir iş belirtimi verilirse işin\n" -" boruhattındaki tüm süreçler için beklenir." - -#: builtins.c:1495 -#, fuzzy + +#: builtins.c:1482 msgid "" "Wait for process completion and return exit status.\n" " \n" @@ -4153,19 +4002,20 @@ msgid "" " and the return code is zero. PID must be a process ID.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option " -"is\n" +" Returns the status of ID; fails if ID is invalid or an invalid option is\n" " given." msgstr "" -"\rwait [N]\n" -" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. N\n" -" verilmezse, o an etkin olan tüm süreçler için beklenir ve sıfır\n" -" durumu ile dönülür. N bir süreç kimliği olabileceği gibi bir iş\n" -" belirtimi de olabilir; bir iş belirtimi verilirse işin\n" -" boruhattındaki tüm süreçler için beklenir." - -#: builtins.c:1510 -#, fuzzy +"Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n" +" \n" +" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. Eğer PID verilmemişse\n" +" geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır. PID bir süreç kimliği\n" +" olmalıdır.\n" +" \n" +" Çıkış Durumu:\n" +" Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek verilmişse\n" +" başarısız olur." + +#: builtins.c:1497 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4177,14 +4027,16 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"\rfor AD [in SÖZ ... ;] do KOMUT; done\n" -" SÖZcükler yorumlanır ve sonuçlanan listenin AD ile bağlantılı her\n" -" üyesi için KOMUTlar çalıştırılır. Deyimin `in SÖZ ... ;' parçası\n" -" yoksa, `in \"$@\"' belirtilmiş gibi kümeyi oluşturan her parametre\n" -" için KOMUTlar birer kere çalıştırılır." +"Bir listedeki her üye için komut çalıştır.\n" +" \n" +" `for' döngüsü bir öge listesindeki her üye için komut sırasını çalıştırır.\n" +" Eğer `in KELİMELER ...;' belirtilmemişse `in \"$@\"' varsayılır. KELİMELER\n" +" içerisindeki her eleman için, İSİM bu elemana atanır ve KOMUTLAR çalıştırılır.\n" +" \n" +" Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1524 -#, fuzzy +#: builtins.c:1511 msgid "" "Arithmetic for loop.\n" " \n" @@ -4200,17 +4052,21 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"\rfor ((: for (( İFADE1; İFADE2; İFADE3 )); do KOMUTlar; done\n" -" Bu sözdizimi şu koda eşdeğerdir:\n" +"Döngü için aritmetik.\n" +" \n" +" Şuna eşdeğerdir:\n" " \t(( İFADE1 ))\n" " \twhile (( İFADE2 )); do\n" -" \t\tKOMUTlar\n" +" \t\tKOMUTLAR\n" " \t\t(( İFADE3 ))\n" " \tdone\n" -" İFADE1, İFADE2 ve İFADE3 aritmetik ifadelerdir. Verilmeyen her\n" -" ifade için 1 verilmiş gibi işlem yapılır." +" İFADE1, İFADE2 ve İFADE3 aritmetik ifadelerdir. Eğer ifadelerden biri yoksa\n" +" 1'e değerlendirilmiş şekilde davranır.\n" +" \n" +" Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1542 +#: builtins.c:1529 #, fuzzy msgid "" "Select words from a list and execute commands.\n" @@ -4231,26 +4087,18 @@ msgid "" " Returns the status of the last command executed." msgstr "" "\rselect AD [in SÖZ ... ;] do KOMUTlar; done\n" -" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe " -"listesindeki\n" -" her öğenin başına bir numara eklenerek standart hataya çıktılanır. " -"Eğer\n" -" `in SÖZ ... ;' parçası verilmezse, in \"$@\"' verilmiş gibi konuma " -"bağlı\n" -" parametreler basılır ve standart girdide PS3 istemi ile girdi " -"beklenir.\n" -" Listede belirtilen numaralardan biri girdi olarak verilirse, o " -"konuma\n" -" bağlı SÖZcük ile AD eşleştirilir. Girdi satırı boş verilirse, " -"dosyasonu\n" -" okununcaya kadar komut istemi tekrarlanır. Listede belirtilenler " -"dışında\n" -" verilen her değer için AD null ile eşleştirilir. Okunan satır " -"$REPLY\n" +" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe listesindeki\n" +" her öğenin başına bir numara eklenerek standart hataya çıktılanır. Eğer\n" +" `in SÖZ ... ;' parçası verilmezse, in \"$@\"' verilmiş gibi konuma bağlı\n" +" parametreler basılır ve standart girdide PS3 istemi ile girdi beklenir.\n" +" Listede belirtilen numaralardan biri girdi olarak verilirse, o konuma\n" +" bağlı SÖZcük ile AD eşleştirilir. Girdi satırı boş verilirse, dosyasonu\n" +" okununcaya kadar komut istemi tekrarlanır. Listede belirtilenler dışında\n" +" verilen her değer için AD null ile eşleştirilir. Okunan satır $REPLY\n" " değişkeninde tutulur. Her seçimden sonra bir break komutu ile\n" " sonlandırılıncaya kadar komutlar çalıştırılır." -#: builtins.c:1563 +#: builtins.c:1550 #, fuzzy msgid "" "Report time consumed by pipeline's execution.\n" @@ -4274,8 +4122,7 @@ msgstr "" " istatistiklerinin biraz farklı bir biçimde basılmasını sağlar; çıktı\n" " biçimi olarak TIMEFORMAT değişkeninin değerini kullanır." -#: builtins.c:1580 -#, fuzzy +#: builtins.c:1567 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4285,26 +4132,25 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"\rcase SÖZ in [KALIP [| KALIP]...) KOMUTlar ;;]... esac\n" -" SÖZcük ile eşleşen ilk KALIP'a karşı düşen KOMUTları çalıştırır.\n" -" `|' çok sayıda kalıbı ayırmak için kullanılır." +"Kalıp eşleştirme tabanlı komutları çalıştır.\n" +" \n" +" SÖZcük ile eşleşen ilk KALIP'a karşı düşen KOMUTLARı çalıştırır.\n" +" `|' çok sayıda kalıbı ayırmak için kullanılır.\n" +" \n" +" Çıkış Durumu:\n" +" Son çalıştırılan komutun durumunu döndürür." -#: builtins.c:1592 +#: builtins.c:1579 #, fuzzy msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then " -"the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " -"is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. " -"Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of " -"the\n" -" entire construct is the exit status of the last command executed, or " -"zero\n" +" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of the\n" +" entire construct is the exit status of the last command executed, or zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4324,7 +4170,7 @@ msgstr "" " çı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." -#: builtins.c:1609 +#: builtins.c:1596 #, fuzzy msgid "" "Execute commands as long as a test succeeds.\n" @@ -4339,7 +4185,7 @@ msgstr "" " `while KOMUTlar; listesinin çıkış durumu sıfır olduğu sürece\n" " `do KOMUTlar;' listesi çalıştırılır." -#: builtins.c:1621 +#: builtins.c:1608 #, fuzzy msgid "" "Execute commands as long as a test does not succeed.\n" @@ -4354,7 +4200,7 @@ msgstr "" " `until KOMUTlar; listesinin çıkış durumu sıfırdan farklı olduğu sürece\n" " `do KOMUTlar;' listesi çalıştırılır." -#: builtins.c:1633 +#: builtins.c:1620 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4367,13 +4213,12 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1634 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is " -"invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4381,7 +4226,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1648 #, fuzzy msgid "" "Group commands as a unit.\n" @@ -4396,7 +4241,7 @@ msgstr "" " KOMUTlar bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n" " yönlendirmede kullanmanın tek yoludur." -#: builtins.c:1673 +#: builtins.c:1660 #, fuzzy msgid "" "Resume job in foreground.\n" @@ -4417,7 +4262,7 @@ msgstr "" " İŞ_BELİRTİMİ'nden sonra bir & gelmesi işin `bg' komutununa argüman\n" " olarak kullanılmış gibi artalana yerleştirilmesine sebep olur." -#: builtins.c:1688 +#: builtins.c:1675 #, fuzzy msgid "" "Evaluate arithmetic expression.\n" @@ -4432,17 +4277,14 @@ msgstr "" " Verilen aritmetik İFADE aritmetik değerlendirme kurallarına göre\n" " değerlendirilir. \"let İFADE\" ile eşdeğerdir." -#: builtins.c:1700 +#: builtins.c:1687 #, fuzzy msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the " -"conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries " -"used\n" -" by the `test' builtin, and may be combined using the following " -"operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries used\n" +" by the `test' builtin, and may be combined using the following operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4462,8 +4304,7 @@ msgid "" msgstr "" "\r[[ İFADE ]]\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" +" İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle oluşturulur\n" " ve aşağıdaki işleçler kullanılarak biraraya getirilebilirler:\n" "\n" " ( İFADE ) İFADEnin değeri döner\n" @@ -4475,7 +4316,7 @@ msgstr "" " 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." -#: builtins.c:1726 +#: builtins.c:1713 #, fuzzy msgid "" "Common shell variable names and usage.\n" @@ -4538,20 +4379,16 @@ msgstr "" " 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" +" 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" +" 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" +" 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" @@ -4565,18 +4402,15 @@ msgstr "" " 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" +" 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" +" 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" +" 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" @@ -4585,8 +4419,7 @@ msgstr "" " 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" +" İ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" @@ -4596,7 +4429,7 @@ msgstr "" " gerektiğine karar vermek için kullanılan kalıpların\n" " ikinokta imi ayraçlı listesi.\n" -#: builtins.c:1783 +#: builtins.c:1770 #, fuzzy msgid "" "Add directories to stack.\n" @@ -4648,7 +4481,7 @@ msgstr "" "\n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins.c:1817 +#: builtins.c:1804 #, fuzzy msgid "" "Remove directories from stack.\n" @@ -4689,7 +4522,7 @@ msgstr "" " engeller, böylece sadece yığıt değiştirilmiş olur. \n" " Dizin yığıtını `dirs' komutuyla görebilirsiniz." -#: builtins.c:1847 +#: builtins.c:1834 #, fuzzy msgid "" "Display directory stack.\n" @@ -4707,12 +4540,10 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown " -"by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown " -"by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" @@ -4735,13 +4566,12 @@ msgstr "" " -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." -#: builtins.c:1876 +#: builtins.c:1863 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" +" arguments, list all shell options with an indication of whether or not each\n" " is set.\n" " \n" " Options:\n" @@ -4756,7 +4586,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1884 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -4765,28 +4595,22 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: " -"plain\n" -" characters, which are simply copied to standard output; character " -"escape\n" +" FORMAT is a character string which contains three types of objects: plain\n" +" characters, which are simply copied to standard output; character escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next " -"successive\n" +" format specifications, each of which causes printing of the next successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf" -"(1),\n" -" printf interprets:\n" +" In addition to the standard format specifications described in printf(1)\n" +" and printf(3), printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a " -"format\n" +" %(fmt)T output the date-time string resulting from using FMT as a format\n" " string for strftime(3)\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or " -"assignment\n" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "\rprintf [-v DEĞİŞKEN] BİÇİM [ARGümanlar]\n" @@ -4801,14 +4625,12 @@ msgstr "" " 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. " -#: builtins.c:1926 +#: builtins.c:1913 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no " -"options\n" -" are supplied, existing completion specifications are printed in a way " -"that\n" +" For each NAME, specify how arguments are to be completed. If no options\n" +" are supplied, existing completion specifications are printed in a way that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -4828,14 +4650,13 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1941 #, fuzzy msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches " -"against\n" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -4848,16 +4669,13 @@ msgstr "" " amacıyla tasarlanmıştır. İsteğe bağlı SÖZCÜK argümanı sağlandığı\n" " takdirde eşleşmelerden sadece SÖZCÜK ile eşleşenler üretilir." -#: builtins.c:1969 +#: builtins.c:1956 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are " -"supplied,\n" -" the completion currently being executed. If no OPTIONs are given, " -"print\n" -" the completion options for each NAME or the current completion " -"specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" +" the completion currently being executed. If no OPTIONs are given, print\n" +" the completion options for each NAME or the current completion specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -4879,28 +4697,22 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:1986 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable " -"ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable " -"MAPFILE\n" +" Read lines from the standard input into the indexed array variable ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " -"copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " -"index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard " -"input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to " -"CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -4910,31 +4722,23 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY " -"before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly " -"or\n" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2020 msgid "" "Read lines from a file into an array variable.\n" " \n" " A synonym for `mapfile'." msgstr "" - -#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" - -#~ msgid "xrealloc: cannot allocate %lu bytes" -#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor" - -#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" +"Bir dosyadaki satırları bir dizi değişkenine oku.\n" +" \n" +" `mapfile' ile eşanlamlıdır." #~ msgid " " #~ msgstr " " @@ -4948,10 +4752,8 @@ msgstr "" #~ msgid "can be used used to provide a stack trace." #~ msgstr "bir yığıt izini sürmek için kullanılabilir." -#~ msgid "" -#~ "The value of EXPR indicates how many call frames to go back before the" -#~ msgstr "" -#~ "İFADE değeri şu ankinden önce kaç çağrı çerçevesinin geri döneceğini" +#~ msgid "The value of EXPR indicates how many call frames to go back before the" +#~ msgstr "İFADE değeri şu ankinden önce kaç çağrı çerçevesinin geri döneceğini" #~ msgid "current one; the top frame is frame 0." #~ msgstr "belirtir; tepe çerçeve 0. çerçevedir." @@ -4973,14 +4775,11 @@ msgstr "" #~ msgid "back up through the list with the `popd' command." #~ msgstr "`popd' komutu kullanılır." -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions" #~ msgstr "-l seçeneği `dirs'in dizinleri ev dizininize göreli kısayollar" -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'" +#~ msgid "of directories which are relative to your home directory. This means" +#~ msgstr "olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'" #~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" #~ msgstr "gibi bir gösterimle karşılaşabilirsiniz. -v seçeneği `dirs'in" @@ -4988,26 +4787,22 @@ msgstr "" #~ msgid "causes `dirs' to print the directory stack with one entry per line," #~ msgstr "dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her" -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" +#~ msgid "prepending the directory name with its position in the stack. The -p" #~ msgstr "satırda bir girdi göstermesini sağlar. -p seçeneği yığıttaki" #~ msgid "flag does the same thing, but the stack position is not prepended." #~ msgstr "konumu göstermemesi dışında aynı çıktıyı verir." -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgid "The -c flag clears the directory stack by deleting all of the elements." #~ msgstr "-c seçeneği tüm girdileri silerek dizin yığıtını boşaltır." -#~ msgid "" -#~ "+N displays the Nth entry counting from the left of the list shown by" +#~ msgid "+N displays the Nth entry counting from the left of the list shown by" #~ msgstr "+N dirs seçeneksiz çağrıldığında gösterdiği listenin solundan" #~ msgid " dirs when invoked without options, starting with zero." #~ msgstr " sıfırla başlayarak sayılan N'inci girdiyi gösterir." -#~ msgid "" -#~ "-N displays the Nth entry counting from the right of the list shown by" +#~ msgid "-N displays the Nth entry counting from the right of the list shown by" #~ msgstr "-N dirs seçeneksiz çağrıldığında gösterdiği listenin sağından" #~ msgid "Adds a directory to the top of the directory stack, or rotates" @@ -5076,10 +4871,8 @@ msgstr "" #~ msgid " removes the last directory, `popd -1' the next to last." #~ msgstr " `popd -0' son dizini `popd -1' sonuncudan öncekini siler." -#~ msgid "" -#~ "-n suppress the normal change of directory when removing directories" -#~ msgstr "" -#~ "-n dizinleri yığıttan silerken normal dizin değişikliğini engeller," +#~ msgid "-n suppress the normal change of directory when removing directories" +#~ msgstr "-n dizinleri yığıttan silerken normal dizin değişikliğini engeller," #~ msgid " from the stack, so only the stack is manipulated." #~ msgstr " böylece sadece yığıt değiştirilmiş olur." @@ -5102,13 +4895,21 @@ msgstr "" #~ msgid "malloc: watch alert: %p %s " #~ msgstr "malloc: yakalama alarmı: %p %s " +#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" + +#~ msgid "xrealloc: cannot allocate %lu bytes" +#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor" + +#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" +#~ msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)" + #~ msgid "" #~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n" #~ " break N levels." #~ msgstr "" #~ "\rbreak [N]\n" -#~ " FOR, WHILE veya UNTIL döngülerinden çıkılmasını sağlar. N " -#~ "verilmişse,\n" +#~ " FOR, WHILE veya UNTIL döngülerinden çıkılmasını sağlar. N verilmişse,\n" #~ " dışa doğru N. döngüden çıkılır. N >= 1 olmalıdır." #~ msgid "" @@ -5117,10 +4918,8 @@ msgstr "" #~ " builtin within the function itself." #~ msgstr "" #~ "\rbuiltin [kabuk-yerleşiği [argümanlar]]\n" -#~ " Bir kabuk yerleşiğini çalıştırır. Bu bir kabuk işlevinin bir " -#~ "kabul\n" -#~ " yerleşiği ile aynı isimde atanması durumunda faydalıdır, fakat " -#~ "işlevin\n" +#~ " Bir kabuk yerleşiğini çalıştırır. Bu bir kabuk işlevinin bir kabul\n" +#~ " yerleşiği ile aynı isimde atanması durumunda faydalıdır, fakat işlevin\n" #~ " içinde yerleşiğin işlevselliğinin sağlanması gerekir." #~ msgid "" @@ -5130,8 +4929,7 @@ msgstr "" #~ msgstr "" #~ "\rpwd [-LP]\n" #~ " Geçerli çalışma dizinini basar. -P seçeneği ile sembolik bağlar\n" -#~ " olmaksızın fiziksel dizini basar; -L seçeneği ile sembolik bağları " -#~ "izler." +#~ " olmaksızın fiziksel dizini basar; -L seçeneği ile sembolik bağları izler." #~ msgid "Return a successful result." #~ msgstr "" @@ -5141,29 +4939,72 @@ msgstr "" #~ 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" +#~ " say \"command ls\". If the -p option is given, a default value is used\n" +#~ " for PATH that is guaranteed to find all of the standard utilities. If\n" +#~ " the -V or -v option is given, a string is printed describing COMMAND.\n" #~ " The -V option produces a more verbose description." #~ msgstr "" #~ "\rcommand [-pVv] KOMUT [ARGümanlar ...]\n" -#~ " KOMUT komutunu KOMUT isimli kabuk işlevini yoksayarak " -#~ "ARGümanlarla\n" -#~ " çalıştırır. Örneğin, `ls' isimli bir kabuk işlevi varsa ve siz " -#~ "`ls'\n" -#~ " komutunu çalıştırmak istiyorsanız \"command ls\" " -#~ "diyebilirsiniz.\n" -#~ " -p seçeneği verilmişse, tüm standart uygulamaların bulunmasını " -#~ "garanti\n" -#~ " eden PATH için bir öntanımlı değer kullanılır. -V ya da -v " -#~ "seçeneği\n" -#~ " verilmişse, KOMUTu açıklayan bir dizge basılır. -V seçeneği " -#~ "daha\n" +#~ " KOMUT komutunu KOMUT isimli kabuk işlevini yoksayarak ARGümanlarla\n" +#~ " çalıştırır. Örneğin, `ls' isimli bir kabuk işlevi varsa ve siz `ls'\n" +#~ " komutunu çalıştırmak istiyorsanız \"command ls\" diyebilirsiniz.\n" +#~ " -p seçeneği verilmişse, tüm standart uygulamaların bulunmasını garanti\n" +#~ " eden PATH için bir öntanımlı değer kullanılır. -V ya da -v seçeneği\n" +#~ " verilmişse, KOMUTu açıklayan bir dizge basılır. -V seçeneği daha\n" #~ " ayrıntılı açıklama üretilmesini sağlar. " +#~ msgid "" +#~ "Declare variables and/or give them attributes. If no NAMEs are\n" +#~ " given, then display the values of variables instead. The -p option\n" +#~ " will display the attributes and values of each NAME.\n" +#~ " \n" +#~ " The flags are:\n" +#~ " \n" +#~ " -a\tto make NAMEs arrays (if supported)\n" +#~ " -f\tto select from among function names only\n" +#~ " -F\tto display function names (and line number and source file name if\n" +#~ " \tdebugging) without definitions\n" +#~ " -i\tto make NAMEs have the `integer' attribute\n" +#~ " -r\tto make NAMEs readonly\n" +#~ " -t\tto make NAMEs have the `trace' attribute\n" +#~ " -x\tto make NAMEs export\n" +#~ " \n" +#~ " Variables with the integer attribute have arithmetic evaluation (see\n" +#~ " `let') done when the variable is assigned to.\n" +#~ " \n" +#~ " When displaying values of variables, -f displays a function's name\n" +#~ " and definition. The -F option restricts the display to function\n" +#~ " name only.\n" +#~ " \n" +#~ " Using `+' instead of `-' turns off the given attribute instead. When\n" +#~ " used in a function, makes NAMEs local, as with the `local' command." +#~ msgstr "" +#~ "\rdeclare [-afFirtx] [-p] [İSİM[=DEĞER] ...]\n" +#~ " Değişkenlerin özellikleri ile bildirilmesini sağlar. Hiçbir İSİM\n" +#~ " verilmezse değişkenleri ve değerlerini listeler. -p seçeneği ile her\n" +#~ " İSİM için değerler ve özellikleri gösterecektir.\n" +#~ "\n" +#~ " Seçenekler:\n" +#~ "\n" +#~ " -a Her İSİM bir dizi değişkenidir(destekleniyorsa)\n" +#~ " -f Sadece işlev isimleri kullanılır.\n" +#~ " -F Tanımları olmaksızın sadece işlev isimleri (ve hata ayıklaması\n" +#~ " yapılıyorsa kaynak dosya isimleri ve satır sayıları) gösterilir\n" +#~ " -i Her İSİMe `integer' özniteliği verir.\n" +#~ " -r İSİMleri salt-okunur yapar.\n" +#~ " -t Her İSİMe `trace' özniteliği verir.\n" +#~ " -x İSİMleri ihraç edilebilir yapar\n" +#~ "\n" +#~ " Tamsayı öznitelikli değişkenlere bir DEĞER atandığında aritmetik\n" +#~ " değerlendirme uygulanır (bkz, `let').\n" +#~ "\n" +#~ " Değişken değerleri gösterilirken, -f bir işlevin ismini ve tanımını\n" +#~ " gösterir. -F seçeneği ile sadece işlev isminin gösterilmesini sağlar.\n" +#~ "\n" +#~ " `-' yerine `+' kullanarak belirtilen öznitelik kapatılabilir.\n" +#~ " Bir işlevde kullanıldığında declare her İSİMi `local' komutu kullanılmış\n" +#~ " gibi yerel yapar." + #~ msgid "Obsolete. See `declare'." #~ msgstr "" #~ "\rtypeset [-afFirtx] [-p] İSİM[=DEĞER] ...\n" @@ -5179,8 +5020,7 @@ msgstr "" #~ " local sadece bir işlev içinde kullanılabilir; İSİM değişkeninin\n" #~ " sadece işlev ve çocuklarının etki alanında görünür olmasını sağlar." -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed." #~ msgstr "" #~ "\recho [-neE] [ARG ...]\n" #~ " ARGümanlarını çıktılar. -n belirtilmişse, satırsonu bastırılır." @@ -5197,48 +5037,30 @@ msgstr "" #~ " 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." +#~ " or not it is enabled. The -s option restricts the output to the POSIX.2\n" +#~ " `special' builtins. The -n option displays a list of all disabled builtins." #~ msgstr "" #~ "\renable [-n] [-p] [-f DOSYAİSMİ] [-ads] [İSİM ...]\n" -#~ " Yerleşik kabuk komutlarını etkinleştirir ve kaldırır. Bir " -#~ "kabuk\n" -#~ " yerleşiği ile aynı isme sahip bir disk komutunun tam dosya " -#~ "yolu\n" -#~ " belirtmeksizin kullanılabilmesini mümkün kılar. -n " -#~ "seçeneği\n" -#~ " kullanılmışsa İSİMler kullanımdan kaldırılır; aksi takdirde " -#~ "İSİMler\n" -#~ " etkin kılınır. Örneğin `test' yerleşiği yerine `test' " -#~ "uygulamasının\n" -#~ " yerleşik komut olarak kullanılmasını sağlamak için `enable -n " -#~ "test'\n" -#~ " yazmalısınız. Dinamik yüklemenin desteklendiği sistemlerde, -" -#~ "f\n" -#~ " seçeneği ile yeni bir İSİM yerleşik komutunun DOSYAİSMİ ile " -#~ "belirtilen\n" -#~ " paylaşımlı nesneden yüklenmesi sağlanır. -d seçeneği -f ile " -#~ "yüklenen\n" -#~ " yerleşiği silmek için kullanılır. Hiç seçenek verilmezse ya da -" -#~ "p\n" -#~ " seçeneği verilirse kabuk yerleşiklerinin bir listesi gösterilir. -" -#~ "a\n" -#~ " seçeneği ile her yerleşik etkin olup olmadığı belirtilerek " -#~ "listelenir.\n" -#~ " -s seçeneği ile sadece POSIX'e özel yerleşikleri içerir. -n " -#~ "seçeneği\n" -#~ " bir İSİM belirtilmeksizin kullanılırsa kullanımdan " -#~ "kaldırılmış\n" +#~ " Yerleşik kabuk komutlarını etkinleştirir ve kaldırır. Bir kabuk\n" +#~ " yerleşiği ile aynı isme sahip bir disk komutunun tam dosya yolu\n" +#~ " belirtmeksizin kullanılabilmesini mümkün kılar. -n seçeneği\n" +#~ " kullanılmışsa İSİMler kullanımdan kaldırılır; aksi takdirde İSİMler\n" +#~ " etkin kılınır. Örneğin `test' yerleşiği yerine `test' uygulamasının\n" +#~ " yerleşik komut olarak kullanılmasını sağlamak için `enable -n test'\n" +#~ " yazmalısınız. Dinamik yüklemenin desteklendiği sistemlerde, -f\n" +#~ " seçeneği ile yeni bir İSİM yerleşik komutunun DOSYAİSMİ ile belirtilen\n" +#~ " paylaşımlı nesneden yüklenmesi sağlanır. -d seçeneği -f ile yüklenen\n" +#~ " yerleşiği silmek için kullanılır. Hiç seçenek verilmezse ya da -p\n" +#~ " seçeneği verilirse kabuk yerleşiklerinin bir listesi gösterilir. -a\n" +#~ " seçeneği ile her yerleşik etkin olup olmadığı belirtilerek listelenir.\n" +#~ " -s seçeneği ile sadece POSIX'e özel yerleşikleri içerir. -n seçeneği\n" +#~ " bir İSİM belirtilmeksizin kullanılırsa kullanımdan kaldırılmış\n" #~ " yerleşikleri listeler." -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)." #~ msgstr "" #~ "\reval [ARG ...]\n" -#~ " Kabuğa girilmiş biçimleriyle ARG'ları okur ve sonuçlanan komutları " -#~ "çalıştır." +#~ " Kabuğa girilmiş biçimleriyle ARG'ları okur ve sonuçlanan komutları çalıştır." #~ msgid "" #~ "Exec FILE, replacing this shell with the specified program.\n" @@ -5270,17 +5092,12 @@ msgstr "" #~ " 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" +#~ " 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." +#~ " corresponds is printed. If multiple NAME arguments are supplied with\n" +#~ " -t, the NAME is printed before the hashed full pathname. The -l option\n" +#~ " causes output to be displayed in a format that may be reused as input.\n" +#~ " If no arguments are given, information about remembered commands is displayed." #~ msgstr "" #~ "\rhash [-lr] [-p DOSYAYOLU] [-dt] [AD]\n" #~ " AD argümanları olarak belirtilen komutların tam dosya yollarını\n" @@ -5304,23 +5121,17 @@ msgstr "" #~ " a short usage synopsis." #~ msgstr "" #~ "\rhelp [-s] [KALIP]\n" -#~ " Yerleşik komutlar hakkında yardım bilgisi gösterir. KALIP " -#~ "belirtilmişse,\n" -#~ " help KALIP ile eşleşen tüm komutlar için yardım bilgisi gösterir, " -#~ "aksi\n" -#~ " takdirde yerleşikler listelenir. -s seçeneği ile yardım bilgisi " -#~ "yerine\n" +#~ " Yerleşik komutlar hakkında yardım bilgisi gösterir. KALIP belirtilmişse,\n" +#~ " help KALIP ile eşleşen tüm komutlar için yardım bilgisi gösterir, aksi\n" +#~ " takdirde yerleşikler listelenir. -s seçeneği ile yardım bilgisi yerine\n" #~ " komutun kullanımını gösteren sözdizimini basar." #~ msgid "" #~ "By default, removes each JOBSPEC argument from the table of active jobs.\n" -#~ " If the -h option is given, the job is not removed from the table, but " -#~ "is\n" +#~ " 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." +#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all\n" +#~ " jobs from the job table; the -r option means to remove only running jobs." #~ msgstr "" #~ "\rdisown [-h] [-ar] [İŞ_BELİRTİMİ ...]\n" #~ " Seçeneksiz kullanımda her İŞ_BELİRTİMİ etkin işler tablosundan\n" @@ -5330,6 +5141,58 @@ msgstr "" #~ " tüm işler kaldırılır. İŞ_BELİRTİMİ verilmeden -r seçeneğinin\n" #~ " kullanılması durumunda ise sadece çalışmakta olan işler kaldırılır." +#~ msgid "" +#~ "One line is read from the standard input, or from file descriptor FD if the\n" +#~ " -u option is supplied, and the first word is assigned to the first NAME,\n" +#~ " the second word to the second NAME, and so on, with leftover words assigned\n" +#~ " to the last NAME. Only the characters found in $IFS are recognized as word\n" +#~ " delimiters. If no NAMEs are supplied, the line read is stored in the REPLY\n" +#~ " variable. If the -r option is given, this signifies `raw' input, and\n" +#~ " backslash escaping is disabled. The -d option causes read to continue\n" +#~ " until the first character of DELIM is read, rather than newline. If the -p\n" +#~ " option is supplied, the string PROMPT is output without a trailing newline\n" +#~ " before attempting to read. If -a is supplied, the words read are assigned\n" +#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied and\n" +#~ " the shell is interactive, readline is used to obtain the line. If -n is\n" +#~ " supplied with a non-zero NCHARS argument, read returns after NCHARS\n" +#~ " characters have been read. The -s option causes input coming from a\n" +#~ " terminal to not be echoed.\n" +#~ " \n" +#~ " The -t option causes read to time out and return failure if a complete line\n" +#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable is set,\n" +#~ " its value is the default timeout. The return code is zero, unless end-of-file\n" +#~ " is encountered, read times out, or an invalid file descriptor is supplied as\n" +#~ " the argument to -u." +#~ msgstr "" +#~ "\rread [-ers] [-u DSYTNT] [-t ZMAŞM] [-p İSTEM] [-a DİZİ]\n" +#~ " [-n KRKSAY] [-d AYRAÇ] [İSİM ...]\n" +#~ " Standart girdiden ya da -u seçeneği ile sağlanan DoSYaTaNıTıcıdan tek\n" +#~ " satır okur ve ilk sözcük ilk İSİMe, ikinci sözcük ikinci İSİMe ve böyle\n" +#~ " giderek, aradaki sözcükler ve ayraçlar son İSİMe kadar atanır. Satırı\n" +#~ " sözcüklere ayırmakta sadece $IFS değişkeninin değerindeki karakterler\n" +#~ " kullanılır. Tersbölü satırın devam ettirilmesi için ve kendinden sonra\n" +#~ " gelen özel karakterlerin yorumlanması için kullanılabilir. Hiç isim\n" +#~ " verilmemişse, satırın tamamı okunur ve REPLY değişkenine atanır. -r\n" +#~ " verildiğinde tersbölü bir önceleme karakteri olarak ele alınmaz,\n" +#~ " dolayısıyla tersbölü-satırsonu çifti satırın alt satırda devam edeceğini\n" +#~ " belirtmekte kullanılamaz. -d ile satırın satırsonu karakterine kadar\n" +#~ " değil AYRAÇ karakterine kadar okunması sağlanır. -p ile girdi\n" +#~ " beklendiğini belirtecek İSTEM dizgesi satırsonu karakteri olmaksızın\n" +#~ " görüntülenir. İstem sadece girdi bir uçbirimden gelecekse gösterilir.\n" +#~ " -a ile sözcükler sırayla DİZİ dizisinin elemanlarına atanır; dizinin ilk\n" +#~ " elemanının indisi 0'dır; atama yapılmadan önce DİZİ dizisinin tüm\n" +#~ " elemanları silinir; diğer İSİM argümanları yoksayılır. -e ile kabuk\n" +#~ " etkileşimliyse, satırı sağlamak için readline kullanılır. -n ile\n" +#~ " satırın okunması KRKSAYıncı karakterde sona erer; satırın kalanı yok\n" +#~ " sayılır. -s ile sessiz kipe girilir, girdi bir uçbirimden geliyorsa\n" +#~ " karakterler yansılanmaz. -t ile satır ZMAŞM saniye sonra hala\n" +#~ " sonlandırılmamışsa read zamanaşımına düşer ve hata döner. $TMOUT\n" +#~ " değişkeni bir değerle atanmışsa değeri öntanımlı zamanaşımı değeri\n" +#~ " olarak ele alınır. Bu seçenek, girdi bir uçbirim ya da boruhattından\n" +#~ " okunmuyorsa etkisizdir. Dosyasonu karakteri (Ctrl-D) saptanmadıkça,\n" +#~ " okuma zamanaşımına düşmedikçe ya da -u seçeneği ile sağlanan\n" +#~ " DoSYaTaNıTıcı geçersiz olmadıkça dönüş durumu sıfırdır." + #~ msgid "" #~ "Causes a function to exit with the return value specified by N. If N\n" #~ " is omitted, the return status is that of the last command." @@ -5364,28 +5227,20 @@ msgstr "" #~ msgstr "" #~ "\rexport [-nf] [İSİM[=DEĞER] ...]\n" #~ "export -p\n" -#~ " Ortamdaki çocuk sürece aktarılacak her İSİM'i imler. -f " -#~ "verilmişse\n" -#~ " İSİM'ler kabuk işlevleridir, aksi takdirde kabuk " -#~ "değişkenleridir.\n" -#~ " -n seçeneği verilirse aktarılacak İSİM'ler artık imlenmez. " -#~ "İSİM\n" -#~ " verilmemişse veya -p seçeneği verilmişse aktarılan İSİM'lerin " -#~ "listesi\n" -#~ " gösterilir. -p seçeneği çıktının girdi olarak tekrar " -#~ "kullanılabilir\n" -#~ " biçimde gösterilmesini sağlar. Bir değişken isminden sonra " -#~ "=DEĞER\n" -#~ " geliyorsa değer değişkenin değeri yapılır. `--' ile seçenek " -#~ "işlemleri\n" +#~ " Ortamdaki çocuk sürece aktarılacak her İSİM'i imler. -f verilmişse\n" +#~ " İSİM'ler kabuk işlevleridir, aksi takdirde kabuk değişkenleridir.\n" +#~ " -n seçeneği verilirse aktarılacak İSİM'ler artık imlenmez. İSİM\n" +#~ " verilmemişse veya -p seçeneği verilmişse aktarılan İSİM'lerin listesi\n" +#~ " gösterilir. -p seçeneği çıktının girdi olarak tekrar kullanılabilir\n" +#~ " biçimde gösterilmesini sağlar. Bir değişken isminden sonra =DEĞER\n" +#~ " geliyorsa değer değişkenin değeri yapılır. `--' ile seçenek işlemleri\n" #~ " kapatılır." #~ msgid "" #~ "The given NAMEs are marked readonly and the values of these NAMEs may\n" #~ " not be changed by subsequent assignment. If the -f option is given,\n" #~ " then functions corresponding to the NAMEs are so marked. If no\n" -#~ " arguments are given, or if `-p' is given, a list of all readonly " -#~ "names\n" +#~ " 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." @@ -5415,44 +5270,36 @@ msgstr "" #~ msgstr "" #~ "\rsuspend [-f]\n" #~ " Bu kabuğun çalışmasını bir SIGCONT sinyali alana kadar askıya alır.\n" -#~ " -f seçeneği kullanıldığında kabuk bir giriş kabuğu olsa bile askıya " -#~ "alınır." +#~ " -f seçeneği kullanıldığında kabuk bir giriş kabuğu olsa bile askıya alınır." #~ msgid "" #~ "Print the accumulated user and system times for processes run from\n" #~ " the shell." #~ msgstr "" #~ "\rtimes\n" -#~ " Kabukta çalışan süreçlerden toplanan kullanıcı ve sistem zamanlarını " -#~ "basar." +#~ " Kabukta çalışan süreçlerden toplanan kullanıcı ve sistem zamanlarını basar." #~ msgid "" #~ "For each NAME, indicate how it would be interpreted if used as a\n" #~ " command name.\n" #~ " \n" -#~ " If the -t option is used, `type' outputs a single word which is one " -#~ "of\n" -#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is " -#~ "an\n" -#~ " alias, shell reserved word, shell function, shell builtin, disk " -#~ "file,\n" +#~ " 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" +#~ " 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" +#~ " The -P flag forces a PATH search for each NAME, even if it is an alias,\n" +#~ " builtin, or function, and returns the name of the disk file that would\n" #~ " be executed." #~ msgstr "" #~ "\rtype [-afptP] AD [AD ...]\n" @@ -5474,22 +5321,17 @@ msgstr "" #~ "\n" #~ " -f seçeneği belirtilmişse type kabuk işlevlerini bulmaya çalışmaz.\n" #~ "\n" -#~ " -P seçeneği her ADiçin, bir takma ad, yerleşik komut veya işlev " -#~ "olmasa\n" -#~ " bile bir yol araması yapılmasını için zorlar ve çalıştırılabilir " -#~ "disk\n" +#~ " -P seçeneği her ADiçin, bir takma ad, yerleşik komut veya işlev olmasa\n" +#~ " bile bir yol araması yapılmasını için zorlar ve çalıştırılabilir disk\n" #~ " dosyası ismi ile döner." #~ msgid "" #~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n" -#~ " `-S' is supplied, the current value of the mask is printed. The `-" -#~ "S'\n" -#~ " option makes the output symbolic; otherwise an octal number is " -#~ "output.\n" +#~ " `-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" +#~ " interpreted as an octal number, otherwise it is a symbolic mode string\n" #~ " like that accepted by chmod(1)." #~ msgstr "" #~ "\rumask [-p] [-S] [KİP]\n" @@ -5538,30 +5380,20 @@ msgstr "" #~ " not each is set." #~ msgstr "" #~ "\rshopt [-pqsu] [-o UZUN-SEÇENEK] SÇNKADI [SÇNKADI...]\n" -#~ " İsteğe bağlı kabuk davranışlarını kontrol eden değişken değerlerini " -#~ "açıp\n" -#~ " kapar. -s ile belirtilen her SÇNKADInı etkinleştirir. -u ile " -#~ "belirtilen\n" -#~ " her SÇNKADInı iptal eder. -q ile normal çıktıyı engeller; dönüş " -#~ "durumu\n" -#~ " SÇNKADInın etkin olup olmadığını gösterir. -o ile set yerleşiğinin " -#~ "-o\n" -#~ " seçeneğinde kullanılabilecek SÇNKADI değerlerini sınırlar. Seçeneksiz " -#~ "ya\n" -#~ " da -p seçeneği ile tüm atanabilir seçenekleri etkin olup " -#~ "olmadıklarını\n" +#~ " İsteğe bağlı kabuk davranışlarını kontrol eden değişken değerlerini açıp\n" +#~ " kapar. -s ile belirtilen her SÇNKADInı etkinleştirir. -u ile belirtilen\n" +#~ " her SÇNKADInı iptal eder. -q ile normal çıktıyı engeller; dönüş durumu\n" +#~ " SÇNKADInın etkin olup olmadığını gösterir. -o ile set yerleşiğinin -o\n" +#~ " seçeneğinde kullanılabilecek SÇNKADI değerlerini sınırlar. Seçeneksiz ya\n" +#~ " da -p seçeneği ile tüm atanabilir seçenekleri etkin olup olmadıklarını\n" #~ " belirterek listeler." #~ msgid "" #~ "For each NAME, specify how arguments are to be completed.\n" -#~ " If the -p option is supplied, or if no options are supplied, " -#~ "existing\n" -#~ " completion specifications are printed in a way that allows them to " -#~ "be\n" -#~ " reused as input. The -r option removes a completion specification " -#~ "for\n" -#~ " each NAME, or, if no NAMEs are supplied, all completion " -#~ "specifications." +#~ " If the -p option is supplied, or if no options are supplied, existing\n" +#~ " completion specifications are printed in a way that allows them to be\n" +#~ " reused as input. The -r option removes a completion specification for\n" +#~ " each NAME, or, if no NAMEs are supplied, all completion specifications." #~ msgstr "" #~ "\rcomplete [-abcdefgjksuv] [-pr] [-o SEÇENEK] [-A EYLEM] [-G KALIP]\n" #~ " [-W SÖZLİST] [-P ÖNEK] [-S SONEK] [-X SÜZGEÇ] [-F İŞLEV]\n" diff --git a/po/uk.gmo b/po/uk.gmo index 4c4613f7f..91ed625c6 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 49a2d2452..0033fc196 100644 --- a/po/uk.po +++ b/po/uk.po @@ -8,37 +8,37 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2010-06-01 14:53+0300\n" "Last-Translator: Maxim V. Dziumanenko \n" "Language-Team: Ukrainian \n" -"Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Language: uk\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" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "неправильний індекс масиву" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: неможливо перетворити індексований масив на асоціативний" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: неправильний ключ асоціативного масиву" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: означення нечислових елементів неможливе" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: при означенні асоціативних масивів потрібно вказувати ключ" @@ -48,24 +48,24 @@ msgstr "%s: %s: при означенні асоціативних масиві msgid "%s: cannot create: %s" msgstr "%s: не вдається створити: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" "bash_execute_unix_command: не вдається знайти відповідне призначення для " "команди" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: перший непробільний символ не є `\"'" # c-format -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "нема заключної `%c' у %s" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: пропущено двокрапку-роздільник" @@ -131,7 +131,7 @@ msgstr "" msgid "HOME not set" msgstr "змінну HOME не встановлено" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "забагато аргументів" @@ -154,7 +154,7 @@ msgstr "попередження: " msgid "%s: usage: " msgstr "%s: використовуйте: " -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: параметр потребує аргументу" @@ -169,7 +169,7 @@ msgstr "%s: потрібен числовий аргумент" msgid "%s: not found" msgstr "%s: не знайдено" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: неправильний параметр" @@ -192,7 +192,7 @@ msgstr "неправильне вісімкове число" msgid "invalid hex number" msgstr "неправильне шістнадцяткове число" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "неправильне число" @@ -301,25 +301,35 @@ msgstr "попередження: можливо параметр -C працю msgid "not currently executing completion function" msgstr "наразі функція завершення рядку не виконується" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "може використовуватися лише усередині функції" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "`-f' не використовується для створення функцій" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: незмінна функція" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: неможливо знищити масив таким чином" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: неможливо перетворити асоціативний масив на індексований" @@ -348,23 +358,23 @@ msgstr "%s: завантажений не динамічно" msgid "%s: cannot delete: %s" msgstr "%s: не вдається вилучити: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: це директорія" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: не є звичайним файлом" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: файл завеликий" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не вдається виконати бінарний файл" @@ -460,7 +470,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: не вдається відкрити: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, fuzzy, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -504,16 +514,16 @@ msgstr "%s: помилка inlib" msgid "no other options allowed with `-x'" msgstr "не можна використовувати інші параметри разом з `-x'" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументи мають бути ідентифікаторами завдань чи процесів" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Невідома помилка" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "очікувався вираз" @@ -522,64 +532,64 @@ msgstr "очікувався вираз" msgid "%s: not an indexed array" msgstr "%s: не є масивом" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: неправильно вказаний дескриптор файлу" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: неправильний дескриптор файлу: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: неправильна кількість рядків" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: неправильний початковий індекс" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: неправильний крок виклику функції" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "порожня назва змінної-масиву" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "змінні-масиви не підтримуються" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': пропущено символ у шаблоні" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s: неправильно вказаний термін часу" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': невірний символ у шаблоні" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "попередження: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "пропущено шістнадцяткову цифру у \\x" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, fuzzy, c-format msgid "missing unicode digit for \\%c" msgstr "пропущено шістнадцяткову цифру у \\x" @@ -588,19 +598,24 @@ msgstr "пропущено шістнадцяткову цифру у \\x" msgid "no other directory" msgstr "немає іншої директорії" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: невірний аргумент обмеження" + +#: builtins/pushd.def:468 msgid "" msgstr "<немає поточної директорії>" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "стек директорій порожній" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "рівень стеку директорій" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 #, fuzzy msgid "" "Display the list of currently remembered directories. Directories\n" @@ -643,7 +658,7 @@ msgstr "" " -N\tПоказує N-ну з кінця директорію у списку, що виводиться командою\n" "\tdirs без аргументів, рахунок починається з нуля." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 #, fuzzy msgid "" "Adds a directory to the top of the directory stack, or rotates\n" @@ -690,7 +705,7 @@ msgstr "" " \n" " Вбудована команда `dirs' показує стек директорій." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 #, fuzzy msgid "" "Removes entries from the directory stack. With no arguments, removes\n" @@ -733,12 +748,12 @@ msgstr "" " \n" " Вбудована команда `dirs' показує стек директорій." -#: builtins/read.def:272 +#: builtins/read.def:275 #, fuzzy, c-format msgid "%s: invalid timeout specification" msgstr "%s: неправильно вказаний термін часу" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "помилка читання: %d: %s" @@ -748,26 +763,26 @@ msgid "can only `return' from a function or sourced script" msgstr "" "`return' працює лише у функції чи скрипті, запущеному за допомогою `source'" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "не можна одночасно знищити і функцію і змінну" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: не вдається знищити" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не вдається знищити: %s лише для читання" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: не є масивом" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: не є функцією" @@ -776,11 +791,11 @@ msgstr "%s: не є функцією" msgid "shift count" msgstr "кількість зсувів" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "не можна одночасно встановлювати й скасовувати параметри оболонки" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: неправильне ім’я параметру оболонки" @@ -907,127 +922,127 @@ msgstr "неправильний перехід" msgid "%s: unbound variable" msgstr "%s: неозначена змінна" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aчас очікування вводу вичерпано: автоматичний вихід\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не вдається переспрямувати /dev/null на стандартний ввід: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': невірний символ шаблону" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "помилка каналу" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: обмеження: не можна вказувати `/' у імені команди" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: команду не знайдено" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, fuzzy, c-format msgid "%s: %s" msgstr "%s — це %s\n" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неправильний інтерпретатор" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не вдається виконати бінарний файл" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s є вбудованою командою оболонки\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не вдається створити копію файлового дескриптору %d у %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "рівень вкладення виразів перевищено" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "нестача стеку рекурсії" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "синтаксична помилка у виразі" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "спроба призначення не-змінної" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "ділення на 0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "вада: неправильна лексема у виразі" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "очікувалася `:' умовного виразу" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "експонента менша за 0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "відсутня `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "синтаксична помилка: очікувався операнд" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "синтаксична помилка: невірний арифметичний оператор" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (позначка помилки \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "невірна арифметична основа" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "завелике значення основи" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: помилка у виразі\n" @@ -1036,168 +1051,168 @@ msgstr "%s: помилка у виразі\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: не вдається отримати доступ до директорій вищого рівня" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не вдається перевстановити режим без затримки файлового дескриптору %d" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" "не вдається отримати новий файловий дескриптор для вводу bash з файлового " "дескриптору %d" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: для нового файлового дескриптору %d вже існує буфер" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" "ідентифікатор відгалуженого процесу %d знайдено у працюючому завданні %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "вилучення зупиненого завдання %d, що має групу процесів %ld" -#: jobs.c:1114 +#: jobs.c:1115 #, fuzzy, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процес %5ld (%s) у the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" "add_process: ідентифікатор процесу %5ld (%s) вважається все ще працюючим" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: ідентифікатор процесу не існує" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Завершено" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Зупинено" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Зупинено(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "Працює" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Зроблено(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Вихід %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "Невідомий стан" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(збережено знімок оперативної пам’яті)" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (РД: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "зміна групи дочірнього процесу (%ld на %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: процес %ld не є відгалуженим від цієї оболонки" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Нема запису для процесу %ld" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: завдання %d зупинене" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: завдання завершилося" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: завдання %d вже працює в фоні" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: рядок %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (збережено знімок оперативної пам’яті)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(тепер РД: %s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: помилка getpgrp" -#: jobs.c:3703 +#: jobs.c:3831 #, fuzzy msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не вдається встановити групу процесу для терміналу (%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "ця оболонка не може керувати завданнями" @@ -1219,53 +1234,53 @@ msgstr "" msgid "unknown" msgstr "невідомий" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: зайнятий блок у списку вільних" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: аргумент є вже звільненим блоком" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: блок ще не виділено" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" "free: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у " "рамки" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: розмір у записах на початку та в кінці блоку відрізняється" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: блок ще не виділено" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" "realloc: виявлено перехід за нижню границю блоку; mh_nbytes не вкладається у " "рамки" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: розмір у записах на початку та в кінці блоку відрізняється" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, fuzzy, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: таблиця виділення заповнена FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p вже позначений як виділений у таблиці?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p вже позначений як вільний у таблиці?\n" @@ -1313,15 +1328,15 @@ msgstr "xrealloc: %s:%d: не вдається виділити %lu байтів msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "xrealloc: %s:%d: не вдається виділити %lu байтів" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Присутня пошта у $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Нова пошта у $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Пошту у %s прочитано\n" @@ -1354,103 +1369,103 @@ msgstr "here-document з рядка %d закінчено кінцем файл msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: інструкція переспрямування `%d' поза межами" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "файл скінчився раніше, ніж було знайдено відповідний `%c'" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "файл скінчився раніше, ніж було знайдено `]]'" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксична помилка в умовному виразі: неочікувана лексема `%s'" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "синтаксична помилка в умовному виразі" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неочікувана лексема `%s', очікувалася `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "очікувалася `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператору `%s'" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "неочікуваний аргумент унарного умовного оператору" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неочікувана лексема `%s', очікувався бінарний умовний оператор" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "очікувався бінарний умовний оператор" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора `%s'" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "неочікуваний аргумент бінарного умовного оператора" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неочікувана лексема `%c' в умовній команді" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неочікувана лексема `%s' в умовній команді" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "неочікувана лексема %d в умовній команді" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксична помилка коло неочікуваної лексеми `%s'" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "синтаксична помилка коло `%s'" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "синтаксична помилка: раптово скінчився файл" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "синтаксична помилка" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Використовуйте \"%s\", щоб вийти з оболонки.\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "файл скінчився, перш ніж було знайдено відповідну `)'" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "завершення: функцію `%s' не знайдено" @@ -1479,71 +1494,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': неправильний символ шаблону" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "дескриптор файлу поза можливими межами" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначне переспрямування" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: заборонено перезаписувати існуючі файли" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: обмеження: переспрямування виводу заборонене" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не вдається створити тимчасовий файл для here-document: %s" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: неможливо означити елемент масиву списком" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не підтримується" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "помилка переспрямування: не вдається створити копію дескриптора файлу" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "не вдається знайти /tmp, будь ласка створіть його!" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp має бути назвою дійсної директорії" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: невірний параметр" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "У мене нема імені!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версія %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1552,44 +1567,45 @@ msgstr "" "Використовуйте:\t%s [довгий параметр GNU] [параметр] ...\n" "\t%s [довгий параметр GNU] [параметр] файл_сценарію ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Довгі параметри GNU:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Параметри оболонки:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s чи -o параметр\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "" "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри " "оболонки.\n" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "" "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди " "оболонки.\n" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "" "Щоб повідомити про помилку в програмі, використовуйте команду `bashbug'.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: невірна операція" @@ -1763,131 +1779,136 @@ msgstr "Невідомий сигнал №" msgid "Unknown Signal #%d" msgstr "Невідомий сигнал №%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неправильна заміна: немає заключної `%s' у %s" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: неможливо означити елемент масиву списком" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "не вдається створити канал для підставляння процесу" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "не вдається створити дочірній процес для підставляння процесу" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "не вдається відкрити іменований канал %s для читання" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "не вдається відкрити іменований канал %s для запису" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "не вдається створити канал для підставляння команди" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "не вдається створити дочірній процес для підставляння команди" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" "command_substitute: не вдається створити копію каналу із файловим " "дескриптором 1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%d: неправильний дескриптор файлу: %s" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр нульової довжини чи не вказаний" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: підрядок коротший за 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: неправильна заміна" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: не можна призначити таким чином" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неправильна заміна: немає заключної \"`\" у %s" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "нема відповідника: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "очікувався аргумент" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: очікувався числовий вираз" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "очікувалася `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "очікувалася `)', отримано %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: очікувався унарний оператор" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: очікувався бінарний оператор" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "відсутня `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "неправильний номер сигналу" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неправильне значення у trap_list[%d]: %p" -#: trap.c:333 +#: trap.c:352 #, c-format msgid "" "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" @@ -1895,78 +1916,88 @@ msgstr "" "run_pending_traps: обробник сигналу є SIG_DFL, %d (%s) повторно надсилається " "собі" -#: trap.c:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неправильний сигнал %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "помилка імпортування означення функції `%s'" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "рівень оболонки (%d) занадто високий, перевстановлено у 1" -#: variables.c:1941 +#: variables.c:2198 #, fuzzy msgid "make_local_variable: no function context at current scope" msgstr "" "make_local_variable: немає контексту функції у поточному оточенні виконання" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: неможливо означити елемент масиву списком" + +#: variables.c:3554 #, fuzzy msgid "all_local_variables: no function context at current scope" msgstr "" "all_local_variables: немає контексту функції у поточному оточенні виконання" -#: variables.c:3437 +#: variables.c:3799 #, fuzzy, c-format msgid "%s has null exportstr" msgstr "%s: параметр нульової довжини чи не вказаний" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "невірний символ %d у рядку експорту для %s" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "немає `=' у рядку експорту для %s" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" "pop_var_context: перший елемент shell_variables не є контекстом функції" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: немає контексту global_variables" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" "pop_scope: перший елемент shell_variables не є тимчасовим оточенням виконання" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: не вдається відкрити: %s" -#: variables.c:4826 +#: variables.c:5170 #, fuzzy, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%d: неправильний дескриптор файлу: %s" -#: version.c:46 +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s виходить за встановлені межі" + +#: version.c:46 version2.c:46 #, fuzzy -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Copyright (C) 2009 Free Software Foundation, Inc." -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1974,37 +2005,23 @@ msgstr "" "Ліцензія GPLv3+: GNU GPL версія 3 чи новіша \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, версія %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "" "Це вільне програмне забезпечення; ви можете його змінювати та " "розповсюджувати.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "Не надається НІЯКИХ ГАРАНТІЙ у межах, передбачених законом.\n" -#: version2.c:86 -#, fuzzy, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Copyright (C) 2009 Free Software Foundation, Inc." - -#: version2.c:87 -#, fuzzy, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"Ліцензія GPLv3+: GNU GPL версія 3 чи новіша \n" - #: xmalloc.c:91 #, fuzzy, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2086,7 +2103,7 @@ msgstr "command [-pVv] команда [аргумент ...]" #: builtins.c:76 #, fuzzy -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFilrtux] [-p] [ім’я[=значення] ...]" #: builtins.c:78 @@ -2200,7 +2217,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o параметр] [аргумент ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [ім’я ...]" #: builtins.c:144 @@ -2259,12 +2277,13 @@ msgstr "umask [-p] [-S] [режим-доступу]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [ідентифікатор]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [ідентифікатор-процесу]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [ідентифікатор]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2813,6 +2832,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2828,7 +2848,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Встановлює значення та властивості змінних.\n" " \n" @@ -2864,7 +2885,7 @@ msgstr "" "виникло\n" " помилки під час виконання." -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2874,7 +2895,8 @@ msgstr "" " \n" " Команда вийшла з ужитку. Дивіться `help declare'." -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2885,8 +2907,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Описує локальні змінні.\n" " \n" @@ -2902,7 +2924,7 @@ msgstr "" " Команда завершується невдало, якщо вказано невірні параметри, якщо\n" " трапилася помилка або якщо оболонка зараз не виконує функцію." -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2965,7 +2987,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо виникне помилка запису." -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2987,7 +3009,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо трапиться помилка запису." -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -3042,7 +3064,7 @@ msgstr "" " Команда завершується невдало, якщо ІМ’Я не є вбудованою командою\n" " оболонки або якщо трапиться помилка під час виконання." -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -3064,7 +3086,7 @@ msgstr "" "команди\n" " є порожнім рядком, команда завершується успішно." -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3149,7 +3171,7 @@ msgstr "" " Команда завершується успішно, якщо знайдено параметр; помилково, якщо\n" " параметри скінчилися або трапилася помилка." -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3190,7 +3212,7 @@ msgstr "" " Команда завершується невдало, якщо команду не буде знайдено або якщо\n" " трапиться помилка переспрямування." -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3202,7 +3224,7 @@ msgstr "" " Виходить з оболонки, повертаючи статус N. Якщо N не вказано, береться\n" " статус останньої запущеної команди." -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3216,7 +3238,7 @@ msgstr "" "команду\n" " запущено не у оболонці сеансу." -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3271,7 +3293,7 @@ msgstr "" " Команда завершується зі статусом запущених команд, або помилкою, якщо\n" " трапиться помилка." -#: builtins.c:751 +#: builtins.c:753 #, fuzzy msgid "" "Move job to the foreground.\n" @@ -3294,7 +3316,7 @@ msgstr "" " Команда завершується зі статусом завершення завдання, що переведене\n" " у пріоритетний режим, або помилку, якщо трапиться помилка." -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3319,7 +3341,7 @@ msgstr "" "якщо\n" " трапиться помилка." -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3364,7 +3386,7 @@ msgstr "" " Команда завершується невдало, якщо ІМ’Я не вдається знайти або якщо\n" " вказано невірний параметр." -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3407,7 +3429,7 @@ msgstr "" " невірний параметр." # WTF??? history list += history + history file ??? -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3476,7 +3498,7 @@ msgstr "" "виникло\n" " помилки під час виконання." -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3521,7 +3543,7 @@ msgstr "" " виникло помилки під час виконання. При використанні -x команда\n" " завершується зі статусом завершення КОМАНДИ." -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3553,7 +3575,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " ЗАВДАННЯ." -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3595,7 +3617,7 @@ msgstr "" " Команда завершується успішно, якщо вказані правильні аргументи та не\n" " трапилося помилки під час виконання." -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3682,7 +3704,7 @@ msgstr "" " Якщо результатом обчислення останнього АРГУМЕНТУ є 0, let повертає 1,\n" " інакше — 0." -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3718,7 +3740,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3775,7 +3797,7 @@ msgstr "" "час\n" " очікування, або якщо із -u вказано неправильний файловий дескриптор." -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3796,7 +3818,7 @@ msgstr "" " Код завершення:\n" " Команда повертає N, або помилку, якщо викликана не у функції чи сценарії." -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3971,7 +3993,8 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказані правильні параметри." -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3980,6 +4003,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -4008,7 +4033,7 @@ msgstr "" "ІМ’Я\n" " доступне лише для читання." -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -4041,7 +4066,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та ІМЕНА." -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4078,7 +4103,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильні параметри та ІМЕНА." -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -4096,7 +4121,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо N менше за нуль чи більше за $#." -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4120,7 +4145,7 @@ msgstr "" "або\n" " помилку, якщо ФАЙЛ не вдається прочитати." -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -4145,7 +4170,7 @@ msgstr "" " Команда завершується невдало, якщо не ввімкнене керування завданнями чи\n" " якщо трапиться помилка." -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4211,6 +4236,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4305,7 +4332,7 @@ msgstr "" "вказано\n" " невірний аргумент чи ВИРАЗ хибний." -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4318,7 +4345,7 @@ msgstr "" "останнім\n" " аргументом має бути `]'." -#: builtins.c:1330 +#: builtins.c:1335 #, fuzzy msgid "" "Display process times.\n" @@ -4338,7 +4365,7 @@ msgstr "" " Код завершення:\n" " Команда завжди успішна." -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4415,7 +4442,7 @@ msgstr "" " Команда завершується успішно, якщо вказані правильні параметри та " "СИГНАЛИ." -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4467,7 +4494,7 @@ msgstr "" "якщо\n" " хоч одне з них не вдасться знайти." -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4558,7 +4585,7 @@ msgstr "" " Команда завершується невдало, якщо вказано неправильний параметр чи\n" " трапилася помилка під час виконання." -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4592,7 +4619,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо вказано правильну МАСКУ та параметри." -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4605,6 +4632,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4623,18 +4653,20 @@ msgstr "" "вказано\n" " неправильні параметри чи ІДЕНТИФІКАТОР." -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Очікує на завершення роботи процесу та повертає його код завершення.\n" " \n" @@ -4650,7 +4682,7 @@ msgstr "" "вказано\n" " неправильний ІДЕНТИФІКАТОР чи параметр." -#: builtins.c:1510 +#: builtins.c:1518 #, fuzzy msgid "" "Execute commands for each member in a list.\n" @@ -4672,7 +4704,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4702,7 +4734,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4741,7 +4773,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4769,7 +4801,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення ЛАНЦЮЖКА-КОМАНД." -#: builtins.c:1580 +#: builtins.c:1588 #, fuzzy msgid "" "Execute commands based on pattern matching.\n" @@ -4789,7 +4821,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4822,7 +4854,7 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди або нуль,\n" " якщо жодна з перевірених умов не була істинною." -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4840,7 +4872,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення останньої виконаної команди." -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4859,7 +4891,7 @@ msgstr "" " Команда повертає код завершення останньої виконаної команди." # WTF? How can it return exit code of _asynchronous_ process... -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4883,7 +4915,7 @@ msgstr "" " Код завершення:\n" " Команда повертає код завершення КОМАНДИ." -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4909,7 +4941,7 @@ msgstr "" " Код завершення:\n" " Команда завершується невдало, якщо ІМ’Я є незмінним." -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4928,7 +4960,7 @@ msgstr "" " Код завершення:\n" " Конструкція повертає код завершення останньої виконаної команди." -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4953,7 +4985,7 @@ msgstr "" " Код завершення:\n" " Команда повертає статус продовженого завдання." -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4971,7 +5003,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо результат обчислення ненульовий." -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -5020,7 +5052,7 @@ msgstr "" " Код завершення:\n" " Команда завершується успішно, якщо ВИРАЗ істинний." -#: builtins.c:1726 +#: builtins.c:1734 #, fuzzy msgid "" "Common shell variable names and usage.\n" @@ -5124,7 +5156,7 @@ msgstr "" " HISTIGNORE\tРозділений двокрапкою список шаблонів, що використовуються\n" " \t\tпри визначенні, чи зберігати команду у списку історії.\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -5182,7 +5214,7 @@ msgstr "" " Команда завершується невдало, якщо вказаний неправильний аргумент чи\n" " якщо не вдається змінити поточну директорію." -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -5233,7 +5265,7 @@ msgstr "" " Команда завершується невдало, якщо вказано невірний аргумент чи якщо\n" " не вдається змінити поточну директорію." -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5288,7 +5320,7 @@ msgstr "" "якщо\n" " трапиться помилка." -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5324,7 +5356,7 @@ msgstr "" " Команда завершується успішно, якщо ПАРАМЕТР ввімкнено; невдало, якщо\n" " вказано неправильні параметри чи ПАРАМЕТР вимкнено." -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5352,6 +5384,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5382,7 +5420,7 @@ msgstr "" "або\n" " якщо трапиться помилка запису чи присвоєння." -#: builtins.c:1926 +#: builtins.c:1939 #, fuzzy msgid "" "Specify how arguments are to be completed by Readline.\n" @@ -5427,7 +5465,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та не\n" " трапиться помилки під час виконання." -#: builtins.c:1954 +#: builtins.c:1967 #, fuzzy msgid "" "Display possible completions depending on the options.\n" @@ -5450,7 +5488,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри і не\n" " трапиться помилки під час виконання." -#: builtins.c:1969 +#: builtins.c:1982 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5505,7 +5543,7 @@ msgstr "" " Команда завершується успішно, якщо вказано правильні параметри та\n" " вказівки завершень для ІМЕН існують." -#: builtins.c:1999 +#: builtins.c:2012 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5585,7 +5623,7 @@ msgstr "" "або\n" " якщо МАСИВ є незмінним." -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5595,6 +5633,21 @@ msgstr "" " \n" " Синонім до `mapfile'." +#, fuzzy +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc." + +#, fuzzy +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Ліцензія GPLv3+: GNU GPL версія 3 чи новіша \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [ідентифікатор-процесу]" + #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" #~ msgstr "" #~ "xrealloc: не вдається змінити розмір виділеного блоку до %lu байтів " diff --git a/po/vi.gmo b/po/vi.gmo index 71e750021..673b9531a 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 4d0dcb074..7ca75a3b6 100644 --- a/po/vi.po +++ b/po/vi.po @@ -9,62 +9,62 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-28 22:09-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2012-09-11 07:29+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" -"Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.8\n" "X-Poedit-SourceCharset: UTF-8\n" -#: arrayfunc.c:50 +#: arrayfunc.c:51 msgid "bad array subscript" msgstr "chỉ mục mảng sai" -#: arrayfunc.c:313 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, 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:480 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: khoá mảng liên kết không hợp lệ" -#: arrayfunc.c:482 +#: arrayfunc.c:541 #, 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:518 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: phải sá»­ dụng chữ thấp khi gán mảng kết hợp" -#: bashhist.c:387 +#: bashhist.c:388 #, c-format msgid "%s: cannot create: %s" msgstr "%s: không thể tạo: %s" -#: bashline.c:3498 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: không tìm thấy ánh xạ cho câu lệnh" -#: bashline.c:3584 +#: bashline.c:4010 #, 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:3613 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "thiếu dấu đóng `%c' trong %s" -#: bashline.c:3647 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: thiếu dấu hai chấm phân cách" @@ -74,36 +74,36 @@ msgstr "%s: thiếu dấu hai chấm phân cách" msgid "`%s': invalid alias name" msgstr "`%s': tên bí danh không hợp lệ" -#: builtins/bind.def:120 builtins/bind.def:123 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "chưa bật sá»­a đổi dòng" -#: builtins/bind.def:206 +#: builtins/bind.def:212 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': tên ánh xạ phím không hợp lệ" -#: builtins/bind.def:245 +#: builtins/bind.def:251 #, c-format msgid "%s: cannot read: %s" msgstr "%s: không thể đọc: %s" -#: builtins/bind.def:260 +#: builtins/bind.def:266 #, c-format msgid "`%s': cannot unbind" msgstr "`%s': không thể tháo" -#: builtins/bind.def:295 builtins/bind.def:325 +#: builtins/bind.def:304 builtins/bind.def:334 #, c-format msgid "`%s': unknown function name" msgstr "`%s': tên hàm không rõ" -#: builtins/bind.def:303 +#: builtins/bind.def:312 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s không được tổ hợp với phím.\n" -#: builtins/bind.def:307 +#: builtins/bind.def:316 #, c-format msgid "%s can be invoked via " msgstr "%s có thể được gọi thông qua " @@ -126,11 +126,15 @@ msgstr "" "\n" " Nếu không có BTHỨC thì trả lại " -#: builtins/cd.def:235 +#: builtins/cd.def:239 msgid "HOME not set" msgstr "Chưa đặt biến môi trường HOME" -#: builtins/cd.def:247 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 +msgid "too many arguments" +msgstr "quá nhiều đối số" + +#: builtins/cd.def:258 msgid "OLDPWD not set" msgstr "Chưa đặt biến môi trường OLDPWD" @@ -139,7 +143,7 @@ msgstr "Chưa đặt biến môi trường OLDPWD" msgid "line %d: " msgstr "dòng %d: " -#: builtins/common.c:139 error.c:261 +#: builtins/common.c:139 error.c:265 #, c-format msgid "warning: " msgstr "cảnh báo: " @@ -149,11 +153,7 @@ msgstr "cảnh báo: " msgid "%s: usage: " msgstr "%s: sá»­ dụng: " -#: builtins/common.c:166 test.c:832 -msgid "too many arguments" -msgstr "quá nhiều đối số" - -#: builtins/common.c:191 shell.c:500 shell.c:782 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: tùy chọn cần một đối số" @@ -168,7 +168,7 @@ msgstr "%s: cần đối số dạng số" msgid "%s: not found" msgstr "%s: không tìm thấy" -#: builtins/common.c:214 shell.c:795 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: tùy chọn không hợp lệ" @@ -178,7 +178,7 @@ msgstr "%s: tùy chọn không hợp lệ" msgid "%s: invalid option name" msgstr "%s: tên tùy chọn không hợp lệ" -#: builtins/common.c:228 general.c:231 general.c:236 +#: builtins/common.c:228 general.c:234 general.c:239 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': không phải định danh hợp lệ" @@ -191,7 +191,7 @@ msgstr "số bát phân không hợp lệ" msgid "invalid hex number" msgstr "số thập lục không hợp lệ" -#: builtins/common.c:242 expr.c:1362 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "số không hợp lệ" @@ -205,7 +205,7 @@ msgstr "%s: sai đặc tả tín hiệu" msgid "`%s': not a pid or valid job spec" msgstr "`%s': không phải một pid hoặc đặc tả công việc hợp lệ" -#: builtins/common.c:264 error.c:454 +#: builtins/common.c:264 error.c:458 #, c-format msgid "%s: readonly variable" msgstr "%s: biến chỉ đọc" @@ -277,48 +277,58 @@ msgstr "%s: lỗi lấy thư mục hiện thời: %s: %s\n" msgid "%s: ambiguous job spec" msgstr "%s: đặc tả công việc mÆ¡ hồ" -#: builtins/complete.def:276 +#: builtins/complete.def:277 #, c-format msgid "%s: invalid action name" msgstr "%s: tên hành động không hợp lệ" -#: builtins/complete.def:449 builtins/complete.def:644 -#: builtins/complete.def:853 +#: builtins/complete.def:450 builtins/complete.def:645 +#: builtins/complete.def:855 #, c-format msgid "%s: no completion specification" msgstr "%s: không có đặc tả hoàn thành" -#: builtins/complete.def:696 +#: builtins/complete.def:697 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:698 +#: builtins/complete.def:699 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ư mong đợi" -#: builtins/complete.def:826 +#: builtins/complete.def:828 msgid "not currently executing completion function" msgstr "hiện thời không thá»±c thi chức năng hoàn thành" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "chỉ có thể dùng trong một hàm" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "không thể dùng \"-f\" để tạo hàm" -#: builtins/declare.def:378 execute_cmd.c:5105 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: hàm chỉ đọc" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, 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:481 +#: builtins/declare.def:572 builtins/read.def:721 #, 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ố" @@ -347,24 +357,23 @@ msgstr "%s không được nạp động" msgid "%s: cannot delete: %s" msgstr "%s: không thể xoá: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:4961 -#: shell.c:1457 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: là thư mục" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: không phải là tập tin thường" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: tập tin quá lớn" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 execute_cmd.c:5032 -#: shell.c:1467 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: không thể thá»±c hiện tập tin nhị phân" @@ -447,15 +456,17 @@ msgstr[0] "Câu lệnh shell tương ứng với từ khoá `" #: builtins/help.def:168 #, c-format -msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "không có trợ giúp cho `%s'. Thá»­ `help help', `man -k %s' hoặc `info %s'" +msgid "" +"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "" +"không có trợ giúp cho `%s'. Thá»­ `help help', `man -k %s' hoặc `info %s'" #: builtins/help.def:185 #, c-format msgid "%s: cannot open: %s" msgstr "%s: không thể mở: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -482,7 +493,7 @@ msgstr "chỉ có thể dùng một cá»§a những tùy chọn -anrw" msgid "history position" msgstr "vị trí lịch sá»­" -#: builtins/history.def:365 +#: builtins/history.def:366 #, c-format msgid "%s: history expansion failed" msgstr "%s: lỗi bung lịch sá»­" @@ -496,16 +507,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:198 +#: 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:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "Lỗi không rõ" -#: builtins/let.def:95 builtins/let.def:120 expr.c:552 expr.c:567 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "cần biểu thức" @@ -514,64 +525,64 @@ 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:256 builtins/read.def:279 +#: builtins/mapfile.def:259 builtins/read.def:302 #, 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:264 builtins/read.def:286 +#: builtins/mapfile.def:267 builtins/read.def:309 #, 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:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: sai đếm dòng" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: gốc mảng không hợp lệ" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: lượng gọi ngược không hợp lệ" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "tên biến mảng vẫn trống" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "cần hỗ trợ biến mảng" -#: builtins/printf.def:394 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': thiếu ký tá»± định dạng" -#: builtins/printf.def:448 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': đặc tả định dạng thời gian không đúng" -#: builtins/printf.def:635 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": ký tá»± định dạng không hợp lệ" -#: builtins/printf.def:662 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "cảnh báo: %s: %s" -#: builtins/printf.def:840 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "thiếu chữ số thập phân cho \\x" -#: builtins/printf.def:855 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "thiếu chữ số unicode cho \\%c" @@ -580,19 +591,24 @@ msgstr "thiếu chữ số unicode cho \\%c" msgid "no other directory" msgstr "không có thư mục khác" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: đối số giới hạn không hợp lệ" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "chồng thư mục trống" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "chỉ mục chồng thư mục" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -607,10 +623,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Hiển thị danh sách các thư mục được nhớ hiện thời. Lệnh `pushd' thêm\n" @@ -630,7 +648,7 @@ msgstr "" " -N\thiển thị mục thứ N đếm từ bên phải khi gọi không tuỳ chọn,\n" " bắt đầu từ số không." -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -674,7 +692,7 @@ msgstr "" "\n" " Lệnh `dirs' hiển thị chồng thư mục." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -712,40 +730,40 @@ msgstr "" "\n" " Lệnh `dirs' hiển thị chồng thư mục." -#: builtins/read.def:252 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sai xác định quá hạn" -#: builtins/read.def:588 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "lỗi đọc: %d: %s" -#: builtins/return.def:73 +#: builtins/return.def:75 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:771 +#: builtins/set.def:782 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:808 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: không thể há»§y đặt" -#: builtins/set.def:815 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: không thể há»§y đặt: %s chỉ đọc" -#: builtins/set.def:826 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: không phải biến mảng" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: không phải hàm" @@ -754,11 +772,11 @@ msgstr "%s: không phải hàm" msgid "shift count" msgstr "số lượng dời" -#: builtins/shopt.def:264 +#: builtins/shopt.def:279 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 shell" -#: builtins/shopt.def:329 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: tên tùy chọn shell không hợp lệ" @@ -800,7 +818,7 @@ msgstr "%s là hàm\n" msgid "%s is a shell builtin\n" msgstr "%s là lệnh dá»±ng sẵn shell\n" -#: builtins/type.def:317 builtins/type.def:391 +#: builtins/type.def:317 builtins/type.def:393 #, c-format msgid "%s is %s\n" msgstr "%s là %s\n" @@ -810,26 +828,26 @@ msgstr "%s là %s\n" msgid "%s is hashed (%s)\n" msgstr "%s được băm (%s)\n" -#: builtins/ulimit.def:376 +#: builtins/ulimit.def:379 #, c-format msgid "%s: invalid limit argument" msgstr "%s: đối số giới hạn không hợp lệ" -#: builtins/ulimit.def:402 +#: builtins/ulimit.def:405 #, c-format msgid "`%c': bad command" msgstr "\"%c\": câu lệnh sai" -#: builtins/ulimit.def:431 +#: builtins/ulimit.def:434 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: không thể lấy giới hạn: %s" -#: builtins/ulimit.def:457 +#: builtins/ulimit.def:460 msgid "limit" msgstr "giới hạn" -#: builtins/ulimit.def:469 builtins/ulimit.def:769 +#: builtins/ulimit.def:472 builtins/ulimit.def:772 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: không thể sá»­a đổi giới hạn: %s" @@ -848,7 +866,7 @@ msgstr "\"%c\": toán tá»­ chế độ tượng trưng không hợp lệ" msgid "`%c': invalid symbolic mode character" msgstr "\"%c\": ký tá»± chế độ tượng trưng không hợp lệ" -#: error.c:90 error.c:321 error.c:323 error.c:325 +#: error.c:90 error.c:325 error.c:327 error.c:329 msgid " line " msgstr " dòng " @@ -862,133 +880,148 @@ msgstr "lệnh cuối: %s\n" msgid "Aborting..." msgstr "Há»§y bỏ..." -#: error.c:406 +#: error.c:410 msgid "unknown command error" msgstr "lỗi lệnh không rõ" -#: error.c:407 +#: error.c:411 msgid "bad command type" msgstr "kiểu lệnh sai" -#: error.c:408 +#: error.c:412 msgid "bad connector" msgstr "bộ kết nối sai" -#: error.c:409 +#: error.c:413 msgid "bad jump" msgstr "nhảy sai" -#: error.c:447 +#: error.c:451 #, c-format msgid "%s: unbound variable" msgstr "%s: biến chưa liên kết" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aquá hạn trong khi đợi dữ liệu nhập: tá»± động đăng xuất\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, 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:1168 +#: execute_cmd.c:1228 #, 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:2121 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "lỗi ống dẫn" -#: execute_cmd.c:4640 +#: execute_cmd.c:4347 +#, c-format +msgid "%s: maximum function nesting level exceeded (%d)" +msgstr "" + +#: execute_cmd.c:4840 #, 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:4735 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: không tìm thấy lệnh" -#: execute_cmd.c:4959 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:4995 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: bộ thông dịch sai" -#: execute_cmd.c:5144 +#: execute_cmd.c:5234 +#, fuzzy, c-format +msgid "%s: cannot execute binary file: %s" +msgstr "%s: không thể thá»±c hiện tập tin nhị phân" + +#: execute_cmd.c:5306 +#, fuzzy, c-format +msgid "`%s': is a special builtin" +msgstr "%s là lệnh dá»±ng sẵn shell\n" + +#: execute_cmd.c:5358 #, 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:256 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "vượt quá ngưỡng đệ quy cá»§a biểu thức" -#: expr.c:280 +#: expr.c:286 msgid "recursion stack underflow" msgstr "trán ngược đống đệ quy" -#: expr.c:422 +#: expr.c:434 msgid "syntax error in expression" msgstr "lỗi cú pháp trong biểu thức" -#: expr.c:463 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "thá»­ gán cho đồ không phải biến" -#: expr.c:486 expr.c:491 expr.c:807 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "chia cho không" -#: expr.c:517 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "lỗi: token expassign sai" -#: expr.c:564 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "cần `:' cho biểu thức điều kiện" -#: expr.c:832 +#: expr.c:904 msgid "exponent less than 0" msgstr "số mÅ© nhỏ hÆ¡n 0" -#: expr.c:887 +#: expr.c:957 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:910 +#: expr.c:983 msgid "missing `)'" msgstr "thiếu `)'" -#: expr.c:959 expr.c:1282 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "lỗi cú pháp: cần toán hạng" -#: expr.c:1284 +#: expr.c:1373 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:1308 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (hiệu bài lỗi là \"%s\")" -#: expr.c:1366 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "cÆ¡ số (số học) không hợp lệ" -#: expr.c:1386 +#: expr.c:1475 msgid "value too great for base" msgstr "cÆ¡ số có giá trị quá lớn" -#: expr.c:1435 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: lỗi biểu thức\n" @@ -997,165 +1030,165 @@ msgstr "%s: lỗi biểu thức\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: không thể truy cập thư mục cấp trên" -#: input.c:94 subst.c:5082 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "không thể đặt lại chế độ nodelay cho fd %d" -#: input.c:260 +#: input.c:267 #, 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:268 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: đã có bộ đệm cho fd mới %d" # NghÄ©a chữ ? -#: jobs.c:468 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:889 +#: jobs.c:892 #, 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:1007 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "đang xoá công việc bị dừng chạy %d với nhóm tiến trình %ld" -#: jobs.c:1112 +#: jobs.c:1115 #, 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:1115 +#: jobs.c:1118 #, 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:1430 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: không có pid như vậy" -#: jobs.c:1445 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "Tín hiệu %d" -#: jobs.c:1459 jobs.c:1484 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "Hoàn tất" -#: jobs.c:1464 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "Bị dừng" -#: jobs.c:1468 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "Bị dừng(%s)" -#: jobs.c:1472 +#: jobs.c:1475 msgid "Running" msgstr "Đang chạy" -#: jobs.c:1486 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "Hoàn tất(%d)" -#: jobs.c:1488 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "Thoát %d" -#: jobs.c:1491 +#: jobs.c:1494 msgid "Unknown status" msgstr "Không rõ trạng thái" -#: jobs.c:1578 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(xuất ra core)" -#: jobs.c:1597 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:1805 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid tiến trình con (%ld thành %ld)" -#: jobs.c:2133 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, 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 shell này" -#: jobs.c:2360 +#: jobs.c:2383 #, 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:2637 +#: jobs.c:2689 #, 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:2859 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: công việc bị chấm dứt" -#: jobs.c:2868 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: công việc %d đã đang chạy nền" -#: jobs.c:3089 +#: jobs.c:3215 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:3538 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: dòng %d: " -#: jobs.c:3552 nojobs.c:814 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (xuất ra core)" -#: jobs.c:3564 jobs.c:3577 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(wd bây giờ: %s)\n" -#: jobs.c:3609 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp bị lỗi" -#: jobs.c:3669 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: ká»· luật dòng" # NghÄ©a chữ : dừng dịch -#: jobs.c:3679 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3707 +#: jobs.c:3862 jobs.c:3871 #, 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:3712 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "không có điều khiển công việc trong shell này" @@ -1177,54 +1210,56 @@ msgstr "" msgid "unknown" msgstr "không rõ" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 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 rảnh bị ghi vào" +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 " +"rảnh bị ghi vào" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: đã được gọi với đối số khối đã giải phỏng" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 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:896 +#: lib/malloc/malloc.c:900 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:902 +#: lib/malloc/malloc.c:906 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:1001 +#: lib/malloc/malloc.c:1005 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:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: phát hiện sá»± tràn ngược; mh_nbytes ở ngoại phạm vi" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: bảng cấp phát đầy với FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p đã có trong bảng như được cấp phát?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p đã có trong bảng như còn trống?\n" -#: lib/sh/fmtulong.c:101 +#: lib/sh/fmtulong.c:102 msgid "invalid base" msgstr "cÆ¡ số không hợp lệ" @@ -1247,35 +1282,35 @@ 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:192 +#: locale.c:204 #, 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:194 +#: locale.c:206 #, 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:247 +#: locale.c:263 #, 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:249 +#: locale.c:265 #, 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" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "Bạn có thư trong $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "Bạn có thư mới trong $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "Đã đọc thư trong %s\n" @@ -1293,118 +1328,118 @@ msgstr "lỗi cú pháp: dấu chấm phẩy `;' không mong đợi" msgid "syntax error: `((%s))'" msgstr "lỗi cú pháp: `((%s))'" -#: make_cmd.c:575 +#: make_cmd.c:578 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: kiểu chỉ dẫn sai %d" -#: make_cmd.c:659 +#: make_cmd.c:662 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập tin (muốn `%s')" -#: make_cmd.c:756 +#: make_cmd.c:759 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: chỉ dẫn chuyển hướng \"%d\" ở ngoại phạm vi" -#: parse.y:3173 parse.y:3444 +#: parse.y:3209 parse.y:3480 #, 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:4025 +#: parse.y:4086 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:4030 +#: parse.y:4091 #, 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: hiệu bài bất thường `%s'" -#: parse.y:4034 +#: parse.y:4095 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:4112 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "gặp hiệu bài bất thường `%s', đang cần `)'" -#: parse.y:4116 +#: parse.y:4177 msgid "expected `)'" msgstr "cần `)'" -#: parse.y:4144 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "đối số bất thường `%s' cho toán tá»­ nguyên phân điều kiện" -#: parse.y:4148 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "đối số bất thường cho toán tá»­ nguyên phân điều kiện" -#: parse.y:4194 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "hiệu bài bất thường `%s', cần toán tá»­ hai ngôi điều kiện" -#: parse.y:4198 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "cần toán tá»­ hai ngôi điều kiện" -#: parse.y:4220 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "đối số bất thường `%s' cho toán tá»­ nhị phân điều kiện" -#: parse.y:4224 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "đối số bất thường cho toán tá»­ nhị phân điều kiện" -#: parse.y:4235 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "gặp hiệu bài bất thường \"%c\" trong câu lệnh điều kiện" -#: parse.y:4238 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "gặp hiệu bài bất thường `%s' trong câu lệnh điều kiện" -#: parse.y:4242 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "gặp hiệu bài bất thường \"%d\" trong câu lệnh điều kiện" -#: parse.y:5566 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "gặp lỗi cú pháp ở gần hiệu bài bất thường `%s'" -#: parse.y:5584 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "lỗi cú pháp gần `%s'" -#: parse.y:5594 +#: parse.y:5677 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:5594 +#: parse.y:5677 msgid "syntax error" msgstr "lỗi cú pháp" -#: parse.y:5656 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Dùng `%s' để rời shell.\n" -#: parse.y:5818 +#: parse.y:5901 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:1030 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "completion: không tìm thấy hàm `%s'" @@ -1414,91 +1449,91 @@ msgstr "completion: không tìm thấy hàm `%s'" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:296 +#: 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:368 +#: print_cmd.c:373 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: sai đặt bộ mô tả tập tin" -#: print_cmd.c:373 +#: 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:377 +#: 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:1478 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": ký tá»± định dạng không hợp lệ" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "bộ mô tả tập tin ở ngoại phạm vi" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: chuyển hướng mÆ¡ hồ" -#: redir.c:182 +#: redir.c:181 #, 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:186 #, 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:191 #, 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:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: không thể gán fd vào biến" -#: redir.c:548 +#: redir.c:582 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:818 redir.c:930 redir.c:993 redir.c:1136 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "lỗi chuyển hướng: không thể nhân đôi fd" -#: shell.c:333 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "không tìm thấy /tmp, hãy tạo mới!." -#: shell.c:337 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "\"/tmp\" phải là tên thư mục hợp lệ" -#: shell.c:884 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: tùy chọn không hợp lệ" -#: shell.c:1652 +#: shell.c:1682 msgid "I have no name!" msgstr "Không có tên!" -#: shell.c:1795 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, phiên bản %s-(%s)\n" -#: shell.c:1796 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1507,39 +1542,40 @@ msgstr "" "Sá»­ dụng:\t%s [tùy chọn GNU dài] [tùy chọn] ...\n" "\t%s [tùy chọn dài] [tùy chọn] tập-tin-văn-lệnh ...\n" -#: shell.c:1798 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "Tùy chọn dài:\n" -#: shell.c:1802 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Tùy chọn:\n" -#: shell.c:1803 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD hoặc -c lệnh or -O shopt_option\t\t(chỉ gọi)\n" -#: shell.c:1818 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s hoặc -o tùy chọn\n" -#: shell.c:1824 +#: shell.c:1856 #, 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 shell.\n" -#: shell.c:1825 +#: shell.c:1857 #, 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 shell dá»±ng sẵn.\n" -#: shell.c:1826 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Dùng lệnh `bashbug' để thông báo lỗi.\n" -#: sig.c:638 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: thao tác không hợp lệ" @@ -1713,224 +1749,245 @@ msgstr "Tín hiệu lạ #" msgid "Unknown Signal #%d" msgstr "Tín hiệu lạ #%d" -#: subst.c:1333 subst.c:1502 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "thay thế sai: không có đóng `%s' trong %s" -#: subst.c:2795 +#: subst.c:2823 #, 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:4979 subst.c:4995 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "không thể tạo ống dẫn để thay thế tiến trình" -#: subst.c:5027 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "không thể tạo tiến trình con để thay thế tiến trình" -#: subst.c:5072 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "không thể mở ống dẫn đặt tên %s để đọc" -#: subst.c:5074 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "không thể mở ống dẫn có tên %s để ghi" -#: subst.c:5092 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d" -#: subst.c:5284 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "không thể tạo ống dẫn để thay thế lệnh" -#: subst.c:5322 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "không thể tạo tiến trình con để thay thế lệnh" -#: subst.c:5339 +#: subst.c:5330 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:5859 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: tham số null hoặc chưa được đặt" -#: subst.c:6125 subst.c:6140 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: biểu thức chuỗi con < 0" -#: subst.c:7271 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: thay thế sai" -#: subst.c:7347 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: không thể gán bằng cách này" -#: subst.c:7684 -msgid "future versions of the shell will force evaluation as an arithmetic substitution" -msgstr "phiên bản shell mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học" +#: subst.c:7767 +msgid "" +"future versions of the shell will force evaluation as an arithmetic " +"substitution" +msgstr "" +"phiên bản shell mới sẽ ép buộc ước lượng dưới dạng một hàm thay thế số học" -#: subst.c:8149 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "sai thay thế: không có \"`\" đóng trong %s" -#: subst.c:9036 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "không khớp: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "cần đối số" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: cần biểu thức số nguyên" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "cần `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "cần `)', nhận được %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: cần toán tá»­ một ngôi" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: cần toán tá»­ hai ngôi" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "thiếu `]'" -#: trap.c:207 +#: trap.c:217 msgid "invalid signal number" msgstr "số thứ tá»± tín hiệu không hợp lệ" -#: trap.c:337 +#: trap.c:348 #, 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:341 +#: trap.c:352 #, c-format -msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -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" +msgid "" +"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +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:393 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: tín hiệu sai %d" -#: variables.c:363 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "gặp lỗi khi nhập lời xác định hàm cho `%s'" -#: variables.c:755 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "cấp shell (%d) quá cao nên đặt lại thành 1" -#: variables.c:1932 +#: variables.c:2198 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:3182 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: không thể gán fd vào biến" + +#: variables.c:3554 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:3427 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s có exportstr null" -#: variables.c:3432 variables.c:3441 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "sai ký tá»± %d trong exportstr cho %s" -#: variables.c:3447 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "không có `=' trong exportstr cho %s" -#: variables.c:3891 +#: variables.c:4252 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 shell) không phải là ngữ cảnh hàm" +msgstr "" +"pop_var_context: đầu cá»§a shell_variables (các biến shell) không phải là ngữ " +"cảnh hàm" -#: variables.c:3904 +#: variables.c:4265 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)" +msgstr "" +"pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)" -#: variables.c:3978 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "pop_scope: đầu cá»§a shell_variables (các biến shell) không phải là phạm vi môi trường tạm thời" +msgstr "" +"pop_scope: đầu cá»§a shell_variables (các biến shell) không phải là phạm vi " +"môi trường tạm thời" -#: variables.c:4786 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: không thể mở dưới dạng TẬP-TIN" -#: variables.c:4791 +#: variables.c:5170 #, 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" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s ở ngoại phạm vi" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "Tác quyền (C) năm 2011 cá»§a Tổ chức Quỹ Phần mềm Tá»± do, Inc." -#: version.c:47 -msgid "License GPLv3+: GNU GPL version 3 or later \n" -msgstr "Giấy phép GPLv3+: GNU GPL phiên bản 3 hoặc mới hÆ¡n \n" +#: version.c:47 version2.c:47 +msgid "" +"License GPLv3+: GNU GPL version 3 or later \n" +msgstr "" +"Giấy phép GPLv3+: GNU GPL phiên bản 3 hoặc mới hÆ¡n \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash, phiên bản %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "Đây là phần mềm tá»± do; bạn có quyền sá»­a đổi và phát hành lại nó.\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "KHÔNG BẢO ĐẢM GÌ CẢ, với điều kiện được pháp luật cho phép.\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "Tác quyền (C) năm 2009 cá»§a Tổ chức Phần mềm Tá»± do.\n" - -#: version2.c:87 -#, c-format -msgid "License GPLv2+: GNU GPL version 2 or later \n" -msgstr "Giấy phép GPLv2+: GNU GPL phiên bản 2 hoặc mới hÆ¡n \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -1960,8 +2017,13 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] TÊN [TÊN ...]" #: builtins.c:51 -msgid "bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]" -msgstr "bind [-lpvsPVS] [-m SÆ -ĐỒ-PHÍM] [-f TẬP-TIN] [-q TÊN] [-u TÊN] [-r DÃY-PHÍM] [-x DÃY-PHÍM:LỆNH] [DÃY-PHÍM:HÀM-READLINE hay LỆNH-READLINE]" +#, 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 SÆ -ĐỒ-PHÍM] [-f TẬP-TIN] [-q TÊN] [-u TÊN] [-r DÃY-PHÍM] " +"[-x DÃY-PHÍM:LỆNH] [DÃY-PHÍM:HÀM-READLINE hay LỆNH-READLINE]" #: builtins.c:54 msgid "break [n]" @@ -2004,7 +2066,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] LỆNH [ĐỐI-SỐ ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [TÊN[=GIÁ-TRỊ] ...]" #: builtins.c:78 @@ -2068,8 +2131,12 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [MẪU ...]" #: builtins.c:121 -msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" -msgstr "history [-c] [-d OFFSET] [n] hay history -anrw [TẬP-TIN] hay history -ps ĐỐI-SỐ [ĐỐI-SỐ...]" +msgid "" +"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " +"[arg...]" +msgstr "" +"history [-c] [-d OFFSET] [n] hay history -anrw [TẬP-TIN] hay history -ps ĐỐI-" +"SỐ [ĐỐI-SỐ...]" #: builtins.c:125 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2080,16 +2147,23 @@ msgid "disown [-h] [-ar] [jobspec ...]" msgstr "disown [-h] [-ar] [ĐTCV ...]" #: builtins.c:132 -msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" -msgstr "kill [-s ĐTTH | -n số_tín_hiệu | -ĐTTH] pid | ĐTCV ... hoặc kill -l [ĐTTH]" +msgid "" +"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " +"[sigspec]" +msgstr "" +"kill [-s ĐTTH | -n số_tín_hiệu | -ĐTTH] pid | ĐTCV ... hoặc kill -l [ĐTTH]" #: builtins.c:134 msgid "let arg [arg ...]" msgstr "let ĐỐI-SỐ [ĐỐI-SỐ ...]" #: builtins.c:136 -msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" -msgstr "read [-ers] [-a MẢNG] [-d GIỚI-HẠN] [-i VĂN-BẢN] [-n SỐ-KÝ-Tá»°] [-N SỐ-KÝ-Tá»°] [-p NHẮC] [-t THỜI-HẠN] [-u fd] [TÊN ...]" +msgid "" +"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p " +"prompt] [-t timeout] [-u fd] [name ...]" +msgstr "" +"read [-ers] [-a MẢNG] [-d GIỚI-HẠN] [-i VĂN-BẢN] [-n SỐ-KÝ-Tá»°] [-N SỐ-KÝ-Tá»°] " +"[-p NHẮC] [-t THỜI-HẠN] [-u fd] [TÊN ...]" # nghÄ©a chữ #: builtins.c:138 @@ -2101,7 +2175,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [-abefhkmnptuvxBCHP] [-o TÊN-TÙY-CHỌN] [--] [ĐỐI-SỐ ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [TÊN ...]" #: builtins.c:144 @@ -2149,7 +2224,8 @@ msgid "type [-afptP] name [name ...]" msgstr "type [-afptP] TÊN [TÊN ...]" #: builtins.c:169 -msgid "ulimit [-SHacdefilmnpqrstuvx] [limit]" +#, fuzzy +msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]" msgstr "ulimit [-SHacdefilmnpqrstuvx] [GIỚI-HẠN]" #: builtins.c:172 @@ -2157,11 +2233,13 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [CHẾ-ĐỘ]" #: builtins.c:175 -msgid "wait [id]" +#, fuzzy +msgid "wait [-n] [id ...]" msgstr "wait [id]" #: builtins.c:179 -msgid "wait [pid]" +#, fuzzy +msgid "wait [pid ...]" msgstr "wait [pid]" #: builtins.c:182 @@ -2185,7 +2263,9 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case TỪ in [MẪU [| MẪU]...) LỆNH ;;]... esac" #: builtins.c:192 -msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgid "" +"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " +"COMMANDS; ] fi" msgstr "if LỆNH; then LỆNH; [ elif LỆNH; then LỆNH; ]... [ else LỆNH; ] fi" #: builtins.c:194 @@ -2245,24 +2325,42 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v BIẾN] ĐỊNH-DẠNG [ĐỐI-SỐ]" #: builtins.c:229 -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 TÙY-CHỌN] [-A HÀNH-ĐỘNG] [-G MẪU-GLOB] [-W DANH-SÁCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-TỐ] [-S HẬU-TỐ] [TÊN ...]" +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 TÙY-CHỌN] [-A HÀNH-ĐỘNG] [-G MẪU-" +"GLOB] [-W DANH-SÁCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-TỐ] [-S " +"HẬU-TỐ] [TÊN ...]" #: builtins.c:233 -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 TÙY-CHỌN] [-A HÀNH-ĐỘNG] [-G MẪU-GLOB] [-W DANH-SÁCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-TỐ] [-S HẬU-TỐ] [TỪ]" +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 TÙY-CHỌN] [-A HÀNH-ĐỘNG] [-G MẪU-GLOB] [-W DANH-" +"SÁCH-TỪ] [-F HÀM] [-C LỆNH] [-X MẪU-LỌC] [-P TIỀN-TỐ] [-S HẬU-TỐ] [TỪ]" #: builtins.c:237 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o TÙY-CHỌN] [-DE] [TÊN ...]" #: builtins.c:240 -msgid "mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" -msgstr "mapfile [-n ĐẾM] [-O GỐC] [-s SỐ-LƯỢNG] [-t] [-u fd] [-C GỌI-NGƯỢC] [-c LƯỢNG] [MẢNG]" +msgid "" +"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c " +"quantum] [array]" +msgstr "" +"mapfile [-n ĐẾM] [-O GỐC] [-s SỐ-LƯỢNG] [-t] [-u fd] [-C GỌI-NGƯỢC] [-c " +"LƯỢNG] [MẢNG]" #: builtins.c:242 -msgid "readarray [-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]" +msgid "" +"readarray [-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]" #: builtins.c:254 msgid "" @@ -2279,7 +2377,8 @@ msgid "" " -p\tPrint all defined aliases in a reusable format\n" " \n" " Exit Status:\n" -" alias returns true unless a NAME is supplied for which no alias has been\n" +" alias returns true unless a NAME is supplied for which no alias has " +"been\n" " defined." msgstr "" "Định nghÄ©a hoặc hiển thị bí danh.\n" @@ -2316,6 +2415,7 @@ msgstr "" " Trả lại thành công trừ khi TÊN không phải là một bí danh." #: builtins.c:289 +#, fuzzy msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2327,24 +2427,30 @@ msgid "" " Options:\n" " -m keymap Use KEYMAP as the keymap for the duration of this\n" " command. Acceptable keymap names are emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" +"move,\n" " vi-command, and vi-insert.\n" " -l List names of functions.\n" " -P List function names and bindings.\n" " -p List functions and bindings in a form that can be\n" " reused as input.\n" -" -S List key sequences that invoke macros and their values\n" -" -s List key sequences that invoke macros and their values\n" +" -S List key sequences that invoke macros and their " +"values\n" +" -s List key sequences that invoke macros and their " +"values\n" " in a form that can be reused as input.\n" " -V List variable names and values\n" " -v List variable names and values in a form that can\n" " be reused as input.\n" " -q function-name Query about which keys invoke the named function.\n" -" -u function-name Unbind all keys which are bound to the named function.\n" +" -u function-name Unbind all keys which are bound to the named " +"function.\n" " -r keyseq Remove the binding for KEYSEQ.\n" " -f filename Read key bindings from FILENAME.\n" " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n" " \t\t\t\tKEYSEQ is entered.\n" +" -X\t\t List key sequences bound with -x and associated commands\n" +" in a form that can be reused as input.\n" " \n" " Exit Status:\n" " bind returns 0 unless an unrecognized option is given or an error occurs." @@ -2365,8 +2471,10 @@ msgstr "" " -P liệt kê tên chức năng và tổ hợp phím\n" " -p liệt kê tên chức năng và tổ hợp phím theo dạng dùng\n" " lại làm đầu vào được\n" -" -S liệt kê chuỗi phím để gọi vÄ© lệnh và giá trị tương ứng\n" -" -s liệt kê chuỗi phím để gọi vÄ© lệnh và giá trị tương ứng\n" +" -S liệt kê chuỗi phím để gọi vÄ© lệnh và giá trị tương " +"ứng\n" +" -s liệt kê chuỗi phím để gọi vÄ© lệnh và giá trị tương " +"ứng\n" " theo định dạng có thể dùng lại làm đầu vào được\n" " -q TÊN\t\thỏi phím nào gọi chức năng này\n" " -u TÊN\t\tgỡ bỏ tất cả phím tắt gắn với chức năng này\n" @@ -2377,7 +2485,7 @@ msgstr "" " Trạng thái thoát:\n" " bind trả lại 0 trừ khi đưa ra tùy chọn không nhận ra hay gặp lỗi." -#: builtins.c:326 +#: builtins.c:328 msgid "" "Exit for, while, or until loops.\n" " \n" @@ -2395,7 +2503,7 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái thoát là 0 trừ khi N nhỏ hÆ¡n 1." -#: builtins.c:338 +#: builtins.c:340 msgid "" "Resume for, while, or until loops.\n" " \n" @@ -2413,13 +2521,14 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái thoát là 0 trừ khi N nhỏ hÆ¡n 1." -#: builtins.c:350 +#: builtins.c:352 msgid "" "Execute shell builtins.\n" " \n" " Execute SHELL-BUILTIN with arguments ARGs without performing command\n" " lookup. This is useful when you wish to reimplement a shell builtin\n" -" as a shell function, but need to execute the builtin within the function.\n" +" as a shell function, but need to execute the builtin within the " +"function.\n" " \n" " Exit Status:\n" " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n" @@ -2435,7 +2544,7 @@ msgstr "" " Trả lại trạng thái thoát cá»§a SHELL-BUILTIN, hoặc sai nếu\n" " SHELL-BUILTIN không phải là một lệnh dá»±ng sẵn shell." -#: builtins.c:365 +#: builtins.c:367 msgid "" "Return the context of the current subroutine call.\n" " \n" @@ -2462,33 +2571,46 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại 0 trừ khi shell đang chạy hàm shell, BTHỨC cÅ©ng hợp lệ." -#: builtins.c:383 +#: builtins.c:385 +#, fuzzy msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of the\n" +" Change the current directory to DIR. The default DIR is the value of " +"the\n" " HOME shell variable.\n" " \n" -" The variable CDPATH defines the search path for the directory containing\n" -" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n" -" A null directory name is the same as the current directory. If DIR begins\n" +" The variable CDPATH defines the search path for the directory " +"containing\n" +" DIR. Alternative directory names in CDPATH are separated by a colon " +"(:).\n" +" A null directory name is the same as the current directory. If DIR " +"begins\n" " with a slash (/), then CDPATH is not used.\n" " \n" -" If the directory is not found, and the shell option `cdable_vars' is set,\n" -" the word is assumed to be a variable name. If that variable has a value,\n" +" If the directory is not found, and the shell option `cdable_vars' is " +"set,\n" +" the word is assumed to be a variable name. If that variable has a " +"value,\n" " its value is used for DIR.\n" " \n" " Options:\n" -" -L\tforce symbolic links to be followed\n" +" -L\tforce symbolic links to be followed: resolve symbolic links in\n" +" \tDIR after processing instances of `..'\n" " -P\tuse the physical directory structure without following symbolic\n" -" \tlinks\n" +" \tlinks: resolve symbolic links in DIR before processing instances\n" +" \tof `..'\n" " -e\tif the -P option is supplied, and the current working directory\n" " \tcannot be determined successfully, exit with a non-zero status\n" " \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" +" Returns 0 if the directory is changed, and if $PWD is set successfully " +"when\n" " -P is used; non-zero otherwise." msgstr "" "Đổi thư mục làm việc cá»§a shell.\n" @@ -2517,7 +2639,7 @@ msgstr "" " Trả về 0 nếu thay đổi thư mục, và nếu $PWD được đặt thành công khi\n" " -P được sá»­ dụng; không thì khác không." -#: builtins.c:414 +#: builtins.c:420 msgid "" "Print the name of the current working directory.\n" " \n" @@ -2544,7 +2666,7 @@ msgstr "" " Trả lại 0 trừ khi đưa ra tùy chọn sai hoặc đọc được thư mục hiện\n" " thời." -#: builtins.c:431 +#: builtins.c:437 msgid "" "Null command.\n" " \n" @@ -2560,7 +2682,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:442 +#: builtins.c:448 msgid "" "Return a successful result.\n" " \n" @@ -2572,7 +2694,7 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:451 +#: builtins.c:457 msgid "" "Return an unsuccessful result.\n" " \n" @@ -2584,12 +2706,13 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng không thành công." -#: builtins.c:460 +#: builtins.c:466 msgid "" "Execute a simple command or display information about commands.\n" " \n" " Runs COMMAND with ARGS suppressing shell function lookup, or display\n" -" information about the specified COMMANDs. Can be used to invoke commands\n" +" information about the specified COMMANDs. Can be used to invoke " +"commands\n" " on disk when a function with the same name exists.\n" " \n" " Options:\n" @@ -2617,7 +2740,8 @@ msgstr "" " Trả lại trạng thái thoát cá»§a LỆNH, hoặc thất bại nếu không tìm\n" " thấy LỆNH." -#: builtins.c:479 +#: builtins.c:485 +#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2637,6 +2761,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2647,11 +2772,13 @@ msgid "" " Variables with the integer attribute have arithmetic evaluation (see\n" " the `let' command) performed when the variable is assigned a value.\n" " \n" -" When used in a function, `declare' makes NAMEs local, as with the `local'\n" +" When used in a function, `declare' makes NAMEs local, as with the " +"`local'\n" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "Đặt giá trị và thuộc tính biến.\n" "\n" @@ -2687,7 +2814,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi đưa ra tùy chọn sai hoặc gặp lỗi." -#: builtins.c:517 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2697,7 +2824,8 @@ msgstr "" "\n" " Lỗi thời. Xem \"help declare\"." -#: builtins.c:525 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2708,8 +2836,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "Định nghÄ©a biến cục bộ.\n" "\n" @@ -2723,11 +2851,14 @@ msgstr "" " Trả lại thành công trừ khi đưa ra tùy chọn sai hay gặp lỗi,\n" " hoặc nếu shell không chạy hàm." -#: builtins.c:542 +#: builtins.c:550 +#, fuzzy msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs on the standard output followed by a newline.\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" @@ -2739,6 +2870,7 @@ msgid "" " \\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" @@ -2776,7 +2908,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp lỗi ghi." -#: builtins.c:576 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2798,7 +2930,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu không gặp lỗi ghi." -#: builtins.c:591 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2848,11 +2980,12 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi TÊN không phải lệnh dá»±ng sẵn hoặc gặp lỗi." -#: builtins.c:619 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the shell,\n" +" Combine ARGs into a single string, use the result as input to the " +"shell,\n" " and execute the resulting commands.\n" " \n" " Exit Status:\n" @@ -2866,7 +2999,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại trạng thái thoát cá»§a câu lệnh hay thành công nếu lệnh rỗng." -#: builtins.c:631 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2942,12 +3075,13 @@ msgstr "" " Trả lại thành công nếu tìm thấy một tùy chọn; không thành công nếu\n" " gặp kết thúc các tùy chọn, hoặc nếu gặp lỗi." -#: builtins.c:673 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" " Execute COMMAND, replacing this shell with the specified program.\n" -" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not " +"specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2955,11 +3089,13 @@ msgid "" " -c\t\texecute COMMAND with an empty environment\n" " -l\t\tplace a dash in the zeroth argument to COMMAND\n" " \n" -" If the command cannot be executed, a non-interactive shell exits, unless\n" +" If the command cannot be executed, a non-interactive shell exits, " +"unless\n" " the shell option `execfail' is set.\n" " \n" " Exit Status:\n" -" Returns success unless COMMAND is not found or a redirection error occurs." +" Returns success unless COMMAND is not found or a redirection error " +"occurs." msgstr "" "Thay thế shell bằng câu lệnh đưa ra.\n" "\n" @@ -2978,7 +3114,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công trừ khi không tìm được LỆNH hoặc gặp lỗi chuyển hướng." -#: builtins.c:694 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2990,11 +3126,12 @@ msgstr "" " Thoát khỏi shell với trạng thái N. Không xác định N thì trạng thái\n" " thoát là trạng thái cá»§a lệnh cuối cùng được chạy." -#: builtins.c:703 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not executed\n" +" Exits a login shell with exit status N. Returns an error if not " +"executed\n" " in a login shell." msgstr "" "Thoát shell đăng nhập.\n" @@ -3002,17 +3139,19 @@ msgstr "" " Thoát khỏi shell đăng nhập với trạng thái N. Trả về lỗi nếu không\n" " phải shell đăng nhập." -#: builtins.c:713 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" -" fc is used to list or edit and re-execute commands from the history list.\n" +" fc is used to list or edit and re-execute commands from the history " +"list.\n" " FIRST and LAST can be numbers specifying the range, or FIRST can be a\n" " string, which means the most recent command beginning with that\n" " string.\n" " \n" " Options:\n" -" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n" +" -e ENAME\tselect which editor to use. Default is FCEDIT, then " +"EDITOR,\n" " \t\tthen vi\n" " -l \tlist lines instead of editing\n" " -n\tomit line numbers when listing\n" @@ -3026,7 +3165,8 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error occurs." +" Returns success or status of executed command; non-zero if an error " +"occurs." msgstr "" "Hiển thị hoặc thá»±c thi lệnh từ lược sá»­.\n" "\n" @@ -3051,7 +3191,7 @@ msgstr "" " Trả lại thành công hay trạng thái cá»§a câu lệnh được thá»±c thi; gặp\n" " lỗi thì khác số không." -#: builtins.c:743 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3072,12 +3212,14 @@ msgstr "" " Trạng thái cá»§a câu lệnh được nâng lên trước; hoặc thất bại nếu xảy\n" " ra lỗi." -#: builtins.c:758 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" -" Place the jobs identified by each JOB_SPEC in the background, as if they\n" -" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n" +" Place the jobs identified by each JOB_SPEC in the background, as if " +"they\n" +" had been started with `&'. If JOB_SPEC is not present, the shell's " +"notion\n" " of the current job is used.\n" " \n" " Exit Status:\n" @@ -3093,12 +3235,13 @@ msgstr "" " Trả lại thành công nếu chức năng điều khiển công việc được bật và\n" " không gặp lỗi." -#: builtins.c:772 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" " Determine and remember the full pathname of each command NAME. If\n" -" no arguments are given, information about remembered commands is displayed.\n" +" no arguments are given, information about remembered commands is " +"displayed.\n" " \n" " Options:\n" " -d\t\tforget the remembered location of each NAME\n" @@ -3137,7 +3280,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu tìm được TÊN và không đưa ra tùy chọn sai." -#: builtins.c:797 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3155,7 +3298,8 @@ msgid "" " PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is given." +" Returns success unless PATTERN is not found or an invalid option is " +"given." msgstr "" "Hiển thị thông tin về lệnh dá»±ng sẵn.\n" "\n" @@ -3175,7 +3319,7 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu tìm được MẪU và không đưa ra tùy chọn sai." -#: builtins.c:821 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3202,7 +3346,8 @@ msgid "" " \n" " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n" " as a format string for strftime(3) to print the time stamp associated\n" -" with each displayed history entry. No time stamps are printed otherwise.\n" +" with each displayed history entry. No time stamps are printed " +"otherwise.\n" " \n" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." @@ -3239,7 +3384,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:857 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3282,7 +3427,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:884 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3313,7 +3458,7 @@ msgstr "" " Trả lại thành công nếu không đưa ra tùy chọn sai hay\n" " ĐTCV sai." -#: builtins.c:903 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3353,14 +3498,15 @@ 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:926 +#: builtins.c:936 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" +" 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" @@ -3436,18 +3582,22 @@ 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:971 +#: builtins.c:981 +#, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" " \n" " Reads a single line from the standard input, or from file descriptor FD\n" -" if the -u option is supplied. The line is split into fields as with word\n" +" if the -u option is supplied. The line is split into fields as with " +"word\n" " splitting, and the first word is assigned to the first NAME, the second\n" " word to the second NAME, and so on, with any leftover words assigned to\n" -" the last NAME. Only the characters found in $IFS are recognized as word\n" +" the last NAME. Only the characters found in $IFS are recognized as " +"word\n" " delimiters.\n" " \n" -" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n" +" If no NAMEs are supplied, the line read is stored in the REPLY " +"variable.\n" " \n" " Options:\n" " -a array\tassign the words read to sequential indices of the array\n" @@ -3459,22 +3609,28 @@ msgid "" " -n nchars\treturn after reading NCHARS characters rather than waiting\n" " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n" " \t\tcharacters are read before the delimiter\n" -" -N nchars\treturn only after reading exactly NCHARS characters, unless\n" +" -N nchars\treturn only after reading exactly NCHARS characters, " +"unless\n" " \t\tEOF is encountered or read times out, ignoring any delimiter\n" " -p prompt\toutput the string PROMPT without a trailing newline before\n" " \t\tattempting to read\n" " -r\t\tdo not allow backslashes to escape any characters\n" " -s\t\tdo not echo input coming from a terminal\n" -" -t timeout\ttime out and return failure if a complete line of input is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" -t timeout\ttime out and return failure if a complete line of input " +"is\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" -" \t\tfractional number. If TIMEOUT is 0, read returns success only\n" -" \t\tif input is available on the specified file descriptor. The\n" +" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +" \t\twithout trying to read any data, returning success only if\n" +" \t\tinput is available on the specified file descriptor. The\n" " \t\texit status is greater than 128 if the timeout is exceeded\n" " -u fd\t\tread from file descriptor FD instead of the standard input\n" " \n" " Exit Status:\n" -" The return code is zero, unless end-of-file is encountered, read times out,\n" +" 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 "" "Đọc một dòng từ đầu nhập chuẩn và tách ra nhiều trường.\n" @@ -3516,7 +3672,7 @@ msgstr "" " Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay quá\n" " hạn đọc, hay đưa ra bộ mô tả tập tin sai làm đối số tới `-u'." -#: builtins.c:1014 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3537,7 +3693,8 @@ msgstr "" " Trả lại N, hoặc bị lỗi nếu shell không đang chạy một hàm hay văn\n" " lệnh." -#: builtins.c:1027 +#: builtins.c:1039 +#, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3580,7 +3737,8 @@ msgid "" " physical same as -P\n" " pipefail the return value of a pipeline is the status of\n" " the last command to exit with a non-zero status,\n" -" or zero if no command exited with a non-zero status\n" +" or zero if no command exited with a non-zero " +"status\n" " posix change the behavior of bash where the default\n" " operation differs from the Posix standard to\n" " match the standard\n" @@ -3602,7 +3760,7 @@ msgid "" " -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 follow symbolic links when executing commands\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" @@ -3688,11 +3846,14 @@ msgstr "" " theo mặc định khi shell tương tác\n" " -P đặt thì không theo liên kết tượng trưng\n" " khi thá»±c thi câu lệnh như cd mà chuyển đổi thư mục hiện tại\n" -" -T Nếu đặt thì bẫy DEBUG (gỡ lỗi) được các hàm cá»§a shell kế thừa\n" -" -- Gán bất cứ đối số còn lại nào cho những tham số thuộc vị trí.\n" +" -T Nếu đặt thì bẫy DEBUG (gỡ lỗi) được các hàm cá»§a shell kế " +"thừa\n" +" -- Gán bất cứ đối số còn lại nào cho những tham số thuộc vị " +"trí.\n" " Nếu không còn thừa lại đối số nào, tham số vị trí\n" " ìm kiếm được đặt.\n" -" - Gán bất cứ đối số còn lại nào cho những tham số thuộc vị trí.\n" +" - Gán bất cứ đối số còn lại nào cho những tham số thuộc vị " +"trí.\n" " Hai tùy chọn -x và -v đều bị tắt.\n" "\n" " Việc dùng + thay - làm tắt cờ. Các cờ cÅ©ng có thể được dùng khi\n" @@ -3704,7 +3865,8 @@ 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:1112 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3713,8 +3875,11 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" -" Without options, unset first tries to unset a variable, and if that fails,\n" +" 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" @@ -3736,12 +3901,13 @@ 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, và TÊN không chỉ đọc." -#: builtins.c:1132 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" " Marks each NAME for automatic export to the environment of subsequently\n" -" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" +" executed commands. If VALUE is supplied, assign VALUE before " +"exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3768,7 +3934,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 sai," -#: builtins.c:1151 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3804,7 +3970,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 sai." -#: builtins.c:1172 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3822,7 +3988,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:1184 builtins.c:1199 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3845,7 +4011,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:1215 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3870,7 +4036,8 @@ 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:1231 +#: builtins.c:1245 +#, fuzzy msgid "" "Evaluate conditional expression.\n" " \n" @@ -3904,7 +4071,8 @@ msgid "" " -x FILE True if the file is executable by you.\n" " -O FILE True if the file is effectively owned by you.\n" " -G FILE True if the file is effectively owned by your group.\n" -" -N FILE True if the file has been modified since it was last read.\n" +" -N FILE True if the file has been modified since it was last " +"read.\n" " \n" " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n" " modification date).\n" @@ -3925,7 +4093,8 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 lexicographically.\n" +" True if STRING1 sorts before STRING2 " +"lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3933,6 +4102,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4001,7 +4172,8 @@ msgstr "" " \n" " CHUỖI1 = CHUỖI2 Đúng nếu hai chuỗi trùng nhau.\n" " CHUỖI1 != CHUỖI2 Đúng nếu hai chuỗi khác nhau.\n" -" CHUỖI1 < CHUỖI2 Đúng nếu CHUỖI1 xếp trước CHUỖI2 theo thứ tá»± từ điển.\n" +" CHUỖI1 < CHUỖI2 Đúng nếu CHUỖI1 xếp trước CHUỖI2 theo thứ tá»± từ " +"điển.\n" " CHUỖI1 > CHUỖI2 Đúng nếu CHUỖI1 xếp sau CHUỖI2 theo thứ tá»± từ điển.\n" " \n" " Toán tá»­ khác:\n" @@ -4025,7 +4197,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:1311 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4037,11 +4209,12 @@ msgstr "" " Lệnh này đồng nghÄ©a với lệnh dá»±ng sẵn \"test\", nhưng đối số cuối\n" " cùng phải là ký tá»± `]' để khớp với `[' ở đầu." -#: builtins.c:1320 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of its\n" +" Prints the accumulated user and system times for the shell and all of " +"its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4055,11 +4228,12 @@ msgstr "" " Trạng thái thoát:\n" " Lúc nào cÅ©ng thành công." -#: builtins.c:1332 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives signals\n" +" Defines and activates handlers to be run when the shell receives " +"signals\n" " or other conditions.\n" " \n" " ARG is a command to be read and executed when the shell receives the\n" @@ -4068,26 +4242,34 @@ msgid "" " value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n" " shell and by the commands it invokes.\n" " \n" -" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n" -" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n" -" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n" -" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n" -" of ERR means to execute ARG each time a command's failure would cause the\n" +" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. " +"If\n" +" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. " +"If\n" +" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or " +"a\n" +" script run by the . or source builtins finishes executing. A " +"SIGNAL_SPEC\n" +" of ERR means to execute ARG each time a command's failure would cause " +"the\n" " shell to exit when the -e option is enabled.\n" " \n" -" If no arguments are supplied, trap prints the list of commands associated\n" +" If no arguments are supplied, trap prints the list of commands " +"associated\n" " with each signal.\n" " \n" " Options:\n" " -l\tprint a list of signal names and their corresponding numbers\n" " -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n" " \n" -" Each SIGNAL_SPEC is either a signal name in or a signal number.\n" +" Each SIGNAL_SPEC is either a signal name in or a signal " +"number.\n" " Signal names are case insensitive and the SIG prefix is optional. A\n" " signal may be sent to the shell with \"kill -signal $$\".\n" " \n" " Exit Status:\n" -" Returns success unless a SIGSPEC is invalid or an invalid option is given." +" Returns success unless a SIGSPEC is invalid or an invalid option is " +"given." msgstr "" "Bẫy tín hiệu và sá»± kiện khác.\n" "\n" @@ -4123,7 +4305,7 @@ msgstr "" " Trả lại thành công trừ phi đưa ra ĐTTH sai hay tùy chọn\n" " sai." -#: builtins.c:1368 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4149,7 +4331,8 @@ msgid "" " NAME\tCommand name to be interpreted.\n" " \n" " Exit Status:\n" -" Returns success if all of the NAMEs are found; fails if any are not found." +" Returns success if all of the NAMEs are found; fails if any are not " +"found." msgstr "" "Hiển thị thông tin loại câu lệnh.\n" "\n" @@ -4178,11 +4361,13 @@ msgstr "" " Trạng thái thoát:\n" " Trả lại thành công nếu tìm thấy tất cả các TÊN; không thì bị lỗi." -#: builtins.c:1399 +#: builtins.c:1414 +#, fuzzy msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and processes\n" +" Provides control over the resources available to the shell and " +"processes\n" " it creates, on systems that allow such control.\n" " \n" " Options:\n" @@ -4206,6 +4391,9 @@ msgid "" " -u\tthe maximum number of user processes\n" " -v\tthe size of virtual memory\n" " -x\tthe maximum number of file locks\n" +" -T the maximum number of threads\n" +" \n" +" Not all options are available on all platforms.\n" " \n" " If LIMIT is given, it is the new value of the specified resource; the\n" " special LIMIT values `soft', `hard', and `unlimited' stand for the\n" @@ -4259,7 +4447,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:1444 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4292,19 +4480,25 @@ 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:1464 +#: builtins.c:1482 +#, fuzzy msgid "" "Wait for job completion and return exit status.\n" " \n" -" Waits for the process identified by ID, which may be a process ID or a\n" +" Waits for each process identified by an ID, which may be a process ID or " +"a\n" " job specification, and reports its termination status. If ID is not\n" " given, waits for all currently active child processes, and the return\n" -" status is zero. If ID is a a job specification, waits for all processes\n" -" in the job's pipeline.\n" +" status is zero. If ID is a a job specification, waits for all " +"processes\n" +" in that job's pipeline.\n" +" \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" " \n" " Exit Status:\n" -" Returns the status of ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last ID; fails if ID is invalid or an invalid\n" +" option is given." msgstr "" "Chờ công việc chạy xong và trả về trạng thái thoát.\n" "\n" @@ -4318,17 +4512,20 @@ msgstr "" " Trả lại trạng thái cá»§a ID; không thành công nếu ID sai hoặc đưa\n" " ra tùy chọn sai." -#: builtins.c:1482 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "Đợi tiến trình chạy xong và trả về trạng thái thoát.\n" "\n" @@ -4340,7 +4537,7 @@ msgstr "" " Trả lại trạng thái cá»§a ID; không thành công nếu ID sai, hoặc nếu\n" " đưa ra tùy chọn sai." -#: builtins.c:1497 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4361,7 +4558,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:1511 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4391,7 +4588,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:1529 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4425,7 +4622,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:1550 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4454,7 +4651,7 @@ msgstr "" " Trạng thái thoát:\n" " Trạng thái trả lai là trạng thái trả về cá»§a ỐNG-DẪN." -#: builtins.c:1567 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4472,16 +4669,21 @@ 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:1579 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" -" The `if COMMANDS' list is executed. If its exit status is zero, then the\n" -" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n" +" The `if COMMANDS' list is executed. If its exit status is zero, then " +"the\n" +" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list " +"is\n" " executed in turn, and if its exit status is zero, the corresponding\n" -" `then COMMANDS' list is executed and the if command completes. Otherwise,\n" -" the `else COMMANDS' list is executed, if present. The exit status of the\n" -" entire construct is the exit status of the last command executed, or zero\n" +" `then COMMANDS' list is executed and the if command completes. " +"Otherwise,\n" +" the `else COMMANDS' list is executed, if present. The exit status of " +"the\n" +" entire construct is the exit status of the last command executed, or " +"zero\n" " if no condition tested true.\n" " \n" " Exit Status:\n" @@ -4501,7 +4703,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:1596 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4519,7 +4721,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:1608 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4537,7 +4739,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:1620 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4558,12 +4760,13 @@ 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:1634 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" " Create a shell function named NAME. When invoked as a simple command,\n" -" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n" +" NAME runs COMMANDs in the calling shell's context. When NAME is " +"invoked,\n" " the arguments are passed to the function as $1...$n, and the function's\n" " name is in $FUNCNAME.\n" " \n" @@ -4580,7 +4783,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:1648 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4598,7 +4801,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:1660 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4621,7 +4824,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:1675 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4639,13 +4842,16 @@ 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:1687 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" -" Returns a status of 0 or 1 depending on the evaluation of the conditional\n" -" expression EXPRESSION. Expressions are composed of the same primaries used\n" -" by the `test' builtin, and may be combined using the following operators:\n" +" Returns a status of 0 or 1 depending on the evaluation of the " +"conditional\n" +" expression EXPRESSION. Expressions are composed of the same primaries " +"used\n" +" by the `test' builtin, and may be combined using the following " +"operators:\n" " \n" " ( EXPRESSION )\tReturns the value of EXPRESSION\n" " ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n" @@ -4672,7 +4878,8 @@ msgstr "" " ( BTHỨC )\t\tTrả về giá trị cá»§a BTHỨC\n" " ! BTHỨC\t\tĐúng nếu BTHỨC là không đúng. Ngược lại sai\n" " BTHỨC1 && BTHỨC2\tĐúng nếu cả hai biểu thức đều đúng. Ngược lại sai.\n" -" BTHỨC1 || BTHỨC2\tĐúng nếu một trong hai biểu thức đúng. Ngược lại sai.\n" +" BTHỨC1 || BTHỨC2\tĐúng nếu một trong hai biểu thức đúng. Ngược lại " +"sai.\n" " \n" " Khi dùng toán từ `==' và `!=', chuỗi bên phải toán tá»­ được dùng\n" " làm mẫu, và thá»±c hiện khớp mẫu. Khi dùng toán tá»­ `=~', chuỗi bên\n" @@ -4684,7 +4891,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:1713 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4788,7 +4995,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:1770 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -4842,7 +5049,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:1804 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4890,7 +5097,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:1834 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -4907,10 +5114,12 @@ msgid "" " \twith its position in the stack\n" " \n" " Arguments:\n" -" +N\tDisplays the Nth entry counting from the left of the list shown by\n" +" +N\tDisplays the Nth entry counting from the left of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" -" -N\tDisplays the Nth entry counting from the right of the list shown by\n" +" -N\tDisplays the Nth entry counting from the right of the list shown " +"by\n" " \tdirs when invoked without options, starting with zero.\n" " \n" " Exit Status:\n" @@ -4941,12 +5150,13 @@ 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:1863 +#: builtins.c:1884 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" +" arguments, list all shell options with an indication of whether or not " +"each\n" " is set.\n" " \n" " Options:\n" @@ -4977,7 +5187,8 @@ msgstr "" " Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n" " đưa ra tùy chọn sai hay TÊN_TÙY_CHỌN bị tắt." -#: builtins.c:1884 +#: builtins.c:1905 +#, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4985,22 +5196,34 @@ msgid "" " -v var\tassign the output to shell variable VAR rather than\n" " \t\tdisplay it on the standard output\n" " \n" -" FORMAT is a character string which contains three types of objects: plain\n" -" characters, which are simply copied to standard output; character escape\n" +" FORMAT is a character string which contains three types of objects: " +"plain\n" +" characters, which are simply copied to standard output; character " +"escape\n" " sequences, which are converted and copied to the standard output; and\n" -" format specifications, each of which causes printing of the next successive\n" +" format specifications, each of which causes printing of the next " +"successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf(1)\n" -" and printf(3), printf interprets:\n" +" In addition to the standard format specifications described in printf" +"(1),\n" +" printf interprets:\n" " \n" " %b\texpand backslash escape sequences in the corresponding argument\n" " %q\tquote the argument in a way that can be reused as shell input\n" -" %(fmt)T output the date-time string resulting from using FMT as a format\n" +" %(fmt)T output the date-time string resulting from using FMT as a " +"format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" -" Returns success unless an invalid option is given or a write or assignment\n" +" Returns success unless an invalid option is given or a write or " +"assignment\n" " error occurs." msgstr "" "Định dạng và in ĐỐI-SỐ tùy theo điều khiển cá»§a ĐỊNH_DẠNG.\n" @@ -5025,12 +5248,14 @@ 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:1913 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" -" For each NAME, specify how arguments are to be completed. If no options\n" -" are supplied, existing completion specifications are printed in a way that\n" +" For each NAME, specify how arguments are to be completed. If no " +"options\n" +" are supplied, existing completion specifications are printed in a way " +"that\n" " allows them to be reused as input.\n" " \n" " Options:\n" @@ -5070,12 +5295,13 @@ 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:1941 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" " Intended to be used from within a shell function generating possible\n" -" completions. If the optional WORD argument is supplied, matches against\n" +" completions. If the optional WORD argument is supplied, matches " +"against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5090,13 +5316,16 @@ 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:1956 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" -" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n" -" the completion currently being executed. If no OPTIONs are given, print\n" -" the completion options for each NAME or the current completion specification.\n" +" Modify the completion options for each NAME, or, if no NAMEs are " +"supplied,\n" +" the completion currently being executed. If no OPTIONs are given, " +"print\n" +" the completion options for each NAME or the current completion " +"specification.\n" " \n" " Options:\n" " \t-o option\tSet completion option OPTION for each NAME\n" @@ -5143,22 +5372,28 @@ 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ả điền nốt được xác định." -#: builtins.c:1986 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" -" Read lines from the standard input into the indexed array variable ARRAY, or\n" -" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n" +" Read lines from the standard input into the indexed array variable " +"ARRAY, or\n" +" from file descriptor FD if the -u option is supplied. The variable " +"MAPFILE\n" " is the default ARRAY.\n" " \n" " Options:\n" -" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n" -" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n" +" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are " +"copied.\n" +" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default " +"index is 0.\n" " -s count \tDiscard the first COUNT lines read.\n" " -t\t\tRemove a trailing newline from each line read.\n" -" -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n" +" -u fd\t\tRead lines from file descriptor FD instead of the standard " +"input.\n" " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n" -" -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n" +" -c quantum\tSpecify the number of lines read between each call to " +"CALLBACK.\n" " \n" " Arguments:\n" " ARRAY\t\tArray variable name to use for file data.\n" @@ -5168,11 +5403,13 @@ msgid "" " element to be assigned and the line to be assigned to that element\n" " as additional arguments.\n" " \n" -" If not supplied with an explicit origin, mapfile will clear ARRAY before\n" +" If not supplied with an explicit origin, mapfile will clear ARRAY " +"before\n" " assigning to it.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is given or ARRAY is readonly or\n" +" Returns success unless an invalid option is given or ARRAY is readonly " +"or\n" " not an indexed array." msgstr "" "Đọc các dòng từ đầu vào tiêu chuẩn vào một biến mảng chỉ số.\n" @@ -5182,11 +5419,13 @@ msgstr "" " định.\n" "\n" " Tùy chọn:\n" -" -n SỐ\tsao chép nhiều nhất SỐ dòng. Nếu SỐ là 0 thì sao chép mọi dòng.\n" +" -n SỐ\tsao chép nhiều nhất SỐ dòng. Nếu SỐ là 0 thì sao chép mọi " +"dòng.\n" " -O GỐC\tbắt đầu gán cho MẢNG ở chỉ mục GỐC. Chỉ mục mặc định là 0.\n" " -s SỐ\tbỏ qua SỐ dòng đầu tiên được đọc.\n" " -t\tgỡ bỏ một ký tá»± dòng mới theo sau khỏi mỗi dòng được đọc.\n" -" -u FD\tđọc các dòng từ bộ mô tả tập tin FD thay vào từ đầu vào tiêu chuẩn.\n" +" -u FD\tđọc các dòng từ bộ mô tả tập tin FD thay vào từ đầu vào tiêu " +"chuẩn.\n" " -C GỌI_NGƯỢC\tđịnh giá GỌI_NGƯỢC mỗi lần đọc LƯỢNG dòng.\n" " -c LƯỢNG\tghi rõ số các dòng được đọc giữa hai lần gọi GỌI_NGƯỢC.\n" "\n" @@ -5204,7 +5443,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:2020 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5214,6 +5453,16 @@ msgstr "" "\n" " Đồng nghÄ©a với `mapfile'." +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "Tác quyền (C) năm 2009 cá»§a Tổ chức Phần mềm Tá»± do.\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "Giấy phép GPLv2+: GNU GPL phiên bản 2 hoặc mới hÆ¡n \n" + #~ msgid "" #~ ". With EXPR, returns\n" #~ " " @@ -5225,7 +5474,8 @@ msgstr "" #~ "; 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" +#~ " The value of EXPR indicates how many call frames to go back before " +#~ "the\n" #~ " current one; the top frame is frame 0." #~ msgstr "" #~ "; thông tin thêm này có thể được sá»­ dụng\n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index acac85039..596569a71 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 dd7126bbb..5fd27fed3 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -8,36 +8,36 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2011-09-07 10:32+0800\n" "Last-Translator: Aron Xu \n" "Language-Team: Chinese (simplified) \n" -"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "数组下标不正确" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: 无法将索引数组转化为关联数组" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 无效的关联数组键" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 无法为非数字的索引赋值" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 为关联数组赋值时必须使用下标" @@ -47,21 +47,21 @@ msgstr "%s: %s: 为关联数组赋值时必须使用下标" msgid "%s: cannot create: %s" msgstr "%s: 无法创建: %s" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 无法为命令找到键映射" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 第一个非空字符不是 `\"'" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s 中没有闭合的 `%1$c'" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "%s: 缺少冒号分隔符" @@ -127,7 +127,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME 未设定" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "参数太多" @@ -150,7 +150,7 @@ msgstr "警告:" msgid "%s: usage: " msgstr "%s: 用法:" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s: 选项需要一个参数" @@ -165,7 +165,7 @@ msgstr "%s: 需要数字参数" msgid "%s: not found" msgstr "%s: 未找到" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s: 无效选项" @@ -188,7 +188,7 @@ msgstr "无效的八进制数" msgid "invalid hex number" msgstr "无效的十六进制数" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "无效数字" @@ -297,25 +297,35 @@ msgstr "警告: -C 选项可能不像您预期的那样工作" msgid "not currently executing completion function" msgstr "当前未执行补完功能" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "只能在函数中使用" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "无法用 `-f' 生成函数" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s: 只读函数" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: 无法以这种方式销毁数组变量" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 无法将关联数组转化为索引数组" @@ -344,23 +354,23 @@ msgstr "%s: 未以动态方式加载" msgid "%s: cannot delete: %s" msgstr "%s: 无法删除: %s" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "%s: 是一个目录" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "%s: 不是常规文件" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "%s: 文件太大" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: 无法执行二进制文件" @@ -453,7 +463,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "%s: 无法打开: %s" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -494,16 +504,16 @@ msgstr "%s: inlib 失败" msgid "no other options allowed with `-x'" msgstr "其他选项不能与 `-x' 同时使用" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 参数必须是进程或任务 ID" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "未知错误" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "需要表达式" @@ -512,64 +522,64 @@ msgstr "需要表达式" msgid "%s: not an indexed array" msgstr "%s: 不是一个索引数组" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 无效的文件描述符声明" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 无效的文件描述符: %s" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, c-format msgid "%s: invalid line count" msgstr "%s: 无效的行数" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, c-format msgid "%s: invalid array origin" msgstr "%s: 无效的数组基数" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: 无效的回调量子" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "空数组变量名" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "需要数组变量支持" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "`%s': 缺少格式字符" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': 无效的时间格式声明" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "`%c': 无效格式字符" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六进制数" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少 unicode 数" @@ -578,19 +588,24 @@ msgstr "使用了 \\%c 但缺少 unicode 数" msgid "no other directory" msgstr "无其他目录" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s: 无效的 limit 参数" + +#: builtins/pushd.def:468 msgid "" msgstr "<无当前目录>" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "目录栈为空" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "目录栈索引" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -632,7 +647,7 @@ msgstr "" " -N\t以 dirs 不带选项输出的顺序显示列表从右起第N个项目,\n" "\t从 0 开始。" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -678,7 +693,7 @@ msgstr "" " \n" " `dirs' 内建命令显示目录栈." -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -716,12 +731,12 @@ msgstr "" " \n" " `dirs' 内建变量显示目录栈。" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 无效的超时声明" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "读错误: %d: %s" @@ -730,26 +745,26 @@ msgstr "读错误: %d: %s" msgid "can only `return' from a function or sourced script" msgstr "只能从函数或者源脚本返回(`return')" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "无法同时取消设定一个函数和一个变量" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "%s: 无法取消设定" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 无法取消设定: 只读 %s" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "%s: 不是数组变量" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "%s: 不是函数" @@ -758,11 +773,11 @@ msgstr "%s: 不是函数" msgid "shift count" msgstr "位移计数" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "无法同时设定和取消设定 shell 选项" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 无效的 shell 选项名" @@ -887,127 +902,127 @@ msgstr "错误的跳转" msgid "%s: unbound variable" msgstr "%s: 未绑定的变量" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待输入超时:自动注销\n" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "无法从 /dev/null 重定向标准输入: %s" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "时间格式: `%c': 无效的格式字符" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 msgid "pipe error" msgstr "管道错误" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 受限的: 无法在命令名中使用 `/'" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s: 未找到命令" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 解释器错误" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: 无法执行二进制文件" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s 是 shell 内建\n" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "无法复制文件描述符 %d 到文件描述符 %d" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "表达式递归层次越界" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "递归栈下溢" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "表达式中有语法错误" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "尝试给非变量赋值" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "除0" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "错误:表达式赋值符号错误" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "条件表达式需要 `:'" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "指数小于0" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "预增符或预减符后应跟有标识符" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "缺少 `)'" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "语法错误: 需要操作数" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "语法错误: 无效的算术运算符" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (错误符号是 \"%s\")" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "无效的算数进制" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "数值太大不可为算数进制的基" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "%s: 表达式错误\n" @@ -1016,163 +1031,163 @@ msgstr "%s: 表达式错误\n" msgid "getcwd: cannot access parent directories" msgstr "getcwd: 无法访问父目录" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "无法为文件描述符 %d 重置nodelay模式" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "无法从文件描述符 %d 为 bash 的输入获取一个新的文件描述符" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 已经存在新的文件描述符 %d 的缓冲区" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 进程组管道" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "生成的进程号 %d 显示为运行中的任务 %d" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "删除进程组 %2$ld 中已停止的任务 %1$d" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 进程号 %5ld(%s) 标注为仍活着" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 无此进程号" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "信号 %d" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "已完成" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "运行中" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "未知状态" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "(核心已转储)" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr " (工作目录: %s)" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子进程 setpgid (%ld 到 %ld)" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 进程号 %ld 不是当前 shell 的子进程" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 没有进程 %ld 的记录" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 任务 %d 已停止" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "%s: 任务已经终止" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "%s: 任务 %d 已在后台" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 打开 WNOHANG 以避免无限阻塞" -#: jobs.c:3571 +#: jobs.c:3699 #, c-format msgid "%s: line %d: " msgstr "%s: 行 %d: " -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr " (核心已转储)" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "(当前工作目录:%s)\n" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失败" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 行规则" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "无法设定终端进程组(%d)" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "æ­¤ shell 中无任务控制" @@ -1194,49 +1209,49 @@ msgstr "" msgid "unknown" msgstr "未知" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: 空闲链表中的块损坏" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: 用已经释放的块作为参数被调用" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: 用未分配的块作为参数被调用" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 检测到下溢;mh_nbytes 越界" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: 其实和末尾块大小不一致" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: 用未分配的块作为参数被调用" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 检测到下溢;mh_nbytes 越界" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 其实和末尾块大小不一致" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "register_alloc: 分配表已经充满了 FIND_ALLOC?\n" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "register_alloc: %p 在表中显示为已分配?\n" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "register_free: %p 在表中显示为已释放?\n" @@ -1284,15 +1299,15 @@ msgstr "setlocale: %s: 无法改变区域选项 (%s)" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: 无法改变区域选项 (%s): %s" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "您在 $_ 中有邮件" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "您在 $_ 中有新邮件" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "%s 中的邮件已被阅读\n" @@ -1325,103 +1340,103 @@ msgstr "立即文档在第 %d 行被文件结束符分隔 (需要 `%s')" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: 重定向指令 `%d' 越界" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "寻找匹配的 `%c' 是遇到了未预期的文件结束符" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "寻找 `]]' 是遇到了未预期的文件结束符" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "条件表达式中有语法错误: 未预期的符号 `%s'" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "条件表达式中有语法错误" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "未预期的符号 `%s' ,需要 `)'" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "需要 `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "一元条件运算符使用了未预期的参数 `%s'" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "一元条件运算符使用了未预期的参数" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "未预期的符号 `%s',需要二元条件运算符" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "需要二元条件运算符" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "二元条件运算符使用了未预期的参数 `%s'" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "二元条件运算符使用了未预期的参数" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "条件命令中有未预期的符号 `%c'" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "条件命令中有未预期的符号 `%s'" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "条件命令中有未预期的符号 %d" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "未预期的符号 `%s' 附近有语法错误" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "`%s' 附近有语法错误" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "语法错误: 未预期的文件结尾" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "语法错误" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用 \"%s\" 退出 shell 。\n" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "寻找匹配的 `)' 时遇到了未预期的文件结束符" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "补完: 未找到函数 `%s'" @@ -1450,71 +1465,71 @@ msgstr "xtrace_set: 空的文件指针" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "xtrace fd (%d) != fileno xtrace fp (%d)" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': 无效的格式字符" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "文件描述符超出范围" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 模糊的重定向" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 无法覆盖已存在的文件" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 受限的: 无法重定向输出" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "无法为立即文档创建临时文件: %s" -#: redir.c:196 +#: redir.c:195 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: 无法将文件描述符赋值给变量" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "没有网络时不支持 /dev/(tcp|udp)/host/port" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "重定向错误: 无法复制文件描述符" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "无法找到 /tmp ,请创建" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "/tmp 必须为有效的目录名" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: 无效的选项" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "没有名字!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1523,39 +1538,40 @@ msgstr "" "用法:\t%s [GNU 长选项] [选项] ...\n" "\t%s [GNU 长选项] [选项] 脚本文件 ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU 常选项:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Shell 选项:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c 命令 或 -O shopt选项\t\t(仅适合调用)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s 或 -o 选项\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信息\n" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信息.\n" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "请使用`bashbug' 命令来报告错误.\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: 无效的操作" @@ -1730,199 +1746,215 @@ msgstr "未知信号 #" msgid "Unknown Signal #%d" msgstr "未知信号 #%d" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "错误的替换: 在 %2$s 中没有闭合的 `%1$s'" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: 无法将链表赋值给数组成员" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "无法为进程替换创建管道" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "无法为进程替换创建子进程" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "无法打开命名管道 %s 进行读取" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "无法打开命名管道 %s 进行写入" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "无法将命名管道 %s 作为文件描述符 %d 复制" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "无法为命令替换创建管道" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "无法为命令替换创建子进程" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 无法将管道复制为文件描述符1" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, fuzzy, c-format +msgid "%s: invalid variable name for name reference" +msgstr "%s: %s: 追踪文件描述符的值无效" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "%s: 参数为空或未设置" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "%s: 子串表达式 < 0" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "%s: 错误的替换" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 无法这样赋值" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "未来版本的 shell 会强制估值为算数替换" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "错误的替换: 在 %s 中没有闭合的 \"`\"" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "无匹配: %s" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "需要参数" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "%s: 需要整数表达式" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "需要 `)'" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "需要`)',得到 %s" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "%s: 需要一元表达式" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "%s: 需要二元表达式" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "缺少 `]'" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "无效的信号数" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p" -#: trap.c:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: 错误的信号 %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "`%s' 函数定义导入错误" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 层次 (%d) 太高,重置为 1" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 当前作用域中没有函数上下文" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s: 无法将文件描述符赋值给变量" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 当前作用域中没有函数上下文" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "%s 有空的 exportstr" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有无效的字符 %1$d" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s 的 exportstr 中没有 `='" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的头部不是函数上下文" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 没有 global_variables 上下文" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的头部不是临时环境作用域" -#: variables.c:4821 +#: variables.c:5165 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: 无法作为文件打开" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: 追踪文件描述符的值无效" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s: %s 越界" + +#: version.c:46 version2.c:46 +#, fuzzy +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "版权所有 (C) 2011 自由软件基金会" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" @@ -1930,35 +1962,21 @@ msgstr "" "许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 \n" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "GNU bash,版本 %s (%s)\n" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +#, fuzzy +msgid "This is free software; you are free to change and redistribute it." msgstr "本软件是自由软件,您可以自由地更改和重新发布。\n" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" +#: version.c:92 version2.c:92 +#, fuzzy +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "在法律许可的情况下特此明示,本软件不提供任何担保。\n" -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "版权所有 (C) 2009 自由软件基金会\n" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" -msgstr "" -"许可证 GPLv2+: GNU GPL 许可证第二版或者更新版本 \n" - #: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" @@ -2037,7 +2055,8 @@ msgid "command [-pVv] command [arg ...]" msgstr "command [-pVv] 命令 [参数 ...]" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +#, fuzzy +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "declare [-aAfFgilrtux] [-p] [名称[=值] ...]" #: builtins.c:78 @@ -2145,7 +2164,8 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "set [--abefhkmnptuvxBCHP] [-o 选项名] [--] [参数 ...]" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +#, fuzzy +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "unset [-f] [-v] [名称 ...]" #: builtins.c:144 @@ -2203,12 +2223,13 @@ msgstr "umask [-p] [-S] [模式]" #: builtins.c:175 #, fuzzy -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [编号]" #: builtins.c:179 -msgid "wait [pid]" -msgstr "wait [进程号]" +#, fuzzy +msgid "wait [pid ...]" +msgstr "wait [编号]" #: builtins.c:182 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" @@ -2730,6 +2751,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2745,7 +2767,8 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" "设定变量值和属性。\n" " \n" @@ -2779,7 +2802,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效选项或者发生错误。" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" @@ -2789,7 +2812,8 @@ msgstr "" " \n" " 废弃。参见 `help declare'。" -#: builtins.c:531 +#: builtins.c:533 +#, fuzzy msgid "" "Define local variables.\n" " \n" @@ -2800,8 +2824,8 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" "定义本地变量。\n" " \n" @@ -2815,7 +2839,7 @@ msgstr "" " 返回成功除非使用了无效的选项、发生了错误或者 shell 不在\n" " 执行一个函数。" -#: builtins.c:548 +#: builtins.c:550 #, fuzzy msgid "" "Write arguments to the standard output.\n" @@ -2877,7 +2901,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非有写错误发生。" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2899,7 +2923,7 @@ msgstr "" " 退出状态:\n" " 除非写错误发生,否则返回成功。" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2949,7 +2973,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 NAME 不是一个 shell 内建或者有错误发生。" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2968,7 +2992,7 @@ msgstr "" " 退出状态:\n" " 以命令的状态退出,或者在命令为空的情况下返回成功。" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -3046,7 +3070,7 @@ msgstr "" " 如果一个选项被找到则返回成功;如果遇到了选项的结尾或者\n" " 有错误发生则返回失败。" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -3085,7 +3109,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非 COMMAND 命令没有找到或者出现一个重定向错误。" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -3097,7 +3121,7 @@ msgstr "" " 以状态 N 退出 shell。 如果 N 被省略,则退出状态\n" " 为最后一个执行的命令的退出状态。" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -3110,7 +3134,7 @@ msgstr "" " 以状态 N 退出一个登录 shell。如果不在登录 shell 中执行,则\n" " 返回一个错误。" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -3163,7 +3187,7 @@ msgstr "" " 退出状态:\n" " 返回成功,或者执行的命令的状态;如果错误发生则返回非零。" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -3183,7 +3207,7 @@ msgstr "" " 退出状态:\n" " 放至前台的命令状态,或者当错误发生时为失败。" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -3205,7 +3229,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非任务管理没有启用或者错误发生。" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -3248,7 +3272,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 NAME 命令没有找到或者使用了无效的选项。" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -3287,7 +3311,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 PATTERN 模式没有找到或者使用了无效选项。" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -3350,7 +3374,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者发生错误。" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -3392,7 +3416,7 @@ msgstr "" " 返回成功,除非使用了无效的选项或者有错误发生。\n" " 如果使用 -x选项,则返回 COMMAND 命令的退出状态。" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3422,7 +3446,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效的选项或者 JOBSPEC 声明。" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -3461,7 +3485,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者有错误发生。" -#: builtins.c:934 +#: builtins.c:936 #, fuzzy msgid "" "Evaluate arithmetic expressions.\n" @@ -3547,7 +3571,7 @@ msgstr "" " 退出状态:\n" " 如果最后一个 ARG 参数估值为0,则 let 返回1; 否则 let 返回0。" -#: builtins.c:979 +#: builtins.c:981 #, fuzzy msgid "" "Read a line from the standard input and split it into fields.\n" @@ -3583,7 +3607,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -3635,7 +3659,7 @@ msgstr "" " 返回码为零,除非遇到了文件结束符,读超时,或者无效的文\n" " 件描述符作为参数传递给了 -u 选项。" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3655,7 +3679,7 @@ msgstr "" " 退出状态:\n" " 返回 N,或者如果 shell 不在执行一个函数或引用脚本时,失败。" -#: builtins.c:1037 +#: builtins.c:1039 #, fuzzy msgid "" "Set or unset values of shell options and positional parameters.\n" @@ -3816,7 +3840,8 @@ msgstr "" " 退出状态:\n" " 返回成功除非使用了无效的参数。" -#: builtins.c:1122 +#: builtins.c:1124 +#, fuzzy msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3825,6 +3850,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3851,7 +3878,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称为只读。" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3884,7 +3911,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称。" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3919,7 +3946,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称。" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3937,7 +3964,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非 N 为负或者大于 $#。" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3959,7 +3986,7 @@ msgstr "" " 退出状态:\n" " 返回 FILENAME 文件中最后一个命令的状态;如果 FILENAME 文件不可读则失败。" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3983,7 +4010,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非没有启用任务控制或者有错误发生。" -#: builtins.c:1241 +#: builtins.c:1245 #, fuzzy msgid "" "Evaluate conditional expression.\n" @@ -4049,6 +4076,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -4134,7 +4163,7 @@ msgstr "" " 如果 EXPR 表达式估值为真则返回成功;如果 EXPR 表达式估值\n" " 为假或者使用了无效的参数则返回失败。" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4146,7 +4175,7 @@ msgstr "" " 是内建命令 \"test\" 的同义词,但是最后一个参数必须是\n" " 字符 `]',以匹配起始的 `['。" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -4165,7 +4194,7 @@ msgstr "" " 退出状态\n" " 总是成功。" -#: builtins.c:1342 +#: builtins.c:1347 #, fuzzy msgid "" "Trap signals and other events.\n" @@ -4236,7 +4265,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 SIGSPEC。" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -4288,7 +4317,7 @@ msgstr "" " 退出状态:\n" " 如果所有的 NAME 命令都找到则返回成功;任何找不到则失败。" -#: builtins.c:1409 +#: builtins.c:1414 #, fuzzy msgid "" "Modify shell resource limits.\n" @@ -4372,7 +4401,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者错误发生。" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -4404,7 +4433,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的 MODE 模式或者选项。" -#: builtins.c:1477 +#: builtins.c:1482 #, fuzzy msgid "" "Wait for job completion and return exit status.\n" @@ -4417,6 +4446,9 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." @@ -4431,18 +4463,20 @@ msgstr "" " 退出状态:\n" " 返回 ID 进程的状态;如果使用了无效的 ID 或者选项则失败。" -#: builtins.c:1495 +#: builtins.c:1503 +#, fuzzy msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" "等待进程完成并且返回退出状态。\n" " \n" @@ -4454,7 +4488,7 @@ msgstr "" " 返回进程ID的状态;如果ID是无效的进程号或者指定了无效\n" " 的选项则失败。" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4475,7 +4509,7 @@ msgstr "" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -4505,7 +4539,7 @@ msgstr "" " 退出状态:\n" " 返回最后执行的命令的状态。" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4538,7 +4572,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4566,7 +4600,7 @@ msgstr "" " 退出状态:\n" " 返回状态即PIPELINE 的返回状态。" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4584,7 +4618,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -4615,7 +4649,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4633,7 +4667,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4651,7 +4685,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4673,7 +4707,7 @@ msgstr "" " 退出状态:\n" " 返回 COMMAND 命令的退出状态。" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -4696,7 +4730,7 @@ msgstr "" " 退出状态:\n" " 返回成功除非 NAME 为只读。" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -4714,7 +4748,7 @@ msgstr "" " 退出状态:\n" " 返回最后一个执行的命令的状态。" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -4738,7 +4772,7 @@ msgstr "" " 退出状态:\n" " 返回被继续的任务的状态。" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4756,7 +4790,7 @@ msgstr "" " 退出状态\n" " 如果表达式估值为0则返回 1;否则返回0。" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -4804,7 +4838,7 @@ msgstr "" " 退出状态:\n" " 根据 EXPRESSION 的值为0或1。" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4899,7 +4933,7 @@ msgstr "" " HISTIGNORE\t用于决定哪些命令被存入历史文件的模式\n" " \t\t列表,以冒号分隔。\n" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -4952,7 +4986,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的参数或者目录转换失败。" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -4999,7 +5033,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的参数或者目录变换失败。" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -5048,7 +5082,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者发生错误。" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -5085,7 +5119,7 @@ msgstr "" " 如果 OPTNAME 选项被启用则返回成功;如果是\n" " 无效的选项或OPTNAME 被禁用则失败。" -#: builtins.c:1897 +#: builtins.c:1905 #, fuzzy msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" @@ -5113,6 +5147,12 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" @@ -5135,7 +5175,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者写或赋值错误发生。" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -5179,7 +5219,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者错误发生。" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -5200,7 +5240,7 @@ msgstr "" " 退出状态:\n" " 除非使用了无效选项或者错误发生,否则返回成功。" -#: builtins.c:1969 +#: builtins.c:1982 #, fuzzy msgid "" "Modify or display completion options.\n" @@ -5253,7 +5293,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项或者 NAME 名称没有定义补完声明。" -#: builtins.c:1999 +#: builtins.c:2012 #, fuzzy msgid "" "Read lines from the standard input into an indexed array variable.\n" @@ -5319,7 +5359,7 @@ msgstr "" " 退出状态:\n" " 返回成功,除非使用了无效的选项,或者 ARRAY 变量是只读或者不是下标数组。" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5329,6 +5369,19 @@ msgstr "" " \n" " 一个 `mapfile'的同义词。" +#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" +#~ msgstr "版权所有 (C) 2009 自由软件基金会\n" + +#~ msgid "" +#~ "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "" +#~ "许可证 GPLv2+: GNU GPL 许可证第二版或者更新版本 \n" + +#~ msgid "wait [pid]" +#~ msgstr "wait [进程号]" + #~ msgid "" #~ ". With EXPR, returns\n" #~ " " diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index a4169b17d..39eab4924 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 a3bc8c040..811c5318b 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,36 +7,36 @@ msgid "" msgstr "" "Project-Id-Version: bash-3.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-03-05 22:17-0500\n" +"POT-Creation-Date: 2013-03-08 16:00-0500\n" "PO-Revision-Date: 2008-08-20 20:12+0800\n" "Last-Translator: Zi-You Dai \n" "Language-Team: Chinese (traditional) \n" -"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" #: arrayfunc.c:51 msgid "bad array subscript" msgstr "" -#: arrayfunc.c:330 builtins/declare.def:487 +#: arrayfunc.c:356 builtins/declare.def:578 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:513 +#: arrayfunc.c:539 #, fuzzy, c-format msgid "%s: invalid associative array key" msgstr "%s:無效的功能名稱" -#: arrayfunc.c:515 +#: arrayfunc.c:541 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:557 +#: arrayfunc.c:586 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" @@ -46,21 +46,21 @@ msgstr "" msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:3868 +#: bashline.c:3923 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:3955 +#: bashline.c:4010 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:3984 +#: bashline.c:4039 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4018 +#: bashline.c:4073 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -123,7 +123,7 @@ msgstr "" msgid "HOME not set" msgstr "HOME 沒有設置" -#: builtins/cd.def:247 builtins/common.c:166 test.c:832 +#: builtins/cd.def:247 builtins/common.c:166 test.c:855 msgid "too many arguments" msgstr "太多引數" @@ -146,7 +146,7 @@ msgstr "%s:警告:" msgid "%s: usage: " msgstr "%s:警告:" -#: builtins/common.c:191 shell.c:504 shell.c:786 +#: builtins/common.c:191 shell.c:506 shell.c:788 #, c-format msgid "%s: option requires an argument" msgstr "%s:選項需要一個引數" @@ -161,7 +161,7 @@ msgstr "%s:數字引數必須" msgid "%s: not found" msgstr "%s:沒有找到" -#: builtins/common.c:214 shell.c:799 +#: builtins/common.c:214 shell.c:801 #, c-format msgid "%s: invalid option" msgstr "%s:無效選項" @@ -186,7 +186,7 @@ msgstr "無效信號數" msgid "invalid hex number" msgstr "%s:無效的號碼" -#: builtins/common.c:242 expr.c:1431 +#: builtins/common.c:242 expr.c:1451 msgid "invalid number" msgstr "" @@ -295,25 +295,35 @@ msgstr "警告: -C 選項可能無法按預期工作" msgid "not currently executing completion function" msgstr "" -#: builtins/declare.def:124 +#: builtins/declare.def:126 msgid "can only be used in a function" msgstr "只能用在一個函數" -#: builtins/declare.def:366 +#: builtins/declare.def:311 builtins/declare.def:526 +#, c-format +msgid "%s: reference variable cannot be an array" +msgstr "" + +#: builtins/declare.def:317 +#, c-format +msgid "%s: nameref variable self references not allowed" +msgstr "" + +#: builtins/declare.def:415 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:378 execute_cmd.c:5253 +#: builtins/declare.def:427 execute_cmd.c:5315 #, c-format msgid "%s: readonly function" msgstr "%s:只讀函數" -#: builtins/declare.def:474 +#: builtins/declare.def:565 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:481 builtins/read.def:702 +#: builtins/declare.def:572 builtins/read.def:721 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -342,23 +352,23 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100 -#: shell.c:1461 +#: builtins/evalfile.c:140 builtins/hash.def:171 execute_cmd.c:5162 +#: shell.c:1481 #, c-format msgid "%s: is a directory" msgstr "" -#: builtins/evalfile.c:140 +#: builtins/evalfile.c:146 #, c-format msgid "%s: not a regular file" msgstr "" -#: builtins/evalfile.c:148 +#: builtins/evalfile.c:155 #, c-format msgid "%s: file is too large" msgstr "" -#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471 +#: builtins/evalfile.c:190 builtins/evalfile.c:208 shell.c:1491 #, c-format msgid "%s: cannot execute binary file" msgstr "" @@ -450,7 +460,7 @@ msgstr "" msgid "%s: cannot open: %s" msgstr "" -#: builtins/help.def:337 +#: builtins/help.def:471 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -484,16 +494,16 @@ msgstr "%s:無效服務" msgid "no other options allowed with `-x'" msgstr "" -#: builtins/kill.def:198 +#: builtins/kill.def:200 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "" -#: builtins/kill.def:261 +#: builtins/kill.def:263 msgid "Unknown error" msgstr "" -#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592 +#: builtins/let.def:95 builtins/let.def:120 expr.c:586 expr.c:601 msgid "expression expected" msgstr "" @@ -502,64 +512,64 @@ msgstr "" msgid "%s: not an indexed array" msgstr "" -#: builtins/mapfile.def:256 builtins/read.def:299 +#: builtins/mapfile.def:259 builtins/read.def:302 #, c-format msgid "%s: invalid file descriptor specification" msgstr "" -#: builtins/mapfile.def:264 builtins/read.def:306 +#: builtins/mapfile.def:267 builtins/read.def:309 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "" -#: builtins/mapfile.def:273 builtins/mapfile.def:311 +#: builtins/mapfile.def:276 builtins/mapfile.def:314 #, fuzzy, c-format msgid "%s: invalid line count" msgstr "%s:無效選項" -#: builtins/mapfile.def:284 +#: builtins/mapfile.def:287 #, fuzzy, c-format msgid "%s: invalid array origin" msgstr "%s:無效選項" -#: builtins/mapfile.def:301 +#: builtins/mapfile.def:304 #, fuzzy, c-format msgid "%s: invalid callback quantum" msgstr "%s:無效的功能名稱" -#: builtins/mapfile.def:333 +#: builtins/mapfile.def:336 msgid "empty array variable name" msgstr "" -#: builtins/mapfile.def:354 +#: builtins/mapfile.def:357 msgid "array variable support required" msgstr "" -#: builtins/printf.def:397 +#: builtins/printf.def:402 #, c-format msgid "`%s': missing format character" msgstr "" -#: builtins/printf.def:451 +#: builtins/printf.def:456 #, fuzzy, c-format msgid "`%c': invalid time format specification" msgstr "%s:無效的信號規格" -#: builtins/printf.def:647 +#: builtins/printf.def:658 #, c-format msgid "`%c': invalid format character" msgstr "" -#: builtins/printf.def:673 +#: builtins/printf.def:684 #, fuzzy, c-format msgid "warning: %s: %s" msgstr "%s:警告:" -#: builtins/printf.def:854 +#: builtins/printf.def:865 msgid "missing hex digit for \\x" msgstr "" -#: builtins/printf.def:869 +#: builtins/printf.def:880 #, c-format msgid "missing unicode digit for \\%c" msgstr "" @@ -568,19 +578,24 @@ msgstr "" msgid "no other directory" msgstr "" -#: builtins/pushd.def:462 +#: builtins/pushd.def:354 +#, fuzzy, c-format +msgid "%s: invalid argument" +msgstr "%s:無效選項" + +#: builtins/pushd.def:468 msgid "" msgstr "" -#: builtins/pushd.def:506 +#: builtins/pushd.def:512 msgid "directory stack empty" msgstr "" -#: builtins/pushd.def:508 +#: builtins/pushd.def:514 msgid "directory stack index" msgstr "" -#: builtins/pushd.def:683 +#: builtins/pushd.def:689 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -604,7 +619,7 @@ msgid "" "\tdirs when invoked without options, starting with zero." msgstr "" -#: builtins/pushd.def:705 +#: builtins/pushd.def:711 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" @@ -629,7 +644,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:730 +#: builtins/pushd.def:736 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" @@ -650,12 +665,12 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:272 +#: builtins/read.def:275 #, c-format msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:644 +#: builtins/read.def:666 #, c-format msgid "read error: %d: %s" msgstr "" @@ -664,26 +679,26 @@ msgstr "" msgid "can only `return' from a function or sourced script" msgstr "" -#: builtins/set.def:771 +#: builtins/set.def:782 msgid "cannot simultaneously unset a function and a variable" msgstr "" -#: builtins/set.def:812 +#: builtins/set.def:826 #, c-format msgid "%s: cannot unset" msgstr "" -#: builtins/set.def:829 +#: builtins/set.def:843 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" -#: builtins/set.def:841 +#: builtins/set.def:854 #, c-format msgid "%s: not an array variable" msgstr "" -#: builtins/setattr.def:186 +#: builtins/setattr.def:187 #, c-format msgid "%s: not a function" msgstr "" @@ -692,11 +707,11 @@ msgstr "" msgid "shift count" msgstr "" -#: builtins/shopt.def:277 +#: builtins/shopt.def:279 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:342 +#: builtins/shopt.def:346 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -821,128 +836,128 @@ msgstr "" msgid "%s: unbound variable" msgstr "" -#: eval.c:181 +#: eval.c:189 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" -#: execute_cmd.c:504 +#: execute_cmd.c:512 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1199 +#: execute_cmd.c:1228 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2240 +#: execute_cmd.c:2282 #, fuzzy msgid "pipe error" msgstr "寫入錯誤: %s" -#: execute_cmd.c:4284 +#: execute_cmd.c:4347 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4777 +#: execute_cmd.c:4840 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:4872 +#: execute_cmd.c:4929 #, c-format msgid "%s: command not found" msgstr "%s:命令找不到" -#: execute_cmd.c:5098 +#: execute_cmd.c:5160 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5135 +#: execute_cmd.c:5197 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5172 +#: execute_cmd.c:5234 #, fuzzy, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s:不能得到 limit: %s" -#: execute_cmd.c:5244 +#: execute_cmd.c:5306 #, fuzzy, c-format msgid "`%s': is a special builtin" msgstr "%s:不是一個內建 shell" -#: execute_cmd.c:5296 +#: execute_cmd.c:5358 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" -#: expr.c:258 +#: expr.c:262 msgid "expression recursion level exceeded" msgstr "" -#: expr.c:282 +#: expr.c:286 msgid "recursion stack underflow" msgstr "" -#: expr.c:430 +#: expr.c:434 msgid "syntax error in expression" msgstr "表達語法錯誤" -#: expr.c:474 +#: expr.c:478 msgid "attempted assignment to non-variable" msgstr "" -#: expr.c:493 expr.c:838 +#: expr.c:498 expr.c:847 msgid "division by 0" msgstr "" -#: expr.c:540 +#: expr.c:545 msgid "bug: bad expassign token" msgstr "" -#: expr.c:589 +#: expr.c:598 msgid "`:' expected for conditional expression" msgstr "" -#: expr.c:895 +#: expr.c:904 msgid "exponent less than 0" msgstr "" -#: expr.c:948 +#: expr.c:957 msgid "identifier expected after pre-increment or pre-decrement" msgstr "" -#: expr.c:973 +#: expr.c:983 msgid "missing `)'" msgstr "" -#: expr.c:1024 expr.c:1351 +#: expr.c:1034 expr.c:1371 msgid "syntax error: operand expected" msgstr "" -#: expr.c:1353 +#: expr.c:1373 msgid "syntax error: invalid arithmetic operator" msgstr "" -#: expr.c:1377 +#: expr.c:1397 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "" -#: expr.c:1435 +#: expr.c:1455 msgid "invalid arithmetic base" msgstr "" -#: expr.c:1455 +#: expr.c:1475 msgid "value too great for base" msgstr "" -#: expr.c:1504 +#: expr.c:1524 #, c-format msgid "%s: expression error\n" msgstr "" @@ -951,163 +966,163 @@ msgstr "" msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:99 subst.c:5094 +#: input.c:101 subst.c:5067 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" -#: input.c:265 +#: input.c:267 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "" -#: input.c:273 +#: input.c:275 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "" -#: jobs.c:470 +#: jobs.c:471 msgid "start_pipeline: pgrp pipe" msgstr "" -#: jobs.c:891 +#: jobs.c:892 #, c-format msgid "forked pid %d appears in running job %d" msgstr "" -#: jobs.c:1009 +#: jobs.c:1010 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "" -#: jobs.c:1114 +#: jobs.c:1115 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1117 +#: jobs.c:1118 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" -#: jobs.c:1432 +#: jobs.c:1433 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "" -#: jobs.c:1447 +#: jobs.c:1448 #, c-format msgid "Signal %d" msgstr "" -#: jobs.c:1461 jobs.c:1486 +#: jobs.c:1462 jobs.c:1487 msgid "Done" msgstr "" -#: jobs.c:1466 siglist.c:123 +#: jobs.c:1467 siglist.c:123 msgid "Stopped" msgstr "" -#: jobs.c:1470 +#: jobs.c:1471 #, c-format msgid "Stopped(%s)" msgstr "" -#: jobs.c:1474 +#: jobs.c:1475 msgid "Running" msgstr "" -#: jobs.c:1488 +#: jobs.c:1489 #, c-format msgid "Done(%d)" msgstr "" -#: jobs.c:1490 +#: jobs.c:1491 #, c-format msgid "Exit %d" msgstr "" -#: jobs.c:1493 +#: jobs.c:1494 msgid "Unknown status" msgstr "" -#: jobs.c:1580 +#: jobs.c:1581 #, c-format msgid "(core dumped) " msgstr "" -#: jobs.c:1599 +#: jobs.c:1600 #, c-format msgid " (wd: %s)" msgstr "" -#: jobs.c:1807 +#: jobs.c:1817 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2135 nojobs.c:585 +#: jobs.c:2136 nojobs.c:605 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "" -#: jobs.c:2372 +#: jobs.c:2383 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:2653 +#: jobs.c:2689 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "" -#: jobs.c:2875 +#: jobs.c:2981 #, c-format msgid "%s: job has terminated" msgstr "" -#: jobs.c:2884 +#: jobs.c:2990 #, c-format msgid "%s: job %d already in background" msgstr "" -#: jobs.c:3105 +#: jobs.c:3215 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" -#: jobs.c:3571 +#: jobs.c:3699 #, fuzzy, c-format msgid "%s: line %d: " msgstr "%s:警告:" -#: jobs.c:3585 nojobs.c:818 +#: jobs.c:3713 nojobs.c:843 #, c-format msgid " (core dumped)" msgstr "" -#: jobs.c:3597 jobs.c:3610 +#: jobs.c:3725 jobs.c:3738 #, c-format msgid "(wd now: %s)\n" msgstr "" -#: jobs.c:3642 +#: jobs.c:3770 msgid "initialize_job_control: getpgrp failed" msgstr "" -#: jobs.c:3703 +#: jobs.c:3831 msgid "initialize_job_control: line discipline" msgstr "" -#: jobs.c:3713 +#: jobs.c:3841 msgid "initialize_job_control: setpgid" msgstr "" -#: jobs.c:3734 jobs.c:3743 +#: jobs.c:3862 jobs.c:3871 #, c-format msgid "cannot set terminal process group (%d)" msgstr "" -#: jobs.c:3748 +#: jobs.c:3876 msgid "no job control in this shell" msgstr "" @@ -1128,49 +1143,49 @@ msgstr "" msgid "unknown" msgstr "%s:主機未知" -#: lib/malloc/malloc.c:797 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:874 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:877 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:896 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:902 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1001 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1016 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1022 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "" -#: lib/malloc/table.c:177 +#: lib/malloc/table.c:194 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" msgstr "" -#: lib/malloc/table.c:184 +#: lib/malloc/table.c:203 #, c-format msgid "register_alloc: %p already in table as allocated?\n" msgstr "" -#: lib/malloc/table.c:220 +#: lib/malloc/table.c:256 #, c-format msgid "register_free: %p already in table as free?\n" msgstr "" @@ -1218,15 +1233,15 @@ msgstr "" msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "" -#: mailcheck.c:433 +#: mailcheck.c:439 msgid "You have mail in $_" msgstr "您有郵件在 $_" -#: mailcheck.c:458 +#: mailcheck.c:464 msgid "You have new mail in $_" msgstr "您有新郵件在 $_" -#: mailcheck.c:474 +#: mailcheck.c:480 #, c-format msgid "The mail in %s has been read\n" msgstr "郵件在 %s 已閱讀\n" @@ -1259,103 +1274,103 @@ msgstr "" msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection:重新導向指示 `%d' 超出範圍" -#: parse.y:3173 parse.y:3448 +#: parse.y:3209 parse.y:3480 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4038 +#: parse.y:4086 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4043 +#: parse.y:4091 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4047 +#: parse.y:4095 msgid "syntax error in conditional expression" msgstr "語法錯誤,在有條件的表達" -#: parse.y:4125 +#: parse.y:4173 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4129 +#: parse.y:4177 msgid "expected `)'" msgstr "預期 `)'" -#: parse.y:4157 +#: parse.y:4205 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4161 +#: parse.y:4209 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4207 +#: parse.y:4255 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4211 +#: parse.y:4259 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4233 +#: parse.y:4281 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4237 +#: parse.y:4285 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4248 +#: parse.y:4296 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4251 +#: parse.y:4299 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4255 +#: parse.y:4303 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:5590 +#: parse.y:5649 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:5608 +#: parse.y:5667 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:5618 +#: parse.y:5677 msgid "syntax error" msgstr "語法錯誤" -#: parse.y:5680 +#: parse.y:5739 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:5842 +#: parse.y:5901 msgid "unexpected EOF while looking for matching `)'" msgstr "" -#: pcomplete.c:1079 +#: pcomplete.c:1093 #, c-format msgid "completion: function `%s' not found" msgstr "" @@ -1384,71 +1399,71 @@ msgstr "" msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1503 +#: print_cmd.c:1518 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:122 +#: redir.c:123 redir.c:170 msgid "file descriptor out of range" msgstr "" -#: redir.c:178 +#: redir.c:177 #, c-format msgid "%s: ambiguous redirect" msgstr "" -#: redir.c:182 +#: redir.c:181 #, c-format msgid "%s: cannot overwrite existing file" msgstr "" -#: redir.c:187 +#: redir.c:186 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "" -#: redir.c:192 +#: redir.c:191 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "" -#: redir.c:196 +#: redir.c:195 #, fuzzy, c-format msgid "%s: cannot assign fd to variable" msgstr "%s:只讀變數" -#: redir.c:548 +#: redir.c:582 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142 +#: redir.c:861 redir.c:971 redir.c:1032 redir.c:1194 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:337 +#: shell.c:339 msgid "could not find /tmp, please create!" msgstr "" -#: shell.c:341 +#: shell.c:343 msgid "/tmp must be a valid directory name" msgstr "" -#: shell.c:888 +#: shell.c:890 #, c-format msgid "%c%c: invalid option" msgstr "%c%c:無效選項" -#: shell.c:1662 +#: shell.c:1682 msgid "I have no name!" msgstr "我沒有名字!" -#: shell.c:1807 +#: shell.c:1827 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "" -#: shell.c:1808 +#: shell.c:1828 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1457,39 +1472,40 @@ msgstr "" "用法:\t%s [GNU 長選項] [選項] ...\n" "\t%s [GNU 長選項] [選項] script-file ...\n" -#: shell.c:1810 +#: shell.c:1830 msgid "GNU long options:\n" msgstr "GNU 長選項:\n" -#: shell.c:1814 +#: shell.c:1834 msgid "Shell options:\n" msgstr "Shell 選項:\n" -#: shell.c:1815 -msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n" +#: shell.c:1835 +#, fuzzy +msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" msgstr "\t-irsD 或 -c 命令或 -O shopt_option\t\t(只有引用)\n" -#: shell.c:1830 +#: shell.c:1850 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o 選項\n" -#: shell.c:1836 +#: shell.c:1856 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "輸入 `%s -c \"help set\"' 更多訊息關於 shell 選項。\n" -#: shell.c:1837 +#: shell.c:1857 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "輸入 `%s -c help' 更多訊息關於內建 shell 命令。\n" -#: shell.c:1838 +#: shell.c:1858 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "使用 `bashbug' 命令報告臭蟲。\n" -#: sig.c:647 +#: sig.c:679 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d:無效操作" @@ -1665,229 +1681,230 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1335 subst.c:1506 +#: subst.c:1352 subst.c:1510 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:2801 +#: subst.c:2823 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:4991 subst.c:5007 +#: subst.c:4964 subst.c:4980 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5039 +#: subst.c:5012 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5084 +#: subst.c:5057 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5086 +#: subst.c:5059 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5104 +#: subst.c:5077 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5296 +#: subst.c:5273 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:5334 +#: subst.c:5311 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:5351 +#: subst.c:5330 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:5875 +#: subst.c:5733 subst.c:7900 +#, c-format +msgid "%s: invalid variable name for name reference" +msgstr "" + +#: subst.c:5926 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:6141 subst.c:6156 +#: subst.c:6198 subst.c:6213 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:7284 +#: subst.c:7356 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:7361 +#: subst.c:7433 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:7697 +#: subst.c:7767 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:8165 +#: subst.c:8271 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:9056 +#: subst.c:9172 #, c-format msgid "no match: %s" msgstr "" -#: test.c:146 +#: test.c:147 msgid "argument expected" msgstr "" -#: test.c:155 +#: test.c:156 #, c-format msgid "%s: integer expression expected" msgstr "" -#: test.c:263 +#: test.c:264 msgid "`)' expected" msgstr "" -#: test.c:265 +#: test.c:266 #, c-format msgid "`)' expected, found %s" msgstr "" -#: test.c:280 test.c:698 test.c:701 +#: test.c:281 test.c:721 test.c:724 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:449 test.c:741 +#: test.c:468 test.c:764 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:816 +#: test.c:839 msgid "missing `]'" msgstr "" -#: trap.c:209 +#: trap.c:217 msgid "invalid signal number" msgstr "無效信號數" -#: trap.c:329 +#: trap.c:348 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "" -#: trap.c:333 +#: trap.c:352 #, 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:379 +#: trap.c:398 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:壞的信號 %d" -#: variables.c:366 +#: variables.c:380 #, c-format msgid "error importing function definition for `%s'" msgstr "錯誤,輸入的函數定義為 `%s'" -#: variables.c:764 +#: variables.c:778 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:1941 +#: variables.c:2198 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:3192 +#: variables.c:2217 +#, fuzzy, c-format +msgid "%s: variable may not be assigned value" +msgstr "%s:只讀變數" + +#: variables.c:3554 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:3437 +#: variables.c:3799 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:3442 variables.c:3451 +#: variables.c:3804 variables.c:3813 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:3457 +#: variables.c:3819 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:3917 +#: variables.c:4252 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:3930 +#: variables.c:4265 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4004 +#: variables.c:4339 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:4821 +#: variables.c:5165 #, fuzzy, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s:不能讀取: %s" -#: variables.c:4826 +#: variables.c:5170 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: version.c:46 -msgid "Copyright (C) 2011 Free Software Foundation, Inc." +#: variables.c:5215 +#, fuzzy, c-format +msgid "%s: %s: compatibility value out of range" +msgstr "%s:%s 超出範圍" + +#: version.c:46 version2.c:46 +msgid "Copyright (C) 2012 Free Software Foundation, Inc." msgstr "" -#: version.c:47 +#: version.c:47 version2.c:47 msgid "" "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -#: version.c:86 version2.c:83 +#: version.c:86 version2.c:86 #, c-format msgid "GNU bash, version %s (%s)\n" msgstr "" -#: version.c:91 version2.c:88 -#, c-format -msgid "This is free software; you are free to change and redistribute it.\n" +#: version.c:91 version2.c:91 +msgid "This is free software; you are free to change and redistribute it." msgstr "" -#: version.c:92 version2.c:89 -#, c-format -msgid "There is NO WARRANTY, to the extent permitted by law.\n" -msgstr "" - -#: version2.c:86 -#, c-format -msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n" -msgstr "" - -#: version2.c:87 -#, c-format -msgid "" -"License GPLv2+: GNU GPL version 2 or later \n" +#: version.c:92 version2.c:92 +msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "" #: xmalloc.c:91 @@ -1965,7 +1982,7 @@ msgid "command [-pVv] command [arg ...]" msgstr "" #: builtins.c:76 -msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]" +msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" msgstr "" #: builtins.c:78 @@ -2067,7 +2084,7 @@ msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]" msgstr "" #: builtins.c:142 -msgid "unset [-f] [-v] [name ...]" +msgid "unset [-f] [-v] [-n] [name ...]" msgstr "" #: builtins.c:144 @@ -2124,11 +2141,11 @@ msgid "umask [-p] [-S] [mode]" msgstr "" #: builtins.c:175 -msgid "wait [id ...]" +msgid "wait [-n] [id ...]" msgstr "" #: builtins.c:179 -msgid "wait [pid]" +msgid "wait [pid ...]" msgstr "" #: builtins.c:182 @@ -2495,6 +2512,7 @@ msgid "" " -A\tto make NAMEs associative arrays (if supported)\n" " -i\tto make NAMEs have the `integer' attribute\n" " -l\tto convert NAMEs to lower case on assignment\n" +" -n\tmake NAME a reference to the variable named by its value\n" " -r\tto make NAMEs readonly\n" " -t\tto make NAMEs have the `trace' attribute\n" " -u\tto convert NAMEs to upper case on assignment\n" @@ -2510,17 +2528,18 @@ msgid "" " command. The `-g' option suppresses this behavior.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied or an error occurs." +" Returns success unless an invalid option is supplied or a variable\n" +" assignment error occurs." msgstr "" -#: builtins.c:523 +#: builtins.c:525 msgid "" "Set variable values and attributes.\n" " \n" " Obsolete. See `help declare'." msgstr "" -#: builtins.c:531 +#: builtins.c:533 msgid "" "Define local variables.\n" " \n" @@ -2531,11 +2550,11 @@ msgid "" " only to the function where they are defined and its children.\n" " \n" " Exit Status:\n" -" Returns success unless an invalid option is supplied, an error occurs,\n" -" or the shell is not executing a function." +" Returns success unless an invalid option is supplied, a variable\n" +" assignment error occurs, or the shell is not executing a function." msgstr "" -#: builtins.c:548 +#: builtins.c:550 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2569,7 +2588,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:584 +#: builtins.c:586 msgid "" "Write arguments to the standard output.\n" " \n" @@ -2582,7 +2601,7 @@ msgid "" " Returns success unless a write error occurs." msgstr "" -#: builtins.c:599 +#: builtins.c:601 msgid "" "Enable and disable shell builtins.\n" " \n" @@ -2609,7 +2628,7 @@ msgid "" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -#: builtins.c:627 +#: builtins.c:629 msgid "" "Execute arguments as a shell command.\n" " \n" @@ -2621,7 +2640,7 @@ msgid "" " Returns exit status of command or success if command is null." msgstr "" -#: builtins.c:639 +#: builtins.c:641 msgid "" "Parse option arguments.\n" " \n" @@ -2662,7 +2681,7 @@ msgid "" " encountered or an error occurs." msgstr "" -#: builtins.c:681 +#: builtins.c:683 msgid "" "Replace the shell with the given command.\n" " \n" @@ -2685,7 +2704,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:702 +#: builtins.c:704 msgid "" "Exit the shell.\n" " \n" @@ -2693,7 +2712,7 @@ msgid "" " is that of the last command executed." msgstr "" -#: builtins.c:711 +#: builtins.c:713 msgid "" "Exit a login shell.\n" " \n" @@ -2702,7 +2721,7 @@ msgid "" " in a login shell." msgstr "" -#: builtins.c:721 +#: builtins.c:723 msgid "" "Display or execute commands from the history list.\n" " \n" @@ -2732,7 +2751,7 @@ msgid "" "occurs." msgstr "" -#: builtins.c:751 +#: builtins.c:753 msgid "" "Move job to the foreground.\n" " \n" @@ -2744,7 +2763,7 @@ msgid "" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -#: builtins.c:766 +#: builtins.c:768 msgid "" "Move jobs to the background.\n" " \n" @@ -2758,7 +2777,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:780 +#: builtins.c:782 msgid "" "Remember or display program locations.\n" " \n" @@ -2782,7 +2801,7 @@ msgid "" " Returns success unless NAME is not found or an invalid option is given." msgstr "" -#: builtins.c:805 +#: builtins.c:807 msgid "" "Display information about builtin commands.\n" " \n" @@ -2804,7 +2823,7 @@ msgid "" "given." msgstr "" -#: builtins.c:829 +#: builtins.c:831 msgid "" "Display or manipulate the history list.\n" " \n" @@ -2838,7 +2857,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:865 +#: builtins.c:867 msgid "" "Display status of jobs.\n" " \n" @@ -2862,7 +2881,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:892 +#: builtins.c:894 msgid "" "Remove jobs from current shell.\n" " \n" @@ -2879,7 +2898,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:911 +#: builtins.c:913 msgid "" "Send a signal to a job.\n" " \n" @@ -2901,7 +2920,7 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:934 +#: builtins.c:936 msgid "" "Evaluate arithmetic expressions.\n" " \n" @@ -2946,7 +2965,7 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:979 +#: builtins.c:981 msgid "" "Read a line from the standard input and split it into fields.\n" " \n" @@ -2981,7 +3000,7 @@ msgid "" " -s\t\tdo not echo input coming from a terminal\n" " -t timeout\ttime out and return failure if a complete line of input " "is\n" -" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n" +" \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" " \t\tvariable is the default timeout. TIMEOUT may be a\n" " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" " \t\twithout trying to read any data, returning success only if\n" @@ -2997,7 +3016,7 @@ msgid "" " or an invalid file descriptor is supplied as the argument to -u." msgstr "" -#: builtins.c:1024 +#: builtins.c:1026 msgid "" "Return from a shell function.\n" " \n" @@ -3009,7 +3028,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1037 +#: builtins.c:1039 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3094,7 +3113,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1122 +#: builtins.c:1124 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3103,6 +3122,8 @@ msgid "" " Options:\n" " -f\ttreat each NAME as a shell function\n" " -v\ttreat each NAME as a shell variable\n" +" -n\ttreat each NAME as a name reference and unset the variable itself\n" +" \trather than the variable it references\n" " \n" " Without options, unset first tries to unset a variable, and if that " "fails,\n" @@ -3114,7 +3135,7 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1142 +#: builtins.c:1146 msgid "" "Set export attribute for shell variables.\n" " \n" @@ -3133,7 +3154,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1161 +#: builtins.c:1165 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3153,7 +3174,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1182 +#: builtins.c:1186 msgid "" "Shift positional parameters.\n" " \n" @@ -3164,7 +3185,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1194 builtins.c:1209 +#: builtins.c:1198 builtins.c:1213 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3178,7 +3199,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1225 +#: builtins.c:1229 msgid "" "Suspend shell execution.\n" " \n" @@ -3192,7 +3213,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1241 +#: builtins.c:1245 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3257,6 +3278,8 @@ msgid "" " \n" " -o OPTION True if the shell option OPTION is enabled.\n" " -v VAR\t True if the shell variable VAR is set\n" +" -R VAR\t True if the shell variable VAR is set and is a name " +"reference.\n" " ! EXPR True if expr is false.\n" " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n" " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n" @@ -3273,7 +3296,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1321 +#: builtins.c:1326 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3281,7 +3304,7 @@ msgid "" " be a literal `]', to match the opening `['." msgstr "" -#: builtins.c:1330 +#: builtins.c:1335 msgid "" "Display process times.\n" " \n" @@ -3293,7 +3316,7 @@ msgid "" " Always succeeds." msgstr "" -#: builtins.c:1342 +#: builtins.c:1347 msgid "" "Trap signals and other events.\n" " \n" @@ -3337,7 +3360,7 @@ msgid "" "given." msgstr "" -#: builtins.c:1378 +#: builtins.c:1383 msgid "" "Display information about command type.\n" " \n" @@ -3367,7 +3390,7 @@ msgid "" "found." msgstr "" -#: builtins.c:1409 +#: builtins.c:1414 msgid "" "Modify shell resource limits.\n" " \n" @@ -3414,7 +3437,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1457 +#: builtins.c:1462 msgid "" "Display or set file mode mask.\n" " \n" @@ -3432,7 +3455,7 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1477 +#: builtins.c:1482 msgid "" "Wait for job completion and return exit status.\n" " \n" @@ -3444,26 +3467,30 @@ msgid "" "processes\n" " in that job's pipeline.\n" " \n" +" If the -n option is supplied, waits for the next job to terminate and\n" +" returns its exit status.\n" +" \n" " Exit Status:\n" " Returns the status of the last ID; fails if ID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1503 msgid "" "Wait for process completion and return exit status.\n" " \n" -" Waits for the specified process and reports its termination status. If\n" -" PID is not given, all currently active child processes are waited for,\n" -" and the return code is zero. PID must be a process ID.\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 ID; fails if ID is invalid or an invalid option " -"is\n" -" given." +" Returns the status of the last PID; fails if PID is invalid or an " +"invalid\n" +" option is given." msgstr "" -#: builtins.c:1510 +#: builtins.c:1518 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3476,7 +3503,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1524 +#: builtins.c:1532 msgid "" "Arithmetic for loop.\n" " \n" @@ -3493,7 +3520,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1542 +#: builtins.c:1550 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3513,7 +3540,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1563 +#: builtins.c:1571 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3529,7 +3556,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1580 +#: builtins.c:1588 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3540,7 +3567,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1592 +#: builtins.c:1600 msgid "" "Execute commands based on conditional.\n" " \n" @@ -3561,7 +3588,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1609 +#: builtins.c:1617 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3572,7 +3599,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1621 +#: builtins.c:1629 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3583,7 +3610,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1633 +#: builtins.c:1641 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3596,7 +3623,7 @@ msgid "" " Returns the exit status of COMMAND." msgstr "" -#: builtins.c:1647 +#: builtins.c:1655 msgid "" "Define shell function.\n" " \n" @@ -3610,7 +3637,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1661 +#: builtins.c:1669 msgid "" "Group commands as a unit.\n" " \n" @@ -3621,7 +3648,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1673 +#: builtins.c:1681 msgid "" "Resume job in foreground.\n" " \n" @@ -3635,7 +3662,7 @@ msgid "" " Returns the status of the resumed job." msgstr "" -#: builtins.c:1688 +#: builtins.c:1696 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3646,7 +3673,7 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1700 +#: builtins.c:1708 msgid "" "Execute conditional command.\n" " \n" @@ -3674,7 +3701,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1726 +#: builtins.c:1734 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3728,7 +3755,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1783 +#: builtins.c:1791 msgid "" "Add directories to stack.\n" " \n" @@ -3759,7 +3786,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1817 +#: builtins.c:1825 msgid "" "Remove directories from stack.\n" " \n" @@ -3786,7 +3813,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1847 +#: builtins.c:1855 msgid "" "Display directory stack.\n" " \n" @@ -3815,7 +3842,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1876 +#: builtins.c:1884 msgid "" "Set and unset shell options.\n" " \n" @@ -3836,7 +3863,7 @@ msgid "" " given or OPTNAME is disabled." msgstr "" -#: builtins.c:1897 +#: builtins.c:1905 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -3863,13 +3890,19 @@ msgid "" "format\n" " string for strftime(3)\n" " \n" +" The format is re-used as necessary to consume all of the arguments. If\n" +" there are fewer arguments than the format requires, extra format\n" +" specifications behave as if a zero value or null string, as " +"appropriate,\n" +" had been supplied.\n" +" \n" " Exit Status:\n" " Returns success unless an invalid option is given or a write or " "assignment\n" " error occurs." msgstr "" -#: builtins.c:1926 +#: builtins.c:1939 msgid "" "Specify how arguments are to be completed by Readline.\n" " \n" @@ -3896,7 +3929,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1954 +#: builtins.c:1967 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -3909,7 +3942,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1969 +#: builtins.c:1982 msgid "" "Modify or display completion options.\n" " \n" @@ -3940,7 +3973,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:1999 +#: builtins.c:2012 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -3981,7 +4014,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2033 +#: builtins.c:2046 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/subst.c b/subst.c index 6ced44a0f..e5f1447aa 100644 --- a/subst.c +++ b/subst.c @@ -5725,9 +5725,10 @@ expand_arrayref: name = temp; goto expand_arrayref; } + else #endif /* y=2 ; typeset -n x=y; echo ${x} is not the same as echo ${2} in ksh */ - else if (temp && *temp && legal_identifier (temp) == 0) + if (temp && *temp && legal_identifier (temp) == 0) { last_command_exit_value = EXECUTION_FAILURE; report_error (_("%s: invalid variable name for name reference"), temp); diff --git a/support/mkconffiles b/support/mkconffiles old mode 100644 new mode 100755 diff --git a/support/mkversion.sh b/support/mkversion.sh old mode 100644 new mode 100755 diff --git a/support/rlvers.sh b/support/rlvers.sh old mode 100644 new mode 100755 diff --git a/support/shobj-conf b/support/shobj-conf old mode 100644 new mode 100755 diff --git a/tests/nameref.right b/tests/nameref.right index 15b7527e0..e3251c540 100644 --- a/tests/nameref.right +++ b/tests/nameref.right @@ -109,7 +109,6 @@ ref -> two, value: 2 ref -> three, value: 3 final state: ref -> three, value: 3 ./nameref6.sub: line 2: typeset: x: nameref variable self references not allowed -./nameref6.sub: line 5: typeset: x[3]: reference variable cannot be an array ./nameref6.sub: line 12: typeset: x: reference variable cannot be an array the -- 1 ./nameref6.sub: line 25: 42: invalid variable name for name reference diff --git a/y.tab.c b/y.tab.c new file mode 100644 index 000000000..ec2020eb2 --- /dev/null +++ b/y.tab.c @@ -0,0 +1,8453 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + 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 2, 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, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IF = 258, + THEN = 259, + ELSE = 260, + ELIF = 261, + FI = 262, + CASE = 263, + ESAC = 264, + FOR = 265, + SELECT = 266, + WHILE = 267, + UNTIL = 268, + DO = 269, + DONE = 270, + FUNCTION = 271, + COPROC = 272, + COND_START = 273, + COND_END = 274, + COND_ERROR = 275, + IN = 276, + BANG = 277, + TIME = 278, + TIMEOPT = 279, + TIMEIGN = 280, + WORD = 281, + ASSIGNMENT_WORD = 282, + REDIR_WORD = 283, + NUMBER = 284, + ARITH_CMD = 285, + ARITH_FOR_EXPRS = 286, + COND_CMD = 287, + AND_AND = 288, + OR_OR = 289, + GREATER_GREATER = 290, + LESS_LESS = 291, + LESS_AND = 292, + LESS_LESS_LESS = 293, + GREATER_AND = 294, + SEMI_SEMI = 295, + SEMI_AND = 296, + SEMI_SEMI_AND = 297, + LESS_LESS_MINUS = 298, + AND_GREATER = 299, + AND_GREATER_GREATER = 300, + LESS_GREATER = 301, + GREATER_BAR = 302, + BAR_AND = 303, + yacc_EOF = 304 + }; +#endif +/* Tokens. */ +#define IF 258 +#define THEN 259 +#define ELSE 260 +#define ELIF 261 +#define FI 262 +#define CASE 263 +#define ESAC 264 +#define FOR 265 +#define SELECT 266 +#define WHILE 267 +#define UNTIL 268 +#define DO 269 +#define DONE 270 +#define FUNCTION 271 +#define COPROC 272 +#define COND_START 273 +#define COND_END 274 +#define COND_ERROR 275 +#define IN 276 +#define BANG 277 +#define TIME 278 +#define TIMEOPT 279 +#define TIMEIGN 280 +#define WORD 281 +#define ASSIGNMENT_WORD 282 +#define REDIR_WORD 283 +#define NUMBER 284 +#define ARITH_CMD 285 +#define ARITH_FOR_EXPRS 286 +#define COND_CMD 287 +#define AND_AND 288 +#define OR_OR 289 +#define GREATER_GREATER 290 +#define LESS_LESS 291 +#define LESS_AND 292 +#define LESS_LESS_LESS 293 +#define GREATER_AND 294 +#define SEMI_SEMI 295 +#define SEMI_AND 296 +#define SEMI_SEMI_AND 297 +#define LESS_LESS_MINUS 298 +#define AND_GREATER 299 +#define AND_GREATER_GREATER 300 +#define LESS_GREATER 301 +#define GREATER_BAR 302 +#define BAR_AND 303 +#define yacc_EOF 304 + + + + +/* Copy the first part of user declarations. */ +#line 21 "/Users/chet/src/bash/src/parse.y" + +#include "config.h" + +#include "bashtypes.h" +#include "bashansi.h" + +#include "filecntl.h" + +#if defined (HAVE_UNISTD_H) +# include +#endif + +#if defined (HAVE_LOCALE_H) +# include +#endif + +#include +#include "chartypes.h" +#include + +#include "memalloc.h" + +#include "bashintl.h" + +#define NEED_STRFTIME_DECL /* used in externs.h */ + +#include "shell.h" +#include "typemax.h" /* SIZE_MAX if needed */ +#include "trap.h" +#include "flags.h" +#include "parser.h" +#include "mailcheck.h" +#include "test.h" +#include "builtins.h" +#include "builtins/common.h" +#include "builtins/builtext.h" + +#include "shmbutil.h" + +#if defined (READLINE) +# include "bashline.h" +# include +#endif /* READLINE */ + +#if defined (HISTORY) +# include "bashhist.h" +# include +#endif /* HISTORY */ + +#if defined (JOB_CONTROL) +# include "jobs.h" +#endif /* JOB_CONTROL */ + +#if defined (ALIAS) +# include "alias.h" +#else +typedef void *alias_t; +#endif /* ALIAS */ + +#if defined (PROMPT_STRING_DECODE) +# ifndef _MINIX +# include +# endif +# include +# if defined (TM_IN_SYS_TIME) +# include +# include +# endif /* TM_IN_SYS_TIME */ +# include "maxpath.h" +#endif /* PROMPT_STRING_DECODE */ + +#define RE_READ_TOKEN -99 +#define NO_EXPANSION -100 + +#ifdef DEBUG +# define YYDEBUG 1 +#else +# define YYDEBUG 0 +#endif + +#if defined (HANDLE_MULTIBYTE) +# define last_shell_getc_is_singlebyte \ + ((shell_input_line_index > 1) \ + ? shell_input_line_property[shell_input_line_index - 1] \ + : 1) +# define MBTEST(x) ((x) && last_shell_getc_is_singlebyte) +#else +# define last_shell_getc_is_singlebyte 1 +# define MBTEST(x) ((x)) +#endif + +#if defined (EXTENDED_GLOB) +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; +#if defined (BUFFERED_INPUT) +extern int bash_input_fd_changed; +#endif + +extern int errno; +/* **************************************************************** */ +/* */ +/* "Forward" declarations */ +/* */ +/* **************************************************************** */ + +#ifdef DEBUG +static void debug_parser __P((int)); +#endif + +static int yy_getc __P((void)); +static int yy_ungetc __P((int)); + +#if defined (READLINE) +static int yy_readline_get __P((void)); +static int yy_readline_unget __P((int)); +#endif + +static int yy_string_get __P((void)); +static int yy_string_unget __P((int)); +static void rewind_input_string __P((void)); +static int yy_stream_get __P((void)); +static int yy_stream_unget __P((int)); + +static int shell_getc __P((int)); +static void shell_ungetc __P((int)); +static void discard_until __P((int)); + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) +static void push_string __P((char *, int, alias_t *)); +static void pop_string __P((void)); +static void free_string_list __P((void)); +#endif + +static char *read_a_line __P((int)); + +static int reserved_word_acceptable __P((int)); +static int yylex __P((void)); +static int alias_expand_token __P((char *)); +static int time_command_acceptable __P((void)); +static int special_case_tokens __P((char *)); +static int read_token __P((int)); +static char *parse_matched_pair __P((int, int, int, int *, int)); +static char *parse_comsub __P((int, int, int, int *, int)); +#if defined (ARRAY_VARS) +static char *parse_compound_assignment __P((int *)); +#endif +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +static int parse_dparen __P((int)); +static int parse_arith_cmd __P((char **, int)); +#endif +#if defined (COND_COMMAND) +static void cond_error __P((void)); +static COND_COM *cond_expr __P((void)); +static COND_COM *cond_or __P((void)); +static COND_COM *cond_and __P((void)); +static COND_COM *cond_term __P((void)); +static int cond_skip_newlines __P((void)); +static COMMAND *parse_cond_command __P((void)); +#endif +#if defined (ARRAY_VARS) +static int token_is_assignment __P((char *, int)); +static int token_is_ident __P((char *, int)); +#endif +static int read_token_word __P((int)); +static void discard_parser_constructs __P((int)); + +static char *error_token_from_token __P((int)); +static char *error_token_from_text __P((void)); +static void print_offending_line __P((void)); +static void report_syntax_error __P((char *)); + +static void handle_eof_input_unit __P((void)); +static void prompt_again __P((void)); +#if 0 +static void reset_readline_prompt __P((void)); +#endif +static void print_prompt __P((void)); + +#if defined (HANDLE_MULTIBYTE) +static void set_line_mbstate __P((void)); +static char *shell_input_line_property = NULL; +#else +# define set_line_mbstate() +#endif + +extern int yyerror __P((const char *)); + +#ifdef DEBUG +extern int yydebug; +#endif + +/* Default prompt strings */ +char *primary_prompt = PPROMPT; +char *secondary_prompt = SPROMPT; + +/* PROMPT_STRING_POINTER points to one of these, never to an actual string. */ +char *ps1_prompt, *ps2_prompt; + +/* Handle on the current prompt string. Indirectly points through + ps1_ or ps2_prompt. */ +char **prompt_string_pointer = (char **)NULL; +char *current_prompt_string; + +/* Non-zero means we expand aliases in commands. */ +int expand_aliases = 0; + +/* If non-zero, the decoded prompt string undergoes parameter and + variable substitution, command substitution, arithmetic substitution, + string expansion, process substitution, and quote removal in + decode_prompt_string. */ +int promptvars = 1; + +/* If non-zero, $'...' and $"..." are expanded when they appear within + a ${...} expansion, even when the expansion appears within double + quotes. */ +int extended_quote = 1; + +/* The number of lines read from input while creating the current command. */ +int current_command_line_count; + +/* The number of lines in a command saved while we run parse_and_execute */ +int saved_command_line_count; + +/* The token that currently denotes the end of parse. */ +int shell_eof_token; + +/* The token currently being read. */ +int current_token; + +/* The current parser state. */ +int parser_state; + +/* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +static REDIRECT *redir_stack[10]; +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; +static size_t shell_input_line_index; +static size_t shell_input_line_size; /* Amount allocated for shell_input_line. */ +static size_t shell_input_line_len; /* strlen (shell_input_line) */ + +/* Either zero or EOF. */ +static int shell_input_line_terminator; + +/* The line number in a script on which a function definition starts. */ +static int function_dstart; + +/* The line number in a script on which a function body starts. */ +static int function_bstart; + +/* The line number in a script at which an arithmetic for command starts. */ +static int arith_for_lineno; + +/* The decoded prompt string. Used if READLINE is not defined or if + editing is turned off. Analogous to current_readline_prompt. */ +static char *current_decoded_prompt; + +/* The last read token, or NULL. read_token () uses this for context + checking. */ +static int last_read_token; + +/* The token read prior to last_read_token. */ +static int token_before_that; + +/* The token read prior to token_before_that. */ +static int two_tokens_ago; + +static int global_extglob; + +/* The line number in a script where the word in a `case WORD', `select WORD' + or `for WORD' begins. This is a nested command maximum, since the array + index is decremented after a case, select, or for command is parsed. */ +#define MAX_CASE_NEST 128 +static int word_lineno[MAX_CASE_NEST]; +static int word_top = -1; + +/* If non-zero, it is the token that we want read_token to return + regardless of what text is (or isn't) present to be read. This + is reset by read_token. If token_to_read == WORD or + ASSIGNMENT_WORD, yylval.word should be set to word_desc_to_read. */ +static int token_to_read; +static WORD_DESC *word_desc_to_read; + +static REDIRECTEE source; +static REDIRECTEE redir; + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 324 "/Users/chet/src/bash/src/parse.y" +{ + WORD_DESC *word; /* the word that we read. */ + int number; /* the number that we read. */ + WORD_LIST *word_list; + COMMAND *command; + REDIRECT *redirect; + ELEMENT element; + PATTERN_LIST *pattern; +} +/* Line 193 of yacc.c. */ +#line 507 "y.tab.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 520 "y.tab.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 116 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 659 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 61 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 38 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 167 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 342 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 304 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 51, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 49, 2, + 59, 60, 2, 2, 2, 56, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, + 55, 2, 54, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 57, 53, 58, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 52 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 11, 13, 15, 18, 21, + 24, 28, 32, 36, 40, 43, 47, 51, 54, 58, + 62, 65, 69, 73, 76, 80, 84, 87, 91, 95, + 98, 102, 106, 109, 113, 117, 120, 124, 128, 131, + 135, 139, 142, 146, 150, 153, 157, 161, 164, 168, + 172, 175, 178, 180, 182, 184, 186, 189, 191, 194, + 196, 198, 201, 203, 205, 207, 209, 215, 221, 223, + 225, 227, 229, 231, 233, 235, 242, 249, 257, 265, + 276, 287, 297, 307, 315, 323, 329, 335, 342, 349, + 357, 365, 376, 387, 394, 402, 409, 415, 422, 427, + 429, 432, 436, 439, 443, 447, 452, 455, 461, 469, + 476, 480, 482, 486, 491, 498, 504, 506, 509, 514, + 519, 525, 531, 534, 538, 541, 545, 548, 552, 554, + 558, 561, 563, 566, 570, 574, 578, 583, 588, 593, + 598, 603, 605, 607, 609, 611, 613, 615, 616, 619, + 621, 624, 627, 632, 637, 641, 645, 647, 649, 652, + 655, 658, 661, 666, 671, 673, 675, 678 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 62, 0, -1, 94, 91, -1, 51, -1, 1, 51, + -1, 52, -1, 26, -1, 63, 26, -1, 54, 26, + -1, 55, 26, -1, 29, 54, 26, -1, 29, 55, + 26, -1, 28, 54, 26, -1, 28, 55, 26, -1, + 35, 26, -1, 29, 35, 26, -1, 28, 35, 26, + -1, 47, 26, -1, 29, 47, 26, -1, 28, 47, + 26, -1, 46, 26, -1, 29, 46, 26, -1, 28, + 46, 26, -1, 36, 26, -1, 29, 36, 26, -1, + 28, 36, 26, -1, 43, 26, -1, 29, 43, 26, + -1, 28, 43, 26, -1, 38, 26, -1, 29, 38, + 26, -1, 28, 38, 26, -1, 37, 29, -1, 29, + 37, 29, -1, 28, 37, 29, -1, 39, 29, -1, + 29, 39, 29, -1, 28, 39, 29, -1, 37, 26, + -1, 29, 37, 26, -1, 28, 37, 26, -1, 39, + 26, -1, 29, 39, 26, -1, 28, 39, 26, -1, + 39, 56, -1, 29, 39, 56, -1, 28, 39, 56, + -1, 37, 56, -1, 29, 37, 56, -1, 28, 37, + 56, -1, 44, 26, -1, 45, 26, -1, 26, -1, + 27, -1, 64, -1, 64, -1, 66, 64, -1, 65, + -1, 67, 65, -1, 67, -1, 69, -1, 69, 66, + -1, 74, -1, 77, -1, 70, -1, 73, -1, 12, + 88, 14, 88, 15, -1, 13, 88, 14, 88, 15, + -1, 72, -1, 78, -1, 76, -1, 79, -1, 80, + -1, 81, -1, 71, -1, 10, 26, 93, 14, 88, + 15, -1, 10, 26, 93, 57, 88, 58, -1, 10, + 26, 50, 93, 14, 88, 15, -1, 10, 26, 50, + 93, 57, 88, 58, -1, 10, 26, 93, 21, 63, + 92, 93, 14, 88, 15, -1, 10, 26, 93, 21, + 63, 92, 93, 57, 88, 58, -1, 10, 26, 93, + 21, 92, 93, 14, 88, 15, -1, 10, 26, 93, + 21, 92, 93, 57, 88, 58, -1, 10, 31, 92, + 93, 14, 88, 15, -1, 10, 31, 92, 93, 57, + 88, 58, -1, 10, 31, 14, 88, 15, -1, 10, + 31, 57, 88, 58, -1, 11, 26, 93, 14, 87, + 15, -1, 11, 26, 93, 57, 87, 58, -1, 11, + 26, 50, 93, 14, 87, 15, -1, 11, 26, 50, + 93, 57, 87, 58, -1, 11, 26, 93, 21, 63, + 92, 93, 14, 87, 15, -1, 11, 26, 93, 21, + 63, 92, 93, 57, 87, 58, -1, 8, 26, 93, + 21, 93, 9, -1, 8, 26, 93, 21, 85, 93, + 9, -1, 8, 26, 93, 21, 83, 9, -1, 26, + 59, 60, 93, 75, -1, 16, 26, 59, 60, 93, + 75, -1, 16, 26, 93, 75, -1, 69, -1, 69, + 66, -1, 59, 88, 60, -1, 17, 69, -1, 17, + 69, 66, -1, 17, 26, 69, -1, 17, 26, 69, + 66, -1, 17, 67, -1, 3, 88, 4, 88, 7, + -1, 3, 88, 4, 88, 5, 88, 7, -1, 3, + 88, 4, 88, 82, 7, -1, 57, 88, 58, -1, + 30, -1, 18, 32, 19, -1, 6, 88, 4, 88, + -1, 6, 88, 4, 88, 5, 88, -1, 6, 88, + 4, 88, 82, -1, 84, -1, 85, 84, -1, 93, + 86, 60, 88, -1, 93, 86, 60, 93, -1, 93, + 59, 86, 60, 88, -1, 93, 59, 86, 60, 93, + -1, 84, 40, -1, 85, 84, 40, -1, 84, 41, + -1, 85, 84, 41, -1, 84, 42, -1, 85, 84, + 42, -1, 26, -1, 86, 53, 26, -1, 93, 89, + -1, 87, -1, 93, 90, -1, 90, 51, 93, -1, + 90, 49, 93, -1, 90, 50, 93, -1, 90, 33, + 93, 90, -1, 90, 34, 93, 90, -1, 90, 49, + 93, 90, -1, 90, 50, 93, 90, -1, 90, 51, + 93, 90, -1, 96, -1, 51, -1, 52, -1, 51, + -1, 50, -1, 52, -1, -1, 93, 51, -1, 95, + -1, 95, 49, -1, 95, 50, -1, 95, 33, 93, + 95, -1, 95, 34, 93, 95, -1, 95, 49, 95, + -1, 95, 50, 95, -1, 96, -1, 97, -1, 22, + 96, -1, 98, 96, -1, 98, 92, -1, 22, 92, + -1, 97, 53, 93, 97, -1, 97, 48, 93, 97, + -1, 68, -1, 23, -1, 23, 24, -1, 23, 24, + 25, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 377, 377, 388, 397, 412, 422, 424, 428, 434, + 440, 446, 452, 458, 464, 470, 476, 482, 488, 494, + 500, 506, 512, 518, 525, 532, 539, 546, 553, 560, + 566, 572, 578, 584, 590, 596, 602, 608, 614, 620, + 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, + 686, 692, 700, 702, 704, 708, 712, 723, 725, 729, + 731, 733, 749, 751, 755, 757, 759, 761, 763, 765, + 767, 769, 771, 773, 775, 779, 784, 789, 794, 799, + 804, 809, 814, 821, 826, 831, 836, 843, 848, 853, + 858, 863, 868, 875, 880, 885, 892, 895, 898, 902, + 904, 935, 942, 947, 964, 969, 986, 993, 995, 997, + 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029, + 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053, + 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100, + 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130, + 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200, + 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "IF", "THEN", "ELSE", "ELIF", "FI", + "CASE", "ESAC", "FOR", "SELECT", "WHILE", "UNTIL", "DO", "DONE", + "FUNCTION", "COPROC", "COND_START", "COND_END", "COND_ERROR", "IN", + "BANG", "TIME", "TIMEOPT", "TIMEIGN", "WORD", "ASSIGNMENT_WORD", + "REDIR_WORD", "NUMBER", "ARITH_CMD", "ARITH_FOR_EXPRS", "COND_CMD", + "AND_AND", "OR_OR", "GREATER_GREATER", "LESS_LESS", "LESS_AND", + "LESS_LESS_LESS", "GREATER_AND", "SEMI_SEMI", "SEMI_AND", + "SEMI_SEMI_AND", "LESS_LESS_MINUS", "AND_GREATER", "AND_GREATER_GREATER", + "LESS_GREATER", "GREATER_BAR", "BAR_AND", "'&'", "';'", "'\\n'", + "yacc_EOF", "'|'", "'>'", "'<'", "'-'", "'{'", "'}'", "'('", "')'", + "$accept", "inputunit", "word_list", "redirection", + "simple_command_element", "redirection_list", "simple_command", + "command", "shell_command", "for_command", "arith_for_command", + "select_command", "case_command", "function_def", "function_body", + "subshell", "coproc", "if_command", "group_command", "arith_command", + "cond_command", "elif_clause", "case_clause", "pattern_list", + "case_clause_sequence", "pattern", "list", "compound_list", "list0", + "list1", "simple_list_terminator", "list_terminator", "newline_list", + "simple_list", "simple_list1", "pipeline_command", "pipeline", + "timespec", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 38, + 59, 10, 304, 124, 62, 60, 45, 123, 125, 40, + 41 +}; +# endif + +/* 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, + 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 +}; + +/* YYR2[YYN] -- Number of symbols composing 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, + 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 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + 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, 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, 0, 0, + 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, 147, 147, 147, 123, 125, 127, 94, + 0, 0, 147, 77, 78, 0, 147, 147, 83, 84, + 89, 90, 0, 113, 0, 0, 0, 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 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 34, 239, 35, 36, 120, 37, 38, 39, 40, + 41, 42, 43, 44, 213, 45, 46, 47, 48, 49, + 50, 225, 231, 232, 233, 274, 57, 58, 134, 135, + 123, 74, 59, 51, 187, 136, 54, 55 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -208 +static const yytype_int16 yypact[] = +{ + 296, -35, -208, -2, 38, 10, -208, -208, 24, 546, + 31, 346, 51, 47, -208, 591, 604, -208, 56, 71, + -18, 112, 130, 115, 128, 136, 143, 154, -208, -208, + 157, 170, -208, -208, 111, -208, -208, 229, -208, 578, + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, -12, -3, -208, 48, 346, -208, -208, 208, 396, + -208, 73, 15, 163, 190, 201, 160, 107, 229, 578, + 204, -208, -208, -208, -208, -208, 195, 165, 202, 215, + 152, 216, 153, 222, 227, 236, 237, 244, 245, 253, + 158, 254, 171, 255, 256, 259, 261, 262, -208, -208, + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, -208, -208, -208, 231, 230, -208, -208, -208, -208, + 578, -208, -208, -208, -208, -208, 446, 446, -208, -208, + -208, -208, -208, -208, -208, 210, -208, 4, -208, 65, + -208, -208, -208, -208, 70, -208, -208, 232, 41, 578, + 578, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, -208, -208, -208, -208, 396, 396, 23, 23, 496, + 496, 97, -208, -208, -208, -208, -208, -208, 85, -208, + 185, -208, 276, 235, 100, 110, -208, 268, -208, 280, + 283, -208, 578, -208, 578, 41, -208, -208, 446, 446, + 48, 48, -208, -208, -208, 295, 396, 396, 396, 396, + 396, 294, 161, -208, 19, -208, -208, 290, -208, 200, + -208, 252, -208, -208, -208, -208, -208, -208, 302, 396, + 200, 269, -208, -208, 41, 578, -208, 313, 324, -208, + -208, -208, 55, 55, 55, -208, -208, -208, -208, 192, + 34, -208, -208, 303, -19, 315, 278, -208, -208, -208, + 114, -208, 322, 286, 323, 287, -208, 210, -208, -208, + -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, + 8, 320, -208, -208, -208, 117, -208, -208, -208, -208, + -208, -208, 119, 167, 396, 396, 396, -208, -208, -208, + 396, -208, -208, 337, 307, -208, -208, -208, -208, -208, + 396, 345, 308, -208, -208, 352, 312, -208, -208, -208, + -208, -208 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -208, -208, 164, -37, -31, -62, 368, -208, -5, -208, + -208, -208, -208, -208, -206, -208, -208, -208, -208, -208, + -208, 66, -208, 145, -208, 88, -173, -6, -208, -207, + -208, -45, -48, -208, 5, 3, 17, -208 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint16 yytable[] = +{ + 64, 65, 119, 53, 69, 52, 118, 150, 100, 256, + 130, 101, 137, 139, 75, 144, 56, 142, 148, 260, + 261, 262, 263, 264, 60, 197, 114, 115, 271, 140, + 124, 125, 119, 248, 301, 251, 63, 118, 102, 121, + 122, 302, 287, 299, 2, 272, 126, 127, 290, 3, + 66, 4, 5, 6, 7, 133, 124, 125, 131, 10, + 272, 301, 149, 70, 61, 71, 72, 73, 317, 62, + 133, 17, 141, 284, 285, 76, 185, 186, 273, 199, + 189, 190, 98, 184, 206, 133, 200, 214, 192, 193, + 198, 207, 133, 273, 204, 205, 128, 99, 32, 235, + 33, 129, 222, 223, 224, 215, 77, 262, 263, 264, + 2, 116, 119, 184, 244, 3, 133, 4, 5, 6, + 7, 133, 201, 138, 246, 10, 191, 208, 306, 53, + 53, 321, 188, 325, 202, 203, 133, 17, 103, 209, + 210, 107, 236, 212, 226, 227, 228, 229, 230, 234, + 255, 133, 335, 336, 108, 240, 104, 245, 249, 105, + 249, 133, 109, 254, 32, 133, 33, 247, 133, 110, + 133, 307, 327, 223, 322, 119, 326, 184, 156, 160, + 111, 157, 161, 112, 170, 270, 106, 171, 53, 53, + 216, 217, 280, 237, 279, 241, 113, 174, 249, 249, + 175, 266, 267, 268, 145, 288, 220, 221, 158, 162, + 212, 238, 132, 143, 172, 146, 257, 258, 184, 147, + 152, 53, 53, 151, 188, 153, 278, 176, 154, 275, + 276, 305, 296, 297, 298, 71, 72, 73, 282, 283, + 312, 155, 159, 192, 193, 314, 315, 316, 163, 212, + 71, 72, 73, 164, 320, 117, 14, 15, 16, 194, + 195, 196, 165, 166, 18, 19, 20, 21, 22, 330, + 167, 168, 23, 24, 25, 26, 27, 249, 249, 169, + 173, 177, 178, 30, 31, 179, 313, 180, 181, 182, + 183, 242, 211, 243, 238, 252, 319, 1, 253, 2, + 323, 324, 259, 265, 3, 277, 4, 5, 6, 7, + 281, 329, 8, 9, 10, 331, 332, 286, 11, 12, + 291, 337, 13, 14, 15, 16, 17, 289, 292, 272, + 303, 18, 19, 20, 21, 22, 304, 308, 310, 23, + 24, 25, 26, 27, 309, 311, 318, 28, 29, 2, + 30, 31, 333, 32, 3, 33, 4, 5, 6, 7, + 338, 300, 8, 9, 10, 334, 339, 340, 11, 12, + 341, 250, 13, 14, 15, 16, 17, 68, 269, 328, + 0, 18, 19, 20, 21, 22, 0, 0, 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, 15, 16, 0, 0, + 0, 0, 0, 18, 19, 20, 21, 22, 0, 0, + 0, 23, 24, 25, 26, 27, 78, 79, 80, 81, + 82, 0, 30, 31, 83, 0, 0, 84, 85, 88, + 89, 90, 91, 92, 0, 86, 87, 93, 0, 0, + 94, 95, 0, 0, 0, 0, 0, 0, 96, 97 +}; + +static const yytype_int16 yycheck[] = +{ + 6, 7, 39, 0, 9, 0, 37, 69, 26, 215, + 55, 29, 60, 61, 11, 63, 51, 62, 66, 226, + 227, 228, 229, 230, 26, 21, 32, 33, 9, 14, + 33, 34, 69, 206, 53, 208, 26, 68, 56, 51, + 52, 60, 249, 9, 3, 26, 49, 50, 254, 8, + 26, 10, 11, 12, 13, 51, 33, 34, 55, 18, + 26, 53, 67, 32, 26, 50, 51, 52, 60, 31, + 51, 30, 57, 246, 247, 24, 124, 125, 59, 14, + 128, 129, 26, 120, 14, 51, 21, 149, 33, 34, + 138, 21, 51, 59, 142, 143, 48, 26, 57, 14, + 59, 53, 5, 6, 7, 153, 59, 314, 315, 316, + 3, 0, 149, 150, 14, 8, 51, 10, 11, 12, + 13, 51, 57, 50, 14, 18, 132, 57, 14, 126, + 127, 14, 127, 14, 140, 141, 51, 30, 26, 145, + 146, 26, 57, 148, 192, 193, 194, 195, 196, 197, + 212, 51, 325, 326, 26, 200, 26, 57, 206, 29, + 208, 51, 26, 211, 57, 51, 59, 57, 51, 26, + 51, 57, 5, 6, 57, 212, 57, 214, 26, 26, + 26, 29, 29, 26, 26, 233, 56, 29, 185, 186, + 185, 186, 240, 199, 239, 201, 26, 26, 246, 247, + 29, 40, 41, 42, 14, 250, 189, 190, 56, 56, + 215, 26, 4, 50, 56, 14, 222, 223, 255, 59, + 25, 218, 219, 19, 219, 60, 26, 56, 26, 235, + 236, 279, 40, 41, 42, 50, 51, 52, 244, 245, + 288, 26, 26, 33, 34, 293, 294, 295, 26, 254, + 50, 51, 52, 26, 302, 26, 27, 28, 29, 49, + 50, 51, 26, 26, 35, 36, 37, 38, 39, 317, + 26, 26, 43, 44, 45, 46, 47, 325, 326, 26, + 26, 26, 26, 54, 55, 26, 292, 26, 26, 58, + 60, 15, 60, 58, 26, 15, 302, 1, 15, 3, + 306, 307, 7, 9, 8, 15, 10, 11, 12, 13, + 58, 317, 16, 17, 18, 321, 322, 15, 22, 23, + 7, 327, 26, 27, 28, 29, 30, 58, 4, 26, + 15, 35, 36, 37, 38, 39, 58, 15, 15, 43, + 44, 45, 46, 47, 58, 58, 26, 51, 52, 3, + 54, 55, 15, 57, 8, 59, 10, 11, 12, 13, + 15, 273, 16, 17, 18, 58, 58, 15, 22, 23, + 58, 207, 26, 27, 28, 29, 30, 9, 233, 313, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, 50, 51, 52, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, 51, -1, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, 22, 23, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, 16, 17, 18, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, 51, -1, 3, + 54, 55, -1, 57, 8, 59, 10, 11, 12, 13, + -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, + -1, -1, 26, 27, 28, 29, 30, -1, -1, -1, + -1, 35, 36, 37, 38, 39, -1, -1, -1, 43, + 44, 45, 46, 47, -1, -1, -1, -1, -1, -1, + 54, 55, -1, 57, -1, 59, 28, 29, -1, -1, + -1, -1, -1, 35, 36, 37, 38, 39, -1, -1, + -1, 43, 44, 45, 46, 47, 35, 36, 37, 38, + 39, -1, 54, 55, 43, -1, -1, 46, 47, 35, + 36, 37, 38, 39, -1, 54, 55, 43, -1, -1, + 46, 47, -1, -1, -1, -1, -1, -1, 54, 55 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 1, 3, 8, 10, 11, 12, 13, 16, 17, + 18, 22, 23, 26, 27, 28, 29, 30, 35, 36, + 37, 38, 39, 43, 44, 45, 46, 47, 51, 52, + 54, 55, 57, 59, 62, 64, 65, 67, 68, 69, + 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, + 81, 94, 95, 96, 97, 98, 51, 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, 49, 50, + 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, 49, 50, 51, 40, 41, 42, 9, + 86, 53, 60, 15, 58, 93, 14, 57, 15, 58, + 15, 58, 93, 88, 93, 93, 93, 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 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif +{ + YYUSE (yyvaluep); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + +/* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void) +#else +int +yyparse () + +#endif +#endif +{ + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 378 "/Users/chet/src/bash/src/parse.y" + { + /* Case of regular command. Discard the error + safety net,and return the command just parsed. */ + global_command = (yyvsp[(1) - (2)].command); + eof_encountered = 0; + /* discard_parser_constructs (0); */ + if (parser_state & PST_CMDSUBST) + parser_state |= PST_EOFTOKEN; + YYACCEPT; + } + break; + + case 3: +#line 389 "/Users/chet/src/bash/src/parse.y" + { + /* Case of regular command, but not a very + interesting one. Return a NULL command. */ + global_command = (COMMAND *)NULL; + if (parser_state & PST_CMDSUBST) + parser_state |= PST_EOFTOKEN; + YYACCEPT; + } + break; + + case 4: +#line 398 "/Users/chet/src/bash/src/parse.y" + { + /* Error during parsing. Return NULL command. */ + global_command = (COMMAND *)NULL; + eof_encountered = 0; + /* discard_parser_constructs (1); */ + if (interactive && parse_and_execute_level == 0) + { + YYACCEPT; + } + else + { + YYABORT; + } + } + break; + + case 5: +#line 413 "/Users/chet/src/bash/src/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or + not. */ + global_command = (COMMAND *)NULL; + handle_eof_input_unit (); + YYACCEPT; + } + break; + + case 6: +#line 423 "/Users/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +#line 425 "/Users/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +#line 429 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); + } + break; + + case 9: +#line 435 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); + } + break; + + case 10: +#line 441 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0); + } + break; + + case 11: +#line 447 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0); + } + break; + + case 12: +#line 453 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN); + } + break; + + case 13: +#line 459 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN); + } + break; + + case 14: +#line 465 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); + } + break; + + case 15: +#line 471 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0); + } + break; + + case 16: +#line 477 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN); + } + break; + + case 17: +#line 483 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); + } + break; + + case 18: +#line 489 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_output_force, redir, 0); + } + break; + + case 19: +#line 495 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN); + } + break; + + case 20: +#line 501 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); + } + break; + + case 21: +#line 507 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_input_output, redir, 0); + } + break; + + case 22: +#line 513 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN); + } + break; + + case 23: +#line 519 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); + redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 24: +#line 526 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); + redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 25: +#line 533 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); + redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 26: +#line 540 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); + redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 27: +#line 547 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); + redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 28: +#line 554 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); + redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 29: +#line 561 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); + } + break; + + case 30: +#line 567 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0); + } + break; + + case 31: +#line 573 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN); + } + break; + + case 32: +#line 579 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.dest = (yyvsp[(2) - (2)].number); + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); + } + break; + + case 33: +#line 585 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = (yyvsp[(3) - (3)].number); + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0); + } + break; + + case 34: +#line 591 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = (yyvsp[(3) - (3)].number); + (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN); + } + break; + + case 35: +#line 597 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.dest = (yyvsp[(2) - (2)].number); + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); + } + break; + + case 36: +#line 603 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = (yyvsp[(3) - (3)].number); + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0); + } + break; + + case 37: +#line 609 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = (yyvsp[(3) - (3)].number); + (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN); + } + break; + + case 38: +#line 615 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); + } + break; + + case 39: +#line 621 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0); + } + break; + + case 40: +#line 627 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN); + } + break; + + case 41: +#line 633 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); + } + break; + + case 42: +#line 639 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0); + } + break; + + case 43: +#line 645 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN); + } + break; + + case 44: +#line 651 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.dest = 0; + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } + break; + + case 45: +#line 657 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = 0; + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } + break; + + case 46: +#line 663 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = 0; + (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } + break; + + case 47: +#line 669 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.dest = 0; + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } + break; + + case 48: +#line 675 "/Users/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.dest = 0; + (yyval.redirect) = make_redirection (source, r_close_this, redir, 0); + } + break; + + case 49: +#line 681 "/Users/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.dest = 0; + (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN); + } + break; + + case 50: +#line 687 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0); + } + break; + + case 51: +#line 693 "/Users/chet/src/bash/src/parse.y" + { + source.dest = 1; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0); + } + break; + + case 52: +#line 701 "/Users/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +#line 703 "/Users/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +#line 705 "/Users/chet/src/bash/src/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +#line 709 "/Users/chet/src/bash/src/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); + } + break; + + case 56: +#line 713 "/Users/chet/src/bash/src/parse.y" + { + register REDIRECT *t; + + for (t = (yyvsp[(1) - (2)].redirect); t->next; t = t->next) + ; + t->next = (yyvsp[(2) - (2)].redirect); + (yyval.redirect) = (yyvsp[(1) - (2)].redirect); + } + break; + + case 57: +#line 724 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +#line 726 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +#line 730 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +#line 732 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +#line 734 "/Users/chet/src/bash/src/parse.y" + { + COMMAND *tc; + + tc = (yyvsp[(1) - (2)].command); + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = (yyvsp[(2) - (2)].redirect); + } + else + tc->redirects = (yyvsp[(2) - (2)].redirect); + (yyval.command) = (yyvsp[(1) - (2)].command); + } + break; + + case 62: +#line 750 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +#line 752 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +#line 756 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +#line 758 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +#line 760 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +#line 762 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +#line 764 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +#line 766 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +#line 768 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +#line 770 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +#line 772 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +#line 774 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +#line 776 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +#line 780 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 76: +#line 785 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 77: +#line 790 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 78: +#line 795 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 79: +#line 800 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 80: +#line 805 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 81: +#line 810 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 82: +#line 815 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 83: +#line 822 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); + if (word_top > 0) word_top--; + } + break; + + case 84: +#line 827 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); + if (word_top > 0) word_top--; + } + break; + + case 85: +#line 832 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); + if (word_top > 0) word_top--; + } + break; + + case 86: +#line 837 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); + if (word_top > 0) word_top--; + } + break; + + case 87: +#line 844 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 88: +#line 849 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 89: +#line 854 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 90: +#line 859 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 91: +#line 864 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 92: +#line 869 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 93: +#line 876 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 94: +#line 881 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 95: +#line 886 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); + if (word_top > 0) word_top--; + } + break; + + case 96: +#line 893 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +#line 896 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +#line 899 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +#line 903 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +#line 905 "/Users/chet/src/bash/src/parse.y" + { + COMMAND *tc; + + tc = (yyvsp[(1) - (2)].command); + /* According to Posix.2 3.9.5, redirections + specified after the body of a function should + be attached to the function and performed when + the function is executed, not as part of the + function definition command. */ + /* XXX - I don't think it matters, but we might + want to change this in the future to avoid + problems differentiating between a function + definition with a redirection and a function + definition containing a single command with a + redirection. The two are semantically equivalent, + though -- the only difference is in how the + command printing code displays the redirections. */ + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = (yyvsp[(2) - (2)].redirect); + } + else + tc->redirects = (yyvsp[(2) - (2)].redirect); + (yyval.command) = (yyvsp[(1) - (2)].command); + } + break; + + case 101: +#line 936 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL; + } + break; + + case 102: +#line 943 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + break; + + case 103: +#line 948 "/Users/chet/src/bash/src/parse.y" + { + COMMAND *tc; + + tc = (yyvsp[(2) - (3)].command); + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = (yyvsp[(3) - (3)].redirect); + } + else + tc->redirects = (yyvsp[(3) - (3)].redirect); + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (3)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + break; + + case 104: +#line 965 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + break; + + case 105: +#line 970 "/Users/chet/src/bash/src/parse.y" + { + COMMAND *tc; + + tc = (yyvsp[(3) - (4)].command); + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = (yyvsp[(4) - (4)].redirect); + } + else + tc->redirects = (yyvsp[(4) - (4)].redirect); + (yyval.command) = make_coproc_command ((yyvsp[(2) - (4)].word)->word, (yyvsp[(3) - (4)].command)); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + break; + + case 106: +#line 987 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); + (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL; + } + break; + + case 107: +#line 994 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +#line 996 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +#line 998 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +#line 1003 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +#line 1007 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +#line 1011 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +#line 1015 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +#line 1017 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +#line 1019 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +#line 1024 "/Users/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +#line 1028 "/Users/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +#line 1030 "/Users/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +#line 1032 "/Users/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +#line 1034 "/Users/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +#line 1038 "/Users/chet/src/bash/src/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +#line 1040 "/Users/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +#line 1042 "/Users/chet/src/bash/src/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +#line 1044 "/Users/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +#line 1046 "/Users/chet/src/bash/src/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +#line 1048 "/Users/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +#line 1052 "/Users/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +#line 1054 "/Users/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +#line 1063 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); + if (need_here_doc) + gather_here_documents (); + } + break; + + case 132: +#line 1072 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); + } + break; + + case 134: +#line 1079 "/Users/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&'); + else + (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (COMMAND *)NULL, '&'); + } + break; + + case 136: +#line 1090 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +#line 1092 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +#line 1094 "/Users/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&'); + else + (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '&'); + } + break; + + case 139: +#line 1101 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +#line 1103 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +#line 1105 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +#line 1113 "/Users/chet/src/bash/src/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +#line 1115 "/Users/chet/src/bash/src/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +#line 1117 "/Users/chet/src/bash/src/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +#line 1131 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); + if (need_here_doc) + gather_here_documents (); + if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) + { + global_command = (yyvsp[(1) - (1)].command); + eof_encountered = 0; + rewind_input_string (); + YYACCEPT; + } + } + break; + + case 150: +#line 1144 "/Users/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&'); + else + (yyval.command) = command_connect ((yyvsp[(1) - (2)].command), (COMMAND *)NULL, '&'); + if (need_here_doc) + gather_here_documents (); + if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) + { + global_command = (yyvsp[(1) - (2)].command); + eof_encountered = 0; + rewind_input_string (); + YYACCEPT; + } + } + break; + + case 151: +#line 1160 "/Users/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); + if (need_here_doc) + gather_here_documents (); + if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token) + { + global_command = (yyvsp[(1) - (2)].command); + eof_encountered = 0; + rewind_input_string (); + YYACCEPT; + } + } + break; + + case 152: +#line 1175 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +#line 1177 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +#line 1179 "/Users/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) + (yyval.command) = connect_async_list ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&'); + else + (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), '&'); + } + break; + + case 155: +#line 1186 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +#line 1189 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +#line 1193 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +#line 1195 "/Users/chet/src/bash/src/parse.y" + { + if ((yyvsp[(2) - (2)].command)) + (yyvsp[(2) - (2)].command)->flags ^= CMD_INVERT_RETURN; /* toggle */ + (yyval.command) = (yyvsp[(2) - (2)].command); + } + break; + + case 159: +#line 1201 "/Users/chet/src/bash/src/parse.y" + { + if ((yyvsp[(2) - (2)].command)) + (yyvsp[(2) - (2)].command)->flags |= (yyvsp[(1) - (2)].number); + (yyval.command) = (yyvsp[(2) - (2)].command); + } + break; + + case 160: +#line 1207 "/Users/chet/src/bash/src/parse.y" + { + ELEMENT x; + + /* Boy, this is unclean. `time' by itself can + time a null command. We cheat and push a + newline back if the list_terminator was a newline + to avoid the double-newline problem (one to + terminate this, one to terminate the command) */ + x.word = 0; + x.redirect = 0; + (yyval.command) = make_simple_command (x, (COMMAND *)NULL); + (yyval.command)->flags |= (yyvsp[(1) - (2)].number); + /* XXX - let's cheat and push a newline back */ + if ((yyvsp[(2) - (2)].number) == '\n') + token_to_read = '\n'; + } + break; + + case 161: +#line 1224 "/Users/chet/src/bash/src/parse.y" + { + ELEMENT x; + + /* This is just as unclean. Posix says that `!' + by itself should be equivalent to `false'. + We cheat and push a + newline back if the list_terminator was a newline + to avoid the double-newline problem (one to + terminate this, one to terminate the command) */ + x.word = 0; + x.redirect = 0; + (yyval.command) = make_simple_command (x, (COMMAND *)NULL); + (yyval.command)->flags |= CMD_INVERT_RETURN; + /* XXX - let's cheat and push a newline back */ + if ((yyvsp[(2) - (2)].number) == '\n') + token_to_read = '\n'; + } + break; + + case 162: +#line 1244 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +#line 1246 "/Users/chet/src/bash/src/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ + COMMAND *tc; + REDIRECTEE rd, sd; + REDIRECT *r; + + tc = (yyvsp[(1) - (4)].command)->type == cm_simple ? (COMMAND *)(yyvsp[(1) - (4)].command)->value.Simple : (yyvsp[(1) - (4)].command); + sd.dest = 2; + rd.dest = 1; + r = make_redirection (sd, r_duplicating_output, rd, 0); + if (tc->redirects) + { + register REDIRECT *t; + for (t = tc->redirects; t->next; t = t->next) + ; + t->next = r; + } + else + tc->redirects = r; + + (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); + } + break; + + case 164: +#line 1269 "/Users/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +#line 1273 "/Users/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +#line 1275 "/Users/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +#line 1277 "/Users/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + +/* Line 1267 of yacc.c. */ +#line 3377 "y.tab.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 1279 "/Users/chet/src/bash/src/parse.y" + + +/* Initial size to allocate for tokens, and the + amount to grow them by. */ +#define TOKEN_DEFAULT_INITIAL_SIZE 496 +#define TOKEN_DEFAULT_GROW_SIZE 512 + +/* Should we call prompt_again? */ +#define SHOULD_PROMPT() \ + (interactive && (bash_input.type == st_stdin || bash_input.type == st_stream)) + +#if defined (ALIAS) +# define expanding_alias() (pushed_string_list && pushed_string_list->expander) +#else +# define expanding_alias() 0 +#endif + +/* Global var is non-zero when end of file has been reached. */ +int EOF_Reached = 0; + +#ifdef DEBUG +static void +debug_parser (i) + int i; +{ +#if YYDEBUG != 0 + yydebug = i; +#endif +} +#endif + +/* yy_getc () returns the next available character from input or EOF. + yy_ungetc (c) makes `c' the next character to read. + init_yy_io (get, unget, type, location) makes the function GET the + installed function for getting the next character, makes UNGET the + installed function for un-getting a character, sets the type of stream + (either string or file) from TYPE, and makes LOCATION point to where + the input is coming from. */ + +/* Unconditionally returns end-of-file. */ +int +return_EOF () +{ + return (EOF); +} + +/* Variable containing the current get and unget functions. + See ./input.h for a clearer description. */ +BASH_INPUT bash_input; + +/* Set all of the fields in BASH_INPUT to NULL. Free bash_input.name if it + is non-null, avoiding a memory leak. */ +void +initialize_bash_input () +{ + bash_input.type = st_none; + FREE (bash_input.name); + bash_input.name = (char *)NULL; + bash_input.location.file = (FILE *)NULL; + bash_input.location.string = (char *)NULL; + bash_input.getter = (sh_cget_func_t *)NULL; + bash_input.ungetter = (sh_cunget_func_t *)NULL; +} + +/* Set the contents of the current bash input stream from + GET, UNGET, TYPE, NAME, and LOCATION. */ +void +init_yy_io (get, unget, type, name, location) + sh_cget_func_t *get; + sh_cunget_func_t *unget; + enum stream_type type; + const char *name; + INPUT_STREAM location; +{ + bash_input.type = type; + FREE (bash_input.name); + bash_input.name = name ? savestring (name) : (char *)NULL; + + /* XXX */ +#if defined (CRAY) + memcpy((char *)&bash_input.location.string, (char *)&location.string, sizeof(location)); +#else + bash_input.location = location; +#endif + bash_input.getter = get; + bash_input.ungetter = unget; +} + +char * +yy_input_name () +{ + return (bash_input.name ? bash_input.name : "stdin"); +} + +/* Call this to get the next character of input. */ +static int +yy_getc () +{ + return (*(bash_input.getter)) (); +} + +/* Call this to unget C. That is, to make C the next character + to be read. */ +static int +yy_ungetc (c) + int c; +{ + return (*(bash_input.ungetter)) (c); +} + +#if defined (BUFFERED_INPUT) +#ifdef INCLUDE_UNUSED +int +input_file_descriptor () +{ + switch (bash_input.type) + { + case st_stream: + return (fileno (bash_input.location.file)); + case st_bstream: + return (bash_input.location.buffered_fd); + case st_stdin: + default: + return (fileno (stdin)); + } +} +#endif +#endif /* BUFFERED_INPUT */ + +/* **************************************************************** */ +/* */ +/* Let input be read from readline (). */ +/* */ +/* **************************************************************** */ + +#if defined (READLINE) +char *current_readline_prompt = (char *)NULL; +char *current_readline_line = (char *)NULL; +int current_readline_line_index = 0; + +static int +yy_readline_get () +{ + SigHandler *old_sigint; + int line_len; + unsigned char c; + + if (!current_readline_line) + { + if (!bash_readline_initialized) + initialize_readline (); + +#if defined (JOB_CONTROL) + if (job_control) + give_terminal_to (shell_pgrp, 0); +#endif /* JOB_CONTROL */ + + old_sigint = (SigHandler *)IMPOSSIBLE_TRAP_HANDLER; + if (signal_is_ignored (SIGINT) == 0) + { + /* interrupt_immediately++; */ + old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler); + } + + current_readline_line = readline (current_readline_prompt ? + current_readline_prompt : ""); + + CHECK_TERMSIG; + if (signal_is_ignored (SIGINT) == 0) + { + /* interrupt_immediately--; */ + if (old_sigint != IMPOSSIBLE_TRAP_HANDLER) + set_signal_handler (SIGINT, old_sigint); + } + +#if 0 + /* Reset the prompt to the decoded value of prompt_string_pointer. */ + reset_readline_prompt (); +#endif + + if (current_readline_line == 0) + return (EOF); + + current_readline_line_index = 0; + line_len = strlen (current_readline_line); + + current_readline_line = (char *)xrealloc (current_readline_line, 2 + line_len); + current_readline_line[line_len++] = '\n'; + current_readline_line[line_len] = '\0'; + } + + if (current_readline_line[current_readline_line_index] == 0) + { + free (current_readline_line); + current_readline_line = (char *)NULL; + return (yy_readline_get ()); + } + else + { + c = current_readline_line[current_readline_line_index++]; + return (c); + } +} + +static int +yy_readline_unget (c) + int c; +{ + if (current_readline_line_index && current_readline_line) + current_readline_line[--current_readline_line_index] = c; + return (c); +} + +void +with_input_from_stdin () +{ + INPUT_STREAM location; + + if (bash_input.type != st_stdin && stream_on_stack (st_stdin) == 0) + { + location.string = current_readline_line; + init_yy_io (yy_readline_get, yy_readline_unget, + st_stdin, "readline stdin", location); + } +} + +#else /* !READLINE */ + +void +with_input_from_stdin () +{ + with_input_from_stream (stdin, "stdin"); +} +#endif /* !READLINE */ + +/* **************************************************************** */ +/* */ +/* Let input come from STRING. STRING is zero terminated. */ +/* */ +/* **************************************************************** */ + +static int +yy_string_get () +{ + register char *string; + register unsigned char c; + + string = bash_input.location.string; + + /* If the string doesn't exist, or is empty, EOF found. */ + if (string && *string) + { + c = *string++; + bash_input.location.string = string; + return (c); + } + else + return (EOF); +} + +static int +yy_string_unget (c) + int c; +{ + *(--bash_input.location.string) = c; + return (c); +} + +void +with_input_from_string (string, name) + char *string; + const char *name; +{ + INPUT_STREAM location; + + location.string = string; + init_yy_io (yy_string_get, yy_string_unget, st_string, name, location); +} + +/* Count the number of characters we've consumed from bash_input.location.string + and read into shell_input_line, but have not returned from shell_getc. + That is the true input location. Rewind bash_input.location.string by + that number of characters, so it points to the last character actually + consumed by the parser. */ +static void +rewind_input_string () +{ + int xchars; + + /* number of unconsumed characters in the input -- XXX need to take newlines + into account, e.g., $(...\n) */ + xchars = shell_input_line_len - shell_input_line_index; + if (bash_input.location.string[-1] == '\n') + xchars++; + + /* XXX - how to reflect bash_input.location.string back to string passed to + parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how + far into the string we parsed. parse_and_execute knows where bash_input. + location.string is, and how far from orig_string that is -- that's the + number of characters the command consumed. */ + + /* bash_input.location.string - xchars should be where we parsed to */ + /* need to do more validation on xchars value for sanity -- test cases. */ + bash_input.location.string -= xchars; +} + +/* **************************************************************** */ +/* */ +/* Let input come from STREAM. */ +/* */ +/* **************************************************************** */ + +/* These two functions used to test the value of the HAVE_RESTARTABLE_SYSCALLS + define, and just use getc/ungetc if it was defined, but since bash + installs its signal handlers without the SA_RESTART flag, some signals + (like SIGCHLD, SIGWINCH, etc.) received during a read(2) will not cause + the read to be restarted. We need to restart it ourselves. */ + +static int +yy_stream_get () +{ + int result; + + 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); +} + +static int +yy_stream_unget (c) + int c; +{ + return (ungetc_with_restart (c, bash_input.location.file)); +} + +void +with_input_from_stream (stream, name) + FILE *stream; + const char *name; +{ + INPUT_STREAM location; + + location.file = stream; + init_yy_io (yy_stream_get, yy_stream_unget, st_stream, name, location); +} + +typedef struct stream_saver { + struct stream_saver *next; + BASH_INPUT bash_input; + int line; +#if defined (BUFFERED_INPUT) + BUFFERED_STREAM *bstream; +#endif /* BUFFERED_INPUT */ +} STREAM_SAVER; + +/* The globally known line number. */ +int line_number = 0; + +/* The line number offset set by assigning to LINENO. Not currently used. */ +int line_number_base = 0; + +#if defined (COND_COMMAND) +static int cond_lineno; +static int cond_token; +#endif + +STREAM_SAVER *stream_list = (STREAM_SAVER *)NULL; + +void +push_stream (reset_lineno) + int reset_lineno; +{ + STREAM_SAVER *saver = (STREAM_SAVER *)xmalloc (sizeof (STREAM_SAVER)); + + xbcopy ((char *)&bash_input, (char *)&(saver->bash_input), sizeof (BASH_INPUT)); + +#if defined (BUFFERED_INPUT) + saver->bstream = (BUFFERED_STREAM *)NULL; + /* If we have a buffered stream, clear out buffers[fd]. */ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) + saver->bstream = set_buffered_stream (bash_input.location.buffered_fd, + (BUFFERED_STREAM *)NULL); +#endif /* BUFFERED_INPUT */ + + saver->line = line_number; + bash_input.name = (char *)NULL; + saver->next = stream_list; + stream_list = saver; + EOF_Reached = 0; + if (reset_lineno) + line_number = 0; +} + +void +pop_stream () +{ + if (!stream_list) + EOF_Reached = 1; + else + { + STREAM_SAVER *saver = stream_list; + + EOF_Reached = 0; + stream_list = stream_list->next; + + init_yy_io (saver->bash_input.getter, + saver->bash_input.ungetter, + saver->bash_input.type, + saver->bash_input.name, + saver->bash_input.location); + +#if defined (BUFFERED_INPUT) + /* If we have a buffered stream, restore buffers[fd]. */ + /* If the input file descriptor was changed while this was on the + save stack, update the buffered fd to the new file descriptor and + re-establish the buffer <-> bash_input fd correspondence. */ + if (bash_input.type == st_bstream && bash_input.location.buffered_fd >= 0) + { + if (bash_input_fd_changed) + { + bash_input_fd_changed = 0; + if (default_buffered_input >= 0) + { + bash_input.location.buffered_fd = default_buffered_input; + saver->bstream->b_fd = default_buffered_input; + SET_CLOSE_ON_EXEC (default_buffered_input); + } + } + /* XXX could free buffered stream returned as result here. */ + set_buffered_stream (bash_input.location.buffered_fd, saver->bstream); + } +#endif /* BUFFERED_INPUT */ + + line_number = saver->line; + + FREE (saver->bash_input.name); + free (saver); + } +} + +/* Return 1 if a stream of type TYPE is saved on the stack. */ +int +stream_on_stack (type) + enum stream_type type; +{ + register STREAM_SAVER *s; + + for (s = stream_list; s; s = s->next) + if (s->bash_input.type == type) + return 1; + return 0; +} + +/* Save the current token state and return it in a malloced array. */ +int * +save_token_state () +{ + int *ret; + + ret = (int *)xmalloc (4 * sizeof (int)); + ret[0] = last_read_token; + ret[1] = token_before_that; + ret[2] = two_tokens_ago; + ret[3] = current_token; + return ret; +} + +void +restore_token_state (ts) + int *ts; +{ + if (ts == 0) + return; + last_read_token = ts[0]; + token_before_that = ts[1]; + two_tokens_ago = ts[2]; + current_token = ts[3]; +} + +/* + * This is used to inhibit alias expansion and reserved word recognition + * inside case statement pattern lists. A `case statement pattern list' is: + * + * everything between the `in' in a `case word in' and the next ')' + * or `esac' + * everything between a `;;' and the next `)' or `esac' + */ + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + +#define END_OF_ALIAS 0 + +/* + * Pseudo-global variables used in implementing token-wise alias expansion. + */ + +/* + * Pushing and popping strings. This works together with shell_getc to + * implement alias expansion on a per-token basis. + */ + +typedef struct string_saver { + struct string_saver *next; + int expand_alias; /* Value to set expand_alias to when string is popped. */ + char *saved_line; +#if defined (ALIAS) + alias_t *expander; /* alias that caused this line to be pushed. */ +#endif + size_t saved_line_size, saved_line_index; + int saved_line_terminator; +} STRING_SAVER; + +STRING_SAVER *pushed_string_list = (STRING_SAVER *)NULL; + +/* + * Push the current shell_input_line onto a stack of such lines and make S + * the current input. Used when expanding aliases. EXPAND is used to set + * the value of expand_next_token when the string is popped, so that the + * word after the alias in the original line is handled correctly when the + * alias expands to multiple words. TOKEN is the token that was expanded + * into S; it is saved and used to prevent infinite recursive expansion. + */ +static void +push_string (s, expand, ap) + char *s; + int expand; + alias_t *ap; +{ + STRING_SAVER *temp = (STRING_SAVER *)xmalloc (sizeof (STRING_SAVER)); + + temp->expand_alias = expand; + temp->saved_line = shell_input_line; + temp->saved_line_size = shell_input_line_size; + temp->saved_line_index = shell_input_line_index; + temp->saved_line_terminator = shell_input_line_terminator; +#if defined (ALIAS) + temp->expander = ap; +#endif + temp->next = pushed_string_list; + pushed_string_list = temp; + +#if defined (ALIAS) + if (ap) + ap->flags |= AL_BEINGEXPANDED; +#endif + + shell_input_line = s; + shell_input_line_size = strlen (s); + shell_input_line_index = 0; + shell_input_line_terminator = '\0'; +#if 0 + parser_state &= ~PST_ALEXPNEXT; /* XXX */ +#endif + + set_line_mbstate (); +} + +/* + * Make the top of the pushed_string stack be the current shell input. + * Only called when there is something on the stack. Called from shell_getc + * when it thinks it has consumed the string generated by an alias expansion + * and needs to return to the original input line. + */ +static void +pop_string () +{ + STRING_SAVER *t; + + FREE (shell_input_line); + shell_input_line = pushed_string_list->saved_line; + shell_input_line_index = pushed_string_list->saved_line_index; + shell_input_line_size = pushed_string_list->saved_line_size; + shell_input_line_terminator = pushed_string_list->saved_line_terminator; + + if (pushed_string_list->expand_alias) + parser_state |= PST_ALEXPNEXT; + else + parser_state &= ~PST_ALEXPNEXT; + + t = pushed_string_list; + pushed_string_list = pushed_string_list->next; + +#if defined (ALIAS) + if (t->expander) + t->expander->flags &= ~AL_BEINGEXPANDED; +#endif + + free ((char *)t); + + set_line_mbstate (); +} + +static void +free_string_list () +{ + register STRING_SAVER *t, *t1; + + for (t = pushed_string_list; t; ) + { + t1 = t->next; + FREE (t->saved_line); +#if defined (ALIAS) + if (t->expander) + t->expander->flags &= ~AL_BEINGEXPANDED; +#endif + free ((char *)t); + t = t1; + } + pushed_string_list = (STRING_SAVER *)NULL; +} + +#endif /* ALIAS || DPAREN_ARITHMETIC */ + +void +free_pushed_string_input () +{ +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + free_string_list (); +#endif +} + +/* Return a line of text, taken from wherever yylex () reads input. + If there is no more input, then we return NULL. If REMOVE_QUOTED_NEWLINE + is non-zero, we remove unquoted \ pairs. This is used by + read_secondary_line to read here documents. */ +static char * +read_a_line (remove_quoted_newline) + int remove_quoted_newline; +{ + static char *line_buffer = (char *)NULL; + static int buffer_size = 0; + int indx, c, peekc, pass_next; + +#if defined (READLINE) + if (no_line_editing && SHOULD_PROMPT ()) +#else + if (SHOULD_PROMPT ()) +#endif + print_prompt (); + + pass_next = indx = 0; + while (1) + { + /* Allow immediate exit if interrupted during input. */ + QUIT; + + c = yy_getc (); + + /* Ignore null bytes in input. */ + if (c == 0) + { +#if 0 + internal_warning ("read_a_line: ignored null byte in input"); +#endif + continue; + } + + /* If there is no more input, then we return NULL. */ + if (c == EOF) + { + if (interactive && bash_input.type == st_stream) + clearerr (stdin); + if (indx == 0) + return ((char *)NULL); + c = '\n'; + } + + /* `+2' in case the final character in the buffer is a newline. */ + RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); + + /* IF REMOVE_QUOTED_NEWLINES is non-zero, we are reading a + here document with an unquoted delimiter. In this case, + the line will be expanded as if it were in double quotes. + We allow a backslash to escape the next character, but we + need to treat the backslash specially only if a backslash + quoting a backslash-newline pair appears in the line. */ + if (pass_next) + { + line_buffer[indx++] = c; + pass_next = 0; + } + else if (c == '\\' && remove_quoted_newline) + { + QUIT; + peekc = yy_getc (); + if (peekc == '\n') + { + line_number++; + continue; /* Make the unquoted \ pair disappear. */ + } + else + { + yy_ungetc (peekc); + pass_next = 1; + line_buffer[indx++] = c; /* Preserve the backslash. */ + } + } + else + line_buffer[indx++] = c; + + if (c == '\n') + { + line_buffer[indx] = '\0'; + return (line_buffer); + } + } +} + +/* Return a line as in read_a_line (), but insure that the prompt is + the secondary prompt. This is used to read the lines of a here + document. REMOVE_QUOTED_NEWLINE is non-zero if we should remove + newlines quoted with backslashes while reading the line. It is + non-zero unless the delimiter of the here document was quoted. */ +char * +read_secondary_line (remove_quoted_newline) + int remove_quoted_newline; +{ + char *ret; + int n, c; + + prompt_string_pointer = &ps2_prompt; + if (SHOULD_PROMPT()) + prompt_again (); + ret = read_a_line (remove_quoted_newline); +#if defined (HISTORY) + if (ret && remember_on_history && (parser_state & PST_HEREDOC)) + { + /* To make adding the the here-document body right, we need to rely + on history_delimiting_chars() returning \n for the first line of + the here-document body and the null string for the second and + subsequent lines, so we avoid double newlines. + current_command_line_count == 2 for the first line of the body. */ + + current_command_line_count++; + maybe_add_history (ret); + } +#endif /* HISTORY */ + return ret; +} + +/* **************************************************************** */ +/* */ +/* YYLEX () */ +/* */ +/* **************************************************************** */ + +/* Reserved words. These are only recognized as the first word of a + command. */ +STRING_INT_ALIST word_token_alist[] = { + { "if", IF }, + { "then", THEN }, + { "else", ELSE }, + { "elif", ELIF }, + { "fi", FI }, + { "case", CASE }, + { "esac", ESAC }, + { "for", FOR }, +#if defined (SELECT_COMMAND) + { "select", SELECT }, +#endif + { "while", WHILE }, + { "until", UNTIL }, + { "do", DO }, + { "done", DONE }, + { "in", IN }, + { "function", FUNCTION }, +#if defined (COMMAND_TIMING) + { "time", TIME }, +#endif + { "{", '{' }, + { "}", '}' }, + { "!", BANG }, +#if defined (COND_COMMAND) + { "[[", COND_START }, + { "]]", COND_END }, +#endif +#if defined (COPROCESS_SUPPORT) + { "coproc", COPROC }, +#endif + { (char *)NULL, 0} +}; + +/* other tokens that can be returned by read_token() */ +STRING_INT_ALIST other_token_alist[] = { + /* Multiple-character tokens with special values */ + { "--", TIMEIGN }, + { "-p", TIMEOPT }, + { "&&", AND_AND }, + { "||", OR_OR }, + { ">>", GREATER_GREATER }, + { "<<", LESS_LESS }, + { "<&", LESS_AND }, + { ">&", GREATER_AND }, + { ";;", SEMI_SEMI }, + { ";&", SEMI_AND }, + { ";;&", SEMI_SEMI_AND }, + { "<<-", LESS_LESS_MINUS }, + { "<<<", LESS_LESS_LESS }, + { "&>", AND_GREATER }, + { "&>>", AND_GREATER_GREATER }, + { "<>", LESS_GREATER }, + { ">|", GREATER_BAR }, + { "|&", BAR_AND }, + { "EOF", yacc_EOF }, + /* Tokens whose value is the character itself */ + { ">", '>' }, + { "<", '<' }, + { "-", '-' }, + { "{", '{' }, + { "}", '}' }, + { ";", ';' }, + { "(", '(' }, + { ")", ')' }, + { "|", '|' }, + { "&", '&' }, + { "newline", '\n' }, + { (char *)NULL, 0} +}; + +/* others not listed here: + WORD look at yylval.word + ASSIGNMENT_WORD look at yylval.word + NUMBER look at yylval.number + ARITH_CMD look at yylval.word_list + ARITH_FOR_EXPRS look at yylval.word_list + COND_CMD look at yylval.command +*/ + +/* These are used by read_token_word, but appear up here so that shell_getc + can use them to decide when to add otherwise blank lines to the history. */ + +/* The primary delimiter stack. */ +struct dstack dstack = { (char *)NULL, 0, 0 }; + +/* A temporary delimiter stack to be used when decoding prompt strings. + This is needed because command substitutions in prompt strings (e.g., PS2) + can screw up the parser's quoting state. */ +static struct dstack temp_dstack = { (char *)NULL, 0, 0 }; + +/* Macro for accessing the top delimiter on the stack. Returns the + delimiter or zero if none. */ +#define current_delimiter(ds) \ + (ds.delimiter_depth ? ds.delimiters[ds.delimiter_depth - 1] : 0) + +#define push_delimiter(ds, character) \ + do \ + { \ + if (ds.delimiter_depth + 2 > ds.delimiter_space) \ + ds.delimiters = (char *)xrealloc \ + (ds.delimiters, (ds.delimiter_space += 10) * sizeof (char)); \ + ds.delimiters[ds.delimiter_depth] = character; \ + ds.delimiter_depth++; \ + } \ + while (0) + +#define pop_delimiter(ds) ds.delimiter_depth-- + +/* Return the next shell input character. This always reads characters + from shell_input_line; when that line is exhausted, it is time to + read the next line. This is called by read_token when the shell is + processing normal command input. */ + +/* This implements one-character lookahead/lookbehind across physical input + lines, to avoid something being lost because it's pushed back with + shell_ungetc when we're at the start of a line. */ +static int eol_ungetc_lookahead = 0; + +static int +shell_getc (remove_quoted_newline) + int remove_quoted_newline; +{ + register int i; + int c, truncating; + unsigned char uc; + + QUIT; + + if (sigwinch_received) + { + sigwinch_received = 0; + get_new_window_size (0, (int *)0, (int *)0); + } + + if (eol_ungetc_lookahead) + { + c = eol_ungetc_lookahead; + eol_ungetc_lookahead = 0; + return (c); + } + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + /* If shell_input_line[shell_input_line_index] == 0, but there is + something on the pushed list of strings, then we don't want to go + off and get another line. We let the code down below handle it. */ + + if (!shell_input_line || ((!shell_input_line[shell_input_line_index]) && + (pushed_string_list == (STRING_SAVER *)NULL))) +#else /* !ALIAS && !DPAREN_ARITHMETIC */ + if (!shell_input_line || !shell_input_line[shell_input_line_index]) +#endif /* !ALIAS && !DPAREN_ARITHMETIC */ + { + line_number++; + + /* Let's not let one really really long line blow up memory allocation */ + if (shell_input_line && shell_input_line_size >= 32768) + { + free (shell_input_line); + shell_input_line = 0; + shell_input_line_size = 0; + } + + restart_read: + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + i = truncating = 0; + shell_input_line_terminator = 0; + + /* If the shell is interatctive, but not currently printing a prompt + (interactive_shell && interactive == 0), we don't want to print + notifies or cleanup the jobs -- we want to defer it until we do + print the next prompt. */ + if (interactive_shell == 0 || SHOULD_PROMPT()) + { +#if defined (JOB_CONTROL) + /* This can cause a problem when reading a command as the result + of a trap, when the trap is called from flush_child. This call + had better not cause jobs to disappear from the job table in + that case, or we will have big trouble. */ + notify_and_cleanup (); +#else /* !JOB_CONTROL */ + cleanup_dead_jobs (); +#endif /* !JOB_CONTROL */ + } + +#if defined (READLINE) + if (no_line_editing && SHOULD_PROMPT()) +#else + if (SHOULD_PROMPT()) +#endif + print_prompt (); + + if (bash_input.type == st_stream) + clearerr (stdin); + + while (1) + { + c = yy_getc (); + + /* Allow immediate exit if interrupted during input. */ + QUIT; + + if (c == '\0') + { +#if 0 + internal_warning ("shell_getc: ignored null byte in input"); +#endif + continue; + } + + /* Theoretical overflow */ + /* If we can't put 256 bytes more into the buffer, allocate + everything we can and fill it as full as we can. */ + /* XXX - we ignore rest of line using `truncating' flag */ + if (shell_input_line_size > (SIZE_MAX - 256)) + { + size_t n; + + n = SIZE_MAX - i; /* how much more can we put into the buffer? */ + if (n <= 2) /* we have to save 1 for the newline added below */ + { + if (truncating == 0) + internal_warning("shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%llu): line truncated", shell_input_line_size, SIZE_MAX); + shell_input_line[i] = '\0'; + truncating = 1; + } + if (shell_input_line_size < SIZE_MAX) + { + shell_input_line_size = SIZE_MAX; + shell_input_line = xrealloc (shell_input_line, shell_input_line_size); + } + } + else + RESIZE_MALLOCED_BUFFER (shell_input_line, i, 2, shell_input_line_size, 256); + + if (c == EOF) + { + if (bash_input.type == st_stream) + clearerr (stdin); + + if (i == 0) + shell_input_line_terminator = EOF; + + shell_input_line[i] = '\0'; + break; + } + + if (truncating == 0 || c == '\n') + shell_input_line[i++] = c; + + if (c == '\n') + { + shell_input_line[--i] = '\0'; + current_command_line_count++; + break; + } + } + + shell_input_line_index = 0; + shell_input_line_len = i; /* == strlen (shell_input_line) */ + + set_line_mbstate (); + +#if defined (HISTORY) + if (remember_on_history && shell_input_line && shell_input_line[0]) + { + char *expansions; +# if defined (BANG_HISTORY) + int old_hist; + + /* If the current delimiter is a single quote, we should not be + performing history expansion, even if we're on a different + line from the original single quote. */ + old_hist = history_expansion_inhibited; + if (current_delimiter (dstack) == '\'') + history_expansion_inhibited = 1; +# endif + expansions = pre_process_line (shell_input_line, 1, 1); +# if defined (BANG_HISTORY) + history_expansion_inhibited = old_hist; +# endif + if (expansions != shell_input_line) + { + free (shell_input_line); + shell_input_line = expansions; + shell_input_line_len = shell_input_line ? + strlen (shell_input_line) : 0; + if (shell_input_line_len == 0) + current_command_line_count--; + + /* We have to force the xrealloc below because we don't know + the true allocated size of shell_input_line anymore. */ + shell_input_line_size = shell_input_line_len; + + set_line_mbstate (); + } + } + /* Try to do something intelligent with blank lines encountered while + entering multi-line commands. XXX - this is grotesque */ + else if (remember_on_history && shell_input_line && + shell_input_line[0] == '\0' && + current_command_line_count > 1) + { + if (current_delimiter (dstack)) + /* We know shell_input_line[0] == 0 and we're reading some sort of + quoted string. This means we've got a line consisting of only + a newline in a quoted string. We want to make sure this line + gets added to the history. */ + maybe_add_history (shell_input_line); + else + { + char *hdcs; + hdcs = history_delimiting_chars (shell_input_line); + if (hdcs && hdcs[0] == ';') + maybe_add_history (shell_input_line); + } + } + +#endif /* HISTORY */ + + if (shell_input_line) + { + /* Lines that signify the end of the shell's input should not be + echoed. */ + if (echo_input_at_read && (shell_input_line[0] || + shell_input_line_terminator != EOF)) + fprintf (stderr, "%s\n", shell_input_line); + } + else + { + shell_input_line_size = 0; + prompt_string_pointer = ¤t_prompt_string; + if (SHOULD_PROMPT ()) + prompt_again (); + goto restart_read; + } + + /* Add the newline to the end of this string, iff the string does + not already end in an EOF character. */ + if (shell_input_line_terminator != EOF) + { + if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); + + shell_input_line[shell_input_line_len] = '\n'; + shell_input_line[shell_input_line_len + 1] = '\0'; + + set_line_mbstate (); + } + } + +next_alias_char: + uc = shell_input_line[shell_input_line_index]; + + if (uc) + shell_input_line_index++; + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + /* If UC is NULL, we have reached the end of the current input string. If + pushed_string_list is non-empty, it's time to pop to the previous string + because we have fully consumed the result of the last alias expansion. + Do it transparently; just return the next character of the string popped + to. */ +pop_alias: + if (uc == 0 && (pushed_string_list != (STRING_SAVER *)NULL)) + { + pop_string (); + uc = shell_input_line[shell_input_line_index]; + if (uc) + shell_input_line_index++; + } +#endif /* ALIAS || DPAREN_ARITHMETIC */ + + if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n') + { + if (SHOULD_PROMPT ()) + prompt_again (); + line_number++; + /* 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. */ +#if defined (ALIAS) + if (expanding_alias () && shell_input_line[shell_input_line_index+1] == '\0') + { + uc = 0; + goto pop_alias; + } + else if (expanding_alias () && shell_input_line[shell_input_line_index+1] != '\0') + { + shell_input_line_index++; /* skip newline */ + goto next_alias_char; /* and get next character */ + } + else +#endif + goto restart_read; + } + + if (uc == 0 && shell_input_line_terminator == EOF) + return ((shell_input_line_index != 0) ? '\n' : EOF); + + return (uc); +} + +/* Put C back into the input for the shell. This might need changes for + HANDLE_MULTIBYTE around EOLs. Since we (currently) never push back a + character different than we read, shell_input_line_property doesn't need + to change when manipulating shell_input_line. The define for + last_shell_getc_is_singlebyte should take care of it, though. */ +static void +shell_ungetc (c) + int c; +{ + if (shell_input_line && shell_input_line_index) + shell_input_line[--shell_input_line_index] = c; + else + eol_ungetc_lookahead = c; +} + +#ifdef INCLUDE_UNUSED +/* Back the input pointer up by one, effectively `ungetting' a character. */ +static void +shell_ungetchar () +{ + if (shell_input_line && shell_input_line_index) + shell_input_line_index--; +} +#endif + +/* Discard input until CHARACTER is seen, then push that character back + onto the input stream. */ +static void +discard_until (character) + int character; +{ + int c; + + while ((c = shell_getc (0)) != EOF && c != character) + ; + + if (c != EOF) + shell_ungetc (c); +} + +void +execute_variable_command (command, vname) + char *command, *vname; +{ + char *last_lastarg; + sh_parser_state_t ps; + + save_parser_state (&ps); + last_lastarg = get_string_value ("_"); + if (last_lastarg) + last_lastarg = savestring (last_lastarg); + + parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST); + + restore_parser_state (&ps); + bind_variable ("_", last_lastarg, 0); + FREE (last_lastarg); + + if (token_to_read == '\n') /* reset_parser was called */ + token_to_read = 0; +} + +/* Place to remember the token. We try to keep the buffer + at a reasonable size, but it can grow. */ +static char *token = (char *)NULL; + +/* Current size of the token buffer. */ +static int token_buffer_size; + +/* Command to read_token () explaining what we want it to do. */ +#define READ 0 +#define RESET 1 +#define prompt_is_ps1 \ + (!prompt_string_pointer || prompt_string_pointer == &ps1_prompt) + +/* Function for yyparse to call. yylex keeps track of + the last two tokens read, and calls read_token. */ +static int +yylex () +{ + if (interactive && (current_token == 0 || current_token == '\n')) + { + /* Before we print a prompt, we might have to check mailboxes. + We do this only if it is time to do so. Notice that only here + is the mail alarm reset; nothing takes place in check_mail () + except the checking of mail. Please don't change this. */ + if (prompt_is_ps1 && parse_and_execute_level == 0 && time_to_check_mail ()) + { + check_mail (); + reset_mail_timer (); + } + + /* Avoid printing a prompt if we're not going to read anything, e.g. + after resetting the parser with read_token (RESET). */ + if (token_to_read == 0 && SHOULD_PROMPT ()) + prompt_again (); + } + + two_tokens_ago = token_before_that; + token_before_that = last_read_token; + last_read_token = current_token; + current_token = read_token (READ); + + if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token) + { + current_token = yacc_EOF; + if (bash_input.type == st_string) + rewind_input_string (); + } + parser_state &= ~PST_EOFTOKEN; + + return (current_token); +} + +/* When non-zero, we have read the required tokens + which allow ESAC to be the next one read. */ +static int esacs_needed_count; + +void +gather_here_documents () +{ + int r; + + r = 0; + while (need_here_doc) + { + parser_state |= PST_HEREDOC; + make_here_document (redir_stack[r++], line_number); + parser_state &= ~PST_HEREDOC; + need_here_doc--; + } +} + +/* When non-zero, an open-brace used to create a group is awaiting a close + brace partner. */ +static int open_brace_count; + +#define command_token_position(token) \ + (((token) == ASSIGNMENT_WORD) || (parser_state&PST_REDIRLIST) || \ + ((token) != SEMI_SEMI && (token) != SEMI_AND && (token) != SEMI_SEMI_AND && reserved_word_acceptable(token))) + +#define assignment_acceptable(token) \ + (command_token_position(token) && ((parser_state & PST_CASEPAT) == 0)) + +/* Check to see if TOKEN is a reserved word and return the token + value if it is. */ +#define CHECK_FOR_RESERVED_WORD(tok) \ + do { \ + if (!dollar_present && !quoted && \ + reserved_word_acceptable (last_read_token)) \ + { \ + int i; \ + for (i = 0; word_token_alist[i].word != (char *)NULL; i++) \ + if (STREQ (tok, word_token_alist[i].word)) \ + { \ + if ((parser_state & PST_CASEPAT) && (word_token_alist[i].token != ESAC)) \ + break; \ + if (word_token_alist[i].token == TIME && time_command_acceptable () == 0) \ + break; \ + if (word_token_alist[i].token == ESAC) \ + parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \ + else if (word_token_alist[i].token == CASE) \ + parser_state |= PST_CASESTMT; \ + else if (word_token_alist[i].token == COND_END) \ + parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \ + else if (word_token_alist[i].token == COND_START) \ + parser_state |= PST_CONDCMD; \ + else if (word_token_alist[i].token == '{') \ + open_brace_count++; \ + else if (word_token_alist[i].token == '}' && open_brace_count) \ + open_brace_count--; \ + return (word_token_alist[i].token); \ + } \ + } \ + } while (0) + +#if defined (ALIAS) + + /* OK, we have a token. Let's try to alias expand it, if (and only if) + it's eligible. + + It is eligible for expansion if EXPAND_ALIASES is set, and + the token is unquoted and the last token read was a command + separator (or expand_next_token is set), and we are currently + processing an alias (pushed_string_list is non-empty) and this + token is not the same as the current or any previously + processed alias. + + Special cases that disqualify: + In a pattern list in a case statement (parser_state & PST_CASEPAT). */ + +static char * +mk_alexpansion (s) + char *s; +{ + int l; + char *r; + + l = strlen (s); + r = xmalloc (l + 2); + strcpy (r, s); + /* 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') + r[l++] = ' '; + r[l] = '\0'; + return r; +} + +static int +alias_expand_token (tokstr) + char *tokstr; +{ + char *expanded; + alias_t *ap; + + if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) && + (parser_state & PST_CASEPAT) == 0) + { + ap = find_alias (tokstr); + + /* Currently expanding this token. */ + if (ap && (ap->flags & AL_BEINGEXPANDED)) + return (NO_EXPANSION); + + /* 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. */ + expanded = ap ? mk_alexpansion (ap->value) : (char *)NULL; + + if (expanded) + { + push_string (expanded, ap->flags & AL_EXPANDNEXT, ap); + return (RE_READ_TOKEN); + } + else + /* This is an eligible token that does not have an expansion. */ + return (NO_EXPANSION); + } + return (NO_EXPANSION); +} +#endif /* ALIAS */ + +static int +time_command_acceptable () +{ +#if defined (COMMAND_TIMING) + int i; + + if (posixly_correct && shell_compatibility_level > 41) + { + /* Quick check of the rest of the line to find the next token. If it + begins with a `-', Posix says to not return `time' as the token. + This was interp 267. */ + i = shell_input_line_index; + while (i < shell_input_line_len && (shell_input_line[i] == ' ' || shell_input_line[i] == '\t')) + i++; + if (shell_input_line[i] == '-') + return 0; + } + + switch (last_read_token) + { + case 0: + case ';': + case '\n': + case AND_AND: + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ + case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ + case TIMEOPT: /* time -p time pipeline */ + case TIMEIGN: /* time -p -- ... */ + return 1; + default: + return 0; + } +#else + return 0; +#endif /* COMMAND_TIMING */ +} + +/* Handle special cases of token recognition: + IN is recognized if the last token was WORD and the token + before that was FOR or CASE or SELECT. + + DO is recognized if the last token was WORD and the token + before that was FOR or SELECT. + + ESAC is recognized if the last token caused `esacs_needed_count' + to be set + + `{' is recognized if the last token as WORD and the token + before that was FUNCTION, or if we just parsed an arithmetic + `for' command. + + `}' is recognized if there is an unclosed `{' present. + + `-p' is returned as TIMEOPT if the last read token was TIME. + `--' is returned as TIMEIGN if the last read token was TIMEOPT. + + ']]' is returned as COND_END if the parser is currently parsing + a conditional expression ((parser_state & PST_CONDEXPR) != 0) + + `time' is returned as TIME if and only if it is immediately + preceded by one of `;', `\n', `||', `&&', or `&'. +*/ + +static int +special_case_tokens (tokstr) + char *tokstr; +{ + 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) + { + parser_state |= PST_CASEPAT; + esacs_needed_count++; + } + return (IN); + } + + if (last_read_token == WORD && +#if defined (SELECT_COMMAND) + (token_before_that == FOR || token_before_that == SELECT) && +#else + (token_before_that == FOR) && +#endif + (tokstr[0] == 'd' && tokstr[1] == 'o' && tokstr[2] == '\0')) + return (DO); + + /* Ditto for ESAC in the CASE case. + Specifically, this handles "case word in esac", which is a legal + construct, certainly because someone will pass an empty arg to the + case construct, and we don't want it to barf. Of course, we should + insist that the case construct has at least one pattern in it, but + the designers disagree. */ + if (esacs_needed_count) + { + esacs_needed_count--; + if (STREQ (tokstr, "esac")) + { + parser_state &= ~PST_CASEPAT; + return (ESAC); + } + } + + /* The start of a shell function definition. */ + if (parser_state & PST_ALLOWOPNBRC) + { + parser_state &= ~PST_ALLOWOPNBRC; + if (tokstr[0] == '{' && tokstr[1] == '\0') /* } */ + { + open_brace_count++; + function_bstart = line_number; + return ('{'); /* } */ + } + } + + /* We allow a `do' after a for ((...)) without an intervening + list_terminator */ + if (last_read_token == ARITH_FOR_EXPRS && tokstr[0] == 'd' && tokstr[1] == 'o' && !tokstr[2]) + return (DO); + if (last_read_token == ARITH_FOR_EXPRS && tokstr[0] == '{' && tokstr[1] == '\0') /* } */ + { + open_brace_count++; + return ('{'); /* } */ + } + + if (open_brace_count && reserved_word_acceptable (last_read_token) && tokstr[0] == '}' && !tokstr[1]) + { + open_brace_count--; /* { */ + return ('}'); + } + +#if defined (COMMAND_TIMING) + /* Handle -p after `time'. */ + if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == 'p' && !tokstr[2]) + return (TIMEOPT); + /* Handle -- after `time -p'. */ + if (last_read_token == TIMEOPT && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2]) + return (TIMEIGN); +#endif + +#if defined (COND_COMMAND) /* [[ */ + if ((parser_state & PST_CONDEXPR) && tokstr[0] == ']' && tokstr[1] == ']' && tokstr[2] == '\0') + return (COND_END); +#endif + + return (-1); +} + +/* Called from shell.c when Control-C is typed at top level. Or + by the error rule at top level. */ +void +reset_parser () +{ + dstack.delimiter_depth = 0; /* No delimiters found so far. */ + open_brace_count = 0; + +#if defined (EXTENDED_GLOB) + /* Reset to global value of extended glob */ + if (parser_state & PST_EXTPAT) + extended_glob = global_extglob; +#endif + + parser_state = 0; + +#if defined (ALIAS) || defined (DPAREN_ARITHMETIC) + if (pushed_string_list) + free_string_list (); +#endif /* ALIAS || DPAREN_ARITHMETIC */ + + if (shell_input_line) + { + free (shell_input_line); + shell_input_line = (char *)NULL; + shell_input_line_size = shell_input_line_index = 0; + } + + FREE (word_desc_to_read); + word_desc_to_read = (WORD_DESC *)NULL; + + current_token = '\n'; /* XXX */ + last_read_token = '\n'; + token_to_read = '\n'; +} + +/* Read the next token. Command can be READ (normal operation) or + RESET (to normalize state). */ +static int +read_token (command) + int command; +{ + int character; /* Current character. */ + int peek_char; /* Temporary look-ahead character. */ + int result; /* The thing to return. */ + + if (command == RESET) + { + reset_parser (); + return ('\n'); + } + + if (token_to_read) + { + result = token_to_read; + if (token_to_read == WORD || token_to_read == ASSIGNMENT_WORD) + { + yylval.word = word_desc_to_read; + word_desc_to_read = (WORD_DESC *)NULL; + } + token_to_read = 0; + return (result); + } + +#if defined (COND_COMMAND) + if ((parser_state & (PST_CONDCMD|PST_CONDEXPR)) == PST_CONDCMD) + { + cond_lineno = line_number; + parser_state |= PST_CONDEXPR; + yylval.command = parse_cond_command (); + if (cond_token != COND_END) + { + cond_error (); + return (-1); + } + token_to_read = COND_END; + parser_state &= ~(PST_CONDEXPR|PST_CONDCMD); + return (COND_CMD); + } +#endif + +#if defined (ALIAS) + /* This is a place to jump back to once we have successfully expanded a + token with an alias and pushed the string with push_string () */ + re_read_token: +#endif /* ALIAS */ + + /* Read a single word from input. Start by skipping blanks. */ + while ((character = shell_getc (1)) != EOF && shellblank (character)) + ; + + if (character == EOF) + { + EOF_Reached = 1; + return (yacc_EOF); + } + + if MBTEST(character == '#' && (!interactive || interactive_comments)) + { + /* A comment. Discard until EOL or EOF, and then return a newline. */ + discard_until ('\n'); + shell_getc (0); + character = '\n'; /* this will take the next if statement and return. */ + } + + if (character == '\n') + { + /* If we're about to return an unquoted newline, we can go and collect + the text of any pending here document. */ + if (need_here_doc) + gather_here_documents (); + +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + + parser_state &= ~PST_ASSIGNOK; + + return (character); + } + + if (parser_state & PST_REGEXP) + goto tokword; + + /* Shell meta-characters. */ + if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) + { +#if defined (ALIAS) + /* Turn off alias tokenization iff this character sequence would + not leave us ready to read a command. */ + if (character == '<' || character == '>') + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + + parser_state &= ~PST_ASSIGNOK; + + peek_char = shell_getc (1); + if (character == peek_char) + { + switch (character) + { + case '<': + /* If '<' then we could be at "<<" or at "<<-". We have to + look ahead one more character. */ + peek_char = shell_getc (1); + if MBTEST(peek_char == '-') + return (LESS_LESS_MINUS); + else if MBTEST(peek_char == '<') + return (LESS_LESS_LESS); + else + { + shell_ungetc (peek_char); + return (LESS_LESS); + } + + case '>': + return (GREATER_GREATER); + + case ';': + parser_state |= PST_CASEPAT; +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + + peek_char = shell_getc (1); + if MBTEST(peek_char == '&') + return (SEMI_SEMI_AND); + else + { + shell_ungetc (peek_char); + return (SEMI_SEMI); + } + + case '&': + return (AND_AND); + + case '|': + return (OR_OR); + +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) + case '(': /* ) */ + result = parse_dparen (character); + if (result == -2) + break; + else + return result; +#endif + } + } + else if MBTEST(character == '<' && peek_char == '&') + return (LESS_AND); + else if MBTEST(character == '>' && peek_char == '&') + return (GREATER_AND); + else if MBTEST(character == '<' && peek_char == '>') + return (LESS_GREATER); + else if MBTEST(character == '>' && peek_char == '|') + return (GREATER_BAR); + else if MBTEST(character == '&' && peek_char == '>') + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '>') + return (AND_GREATER_GREATER); + else + { + shell_ungetc (peek_char); + return (AND_GREATER); + } + } + else if MBTEST(character == '|' && peek_char == '&') + return (BAR_AND); + else if MBTEST(character == ';' && peek_char == '&') + { + parser_state |= PST_CASEPAT; +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + return (SEMI_AND); + } + + shell_ungetc (peek_char); + + /* If we look like we are reading the start of a function + definition, then let the reader know about it so that + we will do the right thing with `{'. */ + if MBTEST(character == ')' && last_read_token == '(' && token_before_that == WORD) + { + parser_state |= PST_ALLOWOPNBRC; +#if defined (ALIAS) + parser_state &= ~PST_ALEXPNEXT; +#endif /* ALIAS */ + function_dstart = line_number; + } + + /* case pattern lists may be preceded by an optional left paren. If + we're not trying to parse a case pattern list, the left paren + indicates a subshell. */ + if MBTEST(character == '(' && (parser_state & PST_CASEPAT) == 0) /* ) */ + parser_state |= PST_SUBSHELL; + /*(*/ + else if MBTEST((parser_state & PST_CASEPAT) && character == ')') + parser_state &= ~PST_CASEPAT; + /*(*/ + else if MBTEST((parser_state & PST_SUBSHELL) && character == ')') + parser_state &= ~PST_SUBSHELL; + +#if defined (PROCESS_SUBSTITUTION) + /* Check for the constructs which introduce process substitution. + Shells running in `posix mode' don't do process substitution. */ + if MBTEST(posixly_correct || ((character != '>' && character != '<') || peek_char != '(')) /*)*/ +#endif /* PROCESS_SUBSTITUTION */ + return (character); + } + + /* Hack <&- (close stdin) case. Also <&N- (dup and close). */ + if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) + return (character); + +tokword: + /* Okay, if we got this far, we have to read a word. Read one, + and then check it against the known ones. */ + result = read_token_word (character); +#if defined (ALIAS) + if (result == RE_READ_TOKEN) + goto re_read_token; +#endif + return result; +} + +/* + * Match a $(...) or other grouping construct. This has to handle embedded + * quoted strings ('', ``, "") and nested constructs. It also must handle + * reprompting the user, if necessary, after reading a newline, and returning + * correct error values if it reads EOF. + */ +#define P_FIRSTCLOSE 0x0001 +#define P_ALLOWESC 0x0002 +#define P_DQUOTE 0x0004 +#define P_COMMAND 0x0008 /* parsing a command, so look for comments */ +#define P_BACKQUOTE 0x0010 /* parsing a backquoted command substitution */ +#define P_ARRAYSUB 0x0020 /* parsing a [...] array subscript for assignment */ +#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_INWORD 0x400 + +#define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|') + +#define CHECK_NESTRET_ERROR() \ + do { \ + if (nestret == &matched_pair_error) \ + { \ + free (ret); \ + return &matched_pair_error; \ + } \ + } while (0) + +#define APPEND_NESTRET() \ + do { \ + if (nestlen) \ + { \ + RESIZE_MALLOCED_BUFFER (ret, retind, nestlen, retsize, 64); \ + strcpy (ret + retind, nestret); \ + retind += nestlen; \ + } \ + } while (0) + +static char matched_pair_error; + +static char * +parse_matched_pair (qc, open, close, lenp, flags) + int qc; /* `"' if this construct is within double quotes */ + int open, close; + int *lenp, flags; +{ + int count, ch, tflags; + int nestlen, ttranslen, start_lineno; + char *ret, *nestret, *ttrans; + int retind, retsize, rflags; + int dolbrace_state; + + dolbrace_state = (flags & P_DOLBRACE) ? DOLBRACE_PARAM : 0; + +/*itrace("parse_matched_pair[%d]: open = %c close = %c flags = %d", line_number, open, close, flags);*/ + count = 1; + tflags = 0; + + if ((flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0) + tflags |= LEX_CKCOMMENT; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ + rflags = (qc == '"') ? P_DQUOTE : (flags & P_DQUOTE); + + ret = (char *)xmalloc (retsize = 64); + retind = 0; + + start_lineno = line_number; + while (count) + { + ch = shell_getc (qc != '\'' && (tflags & (LEX_PASSNEXT)) == 0); + + if (ch == EOF) + { + free (ret); + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); + EOF_Reached = 1; /* XXX */ + return (&matched_pair_error); + } + + /* Possible reprompting. */ + if (ch == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + /* Don't bother counting parens or doing anything else if in a comment + or part of a case statement */ + if (tflags & LEX_INCOMMENT) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + if (ch == '\n') + tflags &= ~LEX_INCOMMENT; + + continue; + } + + /* Not exactly right yet, should handle shell metacharacters, too. If + any changes are made to this test, make analogous changes to subst.c: + extract_delimited_string(). */ + else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || shellblank (ret[retind - 1]))) + tflags |= LEX_INCOMMENT; + + if (tflags & LEX_PASSNEXT) /* last char was backslash */ + { + tflags &= ~LEX_PASSNEXT; + if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ + { + if (retind > 0) + retind--; /* swallow previously-added backslash */ + continue; + } + + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + if MBTEST(ch == CTLESC) + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + /* If we're reparsing the input (e.g., from parse_string_to_word_list), + we've already prepended CTLESC to single-quoted results of $'...'. + We may want to do this for other CTLESC-quoted characters in + reparse, too. */ + else if MBTEST((parser_state & PST_REPARSE) && open == '\'' && (ch == CTLESC || ch == CTLNUL)) + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + continue; + } + else if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + else if MBTEST(ch == close) /* ending delimiter */ + count--; + /* handle nested ${...} specially. */ + else if MBTEST(open != close && (tflags & LEX_WASDOL) && open == '{' && ch == open) /* } */ + count++; + else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && ch == open) /* nested begin */ + count++; + + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + /* If we just read the ending character, don't bother continuing. */ + if (count == 0) + break; + + if (open == '\'') /* '' inside grouping construct */ + { + if MBTEST((flags & P_ALLOWESC) && ch == '\\') + tflags |= LEX_PASSNEXT; + continue; + } + + if MBTEST(ch == '\\') /* backslashes */ + tflags |= LEX_PASSNEXT; + + /* Based on which dolstate is currently in (param, op, or word), + decide what the op is. We're really only concerned if it's % or + #, so we can turn on a flag that says whether or not we should + treat single quotes as special when inside a double-quoted + ${...}. This logic must agree with subst.c:extract_dollar_brace_string + since they share the same defines. */ + if (flags & P_DOLBRACE) + { + /* ${param%[%]word} */ + if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '%' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param#[#]word} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '#' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param/[/]pat/rep} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '/' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param^[^]pat} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == '^' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + /* ${param,[,]pat} */ + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && ch == ',' && retind > 1) + dolbrace_state = DOLBRACE_QUOTE; + else if MBTEST(dolbrace_state == DOLBRACE_PARAM && strchr ("#%^,~:-=?+/", ch) != 0) + dolbrace_state = DOLBRACE_OP; + else if MBTEST(dolbrace_state == DOLBRACE_OP && strchr ("#%^,~:-=?+/", ch) == 0) + dolbrace_state = DOLBRACE_WORD; + } + + /* The big hammer. Single quotes aren't special in double quotes. The + problem is that Posix used to say the single quotes are semi-special: + within a double-quoted ${...} construct "an even number of + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ + if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + + /* Could also check open == '`' if we want to parse grouping constructs + inside old-style command substitution. */ + if (open != close) /* a grouping construct */ + { + if MBTEST(shellquote (ch)) + { + /* '', ``, or "" inside $(...) or other grouping construct. */ + push_delimiter (dstack, ch); + if MBTEST((tflags & LEX_WASDOL) && ch == '\'') /* $'...' inside group */ + nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags); + else + nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags); + pop_delimiter (dstack); + CHECK_NESTRET_ERROR (); + + if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Translate $'...' here. */ + ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); + xfree (nestret); + + if ((rflags & P_DQUOTE) == 0) + { + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + } + else + { + nestret = ttrans; + nestlen = ttranslen; + } + retind -= 2; /* back up before the $' */ + } + else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Locale expand $"..." here. */ + ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + xfree (nestret); + + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + nestlen = ttranslen + 2; + retind -= 2; /* back up before the $" */ + } + + APPEND_NESTRET (); + FREE (nestret); + } + else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + goto parse_dollar_word; + } + /* Parse an old-style command substitution within double quotes as a + single word. */ + /* XXX - sh and ksh93 don't do this - XXX */ + else if MBTEST(open == '"' && ch == '`') + { + nestret = parse_matched_pair (0, '`', '`', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + else if MBTEST(open != '`' && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside quoted string. */ + { +parse_dollar_word: + if (open == ch) /* undo previous increment */ + count--; + if (ch == '(') /* ) */ + nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); + else if (ch == '{') /* } */ + nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags); + else if (ch == '[') /* ] */ + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } + + ret[retind] = '\0'; + if (lenp) + *lenp = retind; +/*itrace("parse_matched_pair[%d]: returning %s", line_number, ret);*/ + return ret; +} + +/* Parse a $(...) command substitution. This is messier than I'd like, and + reproduces a lot more of the token-reading code than I'd like. */ +static char * +parse_comsub (qc, open, close, lenp, flags) + int qc; /* `"' if this construct is within double quotes */ + int open, close; + int *lenp, flags; +{ + int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind; + int nestlen, ttranslen, start_lineno; + char *ret, *nestret, *ttrans, *heredelim; + int retind, retsize, rflags, hdlen; + + /* Posix interp 217 says arithmetic expressions have precedence, so + assume $(( introduces arithmetic expansion and parse accordingly. */ + peekc = shell_getc (0); + shell_ungetc (peekc); + if (peekc == '(') + return (parse_matched_pair (qc, open, close, lenp, 0)); + +/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/ + count = 1; + tflags = LEX_RESWDOK; + + if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0) + tflags |= LEX_CKCASE; + if ((tflags & LEX_CKCASE) && (interactive == 0 || interactive_comments)) + tflags |= LEX_CKCOMMENT; + + /* RFLAGS is the set of flags we want to pass to recursive calls. */ + rflags = (flags & P_DQUOTE); + + ret = (char *)xmalloc (retsize = 64); + retind = 0; + + start_lineno = line_number; + lex_rwlen = lex_wlen = 0; + + heredelim = 0; + lex_firstind = -1; + + while (count) + { +comsub_readchar: + ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT)) == 0); + + if (ch == EOF) + { +eof_error: + free (ret); + FREE (heredelim); + parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close); + EOF_Reached = 1; /* XXX */ + return (&matched_pair_error); + } + + /* If we hit the end of a line and are reading the contents of a here + document, and it's not the same line that the document starts on, + check for this line being the here doc delimiter. Otherwise, if + we're in a here document, mark the next character as the beginning + of a line. */ + if (ch == '\n') + { + if ((tflags & LEX_HEREDELIM) && heredelim) + { + tflags &= ~LEX_HEREDELIM; + tflags |= LEX_INHEREDOC; + lex_firstind = retind + 1; + } + else if (tflags & LEX_INHEREDOC) + { + int tind; + tind = lex_firstind; + while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') + tind++; + if (STREQN (ret + tind, heredelim, hdlen)) + { + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC); +/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ + free (heredelim); + heredelim = 0; + lex_firstind = -1; + } + else + lex_firstind = retind + 1; + } + } + + /* Possible reprompting. */ + if (ch == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + /* XXX -- possibly allow here doc to be delimited by ending right + paren. */ + if ((tflags & LEX_INHEREDOC) && ch == close && count == 1) + { + int tind; +/*itrace("parse_comsub: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", retind-lex_firstind, hdlen, retind);*/ + tind = lex_firstind; + while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t') + tind++; + if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen)) + { + tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC); +/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/ + free (heredelim); + heredelim = 0; + lex_firstind = -1; + } + } + + /* Don't bother counting parens or doing anything else if in a comment */ + if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC)) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + if ((tflags & LEX_INCOMMENT) && ch == '\n') + { +/*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/ + tflags &= ~LEX_INCOMMENT; + } + + continue; + } + + if (tflags & LEX_PASSNEXT) /* last char was backslash */ + { +/*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ + tflags &= ~LEX_PASSNEXT; + if (qc != '\'' && ch == '\n') /* double-quoted \ disappears. */ + { + if (retind > 0) + retind--; /* swallow previously-added backslash */ + continue; + } + + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + if MBTEST(ch == CTLESC) + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } + + /* If this is a shell break character, we are not in a word. If not, + we either start or continue a word. */ + if MBTEST(shellbreak (ch)) + { + tflags &= ~LEX_INWORD; +/*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/ + } + else + { + if (tflags & LEX_INWORD) + { + lex_wlen++; +/*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/ + } + else + { +/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/ + tflags |= LEX_INWORD; + lex_wlen = 0; + } + } + + /* Skip whitespace */ + if MBTEST(shellblank (ch) && (tflags & LEX_HEREDELIM) == 0 && lex_rwlen == 0) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + continue; + } + + /* Either we are looking for the start of the here-doc delimiter + (lex_firstind == -1) or we are reading one (lex_firstind >= 0). + If this character is a shell break character and we are reading + the delimiter, save it and note that we are now reading a here + document. If we've found the start of the delimiter, note it by + setting lex_firstind. Backslashes can quote shell metacharacters + in here-doc delimiters. */ + if (tflags & LEX_HEREDELIM) + { + if (lex_firstind == -1 && shellbreak (ch) == 0) + lex_firstind = retind; +#if 0 + else if (heredelim && (tflags & LEX_PASSNEXT) == 0 && ch == '\n') + { + tflags |= LEX_INHEREDOC; + tflags &= ~LEX_HEREDELIM; + lex_firstind = retind + 1; + } +#endif + else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch)) + { + if (heredelim == 0) + { + nestret = substring (ret, lex_firstind, retind); + heredelim = string_quote_removal (nestret, 0); + free (nestret); + hdlen = STRLEN(heredelim); +/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/ + } + if (ch == '\n') + { + tflags |= LEX_INHEREDOC; + tflags &= ~LEX_HEREDELIM; + lex_firstind = retind + 1; + } + else + lex_firstind = -1; + } + } + + /* Meta-characters that can introduce a reserved word. Not perfect yet. */ + if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n')) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + peekc = shell_getc (1); + if (ch == peekc && (ch == '&' || ch == '|' || ch == ';')) /* two-character tokens */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = peekc; +/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + continue; + } + else if (ch == '\n' || COMSUB_META(ch)) + { + shell_ungetc (peekc); +/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/ + tflags |= LEX_RESWDOK; + lex_rwlen = 0; + continue; + } + else if (ch == EOF) + goto eof_error; + else + { + /* `unget' the character we just added and fall through */ + retind--; + shell_ungetc (peekc); + } + } + + /* If we can read a reserved word, try to read one. */ + if (tflags & LEX_RESWDOK) + { + if MBTEST(islower (ch)) + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + lex_rwlen++; + continue; + } + else if MBTEST(lex_rwlen == 4 && shellbreak (ch)) + { + if (STREQN (ret + retind - 4, "case", 4)) + { + tflags |= LEX_INCASE; +/*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/ + } + else if (STREQN (ret + retind - 4, "esac", 4)) + { + tflags &= ~LEX_INCASE; +/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 0", line_number);*/ + } + tflags &= ~LEX_RESWDOK; + } + else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0))) + ; /* don't modify LEX_RESWDOK if we're starting a comment */ + /* Allow `do' followed by space, tab, or newline to preserve the + RESWDOK flag, but reset the reserved word length counter so we + can read another one. */ + else if MBTEST(((tflags & LEX_INCASE) == 0) && + (isblank(ch) || ch == '\n') && + lex_rwlen == 2 && + STREQN (ret + retind - 2, "do", 2)) + { +/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', found \"do\"", line_number, ch);*/ + lex_rwlen = 0; + } + else if MBTEST((tflags & LEX_INCASE) && ch != '\n') + /* If we can read a reserved word and we're in case, we're at the + point where we can read a new pattern list or an esac. We + handle the esac case above. If we read a newline, we want to + leave LEX_RESWDOK alone. If we read anything else, we want to + turn off LEX_RESWDOK, since we're going to read a pattern list. */ + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/ + } + else if MBTEST(shellbreak (ch) == 0) + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ + } +#if 0 + /* If we find a space or tab but have read something and it's not + `do', turn off the reserved-word-ok flag */ + else if MBTEST(isblank (ch) && lex_rwlen > 0) + { + tflags &= ~LEX_RESWDOK; +/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/ + } +#endif + } + + /* Might be the start of a here-doc delimiter */ + if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<') + { + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + peekc = shell_getc (1); + if (peekc == EOF) + goto eof_error; + if (peekc == ch) + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = peekc; + peekc = shell_getc (1); + if (peekc == EOF) + goto eof_error; + if (peekc == '-') + { + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = peekc; + tflags |= LEX_STRIPDOC; + } + else + shell_ungetc (peekc); + if (peekc != '<') + { + tflags |= LEX_HEREDELIM; + lex_firstind = -1; + } + continue; + } + else + ch = peekc; /* fall through and continue XXX */ + } + else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0))) + { +/*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/ + tflags |= LEX_INCOMMENT; + } + + if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */ + { + RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64); + ret[retind++] = CTLESC; + ret[retind++] = ch; + continue; + } +#if 0 + else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')') + tflags &= ~LEX_INCASE; /* XXX */ +#endif + else if MBTEST(ch == close && (tflags & LEX_INCASE) == 0) /* ending delimiter */ + { + count--; +/*itrace("parse_comsub:%d: found close: count = %d", line_number, count);*/ + } + else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */ + { + count++; +/*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/ + } + + /* Add this character. */ + RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64); + ret[retind++] = ch; + + /* If we just read the ending character, don't bother continuing. */ + if (count == 0) + break; + + if MBTEST(ch == '\\') /* backslashes */ + tflags |= LEX_PASSNEXT; + + if MBTEST(shellquote (ch)) + { + /* '', ``, or "" inside $(...). */ + push_delimiter (dstack, ch); + if MBTEST((tflags & LEX_WASDOL) && ch == '\'') /* $'...' inside group */ + nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags); + else + nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags); + pop_delimiter (dstack); + CHECK_NESTRET_ERROR (); + + if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Translate $'...' here. */ + ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen); + xfree (nestret); + + if ((rflags & P_DQUOTE) == 0) + { + nestret = sh_single_quote (ttrans); + free (ttrans); + nestlen = strlen (nestret); + } + else + { + nestret = ttrans; + nestlen = ttranslen; + } + retind -= 2; /* back up before the $' */ + } + else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0)) + { + /* Locale expand $"..." here. */ + ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen); + xfree (nestret); + + nestret = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + nestlen = ttranslen + 2; + retind -= 2; /* back up before the $" */ + } + + APPEND_NESTRET (); + FREE (nestret); + } + else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ + /* check for $(), $[], or ${} inside command substitution. */ + { + if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */ + count--; + if (ch == '(') /* ) */ + nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE); + else if (ch == '{') /* } */ + nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags); + else if (ch == '[') /* ] */ + nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags); + + CHECK_NESTRET_ERROR (); + APPEND_NESTRET (); + + FREE (nestret); + } + if MBTEST(ch == '$') + tflags |= LEX_WASDOL; + else + tflags &= ~LEX_WASDOL; + } + + FREE (heredelim); + ret[retind] = '\0'; + if (lenp) + *lenp = retind; +/*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/ + return ret; +} + +/* Recursively call the parser to parse a $(...) command substitution. */ +char * +xparse_dolparen (base, string, indp, flags) + char *base; + char *string; + int *indp; + int flags; +{ + sh_parser_state_t ps; + sh_input_line_state_t ls; + int orig_ind, nc, sflags; + char *ret, *s, *ep, *ostring; + + /*yydebug = 1;*/ + orig_ind = *indp; + ostring = string; + +/*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) + sflags |= SEVAL_NOLONGJMP; + save_parser_state (&ps); + save_input_line_state (&ls); + + /*(*/ + parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/ + shell_eof_token = ')'; + parse_string (string, "command substitution", sflags, &ep); + + restore_parser_state (&ps); + reset_parser (); + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); + if (interactive) + token_to_read = 0; + + /* 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. */ + + /*(*/ + if (ep[-1] != ')') + { +#if DEBUG + if (ep[-1] != '\n') + itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep); +#endif + while (ep > ostring && ep[-1] == '\n') ep--; + } + + nc = ep - ostring; + *indp = ep - base - 1; + + /*(*/ +#if DEBUG + if (base[*indp] != ')') + itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base); +#endif + + if (flags & SX_NOALLOC) + return (char *)NULL; + + if (nc == 0) + { + ret = xmalloc (1); + ret[0] = '\0'; + } + else + ret = substring (ostring, 0, nc - 1); + + return ret; +} + +#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND) +/* Parse a double-paren construct. It can be either an arithmetic + command, an arithmetic `for' command, or a nested subshell. Returns + the parsed token, -1 on error, or -2 if we didn't do anything and + should just go on. */ +static int +parse_dparen (c) + int c; +{ + int cmdtyp, sline; + char *wval; + WORD_DESC *wd; + +#if defined (ARITH_FOR_COMMAND) + if (last_read_token == FOR) + { + arith_for_lineno = line_number; + cmdtyp = parse_arith_cmd (&wval, 0); + if (cmdtyp == 1) + { + wd = alloc_word_desc (); + wd->word = wval; + yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); + return (ARITH_FOR_EXPRS); + } + else + return -1; /* ERROR */ + } +#endif + +#if defined (DPAREN_ARITHMETIC) + if (reserved_word_acceptable (last_read_token)) + { + sline = line_number; + + cmdtyp = parse_arith_cmd (&wval, 0); + if (cmdtyp == 1) /* arithmetic command */ + { + wd = alloc_word_desc (); + wd->word = wval; + wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_DQUOTE; + yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL); + return (ARITH_CMD); + } + else if (cmdtyp == 0) /* nested subshell */ + { + push_string (wval, 0, (alias_t *)NULL); + if ((parser_state & PST_CASEPAT) == 0) + parser_state |= PST_SUBSHELL; + return (c); + } + else /* ERROR */ + return -1; + } +#endif + + return -2; /* XXX */ +} + +/* We've seen a `(('. Look for the matching `))'. If we get it, return 1. + If not, assume it's a nested subshell for backwards compatibility and + return 0. In any case, put the characters we've consumed into a locally- + allocated buffer and make *ep point to that buffer. Return -1 on an + error, for example EOF. */ +static int +parse_arith_cmd (ep, adddq) + char **ep; + int adddq; +{ + int exp_lineno, rval, c; + char *ttok, *tokstr; + int ttoklen; + + exp_lineno = line_number; + ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0); + rval = 1; + if (ttok == &matched_pair_error) + return -1; + /* Check that the next character is the closing right paren. If + not, this is a syntax error. ( */ + c = shell_getc (0); + if MBTEST(c != ')') + rval = 0; + + tokstr = (char *)xmalloc (ttoklen + 4); + + /* if ADDDQ != 0 then (( ... )) -> "..." */ + if (rval == 1 && adddq) /* arith cmd, add double quotes */ + { + tokstr[0] = '"'; + strncpy (tokstr + 1, ttok, ttoklen - 1); + tokstr[ttoklen] = '"'; + tokstr[ttoklen+1] = '\0'; + } + else if (rval == 1) /* arith cmd, don't add double quotes */ + { + strncpy (tokstr, ttok, ttoklen - 1); + tokstr[ttoklen-1] = '\0'; + } + else /* nested subshell */ + { + tokstr[0] = '('; + strncpy (tokstr + 1, ttok, ttoklen - 1); + tokstr[ttoklen] = ')'; + tokstr[ttoklen+1] = c; + tokstr[ttoklen+2] = '\0'; + } + + *ep = tokstr; + FREE (ttok); + return rval; +} +#endif /* DPAREN_ARITHMETIC || ARITH_FOR_COMMAND */ + +#if defined (COND_COMMAND) +static void +cond_error () +{ + char *etext; + + if (EOF_Reached && cond_token != COND_ERROR) /* [[ */ + parser_error (cond_lineno, _("unexpected EOF while looking for `]]'")); + else if (cond_token != COND_ERROR) + { + if (etext = error_token_from_token (cond_token)) + { + parser_error (cond_lineno, _("syntax error in conditional expression: unexpected token `%s'"), etext); + free (etext); + } + else + parser_error (cond_lineno, _("syntax error in conditional expression")); + } +} + +static COND_COM * +cond_expr () +{ + return (cond_or ()); +} + +static COND_COM * +cond_or () +{ + COND_COM *l, *r; + + l = cond_and (); + if (cond_token == OR_OR) + { + r = cond_or (); + l = make_cond_node (COND_OR, (WORD_DESC *)NULL, l, r); + } + return l; +} + +static COND_COM * +cond_and () +{ + COND_COM *l, *r; + + l = cond_term (); + if (cond_token == AND_AND) + { + r = cond_and (); + l = make_cond_node (COND_AND, (WORD_DESC *)NULL, l, r); + } + return l; +} + +static int +cond_skip_newlines () +{ + while ((cond_token = read_token (READ)) == '\n') + { + if (SHOULD_PROMPT ()) + prompt_again (); + } + return (cond_token); +} + +#define COND_RETURN_ERROR() \ + do { cond_token = COND_ERROR; return ((COND_COM *)NULL); } while (0) + +static COND_COM * +cond_term () +{ + WORD_DESC *op; + COND_COM *term, *tleft, *tright; + int tok, lineno; + char *etext; + + /* Read a token. It can be a left paren, a `!', a unary operator, or a + word that should be the first argument of a binary operator. Start by + skipping newlines, since this is a compound command. */ + tok = cond_skip_newlines (); + lineno = line_number; + if (tok == COND_END) + { + COND_RETURN_ERROR (); + } + else if (tok == '(') + { + term = cond_expr (); + if (cond_token != ')') + { + if (term) + dispose_cond_node (term); /* ( */ + if (etext = error_token_from_token (cond_token)) + { + parser_error (lineno, _("unexpected token `%s', expected `)'"), etext); + free (etext); + } + else + parser_error (lineno, _("expected `)'")); + COND_RETURN_ERROR (); + } + term = make_cond_node (COND_EXPR, (WORD_DESC *)NULL, term, (COND_COM *)NULL); + (void)cond_skip_newlines (); + } + else if (tok == BANG || (tok == WORD && (yylval.word->word[0] == '!' && yylval.word->word[1] == '\0'))) + { + if (tok == WORD) + dispose_word (yylval.word); /* not needed */ + term = 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)) + { + op = yylval.word; + tok = read_token (READ); + if (tok == WORD) + { + tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); + term = make_cond_node (COND_UNARY, op, tleft, (COND_COM *)NULL); + } + else + { + dispose_word (op); + if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected argument `%s' to conditional unary operator"), etext); + free (etext); + } + else + parser_error (line_number, _("unexpected argument to conditional unary operator")); + COND_RETURN_ERROR (); + } + + (void)cond_skip_newlines (); + } + else if (tok == WORD) /* left argument to binary operator */ + { + /* lhs */ + tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); + + /* binop */ + tok = read_token (READ); + if (tok == WORD && test_binop (yylval.word->word)) + { + op = yylval.word; + if (op->word[0] == '=' && (op->word[1] == '\0' || (op->word[1] == '=' && op->word[2] == '\0'))) + parser_state |= PST_EXTPAT; + else if (op->word[0] == '!' && op->word[1] == '=' && op->word[2] == '\0') + parser_state |= PST_EXTPAT; + } +#if defined (COND_REGEXP) + else if (tok == WORD && STREQ (yylval.word->word, "=~")) + { + op = yylval.word; + parser_state |= PST_REGEXP; + } +#endif + else if (tok == '<' || tok == '>') + op = make_word_from_token (tok); /* ( */ + /* There should be a check before blindly accepting the `)' that we have + seen the opening `('. */ + else if (tok == COND_END || tok == AND_AND || tok == OR_OR || tok == ')') + { + /* Special case. [[ x ]] is equivalent to [[ -n x ]], just like + the test command. Similarly for [[ x && expr ]] or + [[ x || expr ]] or [[ (x) ]]. */ + op = make_word ("-n"); + term = make_cond_node (COND_UNARY, op, tleft, (COND_COM *)NULL); + cond_token = tok; + return (term); + } + else + { + if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected token `%s', conditional binary operator expected"), etext); + free (etext); + } + else + parser_error (line_number, _("conditional binary operator expected")); + dispose_cond_node (tleft); + COND_RETURN_ERROR (); + } + + /* rhs */ + if (parser_state & PST_EXTPAT) + extended_glob = 1; + tok = read_token (READ); + if (parser_state & PST_EXTPAT) + extended_glob = global_extglob; + parser_state &= ~(PST_REGEXP|PST_EXTPAT); + + if (tok == WORD) + { + tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); + term = make_cond_node (COND_BINARY, op, tleft, tright); + } + else + { + if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected argument `%s' to conditional binary operator"), etext); + free (etext); + } + else + parser_error (line_number, _("unexpected argument to conditional binary operator")); + dispose_cond_node (tleft); + dispose_word (op); + COND_RETURN_ERROR (); + } + + (void)cond_skip_newlines (); + } + else + { + if (tok < 256) + parser_error (line_number, _("unexpected token `%c' in conditional command"), tok); + else if (etext = error_token_from_token (tok)) + { + parser_error (line_number, _("unexpected token `%s' in conditional command"), etext); + free (etext); + } + else + parser_error (line_number, _("unexpected token %d in conditional command"), tok); + COND_RETURN_ERROR (); + } + return (term); +} + +/* This is kind of bogus -- we slip a mini recursive-descent parser in + here to handle the conditional statement syntax. */ +static COMMAND * +parse_cond_command () +{ + COND_COM *cexp; + + global_extglob = extended_glob; + cexp = cond_expr (); + return (make_cond_command (cexp)); +} +#endif + +#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. */ +static int +token_is_assignment (t, i) + char *t; + int i; +{ + unsigned char c, c1; + int r; + + 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; +} + +/* XXX - possible changes here for `+=' */ +static int +token_is_ident (t, i) + char *t; + int i; +{ + unsigned char c; + int r; + + c = t[i]; + t[i] = '\0'; + r = legal_identifier (t); + t[i] = c; + return r; +} +#endif + +static int +read_token_word (character) + int character; +{ + /* The value for YYLVAL when a WORD is read. */ + WORD_DESC *the_word; + + /* Index into the token that we are building. */ + int token_index; + + /* ALL_DIGITS becomes zero when we see a non-digit. */ + int all_digit_token; + + /* DOLLAR_PRESENT becomes non-zero if we see a `$'. */ + int dollar_present; + + /* COMPOUND_ASSIGNMENT becomes non-zero if we are parsing a compound + assignment. */ + int compound_assignment; + + /* QUOTED becomes non-zero if we see one of ("), ('), (`), or (\). */ + int quoted; + + /* Non-zero means to ignore the value of the next character, and just + to add it no matter what. */ + int pass_next_character; + + /* The current delimiting character. */ + int cd; + int result, peek_char; + char *ttok, *ttrans; + int ttoklen, ttranslen; + intmax_t lvalue; + + if (token_buffer_size < TOKEN_DEFAULT_INITIAL_SIZE) + token = (char *)xrealloc (token, token_buffer_size = TOKEN_DEFAULT_INITIAL_SIZE); + + token_index = 0; + all_digit_token = DIGIT (character); + dollar_present = quoted = pass_next_character = compound_assignment = 0; + + for (;;) + { + if (character == EOF) + goto got_token; + + if (pass_next_character) + { + pass_next_character = 0; + goto got_escaped_character; + } + + cd = current_delimiter (dstack); + + /* Handle backslashes. Quote lots of things when not inside of + double-quotes, quote some things inside of double-quotes. */ + if MBTEST(character == '\\') + { + peek_char = shell_getc (0); + + /* Backslash-newline is ignored in all cases except + when quoted with single quotes. */ + if (peek_char == '\n') + { + character = '\n'; + goto next_character; + } + else + { + shell_ungetc (peek_char); + + /* If the next character is to be quoted, note it now. */ + if (cd == 0 || cd == '`' || + (cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE))) + pass_next_character++; + + quoted = 1; + goto got_character; + } + } + + /* Parse a matched pair of quote characters. */ + if MBTEST(shellquote (character)) + { + push_delimiter (dstack, character); + ttok = parse_matched_pair (character, character, character, &ttoklen, (character == '`') ? P_COMMAND : 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + strcpy (token + token_index, ttok); + token_index += ttoklen; + all_digit_token = 0; + quoted = 1; + dollar_present |= (character == '"' && strchr (ttok, '$') != 0); + FREE (ttok); + goto next_character; + } + +#ifdef COND_REGEXP + /* When parsing a regexp as a single word inside a conditional command, + we need to special-case characters special to both the shell and + regular expressions. Right now, that is only '(' and '|'. */ /*)*/ + if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/ + { + if (character == '|') + goto got_character; + + push_delimiter (dstack, character); + ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + dollar_present = all_digit_token = 0; + goto next_character; + } +#endif /* COND_REGEXP */ + +#ifdef EXTENDED_GLOB + /* Parse a ksh-style extended pattern matching specification. */ + if MBTEST(extended_glob && PATTERN_CHAR (character)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ + { + push_delimiter (dstack, peek_char); + ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 3, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + token[token_index++] = peek_char; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + dollar_present = all_digit_token = 0; + goto next_character; + } + else + shell_ungetc (peek_char); + } +#endif /* EXTENDED_GLOB */ + + /* If the delimiter character is not single quote, parse some of + the shell expansions that must be read as a single word. */ + if (shellexp (character)) + { + peek_char = shell_getc (1); + /* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */ + if MBTEST(peek_char == '(' || + ((peek_char == '{' || peek_char == '[') && character == '$')) /* ) ] } */ + { + if (peek_char == '{') /* } */ + ttok = parse_matched_pair (cd, '{', '}', &ttoklen, P_FIRSTCLOSE|P_DOLBRACE); + else if (peek_char == '(') /* ) */ + { + /* XXX - push and pop the `(' as a delimiter for use by + the command-oriented-history code. This way newlines + appearing in the $(...) string get added to the + history literally rather than causing a possibly- + incorrect `;' to be added. ) */ + push_delimiter (dstack, peek_char); + ttok = parse_comsub (cd, '(', ')', &ttoklen, P_COMMAND); + pop_delimiter (dstack); + } + else + ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 3, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + token[token_index++] = peek_char; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + dollar_present = 1; + all_digit_token = 0; + goto next_character; + } + /* This handles $'...' and $"..." new-style quoted strings. */ + else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"')) + { + int first_line; + + first_line = line_number; + push_delimiter (dstack, peek_char); + ttok = parse_matched_pair (peek_char, peek_char, peek_char, + &ttoklen, + (peek_char == '\'') ? P_ALLOWESC : 0); + pop_delimiter (dstack); + if (ttok == &matched_pair_error) + return -1; + if (peek_char == '\'') + { + ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen); + free (ttok); + + /* Insert the single quotes and correctly quote any + embedded single quotes (allowed because P_ALLOWESC was + passed to parse_matched_pair). */ + ttok = sh_single_quote (ttrans); + free (ttrans); + ttranslen = strlen (ttok); + ttrans = ttok; + } + else + { + /* Try to locale-expand the converted string. */ + ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen); + free (ttok); + + /* Add the double quotes back */ + ttok = sh_mkdoublequoted (ttrans, ttranslen, 0); + free (ttrans); + ttranslen += 2; + ttrans = ttok; + } + + RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 1, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + strcpy (token + token_index, ttrans); + token_index += ttranslen; + FREE (ttrans); + quoted = 1; + all_digit_token = 0; + goto next_character; + } + /* This could eventually be extended to recognize all of the + shell's single-character parameter expansions, and set flags.*/ + else if MBTEST(character == '$' && peek_char == '$') + { + RESIZE_MALLOCED_BUFFER (token, token_index, 3, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = '$'; + token[token_index++] = peek_char; + dollar_present = 1; + all_digit_token = 0; + goto next_character; + } + else + shell_ungetc (peek_char); + } + +#if defined (ARRAY_VARS) + /* Identify possible array subscript assignment; match [...]. If + parser_state&PST_COMPASSIGN, we need to parse [sub]=words treating + `sub' as if it were enclosed in double quotes. */ + else if MBTEST(character == '[' && /* ] */ + ((token_index > 0 && assignment_acceptable (last_read_token) && token_is_ident (token, token_index)) || + (token_index == 0 && (parser_state&PST_COMPASSIGN)))) + { + ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARRAYSUB); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = character; + strcpy (token + token_index, ttok); + token_index += ttoklen; + FREE (ttok); + all_digit_token = 0; + goto next_character; + } + /* Identify possible compound array variable assignment. */ + else if MBTEST(character == '=' && token_index > 0 && (assignment_acceptable (last_read_token) || (parser_state & PST_ASSIGNOK)) && token_is_assignment (token, token_index)) + { + peek_char = shell_getc (1); + if MBTEST(peek_char == '(') /* ) */ + { + ttok = parse_compound_assignment (&ttoklen); + + RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 4, + token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + + token[token_index++] = '='; + token[token_index++] = '('; + if (ttok) + { + strcpy (token + token_index, ttok); + token_index += ttoklen; + } + token[token_index++] = ')'; + FREE (ttok); + all_digit_token = 0; + compound_assignment = 1; +#if 1 + goto next_character; +#else + goto got_token; /* ksh93 seems to do this */ +#endif + } + else + shell_ungetc (peek_char); + } +#endif + + /* When not parsing a multi-character word construct, shell meta- + characters break words. */ + if MBTEST(shellbreak (character)) + { + shell_ungetc (character); + goto got_token; + } + +got_character: + + if (character == CTLESC || character == CTLNUL) + { + RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + token[token_index++] = CTLESC; + } + else +got_escaped_character: + RESIZE_MALLOCED_BUFFER (token, token_index, 1, token_buffer_size, + TOKEN_DEFAULT_GROW_SIZE); + + token[token_index++] = character; + + all_digit_token &= DIGIT (character); + dollar_present |= character == '$'; + + next_character: + if (character == '\n' && SHOULD_PROMPT ()) + prompt_again (); + + /* We want to remove quoted newlines (that is, a \ pair) + unless we are within single quotes or pass_next_character is + set (the shell equivalent of literal-next). */ + cd = current_delimiter (dstack); + character = shell_getc (cd != '\'' && pass_next_character == 0); + } /* end for (;;) */ + +got_token: + + /* Calls to RESIZE_MALLOCED_BUFFER ensure there is sufficient room. */ + token[token_index] = '\0'; + + /* Check to see what thing we should return. If the last_read_token + is a `<', or a `&', or the character which ended this token is + a '>' or '<', then, and ONLY then, is this input token a NUMBER. + Otherwise, it is just a word, and should be returned as such. */ + if MBTEST(all_digit_token && (character == '<' || character == '>' || + last_read_token == LESS_AND || + last_read_token == GREATER_AND)) + { + if (legal_number (token, &lvalue) && (int)lvalue == lvalue) + { + yylval.number = lvalue; + return (NUMBER); + } + } + + /* Check for special case tokens. */ + result = (last_shell_getc_is_singlebyte) ? special_case_tokens (token) : -1; + if (result >= 0) + return result; + +#if defined (ALIAS) + /* Posix.2 does not allow reserved words to be aliased, so check for all + of them, including special cases, before expanding the current token + as an alias. */ + if MBTEST(posixly_correct) + CHECK_FOR_RESERVED_WORD (token); + + /* Aliases are expanded iff EXPAND_ALIASES is non-zero, and quoting + inhibits alias expansion. */ + if (expand_aliases && quoted == 0) + { + result = alias_expand_token (token); + if (result == RE_READ_TOKEN) + return (RE_READ_TOKEN); + else if (result == NO_EXPANSION) + parser_state &= ~PST_ALEXPNEXT; + } + + /* If not in Posix.2 mode, check for reserved words after alias + expansion. */ + if MBTEST(posixly_correct == 0) +#endif + CHECK_FOR_RESERVED_WORD (token); + + the_word = (WORD_DESC *)xmalloc (sizeof (WORD_DESC)); + the_word->word = (char *)xmalloc (1 + token_index); + the_word->flags = 0; + strcpy (the_word->word, token); + if (dollar_present) + the_word->flags |= W_HASDOLLAR; + if (quoted) + the_word->flags |= W_QUOTED; /*(*/ + if (compound_assignment && token[token_index-1] == ')') + the_word->flags |= W_COMPASSIGN; + /* A word is an assignment if it appears at the beginning of a + simple command, or after another assignment word. This is + context-dependent, so it cannot be handled in the grammar. */ + if (assignment (token, (parser_state & PST_COMPASSIGN) != 0)) + { + the_word->flags |= W_ASSIGNMENT; + /* Don't perform word splitting on assignment statements. */ + if (assignment_acceptable (last_read_token) || (parser_state & PST_COMPASSIGN) != 0) + { + the_word->flags |= W_NOSPLIT; + if (parser_state & PST_COMPASSIGN) + the_word->flags |= W_NOGLOB; /* XXX - W_NOBRACE? */ + } + } + + if (command_token_position (last_read_token)) + { + struct builtin *b; + b = builtin_address_internal (token, 0); + if (b && (b->flags & ASSIGNMENT_BUILTIN)) + parser_state |= PST_ASSIGNOK; + else if (STREQ (token, "eval") || STREQ (token, "let")) + parser_state |= PST_ASSIGNOK; + } + + yylval.word = the_word; + + if (token[0] == '{' && token[token_index-1] == '}' && + (character == '<' || character == '>')) + { + /* can use token; already copied to the_word */ + token[token_index-1] = '\0'; +#if defined (ARRAY_VARS) + if (legal_identifier (token+1) || valid_array_reference (token+1)) +#else + if (legal_identifier (token+1)) +#endif + { + strcpy (the_word->word, token+1); +/*itrace("read_token_word: returning REDIR_WORD for %s", the_word->word);*/ + return (REDIR_WORD); + } + } + + result = ((the_word->flags & (W_ASSIGNMENT|W_NOSPLIT)) == (W_ASSIGNMENT|W_NOSPLIT)) + ? ASSIGNMENT_WORD : WORD; + + switch (last_read_token) + { + case FUNCTION: + parser_state |= PST_ALLOWOPNBRC; + function_dstart = line_number; + break; + case CASE: + case SELECT: + case FOR: + if (word_top < MAX_CASE_NEST) + word_top++; + word_lineno[word_top] = line_number; + break; + } + + return (result); +} + +/* Return 1 if TOKSYM is a token that after being read would allow + a reserved word to be seen, else 0. */ +static int +reserved_word_acceptable (toksym) + int toksym; +{ + switch (toksym) + { + case '\n': + case ';': + case '(': + case ')': + case '|': + case '&': + case '{': + case '}': /* XXX */ + case AND_AND: + case BANG: + case BAR_AND: + case DO: + case DONE: + case ELIF: + case ELSE: + case ESAC: + case FI: + case IF: + case OR_OR: + case SEMI_SEMI: + case SEMI_AND: + case SEMI_SEMI_AND: + case THEN: + case TIME: + case TIMEOPT: + case TIMEIGN: + case COPROC: + case UNTIL: + case WHILE: + case 0: + return 1; + default: +#if defined (COPROCESS_SUPPORT) + if (last_read_token == WORD && token_before_that == COPROC) + return 1; +#endif + if (last_read_token == WORD && token_before_that == FUNCTION) + return 1; + return 0; + } +} + +/* Return the index of TOKEN in the alist of reserved words, or -1 if + TOKEN is not a shell reserved word. */ +int +find_reserved_word (tokstr) + char *tokstr; +{ + int i; + for (i = 0; word_token_alist[i].word; i++) + if (STREQ (tokstr, word_token_alist[i].word)) + return i; + return -1; +} + +/* An interface to let the rest of the shell (primarily the completion + system) know what the parser is expecting. */ +int +parser_in_command_position () +{ + return (command_token_position (last_read_token)); +} + +#if 0 +#if defined (READLINE) +/* Called after each time readline is called. This insures that whatever + the new prompt string is gets propagated to readline's local prompt + variable. */ +static void +reset_readline_prompt () +{ + char *temp_prompt; + + if (prompt_string_pointer) + { + temp_prompt = (*prompt_string_pointer) + ? decode_prompt_string (*prompt_string_pointer) + : (char *)NULL; + + if (temp_prompt == 0) + { + temp_prompt = (char *)xmalloc (1); + temp_prompt[0] = '\0'; + } + + FREE (current_readline_prompt); + current_readline_prompt = temp_prompt; + } +} +#endif /* READLINE */ +#endif /* 0 */ + +#if defined (HISTORY) +/* A list of tokens which can be followed by newlines, but not by + semi-colons. When concatenating multiple lines of history, the + newline separator for such tokens is replaced with a space. */ +static const int no_semi_successors[] = { + '\n', '{', '(', ')', ';', '&', '|', + CASE, DO, ELSE, IF, SEMI_SEMI, SEMI_AND, SEMI_SEMI_AND, THEN, UNTIL, + WHILE, AND_AND, OR_OR, IN, + 0 +}; + +/* If we are not within a delimited expression, try to be smart + about which separators can be semi-colons and which must be + newlines. Returns the string that should be added into the + history entry. LINE is the line we're about to add; it helps + make some more intelligent decisions in certain cases. */ +char * +history_delimiting_chars (line) + const char *line; +{ + static int last_was_heredoc = 0; /* was the last entry the start of a here document? */ + register int i; + + if ((parser_state & PST_HEREDOC) == 0) + last_was_heredoc = 0; + + if (dstack.delimiter_depth != 0) + return ("\n"); + + /* We look for current_command_line_count == 2 because we are looking to + add the first line of the body of the here document (the second line + of the command). We also keep LAST_WAS_HEREDOC as a private sentinel + variable to note when we think we added the first line of a here doc + (the one with a "<<" somewhere in it) */ + if (parser_state & PST_HEREDOC) + { + if (last_was_heredoc) + { + last_was_heredoc = 0; + return "\n"; + } + return (current_command_line_count == 2 ? "\n" : ""); + } + + if (parser_state & PST_COMPASSIGN) + return (" "); + + /* First, handle some special cases. */ + /*(*/ + /* If we just read `()', assume it's a function definition, and don't + add a semicolon. If the token before the `)' was not `(', and we're + not in the midst of parsing a case statement, assume it's a + parenthesized command and add the semicolon. */ + /*)(*/ + if (token_before_that == ')') + { + if (two_tokens_ago == '(') /*)*/ /* function def */ + return " "; + /* This does not work for subshells inside case statement + command lists. It's a suboptimal solution. */ + else if (parser_state & PST_CASESTMT) /* case statement pattern */ + return " "; + else + return "; "; /* (...) subshell */ + } + else if (token_before_that == WORD && two_tokens_ago == FUNCTION) + return " "; /* function def using `function name' without `()' */ + + /* If we're not in a here document, but we think we're about to parse one, + and we would otherwise return a `;', return a newline to delimit the + line with the here-doc delimiter */ + else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && last_read_token == '\n' && strstr (line, "<<")) + { + last_was_heredoc = 1; + return "\n"; + } + + else if (token_before_that == WORD && two_tokens_ago == FOR) + { + /* Tricky. `for i\nin ...' should not have a semicolon, but + `for i\ndo ...' should. We do what we can. */ + for (i = shell_input_line_index; whitespace (shell_input_line[i]); i++) + ; + if (shell_input_line[i] && shell_input_line[i] == 'i' && shell_input_line[i+1] == 'n') + return " "; + return ";"; + } + else if (two_tokens_ago == CASE && token_before_that == WORD && (parser_state & PST_CASESTMT)) + return " "; + + for (i = 0; no_semi_successors[i]; i++) + { + if (token_before_that == no_semi_successors[i]) + return (" "); + } + + return ("; "); +} +#endif /* HISTORY */ + +/* Issue a prompt, or prepare to issue a prompt when the next character + is read. */ +static void +prompt_again () +{ + char *temp_prompt; + + if (interactive == 0 || expanding_alias ()) /* XXX */ + return; + + ps1_prompt = get_string_value ("PS1"); + ps2_prompt = get_string_value ("PS2"); + + if (!prompt_string_pointer) + prompt_string_pointer = &ps1_prompt; + + temp_prompt = *prompt_string_pointer + ? decode_prompt_string (*prompt_string_pointer) + : (char *)NULL; + + if (temp_prompt == 0) + { + temp_prompt = (char *)xmalloc (1); + temp_prompt[0] = '\0'; + } + + current_prompt_string = *prompt_string_pointer; + prompt_string_pointer = &ps2_prompt; + +#if defined (READLINE) + if (!no_line_editing) + { + FREE (current_readline_prompt); + current_readline_prompt = temp_prompt; + } + else +#endif /* READLINE */ + { + FREE (current_decoded_prompt); + current_decoded_prompt = temp_prompt; + } +} + +int +get_current_prompt_level () +{ + return ((current_prompt_string && current_prompt_string == ps2_prompt) ? 2 : 1); +} + +void +set_current_prompt_level (x) + int x; +{ + prompt_string_pointer = (x == 2) ? &ps2_prompt : &ps1_prompt; + current_prompt_string = *prompt_string_pointer; +} + +static void +print_prompt () +{ + fprintf (stderr, "%s", current_decoded_prompt); + fflush (stderr); +} + +/* Return a string which will be printed as a prompt. The string + may contain special characters which are decoded as follows: + + \a bell (ascii 07) + \d the date in Day Mon Date format + \e escape (ascii 033) + \h the hostname up to the first `.' + \H the hostname + \j the number of active jobs + \l the basename of the shell's tty device name + \n CRLF + \r CR + \s the name of the shell + \t the time in 24-hour hh:mm:ss format + \T the time in 12-hour hh:mm:ss format + \@ the time in 12-hour hh:mm am/pm format + \A the time in 24-hour hh:mm format + \D{fmt} the result of passing FMT to strftime(3) + \u your username + \v the version of bash (e.g., 2.00) + \V the release of bash, version + patchlevel (e.g., 2.00.0) + \w the current working directory + \W the last element of $PWD + \! the history number of this command + \# the command number of this command + \$ a $ or a # if you are root + \nnn character code nnn in octal + \\ a backslash + \[ begin a sequence of non-printing chars + \] end a sequence of non-printing chars +*/ +#define PROMPT_GROWTH 48 +char * +decode_prompt_string (string) + char *string; +{ + WORD_LIST *list; + char *result, *t; + struct dstack save_dstack; + int last_exit_value, last_comsub_pid; +#if defined (PROMPT_STRING_DECODE) + int result_size, result_index; + int c, n, i; + char *temp, octal_string[4]; + struct tm *tm; + time_t the_time; + char timebuf[128]; + char *timefmt; + + result = (char *)xmalloc (result_size = PROMPT_GROWTH); + result[result_index = 0] = 0; + temp = (char *)NULL; + + while (c = *string++) + { + if (posixly_correct && c == '!') + { + if (*string == '!') + { + temp = savestring ("!"); + goto add_string; + } + else + { +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (history_number ()); +#endif /* HISTORY */ + string--; /* add_string increments string again. */ + goto add_string; + } + } + if (c == '\\') + { + c = *string; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + strncpy (octal_string, string, 3); + octal_string[3] = '\0'; + + n = read_octal (octal_string); + temp = (char *)xmalloc (3); + + if (n == CTLESC || n == CTLNUL) + { + temp[0] = CTLESC; + temp[1] = n; + temp[2] = '\0'; + } + else if (n == -1) + { + temp[0] = '\\'; + temp[1] = '\0'; + } + else + { + temp[0] = n; + temp[1] = '\0'; + } + + for (c = 0; n != -1 && c < 3 && ISOCTAL (*string); c++) + string++; + + c = 0; /* tested at add_string: */ + goto add_string; + + case 'd': + case 't': + case 'T': + case '@': + case 'A': + /* Make the current time/date into a string. */ + (void) time (&the_time); +#if defined (HAVE_TZSET) + sv_tz ("TZ"); /* XXX -- just make sure */ +#endif + tm = localtime (&the_time); + + if (c == 'd') + n = strftime (timebuf, sizeof (timebuf), "%a %b %d", tm); + else if (c == 't') + n = strftime (timebuf, sizeof (timebuf), "%H:%M:%S", tm); + else if (c == 'T') + n = strftime (timebuf, sizeof (timebuf), "%I:%M:%S", tm); + else if (c == '@') + n = strftime (timebuf, sizeof (timebuf), "%I:%M %p", tm); + else if (c == 'A') + n = strftime (timebuf, sizeof (timebuf), "%H:%M", tm); + + if (n == 0) + timebuf[0] = '\0'; + else + timebuf[sizeof(timebuf) - 1] = '\0'; + + temp = savestring (timebuf); + goto add_string; + + case 'D': /* strftime format */ + if (string[1] != '{') /* } */ + goto not_escape; + + (void) time (&the_time); + tm = localtime (&the_time); + string += 2; /* skip { */ + timefmt = xmalloc (strlen (string) + 3); + for (t = timefmt; *string && *string != '}'; ) + *t++ = *string++; + *t = '\0'; + c = *string; /* tested at add_string */ + if (timefmt[0] == '\0') + { + timefmt[0] = '%'; + timefmt[1] = 'X'; /* locale-specific current time */ + timefmt[2] = '\0'; + } + n = strftime (timebuf, sizeof (timebuf), timefmt, tm); + free (timefmt); + + if (n == 0) + timebuf[0] = '\0'; + else + timebuf[sizeof(timebuf) - 1] = '\0'; + + if (promptvars || posixly_correct) + /* Make sure that expand_prompt_string is called with a + second argument of Q_DOUBLE_QUOTES if we use this + function here. */ + temp = sh_backslash_quote_for_double_quotes (timebuf); + else + temp = savestring (timebuf); + goto add_string; + + case 'n': + temp = (char *)xmalloc (3); + temp[0] = no_line_editing ? '\n' : '\r'; + temp[1] = no_line_editing ? '\0' : '\n'; + temp[2] = '\0'; + goto add_string; + + case 's': + temp = base_pathname (shell_name); + temp = savestring (temp); + goto add_string; + + case 'v': + case 'V': + temp = (char *)xmalloc (16); + if (c == 'v') + strcpy (temp, dist_version); + else + sprintf (temp, "%s.%d", dist_version, patch_level); + goto add_string; + + case 'w': + case 'W': + { + /* Use the value of PWD because it is much more efficient. */ + char t_string[PATH_MAX]; + int tlen; + + temp = get_string_value ("PWD"); + + if (temp == 0) + { + if (getcwd (t_string, sizeof(t_string)) == 0) + { + t_string[0] = '.'; + tlen = 1; + } + else + tlen = strlen (t_string); + } + else + { + tlen = sizeof (t_string) - 1; + strncpy (t_string, temp, tlen); + } + t_string[tlen] = '\0'; + +#if defined (MACOSX) + /* Convert from "fs" format to "input" format */ + temp = fnx_fromfs (t_string, strlen (t_string)); + if (temp != t_string) + strcpy (t_string, temp); +#endif + +#define ROOT_PATH(x) ((x)[0] == '/' && (x)[1] == 0) +#define DOUBLE_SLASH_ROOT(x) ((x)[0] == '/' && (x)[1] == '/' && (x)[2] == 0) + /* Abbreviate \W as ~ if $PWD == $HOME */ + if (c == 'W' && (((t = get_string_value ("HOME")) == 0) || STREQ (t, t_string) == 0)) + { + if (ROOT_PATH (t_string) == 0 && DOUBLE_SLASH_ROOT (t_string) == 0) + { + t = strrchr (t_string, '/'); + if (t) + memmove (t_string, t + 1, strlen (t)); /* strlen(t) to copy NULL */ + } + } +#undef ROOT_PATH +#undef DOUBLE_SLASH_ROOT + else + /* polite_directory_format is guaranteed to return a string + no longer than PATH_MAX - 1 characters. */ + strcpy (t_string, polite_directory_format (t_string)); + + temp = trim_pathname (t_string, PATH_MAX - 1); + /* If we're going to be expanding the prompt string later, + quote the directory name. */ + if (promptvars || posixly_correct) + /* Make sure that expand_prompt_string is called with a + second argument of Q_DOUBLE_QUOTES if we use this + function here. */ + temp = sh_backslash_quote_for_double_quotes (t_string); + else + temp = savestring (t_string); + + goto add_string; + } + + case 'u': + if (current_user.user_name == 0) + get_current_user_info (); + temp = savestring (current_user.user_name); + goto add_string; + + case 'h': + case 'H': + temp = savestring (current_host_name); + if (c == 'h' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + + case '#': + temp = itos (current_command_number); + goto add_string; + + case '!': +#if !defined (HISTORY) + temp = savestring ("1"); +#else /* HISTORY */ + temp = itos (history_number ()); +#endif /* HISTORY */ + goto add_string; + + case '$': + t = temp = (char *)xmalloc (3); + if ((promptvars || posixly_correct) && (current_user.euid != 0)) + *t++ = '\\'; + *t++ = current_user.euid == 0 ? '#' : '$'; + *t = '\0'; + goto add_string; + + case 'j': + temp = itos (count_all_jobs ()); + goto add_string; + + case 'l': +#if defined (HAVE_TTYNAME) + temp = (char *)ttyname (fileno (stdin)); + t = temp ? base_pathname (temp) : "tty"; + temp = savestring (t); +#else + temp = savestring ("tty"); +#endif /* !HAVE_TTYNAME */ + goto add_string; + +#if defined (READLINE) + case '[': + case ']': + if (no_line_editing) + { + string++; + break; + } + temp = (char *)xmalloc (3); + n = (c == '[') ? RL_PROMPT_START_IGNORE : RL_PROMPT_END_IGNORE; + i = 0; + if (n == CTLESC || n == CTLNUL) + temp[i++] = CTLESC; + temp[i++] = n; + temp[i] = '\0'; + goto add_string; +#endif /* READLINE */ + + case '\\': + case 'a': + case 'e': + case 'r': + temp = (char *)xmalloc (2); + if (c == 'a') + temp[0] = '\07'; + else if (c == 'e') + temp[0] = '\033'; + else if (c == 'r') + temp[0] = '\r'; + else /* (c == '\\') */ + temp[0] = c; + temp[1] = '\0'; + goto add_string; + + default: +not_escape: + temp = (char *)xmalloc (3); + temp[0] = '\\'; + temp[1] = c; + temp[2] = '\0'; + + add_string: + if (c) + string++; + result = + sub_append_string (temp, result, &result_index, &result_size); + temp = (char *)NULL; /* Freed in sub_append_string (). */ + result[result_index] = '\0'; + break; + } + } + else + { + RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, PROMPT_GROWTH); + result[result_index++] = c; + result[result_index] = '\0'; + } + } +#else /* !PROMPT_STRING_DECODE */ + result = savestring (string); +#endif /* !PROMPT_STRING_DECODE */ + + /* Save the delimiter stack and point `dstack' to temp space so any + command substitutions in the prompt string won't result in screwing + up the parser's quoting state. */ + save_dstack = dstack; + dstack = temp_dstack; + dstack.delimiter_depth = 0; + + /* Perform variable and parameter expansion and command substitution on + the prompt string. */ + if (promptvars || posixly_correct) + { + last_exit_value = last_command_exit_value; + last_comsub_pid = last_command_subst_pid; + list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0); + free (result); + result = string_list (list); + dispose_words (list); + last_command_exit_value = last_exit_value; + last_command_subst_pid = last_comsub_pid; + } + else + { + t = dequote_string (result); + free (result); + result = t; + } + + dstack = save_dstack; + + return (result); +} + +/************************************************ + * * + * ERROR HANDLING * + * * + ************************************************/ + +/* Report a syntax error, and restart the parser. Call here for fatal + errors. */ +int +yyerror (msg) + const char *msg; +{ + report_syntax_error ((char *)NULL); + reset_parser (); + return (0); +} + +static char * +error_token_from_token (tok) + int tok; +{ + char *t; + + if (t = find_token_in_alist (tok, word_token_alist, 0)) + return t; + + if (t = find_token_in_alist (tok, other_token_alist, 0)) + return t; + + t = (char *)NULL; + /* This stuff is dicy and needs closer inspection */ + switch (current_token) + { + case WORD: + case ASSIGNMENT_WORD: + if (yylval.word) + t = savestring (yylval.word->word); + break; + case NUMBER: + t = itos (yylval.number); + break; + case ARITH_CMD: + if (yylval.word_list) + t = string_list (yylval.word_list); + break; + case ARITH_FOR_EXPRS: + if (yylval.word_list) + t = string_list_internal (yylval.word_list, " ; "); + break; + case COND_CMD: + t = (char *)NULL; /* punt */ + break; + } + + return t; +} + +static char * +error_token_from_text () +{ + char *msg, *t; + int token_end, i; + + t = shell_input_line; + i = shell_input_line_index; + token_end = 0; + msg = (char *)NULL; + + if (i && t[i] == '\0') + i--; + + while (i && (whitespace (t[i]) || t[i] == '\n')) + i--; + + if (i) + token_end = i + 1; + + while (i && (member (t[i], " \n\t;|&") == 0)) + i--; + + while (i != token_end && (whitespace (t[i]) || t[i] == '\n')) + i++; + + /* Return our idea of the offending token. */ + if (token_end || (i == 0 && token_end == 0)) + { + if (token_end) + msg = substring (t, i, token_end); + else /* one-character token */ + { + msg = (char *)xmalloc (2); + msg[0] = t[i]; + msg[1] = '\0'; + } + } + + return (msg); +} + +static void +print_offending_line () +{ + char *msg; + int token_end; + + msg = savestring (shell_input_line); + token_end = strlen (msg); + while (token_end && msg[token_end - 1] == '\n') + msg[--token_end] = '\0'; + + parser_error (line_number, "`%s'", msg); + free (msg); +} + +/* Report a syntax error with line numbers, etc. + Call here for recoverable errors. If you have a message to print, + then place it in MESSAGE, otherwise pass NULL and this will figure + out an appropriate message for you. */ +static void +report_syntax_error (message) + char *message; +{ + char *msg, *p; + + if (message) + { + parser_error (line_number, "%s", message); + if (interactive && EOF_Reached) + EOF_Reached = 0; + last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE; + return; + } + + /* If the line of input we're reading is not null, try to find the + objectionable token. First, try to figure out what token the + parser's complaining about by looking at current_token. */ + if (current_token != 0 && EOF_Reached == 0 && (msg = error_token_from_token (current_token))) + { + if (ansic_shouldquote (msg)) + { + p = ansic_quote (msg, 0, NULL); + free (msg); + msg = p; + } + parser_error (line_number, _("syntax error near unexpected token `%s'"), msg); + free (msg); + + if (interactive == 0) + print_offending_line (); + + last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE; + return; + } + + /* If looking at the current token doesn't prove fruitful, try to find the + offending token by analyzing the text of the input line near the current + input line index and report what we find. */ + if (shell_input_line && *shell_input_line) + { + msg = error_token_from_text (); + if (msg) + { + parser_error (line_number, _("syntax error near `%s'"), msg); + free (msg); + } + + /* If not interactive, print the line containing the error. */ + if (interactive == 0) + print_offending_line (); + } + else + { + msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error"); + parser_error (line_number, "%s", msg); + /* When the shell is interactive, this file uses EOF_Reached + only for error reporting. Other mechanisms are used to + decide whether or not to exit. */ + if (interactive && EOF_Reached) + EOF_Reached = 0; + } + + last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE; +} + +/* ??? Needed function. ??? We have to be able to discard the constructs + created during parsing. In the case of error, we want to return + allocated objects to the memory pool. In the case of no error, we want + to throw away the information about where the allocated objects live. + (dispose_command () will actually free the command.) */ +static void +discard_parser_constructs (error_p) + int error_p; +{ +} + +/************************************************ + * * + * EOF HANDLING * + * * + ************************************************/ + +/* Do that silly `type "bye" to exit' stuff. You know, "ignoreeof". */ + +/* A flag denoting whether or not ignoreeof is set. */ +int ignoreeof = 0; + +/* The number of times that we have encountered an EOF character without + another character intervening. When this gets above the limit, the + shell terminates. */ +int eof_encountered = 0; + +/* The limit for eof_encountered. */ +int eof_encountered_limit = 10; + +/* If we have EOF as the only input unit, this user wants to leave + the shell. If the shell is not interactive, then just leave. + Otherwise, if ignoreeof is set, and we haven't done this the + required number of times in a row, print a message. */ +static void +handle_eof_input_unit () +{ + if (interactive) + { + /* shell.c may use this to decide whether or not to write out the + history, among other things. We use it only for error reporting + in this file. */ + if (EOF_Reached) + EOF_Reached = 0; + + /* If the user wants to "ignore" eof, then let her do so, kind of. */ + if (ignoreeof) + { + if (eof_encountered < eof_encountered_limit) + { + fprintf (stderr, _("Use \"%s\" to leave the shell.\n"), + login_shell ? "logout" : "exit"); + eof_encountered++; + /* Reset the parsing state. */ + last_read_token = current_token = '\n'; + /* Reset the prompt string to be $PS1. */ + prompt_string_pointer = (char **)NULL; + prompt_again (); + return; + } + } + + /* In this case EOF should exit the shell. Do it now. */ + reset_parser (); + exit_builtin ((WORD_LIST *)NULL); + } + else + { + /* We don't write history files, etc., for non-interactive shells. */ + EOF_Reached = 1; + } +} + +/************************************************ + * * + * STRING PARSING FUNCTIONS * + * * + ************************************************/ + +/* It's very important that these two functions treat the characters + between ( and ) identically. */ + +static WORD_LIST parse_string_error; + +/* Take a string and run it through the shell parser, returning the + resultant word list. Used by compound array assignment. */ +WORD_LIST * +parse_string_to_word_list (s, flags, whom) + char *s; + int flags; + const char *whom; +{ + WORD_LIST *wl; + int tok, orig_current_token, orig_line_number, orig_input_terminator; + int orig_line_count; + int old_echo_input, old_expand_aliases; +#if defined (HISTORY) + int old_remember_on_history, old_history_expansion_inhibited; +#endif + +#if defined (HISTORY) + old_remember_on_history = remember_on_history; +# if defined (BANG_HISTORY) + old_history_expansion_inhibited = history_expansion_inhibited; +# endif + bash_history_disable (); +#endif + + orig_line_number = line_number; + orig_line_count = current_command_line_count; + orig_input_terminator = shell_input_line_terminator; + old_echo_input = echo_input_at_read; + old_expand_aliases = expand_aliases; + + push_stream (1); + last_read_token = WORD; /* WORD to allow reserved words here */ + current_command_line_count = 0; + echo_input_at_read = expand_aliases = 0; + + with_input_from_string (s, whom); + wl = (WORD_LIST *)NULL; + + if (flags & 1) + parser_state |= PST_COMPASSIGN|PST_REPARSE; + + while ((tok = read_token (READ)) != yacc_EOF) + { + if (tok == '\n' && *bash_input.location.string == '\0') + break; + if (tok == '\n') /* Allow newlines in compound assignments */ + continue; + if (tok != WORD && tok != ASSIGNMENT_WORD) + { + line_number = orig_line_number + line_number - 1; + orig_current_token = current_token; + current_token = tok; + yyerror (NULL); /* does the right thing */ + current_token = orig_current_token; + if (wl) + dispose_words (wl); + wl = &parse_string_error; + break; + } + wl = make_word_list (yylval.word, wl); + } + + last_read_token = '\n'; + pop_stream (); + +#if defined (HISTORY) + remember_on_history = old_remember_on_history; +# if defined (BANG_HISTORY) + history_expansion_inhibited = old_history_expansion_inhibited; +# endif /* BANG_HISTORY */ +#endif /* HISTORY */ + + echo_input_at_read = old_echo_input; + expand_aliases = old_expand_aliases; + + current_command_line_count = orig_line_count; + shell_input_line_terminator = orig_input_terminator; + + if (flags & 1) + parser_state &= ~(PST_COMPASSIGN|PST_REPARSE); + + if (wl == &parse_string_error) + { + last_command_exit_value = EXECUTION_FAILURE; + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else + jump_to_top_level (DISCARD); + } + + return (REVERSE_LIST (wl, WORD_LIST *)); +} + +static char * +parse_compound_assignment (retlenp) + int *retlenp; +{ + WORD_LIST *wl, *rl; + int tok, orig_line_number, orig_token_size, orig_last_token, assignok; + char *saved_token, *ret; + + saved_token = token; + orig_token_size = token_buffer_size; + orig_line_number = line_number; + orig_last_token = last_read_token; + + last_read_token = WORD; /* WORD to allow reserved words here */ + + token = (char *)NULL; + token_buffer_size = 0; + + assignok = parser_state&PST_ASSIGNOK; /* XXX */ + + wl = (WORD_LIST *)NULL; /* ( */ + parser_state |= PST_COMPASSIGN; + + while ((tok = read_token (READ)) != ')') + { + if (tok == '\n') /* Allow newlines in compound assignments */ + { + if (SHOULD_PROMPT ()) + prompt_again (); + continue; + } + if (tok != WORD && tok != ASSIGNMENT_WORD) + { + current_token = tok; /* for error reporting */ + if (tok == yacc_EOF) /* ( */ + parser_error (orig_line_number, _("unexpected EOF while looking for matching `)'")); + else + yyerror(NULL); /* does the right thing */ + if (wl) + dispose_words (wl); + wl = &parse_string_error; + break; + } + wl = make_word_list (yylval.word, wl); + } + + FREE (token); + token = saved_token; + token_buffer_size = orig_token_size; + + parser_state &= ~PST_COMPASSIGN; + + if (wl == &parse_string_error) + { + last_command_exit_value = EXECUTION_FAILURE; + last_read_token = '\n'; /* XXX */ + if (interactive_shell == 0 && posixly_correct) + jump_to_top_level (FORCE_EOF); + else + jump_to_top_level (DISCARD); + } + + last_read_token = orig_last_token; /* XXX - was WORD? */ + + if (wl) + { + rl = REVERSE_LIST (wl, WORD_LIST *); + ret = string_list (rl); + dispose_words (rl); + } + else + ret = (char *)NULL; + + if (retlenp) + *retlenp = (ret && *ret) ? strlen (ret) : 0; + + if (assignok) + parser_state |= PST_ASSIGNOK; + + return ret; +} + +/************************************************ + * * + * SAVING AND RESTORING PARTIAL PARSE STATE * + * * + ************************************************/ + +sh_parser_state_t * +save_parser_state (ps) + sh_parser_state_t *ps; +{ + if (ps == 0) + ps = (sh_parser_state_t *)xmalloc (sizeof (sh_parser_state_t)); + if (ps == 0) + return ((sh_parser_state_t *)NULL); + + ps->parser_state = parser_state; + ps->token_state = save_token_state (); + + ps->input_line_terminator = shell_input_line_terminator; + ps->eof_encountered = eof_encountered; + + ps->prompt_string_pointer = prompt_string_pointer; + + ps->current_command_line_count = current_command_line_count; + +#if defined (HISTORY) + ps->remember_on_history = remember_on_history; +# if defined (BANG_HISTORY) + ps->history_expansion_inhibited = history_expansion_inhibited; +# endif +#endif + + ps->last_command_exit_value = last_command_exit_value; +#if defined (ARRAY_VARS) + ps->pipestatus = save_pipestatus_array (); +#endif + + ps->last_shell_builtin = last_shell_builtin; + ps->this_shell_builtin = this_shell_builtin; + + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; + + ps->token = token; + ps->token_buffer_size = token_buffer_size; + /* Force reallocation on next call to read_token_word */ + token = 0; + token_buffer_size = 0; + + return (ps); +} + +void +restore_parser_state (ps) + sh_parser_state_t *ps; +{ + if (ps == 0) + return; + + parser_state = ps->parser_state; + if (ps->token_state) + { + restore_token_state (ps->token_state); + free (ps->token_state); + } + + shell_input_line_terminator = ps->input_line_terminator; + eof_encountered = ps->eof_encountered; + + prompt_string_pointer = ps->prompt_string_pointer; + + current_command_line_count = ps->current_command_line_count; + +#if defined (HISTORY) + remember_on_history = ps->remember_on_history; +# if defined (BANG_HISTORY) + history_expansion_inhibited = ps->history_expansion_inhibited; +# endif +#endif + + last_command_exit_value = ps->last_command_exit_value; +#if defined (ARRAY_VARS) + restore_pipestatus_array (ps->pipestatus); +#endif + + last_shell_builtin = ps->last_shell_builtin; + this_shell_builtin = ps->this_shell_builtin; + + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; + + FREE (token); + token = ps->token; + token_buffer_size = ps->token_buffer_size; +} + +sh_input_line_state_t * +save_input_line_state (ls) + sh_input_line_state_t *ls; +{ + if (ls == 0) + ls = (sh_input_line_state_t *)xmalloc (sizeof (sh_input_line_state_t)); + if (ls == 0) + return ((sh_input_line_state_t *)NULL); + + ls->input_line = shell_input_line; + ls->input_line_size = shell_input_line_size; + ls->input_line_len = shell_input_line_len; + ls->input_line_index = shell_input_line_index; + + /* force reallocation */ + shell_input_line = 0; + shell_input_line_size = shell_input_line_len = shell_input_line_index = 0; + + return ls; +} + +void +restore_input_line_state (ls) + sh_input_line_state_t *ls; +{ + FREE (shell_input_line); + shell_input_line = ls->input_line; + shell_input_line_size = ls->input_line_size; + shell_input_line_len = ls->input_line_len; + shell_input_line_index = ls->input_line_index; + + set_line_mbstate (); +} + +/************************************************ + * * + * MULTIBYTE CHARACTER HANDLING * + * * + ************************************************/ + +#if defined (HANDLE_MULTIBYTE) +static void +set_line_mbstate () +{ + int c; + size_t i, previ, len; + mbstate_t mbs, prevs; + size_t mbclen; + + if (shell_input_line == NULL) + return; + len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */ + FREE (shell_input_line_property); + shell_input_line_property = (char *)xmalloc (len + 1); + + memset (&prevs, '\0', sizeof (mbstate_t)); + for (i = previ = 0; i < len; i++) + { + mbs = prevs; + + c = shell_input_line[i]; + if (c == EOF) + { + size_t j; + for (j = i; j < len; j++) + shell_input_line_property[j] = 1; + break; + } + + mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs); + if (mbclen == 1 || mbclen == (size_t)-1) + { + mbclen = 1; + previ = i + 1; + } + else if (mbclen == (size_t)-2) + mbclen = 0; + else if (mbclen > 1) + { + mbclen = 0; + previ = i + 1; + prevs = mbs; + } + else + { + /* XXX - what to do if mbrlen returns 0? (null wide character) */ + size_t j; + for (j = i; j < len; j++) + shell_input_line_property[j] = 1; + break; + } + + shell_input_line_property[i] = mbclen; + } +} +#endif /* HANDLE_MULTIBYTE */ + diff --git a/y.tab.h b/y.tab.h new file mode 100644 index 000000000..d79a07c0d --- /dev/null +++ b/y.tab.h @@ -0,0 +1,164 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + 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 2, 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, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IF = 258, + THEN = 259, + ELSE = 260, + ELIF = 261, + FI = 262, + CASE = 263, + ESAC = 264, + FOR = 265, + SELECT = 266, + WHILE = 267, + UNTIL = 268, + DO = 269, + DONE = 270, + FUNCTION = 271, + COPROC = 272, + COND_START = 273, + COND_END = 274, + COND_ERROR = 275, + IN = 276, + BANG = 277, + TIME = 278, + TIMEOPT = 279, + TIMEIGN = 280, + WORD = 281, + ASSIGNMENT_WORD = 282, + REDIR_WORD = 283, + NUMBER = 284, + ARITH_CMD = 285, + ARITH_FOR_EXPRS = 286, + COND_CMD = 287, + AND_AND = 288, + OR_OR = 289, + GREATER_GREATER = 290, + LESS_LESS = 291, + LESS_AND = 292, + LESS_LESS_LESS = 293, + GREATER_AND = 294, + SEMI_SEMI = 295, + SEMI_AND = 296, + SEMI_SEMI_AND = 297, + LESS_LESS_MINUS = 298, + AND_GREATER = 299, + AND_GREATER_GREATER = 300, + LESS_GREATER = 301, + GREATER_BAR = 302, + BAR_AND = 303, + yacc_EOF = 304 + }; +#endif +/* Tokens. */ +#define IF 258 +#define THEN 259 +#define ELSE 260 +#define ELIF 261 +#define FI 262 +#define CASE 263 +#define ESAC 264 +#define FOR 265 +#define SELECT 266 +#define WHILE 267 +#define UNTIL 268 +#define DO 269 +#define DONE 270 +#define FUNCTION 271 +#define COPROC 272 +#define COND_START 273 +#define COND_END 274 +#define COND_ERROR 275 +#define IN 276 +#define BANG 277 +#define TIME 278 +#define TIMEOPT 279 +#define TIMEIGN 280 +#define WORD 281 +#define ASSIGNMENT_WORD 282 +#define REDIR_WORD 283 +#define NUMBER 284 +#define ARITH_CMD 285 +#define ARITH_FOR_EXPRS 286 +#define COND_CMD 287 +#define AND_AND 288 +#define OR_OR 289 +#define GREATER_GREATER 290 +#define LESS_LESS 291 +#define LESS_AND 292 +#define LESS_LESS_LESS 293 +#define GREATER_AND 294 +#define SEMI_SEMI 295 +#define SEMI_AND 296 +#define SEMI_SEMI_AND 297 +#define LESS_LESS_MINUS 298 +#define AND_GREATER 299 +#define AND_GREATER_GREATER 300 +#define LESS_GREATER 301 +#define GREATER_BAR 302 +#define BAR_AND 303 +#define yacc_EOF 304 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 324 "/Users/chet/src/bash/src/parse.y" +{ + WORD_DESC *word; /* the word that we read. */ + int number; /* the number that we read. */ + WORD_LIST *word_list; + COMMAND *command; + REDIRECT *redirect; + ELEMENT element; + PATTERN_LIST *pattern; +} +/* Line 1529 of yacc.c. */ +#line 157 "y.tab.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; +